Jealous Haters Since 1998!
Home | News | Reviews | Day In Rock | Photos | RockNewsWire | Singled Out | Tour Dates/Tix | Feeds
 

System of a Down
Steal this review
by Dan Grote

System of a Down released this sixteen song set of previously (commercially) unreleased material in an attempt to play catalogue damage control. After songs recorded during the Toxicity sessions leaked onto the Internet, according to some reports, the band felt they did not want untweaked material floating around. Therefore, they went and tweaked everything they had left, ergo Steal This Album!, the title meant less as instruction and more as “okay, now you can float these songs around to your friends.”

Five of the songs on Steal This Album! began as outtakes from Toxicity. Others are songs written in the band’s early stages, while still others lend what might be a hint of what to expect from the band’s third official studio album.

For the most part, the Toxicity leftovers are every bit as good as what made it onto Toxicity, if not interchangeable. “Boom!” carries the same spoken word verse-shouted chorus of “Prison Song,” while “Innervision” could very easily be the fourth single off Toxicity as opposed to the first single off Steal This Album! “A.D.D.” comes off as a step back, with its “We don’t give a f*** about your world” chants, while “f*** the System” just seems a little too obvious.

As for the non-Toxicity songs, there are some fun surprises on this album. Steal’s lead track, “Chic ‘N’ Stu,” reveals a younger System, still in the stages of discovering its sound, a little more punk, but still singing about the mental enslavement of America, this time through advertising: “Pepperoni and green peppers, mushrooms, olives, chives/Advertising causes me to repeat/to repeat.”

Then there is “Roulette,” written years before even the band’s first album and which is probably the most un-System System song ever written. It’s a love song. There’s no screaming, no subversive messages about having your dreams monitored through implanted v-chips or building prisons to house America. Just vocalist Serj Tankian, guitarist Daron Malakian, an acoustic guitar, and the lilting chorus “I know how I feel when I’m around you/I don’t know how I feel when I’m around you.”

Steal This Album! also finds System having fun with instruments more, as “Nuguns” features a mandolin solo, “I-E-A-I-A-I-O” opens up with some unexpected Van Halen-esque guitar noodling, and the bridge of “Highway Song” trades off between guitar and xylophone. These are the songs that could very well be the future of System, with a more mature and experimental sound than what has gone before, as opposed to growl-and-howl songs like “36” that sound like they didn’t even make the cut on the band’s 1998 debut.

VERDICT: Outtake album though it may be, System of a Down’s b-string songs still sound ten times better than most metal bands’ a-string songs. If anything, Steal This Album! shows off the creative side of an already creative band. Steal is full of surprises without being inaccessible and, if it does indicate the direction in which System is headed, then perhaps what comes next could be even better than Toxicity.
 
 


CD Info 

System Of A Down - Steal This Album!
Label: American Recordings/Columbia Records
Rating: 
 
Tracks:
Chic 'N' Stu 
Innervision 
Bubbles 
Boom! 
Nuguns 
A.D.D. 
Mr. Jack 
I-E-A-I-A-I-O 
36 
Pictures 
Highway Song 
F**K The System 
Ego Brain 
Thetawaves 
Roulette 
Streamline
Listen to samples and Purchase this CD online


Want More Beck?

tell a friend about this article


What Do You Think?


They call you 
What do you think ?:

Fan Speak:

Posted by Listener:
I ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on ramble on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on and on and on and on on and on and on and on