(cherry picked from commit 60e813df6b7dfe599266cf36ddd52ba204917267) (cherry picked from commit aa409f8993f3ee5e90dd64511f34504ebafec7d1)
(cherry picked from commit a46d047f9466c6f16597755bb7c771a9d1a147f2) (cherry picked from commit bde36062b7a0bf621086e73a5d419cd8637e9e96)