contract CMErc20BurnPause is ERC20Burnable, CMERC20Pausable,  CM {

    constructor(string memory name, string memory symbol, uint256 amount, uint8 decimals) ERC20(name, symbol) public payable {
        _supportCM();
        cmContractType = "CMErc20BurnPause";
        _setupDecimals(decimals);
        _mint(msg.sender, amount);
        
        // set up required roles
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setupRole(PAUSER_ROLE, _msgSender());
        
        
    }

    
    // overrides
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Pausable) {
        super._beforeTokenTransfer(from, to, amount);
	}
    

}
// imports
function _beforeTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Pausable) {
    super._beforeTokenTransfer(from, to, amount);

// overrides