(cherry picked from commit 2a25be788bdf3b58b236cb2a9f503b569703a0c6)
(cherry picked from commit b270d5815c80f387759eecbfcb588e548f5ed956)
(cherry picked from commit e7382cc71e43c52abcabc59d09128450ce415d26)
(cherry picked from commit 665400ea1e92405f41590bccf800714440ded50a)
(cherry picked from commit af17f5caf7)
(cherry picked from commit b238a8463a57c6ae1a7892036e817fcc92645ea8)
(cherry picked from commit 81c71941ad)
(cherry picked from commit 48979314b1)
(cherry picked from commit 9fc2cef94a)
(cherry picked from commit 14cb04148a)