(cherry picked from commit 75ed04dc1f7e7da565e41b7190fb44f078c5b4d6) (cherry picked from commit a23fc1d9e2a6166dde561c6e5cf8f1e09e0a5c0c) (cherry picked from commit efed5ad0c48e83e66b4be7f33147aa192e47e498)
(cherry picked from commit 75ed04dc1f7e7da565e41b7190fb44f078c5b4d6) (cherry picked from commit a23fc1d9e2a6166dde561c6e5cf8f1e09e0a5c0c) (cherry picked from commit efed5ad0c48e83e66b4be7f33147aa192e47e498)