(cherry picked from commit 27b1a2a9f88db276079d6a914022b5e14d625981)
(cherry picked from commit f7b3ce0d4cb66640953bd371804639efcff35518)
(cherry picked from commit 489c73fa4564f1d7524466181212b024702b3637)