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