(cherry picked from commit 3d78b1223d3fdc29d500803cefd2931b54f44928) (cherry picked from commit a1fa9a8a7f79a1a711cd881b526724b502e03456) (cherry picked from commit 6a1d2d56bd6b3cd2f535a732cc07a78ea52062f8)
(cherry picked from commit 3d78b1223d3fdc29d500803cefd2931b54f44928) (cherry picked from commit a1fa9a8a7f79a1a711cd881b526724b502e03456) (cherry picked from commit 6a1d2d56bd6b3cd2f535a732cc07a78ea52062f8)