(cherry picked from commit f725b9e267c604fbcec09956e3a39caf04798809) (cherry picked from commit cf816bc751e3b82be1f1931d6d0d5cbd77cb3e17) (cherry picked from commit a58034cdfd592fa61a85c873b5249f9b6a3a825e)
(cherry picked from commit f725b9e267c604fbcec09956e3a39caf04798809) (cherry picked from commit cf816bc751e3b82be1f1931d6d0d5cbd77cb3e17) (cherry picked from commit a58034cdfd592fa61a85c873b5249f9b6a3a825e)