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