+-++---+-+--+--++++++-++-++++++--+--+-+---++- +-++---+-+--+--++++++-++-++++++--+--+-+---++- +-+-+-----++++--++---+--+---++--++++-----+-+- ++-+-+++++----++--+++-++-+++--++----+++++-+-+
