LM7805 Voltage Regulator: Circuit Diagram & How-To

V.Redandblue 78 views
LM7805 Voltage Regulator: Circuit Diagram & How-To

LM7805 Voltage Regulator: Circuit Diagram & How-To

Hey guys, ever been tinkering with electronics and needed a stable +5V power supply? The LM7805 voltage regulator is your trusty sidekick for this exact mission! It’s a super common, linear voltage regulator that’s been around forever because, well, it just works and it’s incredibly easy to use. In this article, we’re going to dive deep into the LM7805 voltage regulator circuit diagram , explore how it functions, and give you the lowdown on hooking it up. Whether you’re a seasoned maker or just starting out, understanding this little chip is a fundamental step in building reliable electronic projects. So grab your coffee, and let’s get this voltage regulation party started!

Understanding the Basics of Voltage Regulation

Alright, let’s kick things off by understanding why we even need voltage regulators in the first place. Most electronic components, especially sensitive microcontrollers and ICs, are pretty picky about their power supply. They need a steady, consistent voltage to operate correctly. Imagine trying to run a marathon if your energy levels were constantly spiking and dropping – you wouldn’t get very far, right? The same applies to your circuits. Power sources, like batteries or wall adapters, can have fluctuating voltages. This means the voltage might be higher than expected, lower than needed, or just generally unstable. That’s where our hero, the LM7805 voltage regulator , comes swooping in to save the day!

Voltage regulation is essentially the process of maintaining a constant output voltage regardless of changes in the input voltage or the load connected to the output. Think of it like a water pressure regulator in your house. No matter if your neighbor suddenly turns on all their faucets, the pressure to your shower head stays pretty much the same. The LM7805 does this for electrical voltage. It takes a potentially messy, varying input voltage and smooths it out into a clean, stable output voltage – in this case, a perfect +5V . This stability is crucial for preventing damage to delicate components and ensuring your projects perform as intended. Without regulators, your LED might flicker erratically, your microcontroller might reset randomly, or worse, your components could get fried by overvoltage. So, yeah, they’re pretty darn important!

The LM7805 is part of the 78xx series of linear voltage regulators. The ‘78’ signifies it’s a positive voltage regulator, and the ‘05’ tells us it’s designed to output a fixed +5V . Pretty straightforward, right? These little guys are robust, inexpensive, and readily available, making them a go-to choice for countless hobbyist and even some industrial applications. They operate by dissipating any excess voltage as heat, which is why you’ll often see them mounted on heatsinks for higher current applications. We’ll get into the nitty-gritty of the circuit diagram shortly, but the core idea is that it’s a simple yet effective way to ensure your sensitive electronics get the clean power they crave. It’s all about providing a stable foundation for your creative electronic endeavors, guys!

The LM7805 Voltage Regulator: Key Features and Pins

Before we jump into the circuit diagram, let’s get acquainted with the star of the show, the LM7805 itself. This is typically a three-terminal device, usually found in a TO-220 package, though you might see other variations. The TO-220 package is that black plastic thing with a metal tab that has a hole in it for mounting – perfect for attaching a heatsink if needed. Each of the three pins has a specific job:

  1. Input (Pin 1): This is where the unregulated DC voltage comes in. This voltage needs to be higher than the desired output voltage (+5V) plus a certain dropout voltage (which we’ll touch on later). Think of it as the raw, unrefined power source flowing into our regulator.
  2. Ground (Pin 2): This is your common reference point. It connects to the negative terminal of your input power supply and also serves as the ground for your output circuit.
  3. Output (Pin 3): This is where the magic happens! This pin delivers the clean, stable +5V DC output voltage that your circuit needs. It’s the regulated power ready to be used by your components.

So, you’ve got power in, ground, and regulated power out. Simple as that! The beauty of the LM7805 lies in its simplicity. You don’t need a bunch of external components for it to function as a basic regulator. However, to make it work optimally and ensure stability, especially under varying conditions, a couple of small capacitors are usually recommended.

Let’s talk about those capacitors for a sec. They aren’t strictly required for the regulator to function, but they are highly recommended, almost like best friends for the LM7805. Typically, you’ll see a small capacitor (around 0.1uF or 100nF) connected between the input pin and ground, and another similar capacitor between the output pin and ground. These are called bypass capacitors or decoupling capacitors . They act like tiny shock absorbers for the power supply. The input capacitor helps filter out any high-frequency noise coming from the power source before it even gets to the regulator. The output capacitor helps smooth out any remaining ripple or transient voltage spikes that might occur on the output, ensuring a super clean +5V supply for your sensitive electronics. Without them, your circuit might be more susceptible to noise, which can lead to unpredictable behavior.

Another key characteristic of the LM7805, and linear regulators in general, is the dropout voltage . This is the minimum difference required between the input voltage and the output voltage for the regulator to maintain its specified output. For the LM7805, this is typically around 2V. This means if you want a stable +5V output, your input voltage needs to be at least 7V (5V + 2V). If your input voltage drops too close to the output voltage, the regulator will start to lose its ability to regulate, and the output voltage will drop along with the input. So, always make sure your input source provides enough headroom!

The LM7805 Voltage Regulator Circuit Diagram Explained

Now, let’s get down to the nitty-gritty: the LM7805 voltage regulator circuit diagram . As I mentioned, the LM7805 itself is a three-terminal device. For a basic, functional circuit, you really only need the LM7805 and your input/output connections. However, to make it robust and reliable, we typically add two small capacitors. Here’s the standard, super-simple circuit:

”`

  +-----------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +-----------------+      +2.5V DC Input
  • Output Voltage: +5V DC (Nominal)

This circuit is designed to take a varying DC input voltage, typically from a source like a battery or a simple power supply, and convert it into a stable +5V DC. This is vital for many digital circuits, microcontrollers, and sensors that require a precise voltage to function correctly.

Components You’ll Need:

  1. LM7805 Voltage Regulator IC: This is the core component. It’s a 3-terminal device designed to provide a fixed +5V output.
  2. Input Capacitor (C1): Usually a 0.1uF to 1uF ceramic capacitor. This capacitor is placed between the input pin and ground.
  3. Output Capacitor (C2): Also typically a 0.1uF to 1uF ceramic capacitor. This capacitor is placed between the output pin and ground.
  4. Optional: Input Filter Capacitor (C3): A larger electrolytic capacitor (e.g., 10uF to 100uF) can be added on the input side for further smoothing of the input voltage, especially if the input source is noisy.
  5. Optional: Output Filter Capacitor (C4): A larger electrolytic capacitor (e.g., 10uF to 47uF) can be added on the output side for improved transient response and filtering.
  6. Power Source: A DC power source with a voltage higher than the required input for the LM7805 (typically 7V to 25V).
  7. Load: The electronic device or circuit you want to power with +5V.

How It Works:

The LM7805 is a linear voltage regulator . This means it works by essentially acting like a variable resistor, constantly adjusting its resistance to maintain a constant output voltage. When the input voltage is higher than the output voltage plus the dropout voltage (around 2V for the LM7805), it draws current and dissipates the excess voltage as heat. The internal circuitry monitors the output voltage and adjusts the internal resistance to keep it at the desired +5V. The capacitors play a crucial role in stabilizing this process. The input capacitor (C1) filters out high-frequency noise and helps prevent oscillations. The output capacitor (C2) filters out any remaining ripple on the output voltage and improves the regulator’s response to sudden changes in the load current. This ensures a clean and stable +5V supply for your projects.

Building the Circuit:

  1. Identify the Pins: Make sure you know which pin is Input, Ground, and Output on your LM7805. Usually, when looking at the front of the TO-220 package with the metal tab facing up, the pins are, from left to right: Input, Ground, Output.
  2. Connect the Input: Connect your unregulated DC power source (e.g., 9V battery) to the Input pin (Pin 1).
  3. Connect the Ground: Connect the Ground pin (Pin 2) to the ground (negative terminal) of your power source. This pin also serves as the ground reference for your output.
  4. Connect the Output: The Output pin (Pin 3) will provide the regulated +5V.
  5. Add the Capacitors:
    • Connect C1 (e.g., 0.1uF ceramic) between the Input pin (Pin 1) and Ground (Pin 2).
    • Connect C2 (e.g., 0.1uF ceramic) between the Output pin (Pin 3) and Ground (Pin 2).
  6. Optional Capacitors: If you’re using larger electrolytic capacitors (C3 and C4), connect them with the correct polarity (positive to the respective pin, negative to ground). C3 goes on the input side, C4 on the output side.
  7. Heatsinking: If your input voltage is significantly higher than 5V, or if you expect to draw a considerable amount of current (approaching the LM7805’s limit of 1A), the regulator will get hot. In such cases, attach a suitable heatsink to the metal tab of the LM7805 to dissipate the heat effectively and prevent it from overheating.

Applications and Considerations

The LM7805 voltage regulator is incredibly versatile and finds its way into a plethora of electronic projects. Its simplicity and reliability make it a fantastic choice for powering everything from small hobbyist circuits to more complex systems where a stable +5V is a must.

Some common applications include:

  • Powering Microcontrollers: Arduinos, Raspberry Pis (though Pis often have their own regulators, external ones are great for peripherals), and other microcontrollers usually run on 5V or 3.3V. The LM7805 is perfect for supplying the 5V needed.
  • Sensor Power: Many sensors, like temperature sensors, humidity sensors, or even simple LEDs, require a stable 5V supply to operate accurately and reliably.
  • Logic Circuits: Driving TTL (Transistor-Transistor Logic) or other 5V logic families requires a consistent voltage, and the LM7805 ensures this.
  • Battery Charging Circuits: In some simpler battery charging setups, a regulated voltage might be necessary.
  • Bench Power Supplies: As a building block in DIY bench power supplies, providing a fixed 5V output rail.
  • Audio Amplifiers: Small audio amplifier ICs often operate on a steady 5V.

Important Considerations:

  • Input Voltage: Remember the dropout voltage! Your input DC voltage must be at least 2V higher than the desired 5V output. So, aim for an input of 7V to 25V for reliable operation. Going above 25V can damage the LM7805.
  • Heat Dissipation: As a linear regulator, the LM7805 dissipates excess voltage as heat. The power dissipated is roughly (Vin - Vout) * Iout. If this value is too high, the regulator will overheat and shut down (it has thermal overload protection) or potentially fail. For higher currents or significant voltage drops, always use a heatsink. A general rule of thumb: if the case gets too hot to touch comfortably, you need a heatsink!
  • Current Limit: The LM7805 is typically rated for up to 1A of output current. If your load requires more than this, you’ll need a higher-current regulator or a different type of power supply, like a switching regulator.
  • Noise Sensitivity: While the capacitors help, linear regulators can still be susceptible to noise, especially in very sensitive analog circuits. For ultra-low noise requirements, you might consider Low Dropout (LDO) regulators or switching regulators with proper filtering.
  • Efficiency: Linear regulators are not the most efficient. They convert the excess voltage directly into heat. This means they can consume more power than necessary, especially when the input voltage is much higher than the output voltage. For battery-powered applications where efficiency is paramount, a switching regulator (like a buck converter) might be a better choice, although they are more complex.

Troubleshooting Common Issues

Even with simple circuits, things can sometimes go awry. Here are a few common issues you might encounter when working with an LM7805 circuit:

  • No Output Voltage (or Low Output Voltage):

    • Check Input Voltage: Is the input voltage high enough (at least 7V)? Is it connected correctly?
    • Check Connections: Double-check all your wiring. Are the pins connected to the correct points on the circuit?
    • Check Ground Connection: A poor or missing ground connection is a frequent culprit.
    • Input Overload: Is the load drawing too much current? Try disconnecting the load and measure the output voltage. If it comes back up, your load is the issue.
    • Faulty Component: Though rare, the LM7805 itself could be damaged or faulty.
    • Input Capacitor: Ensure the input capacitor is correctly wired and not shorted.
  • Overheating:

    • Input Voltage Too High: You’re feeding it a much higher voltage than necessary.
    • Excessive Load Current: The load is drawing more current than the regulator can handle efficiently.
    • No Heatsink: If the conditions warrant it, a heatsink is missing.
    • Short Circuit: Check for any shorts in your load circuit or wiring.
  • Oscillations or Instability:

    • Missing Capacitors: Ensure C1 and C2 are present and correctly placed.
    • Capacitor Values: Use appropriate values. While 0.1uF ceramics are standard, sometimes adjusting these values or adding bypass capacitors closer to the IC pins can help.
    • Long Wires: Keep input and output wires as short as possible to minimize inductance and noise pickup.

By understanding the circuit diagram, the function of each component, and these common troubleshooting tips, you’ll be well-equipped to harness the power of the LM7805 for your projects. It’s a fundamental component that opens up a world of possibilities for powering your electronic creations reliably!

Conclusion

So there you have it, guys! The LM7805 voltage regulator is a true workhorse in the world of electronics. We’ve broken down the LM7805 voltage regulator circuit diagram , looked at its essential pins, understood the importance of those little capacitors, and discussed various applications and crucial considerations like dropout voltage and heat dissipation. It’s amazing how such a small, inexpensive component can provide such a critical function: stable, reliable power.

Whether you’re building a robot, powering a sensor array, or just need a clean 5V for a breadboard project, the LM7805 is often the go-to solution. Remember to always ensure your input voltage has enough headroom, don’t shy away from using a heatsink when necessary, and always check your connections. Mastering this basic circuit is a stepping stone to tackling more complex power supply designs and building more robust, professional-looking projects.

Keep experimenting, keep building, and don’t hesitate to reach for the LM7805 when you need that steady +5V. Happy circuit building!