contract UnionTokens is PausableToken {
    string public constant name = "UnionTokens";
    string public constant symbol = "UNION";
    uint8 public constant decimals = 6;

    address public team1 = address(0x945835787779ca81cc6a5bf88276c5650edae881);
    address public team2 = address(0xa0fad303c2b167a24d6e29e4b1e71879c6a9036b);
    address public foundation = address(0x9871ed8Fd953E58F2D47a5D8618D8EBF2F49bb51);
    address public partner = address(0xe7f56c56546d85323f2c60ea640a99542569c7f1);
    address public ido = address(0xc9df47746cb76c38e4a54bbdbe21f168cc109533);
    address public operate = address(0x0b1859ce0faba7e7347c22d01333d5f2bdb37acf);
    
    constructor() public {
        totalSupply_ = 10 * (10 ** 8) * (10 ** uint256(decimals));	//Total Supply 1 billion
        balances[team1] = totalSupply_ * 15 / 100;					//Team1 15%
        balances[team2] = totalSupply_ * 5 / 100;				    //Team2 5%
        balances[foundation] = totalSupply_ * 5 / 100;			    //Foundation 5%
        balances[partner] = totalSupply_ * 10 / 100;                //Partner 10%
        balances[ido] = totalSupply_ * 20 / 100;				    //IDO 20%
        balances[operate] = totalSupply_ * 45 / 100;				//Operate (Airdrop and Miner)45%
        emit Transfer(address(0), team1, balances[team1]);
        emit Transfer(address(0), team2, balances[team2]);
        emit Transfer(address(0), foundation, balances[foundation]);
        emit Transfer(address(0), partner, balances[partner]);
        emit Transfer(address(0), ido, balances[ido]);
        emit Transfer(address(0), operate, balances[operate]);
    }

    function batchTransfer(address[] _receivers, uint _value) whenNotPaused public {
        uint cnt = _receivers.length;
        require(cnt>0);
        for(uint i=0; i<cnt; i++){
            address _to = _receivers[i];
            require(_to!=address(0) && _value<=balances[msg.sender]);
            balances[msg.sender] = balances[msg.sender].sub(_value);
            balances[_to] = balances[_to].add(_value);
            emit Transfer(msg.sender, _to, _value);
        }
    }
    
    function batchTransfers(address[] _receivers, uint[] _values) whenNotPaused public {
        uint cnt = _receivers.length;
        require(cnt>0 && cnt==_values.length);
        for(uint i=0; i<cnt; i++){
            address _to = _receivers[i];
            uint _value = _values[i];
            require(_to!=address(0) && _value<=balances[msg.sender]);
            balances[msg.sender] = balances[msg.sender].sub(_values[i]);
            balances[_to] = balances[_to].add(_values[i]);
            emit Transfer(msg.sender, _to, _values[i]);
        }
    }

	// Send back ether sent to me
	function () external {
		revert();
	}
 
}
function () external {
	revert();
}

// Send back ether sent to me