(cherry picked from commit f51702d5398531835b24d812f6f95094a0e0493e) (cherry picked from commit 8d357343c4bc9f18e25543583f8f217b8a2f621b) (cherry picked from commit f943bff2546330bc9eb0914d1a0fa1ef4c709b72) (cherry picked from commit 6109ecf16d6f0ebf1e314e163b5c41ad75758be1)