oooooo oooooo oooo oooooooo oooooo oooo .oooooo..o .o
`888. `888. .8' dP""""""" `888. .8' d8P' `Y8 o888
`888. .8888. .8' d88888b. `888. .8' ooo. .oo. Y88bo. 888
`888 .8'`888. .8' `Y88b `888. .8' `888P"Y88b `"Y8888o. 888
`888.8' `888.8' ]88 `888.8' 888 888 `"Y88b 888
`888' `888' o. .88P `888' 888 888 oo .d8P 888
`8' `8' `8bd88P' `8' o888o o888o 8""88888P' o888o