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