(cherry picked from commit fff1d2c1226ec23841b04dd478e8b97f31abbeba) (cherry picked from commit 564d3211f27c35bf3143a4bd1b3f8eeac2c6b01f) (cherry picked from commit a7ea55e0156299ec8b80af1f3e681a3a7a31a3b4) (cherry picked from commit b3e9aff5f7bcafea8b82f9b07719ff53d3ab2f12)