(cherry picked from commit 5455496068177df9d5c49af08e0e9e62932b0bfd)
(cherry picked from commit 3e603e1da45be5aa06c24d943a90e8d4f4214f35)
(cherry picked from commit 402f1a74b41e6d3f0cec75bdfa577d9421a572fe)