(cherry picked from commit109546cbda) (cherry picked from commitc505afd183) (cherry picked from commit42fa3932ab) (cherry picked from commit4c6818ff8e)
(cherry picked from commit109546cbda) (cherry picked from commitc505afd183) (cherry picked from commit42fa3932ab) (cherry picked from commit4c6818ff8e)