(cherry picked from commit a5a1200c9ffb90d14286a18020fe37186f78f5a3)
(cherry picked from commit c9b4007120a4a7399c7b0377c762cb69e79d5d6c)
(cherry picked from commit 92f6796f2801c3c3b827bbfd29c058d3ea98d88f)