********* **** ******* *** ******** **** ***** ******* ** ** ********** ***** ***** ****** ** *******
********* ***** **** *** ************* ******** ****** *** ***** ** ****** ******** **** ******* ************* ****** ********** ** ***** ********* **** *******
****** **** *** ***** ********** *** *** ******** ** ***** ** *** ********* ****** ** *********** ** **** ******** **********
****** ** ***** ********* ***** ***** ******** ***** ********* ***** ******** ******* ******** ******** ****** ****** ****** ***** ***** ********* ***** *******