CCCCCBCBCCCCCBCCBCCCCBCCCCCCCCCBCCCCBCCCCCCCCCCCCBCCBBCCCCBCCBBCCBCCCBCCBCCCCBCBCCBCCCCCCCBCCCCCCCCCCCCCCBCCCCBBBCCCCCCCCCBCCCCCBCCCCCCCCCBCCCCCBCCCCBCCCBBBBCCCBBCCCCCCCCCBCBCCCCCBBCCCCBBCCBCCCBCCCBCCCCCBCBCBCCCCCBCCCCCCBBCBCBBCCCCBCCCCCCCCBBCCBBCCBCBCCCCBBCBBBCBCCCCCCBCCBCBBCCBCCCCCCBCCBBCCCCBBBCCBBCCBCCCCCBCBCCCCBBCCCBBBBCBCCCCBCCCCBCCCBCCBCCCCCCBCCCCBBCCBBCBCCCCBCBCCCBCCBCBBBBCCCCBCCCCCCCBCCBBBCCBCBCCBCBBCCBBCBBCBCCBCCCBCCCCCCCCCCCCCBCBCCBCCCCCCCCCCCCCBCCCCBCCCBBBCBCCCCBCCBBCCCCCBCBBBCCCBCCCCBCCBCBCCCBBBCCBCCCBCCCBCCCCCCCBCBCCCBCCCCCCCCBCCCBBCCCCCCCCCCCBCBBCBCCBCCCBCCBCCCBCBCBCBCCCCCCCBCCCCCCCCCCBCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCBCCCCCCCBCBCCCCBCCBCBCBCCCCCCBCBBCBCCBCCCBBBCCCBBCCCBCCCBCCCCBCCCCCCCCBCBCCCCCCBCCCCCBCCBCCCCBCCBCBCBCCCCCCCCCBCBBCBCBCCCCCCCBCCCCCCCBCCCBBCCCBCBCBCBCBBBCCCBBBCCCCBCCCCCCCCBCCCCCCCBCCCCBCCCBCCBCCCCCCBBCCBCBCCCBCCBCCCBCBCBCCBBCCBBBCCCCBCCCCCCBCCCCBCCCCBCCBCBCBCCCCCCCCBBCBBCBBCCCCCCCCCCCCCCBCCCCBCCCCCCBCCBCCCCCCBCCCBBCCCCCBCBCBCCCCCCCCCCCBCCCCCCCCCCCCBCCCCBCCCCCCBCCBCBCCCBCBCBCCCCCCCCCBCCBBBCCCCBBCBBCBBCCBCCCCBBCBCBCCCCCBCCCCBCCCBBCCCCBCBBCBBCBCCCCBBBCCCCCBCCCCCBCCCBCBCCCCBCBCBCCCCBBCCBCCCBCCCCCCCBBCBCCBCCCCCCBCCCCCCBCCCCBCCCBCCCCCBCCCCCCCCCCCCBCCBCBBCCCBBCCCCCCCBCCCCCBCCCCCCCCCCCBCCCCCCCCBCCCCCBBBCCCCBBCCBCCCCCBBBCCCCCBBCCCCBBBCCCCCBCCCBCBBBCCCCCCCCCCCCBCCBBBBCCCCBBCCCCCBCCCCBCCCCCCCCCBBCCCCBCCBBCCCCCCCCBBCCCCCCCCBCCCCBCCCCCCBCCCCBCCCCCCBCCCCCCCCBBCCCBCBBCCCCCCCCBCCCCCBCBBBBCBCBCCCCCBCCCCCCCCCCBBCBCCCBCBBCCCCCCCCCCCCCCCBCCCBCBCCCCCCBCCCCCBCCBCBCCCCCCBCCCCCCCCCCCCBCCBBCBCCCCCCCCBCCBCBCBCBCBBCCCCBCCBCBCCCBBCCCCCCCCCCBBBCCCBCCCBCCBBCCBCCCCCCBCBCBBCBCCBCBCCBCCCCCCBBBCCBCCBCCCCCCCCCBCBBCCCCCBCCBBCCCCCCBCCCBCCCBCCBCCCCBCCCBCCCCCCCBCCCCCBCCCCCCCCCCCCCCBCCCCCCCCCCCBBCCCCCCBCBCCBCCBBCCCCBCCBBBBCBCCCBCCBCCCCCCCCCCCCBCCBCCCCCBCBCCCCCCBCCBCCBCCCCCCCCCCCBCCCBCCCCCCCCBCBBCCCBCCBBCCBCCCCCBCCBCCCBCCBCCBCBCCCBCBCBCBCCCCCBCCBBBCCCCBCCCCCCCCCCCCCCBBBCCBCCBCBCCCCBBCCCCBCCCCBBCCCBCCCCBCCCCCCCCCCCCBCCCCCCBCCBBCCCBCCBCCBCCCCCCCBCBCCCBCCCCCBBCCCCCCCBCCBCBBBCBBCCCCBBBCCCCBCCCCCBBCCCBCCBCCCCCCCBBCCCCCCCCBBBCCCCCBCCBCBCCBCCCCCCCCCCCCBBCBCBCCBCCBCBBCCCCCCCBCCCCCBCCBCCCCBCCCCCBCBBCCCBCCBCCCCCBCCCCCCCCCCCCCCCBBCCCCBBBCCBCCBCCCBCBCCCCCCCCCCBCCCBCBCBCBBCCCBCCCCCCCCCCCBCCBCCCCCCCBCCCCCCCCBCCCCBCBCCBCCCCCCCCCBCCCBBBCCCBBCCCCCCCCBCBCBCBBBCCCCCCBCCCBBCBCCCBCBBCCBBCCCBCBCCCCCCCCCBBCCCCCBCCBCCBCCBBBBBCCCCCCCCBBCCCCCCCCCCCBCBCCCCCCBCCBCBBCCCCCCCCCCCCCCCCCCBBCCCCBBCCCBCCCBBCCBBCCBCCCCCCCCCCBCCBCCCCBCCBCCCCCCCBCCBCBCCBCCCCCCBCCCCCBCCBCCBBBBCCBCCCCCCCCBBCCCCCCCBCCBCCCBCBBBCCCCCCCCCCCCCCCCCCBCCCBCBCCBCCCCCBCCCCBBCCCCCCCCCCCCCBBCCCCBCCBBCBCBCBCBCCCCCBCCCBCBCCBCBCBCBCCBCCCCCCBCCCCBCBBCCCCCCCBCCBCCBBBCCBCCBCCBBBCCCCCCBCCCBCBCBBCCCBCBBCCCCCCCCCCCCCBCCBCBCCBBBCBCCBCCCCCCCCCBCCCCCCCCCCCCCBCCCCCCCBCBCBCBCBCCCCCCCCCCCCCBCCCCCCCCCCCBCCCBCBCBCBCCBBBCBCCCCCBCCBBCCCCBCCBCCCBCCCCCBCBCCBCCCCCCCCCCCCCCCCCBBCBCCCCBCCCCBCCCBCCBCCCCCCBCCCCCCBBCCCCCCCCCCCCCBCCCCCCCBBCCBCCCCBBBCBCCCCBBBCCCCCCCBCBCBCBBBCBCCCCCCBCCBCCBBBCCCCBCCBCCCBCCCCCBCCCCCCCCCCBBCCCCCCBCBCCBCCCBCCCCCCCBCBCCCBCCCBCBCBCCCCCCBCCBCCCCBCCCCCCCBCCBBCCCCCBCCCCCCBCCCBCCCBCCCCCCCCCCBCCBCCBBBCCBBCBCCCBBCCCCBCCCCCBCBCCBBCBCCCBCCCBCBCCCBCCCCBCCCBCBCCCCCCBCCCCCCCCBBCBCBCBCCCCBCBCCBBCBCBBCCCCBCCBBCCBCCCCCCCCBCCBBCCBBCCCCCCCCCBBBCCCBCCCBBBBCCCCCCBCBCBCCBCCCCBCCCCCCCCCBBCCCCCCCCCCBBCCCCBBCCBBBCCCCCCCBCBBCCCCBBBCCBCCCCCCCCCBCBBCBBCCCBCCCCCCCCBBCCCCBBBBCCCCCBBCCCCBCCCBCCCCCBCCBCCCBCBCCCCCCCCBCCBCCCBCCCCCCBCBCCBBCCBCCCCCCCCCBCCCCBCCCCCBCCBBCBBCCCBCCCCCBCCCCCCCBCBCCCBCBCCCCCBCCBCCCCBCCBCBBBCCCCCCCCCBCBCCCCCBCCBBCCCCCCCCBCBCCCCCCCCCCCCCCCCCCCCCBCCCCBCCCCCCCBCCCCBBCBCCBCBCCCCCBCCCCBCCCCCCBBBBCCBCCCCCCCCCCCCCCBCCBBBBCBBCCCCBCCCBCBCCCBCCCCBBCCBCBBCCCBBBBCBCCCCBCCCCCCBCCCBCBCCCCCCCCBCCCCCCCCBCBCCCCCCCBCBCCCCCCBCCCCCCCBCCCCCCCCBCBBCCCCCBCBCCBCCBCCCCCCCCCCCCBCCBBCCCCCCBBCBCCBBCCCCCCCCCCCCCBCCCBCCCCCCCCCCCBCBCCCBBCBCBCCBBBCCCCCCBBCCBCCCBCCCCCCCCCCCCBBCCBCBCCCCCCCBCCCCBBBCCCCCCCCBCBCBCCCCBBCCCCCBBCBBCCCBCBCCCBCBCCCCBCCBBCCCCBCCCCCCBCBCBCCCBCCCBCBCCBCCCCCBBCBCCCCCBCCCCBCBCCCCCBBCCBCBCBCBCBBCCCBBBCCCCCBCCCCCCCCCBCCBCCBCBCCCBCCCCBCCCBCCBBCBBBCBCBCCCCCCCCCCCCCCCCCCCCBCBCCCBBCCCCCCCCCCCBCCBCCCCCCCCCCCCBCCCCCCCCCCCCCCCCC