(cherry picked from commit 8b6deebb1dda49e5e35180ed5c5fb5b5221c1516) (cherry picked from commit 875435dc7d6a7cb7925a25ca3347a7ebaabec595) (cherry picked from commit 6f0896e08742a792049137ed19700135f8594a42)