How to build Merkle root from merkle branches? Is there any help/tutorial on how to build the Merkle root from stratum data?

The Slushpool's stratum protocol has an example of a mining job but it does not contain any Merkle branches and I don't know if I am generating the Merkle root correctly.

Here is the string from Slushpool:

{"params": ["bf", "4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000",
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff20020862062f503253482f04b8864e5008",
"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000", [],
"00000002", "1c2ac4af", "504e86b9", false], "id": null, "method": "mining.notify"}
This would indicate an empty block (no transactions). So only coinbase should be used to construct merkle root. So merkle root = Coinbase

Example block: https://www.blockchain.com/btc/block-index/512049/00000000000000000429a0c4fbe735b2d8b493daedf0207728543f748c262437

(edit: but please verify with others)