(cherry picked from commit fa14e4bc001e28d9912e8d985d09bab75aedb87c) (cherry picked from commit 3a860e876e799ef44fca34e3cb19a89dbd4f6744) (cherry picked from commit 8d7600ae6b7fadba1b4695666cf9287be021d481) (cherry picked from commit 1fe15113cf464015212e6ad7ecbca22dc1c50309)