function activate(address dede) payable {
		var _dede = DeDeContract(dede);

		require(isDeDeContract[dede]);

		require(msg.sender == scs[dede]);
		require(now >= validationTime[dede] && now < validationTime[dede] + 1 days);

		isDeDeContract[dede] = false;

		Activate(dip[dede], scs[dede], issuer[dede], dede);

		if(bulletAddress[dede] == 0){
			require(msg.value >= bulletAmount[dede]);
			if(msg.value > bulletAmount[dede]){
				msg.sender.transfer(msg.value - bulletAmount[dede]);
			}
		}
		else{
			assert(ERC20Interface(bulletAddress[dede]).transferFrom(scs[dede], dip[dede], bulletAmount[dede])); 
		}

		if(targetAddress[dede] != 0){
			assert(ERC20Interface(targetAddress[dede]).transferFrom(dede, scs[dede], targetAmount[dede])); 
		}
		_dede.activate.value(bulletAddress[dede] == 0 ? bulletAmount[dede] : 0)(bulletAddress[dede] == 0 ? dip[dede] : scs[dede]); 
	}