(cherry picked from commit 2b4febcf576e2da29ab86e2920302b82b47e435d) (cherry picked from commit 94c126cc9e9aadaf9aa28ebd55a8712aca54e709) (cherry picked from commit 8af0fcf628b0a8ab1b9b44762eb4a9341f9d7b6a)
(cherry picked from commit 2b4febcf576e2da29ab86e2920302b82b47e435d) (cherry picked from commit 94c126cc9e9aadaf9aa28ebd55a8712aca54e709) (cherry picked from commit 8af0fcf628b0a8ab1b9b44762eb4a9341f9d7b6a)