More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 227 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Refund Cbridge | 19573521 | 93 days ago | IN | 0 ETH | 0.0014095 | ||||
Redeem | 19366092 | 122 days ago | IN | 0 ETH | 0.00570157 | ||||
Redeem | 19365373 | 123 days ago | IN | 0 ETH | 0.00690916 | ||||
Redeem | 19365365 | 123 days ago | IN | 0 ETH | 0.00492479 | ||||
Redeem | 19365115 | 123 days ago | IN | 0 ETH | 0.00559438 | ||||
Redeem | 19365008 | 123 days ago | IN | 0 ETH | 0.00649703 | ||||
Redeem | 19362906 | 123 days ago | IN | 0 ETH | 0.00901908 | ||||
Redeem | 19361681 | 123 days ago | IN | 0 ETH | 0.00499319 | ||||
Swap | 19360606 | 123 days ago | IN | 0.3 ETH | 0.02011815 | ||||
Redeem | 19359703 | 123 days ago | IN | 0 ETH | 0.00352601 | ||||
Redeem | 19359671 | 123 days ago | IN | 0 ETH | 0.00301351 | ||||
Redeem | 19359626 | 123 days ago | IN | 0 ETH | 0.00381498 | ||||
Redeem | 19359624 | 123 days ago | IN | 0 ETH | 0.00337179 | ||||
Redeem | 19359610 | 123 days ago | IN | 0 ETH | 0.00347784 | ||||
Redeem | 19359609 | 123 days ago | IN | 0 ETH | 0.00324249 | ||||
Redeem | 19359606 | 123 days ago | IN | 0 ETH | 0.00387106 | ||||
Redeem | 19359597 | 123 days ago | IN | 0 ETH | 0.00325235 | ||||
Redeem | 19359590 | 123 days ago | IN | 0 ETH | 0.00350488 | ||||
Redeem | 19359588 | 123 days ago | IN | 0 ETH | 0.00345856 | ||||
Redeem | 19359582 | 123 days ago | IN | 0 ETH | 0.00345892 | ||||
Redeem | 19359561 | 123 days ago | IN | 0 ETH | 0.00416793 | ||||
Redeem | 19359549 | 123 days ago | IN | 0 ETH | 0.01895149 | ||||
Redeem | 19335377 | 127 days ago | IN | 0 ETH | 0.01718241 | ||||
Redeem | 19335317 | 127 days ago | IN | 0 ETH | 0.00458503 | ||||
Redeem | 19334802 | 127 days ago | IN | 0 ETH | 0.00563138 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
19360606 | 123 days ago | 0.3 ETH | ||||
19359549 | 123 days ago | 0.81845843 ETH | ||||
19359549 | 123 days ago | 0.81845843 ETH | ||||
19359549 | 123 days ago | 0.0184636 ETH | ||||
19359549 | 123 days ago | 0.0184636 ETH | ||||
19335377 | 127 days ago | 0.03799428 ETH | ||||
19335377 | 127 days ago | 0.03799428 ETH | ||||
19302723 | 131 days ago | 0.20068325 ETH | ||||
19302723 | 131 days ago | 0.20068325 ETH | ||||
19302684 | 131 days ago | 0.01240232 ETH | ||||
19302684 | 131 days ago | 0.01240232 ETH | ||||
19296320 | 132 days ago | 0.0003153 ETH | ||||
19296320 | 132 days ago | 0.0003153 ETH | ||||
19286953 | 134 days ago | 0.00752322 ETH | ||||
19286953 | 134 days ago | 0.00752322 ETH | ||||
19282263 | 134 days ago | 0.11308465 ETH | ||||
19282263 | 134 days ago | 0.11308465 ETH | ||||
19270026 | 136 days ago | 0.0074036 ETH | ||||
19270026 | 136 days ago | 0.0074036 ETH | ||||
19266117 | 136 days ago | 0.00013746 ETH | ||||
19266117 | 136 days ago | 0.00013746 ETH | ||||
19263095 | 137 days ago | 0.00012228 ETH | ||||
19263095 | 137 days ago | 0.00012228 ETH | ||||
19245101 | 139 days ago | 0.001 ETH | ||||
19238159 | 140 days ago | 0.0006738 ETH |
Loading...
Loading
Contract Name:
BridgePlus
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.8.0 <0.9.0; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } interface IWETH is IERC20 { function deposit() external payable; function withdraw(uint amount) external; } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } interface ISwapPlusv1 { struct swapRouter { string platform; address tokenIn; address tokenOut; uint256 amountOutMin; uint256 meta; // fee, flag(stable), 0=v2 uint256 percent; } struct swapLine { swapRouter[] swaps; } struct swapBlock { swapLine[] lines; } function swap(address tokenIn, uint256 amount, address tokenOut, address recipient, swapBlock[] calldata swBlocks) external payable returns(uint256, uint256); } interface ILCBridgev2 { function swap(address _to, address _refund, uint256 _outChainID) external payable returns(uint256); function redeem(address account, uint256 amount, uint256 srcChainId, uint256 _swapIndex, uint256 operatorFee) external returns(uint256); function refund(uint256 _index, uint256 _fee) external returns(uint256); } interface ILCBridgev2Token { function swap(address _to, uint256 _amount, address _refund, uint256 _outChainID) external payable returns(uint256); function redeem(address account, uint256 amount, uint256 srcChainId, uint256 _swapIndex, uint256 operatorFee) external returns(uint256); function refund(uint256 _index) external returns(uint256); } interface IBridge { function addNativeLiquidity(uint256 _amount) external payable; function send( address _receiver, address _token, uint256 _amount, uint64 _dstChainId, uint64 _nonce, uint32 _maxSlippage // slippage * 1M, eg. 0.5% -> 5000 ) external; function sendNative( address _receiver, uint256 _amount, uint64 _dstChainId, uint64 _nonce, uint32 _maxSlippage ) external payable; function withdraw( bytes calldata _wdmsg, bytes[] calldata _sigs, address[] calldata _signers, uint256[] calldata _powers ) external; } interface IStargateRouter { struct lzTxObj { uint256 dstGasForCall; uint256 dstNativeAmount; bytes dstNativeAddr; } function addLiquidity(uint256 _poolId, uint256 _amountLD, address to) external payable; function instantRedeemLocal(uint16 _srcPoolId, uint256 _amountLD, address to) external payable; function swap( uint16 _dstChainId, uint256 _srcPoolId, uint256 _dstPoolId, address payable _refundAddress, uint256 _amountLD, uint256 _minAmountLD, lzTxObj memory _lzTxParams, bytes calldata _to, bytes calldata _payload ) external payable; function quoteLayerZeroFee( uint16 _dstChainId, uint8 _functionType, bytes calldata _toAddress, bytes calldata _transferAndCallPayload, lzTxObj memory _lzTxParams ) external view returns (uint256, uint256); } contract BridgePlus is Ownable, ReentrancyGuard { using SafeERC20 for IERC20; uint256 public chainId; address public WETH; address public treasury; address public swapRouter; address public debridgeRouter; uint256 public swapFee = 3000; uint256 public coreDecimal = 1000000; uint256 public stargateSwapFeeMultipler = 1400000; uint256 public stargateSwapFeeDivider = 1000000; mapping (address => bool) public noFeeWallets; mapping (address => bool) public managers; mapping (address => bool) public operators; mapping (address => bool) public whiteListContracts; struct Operator { address bridge; address inToken; address token; uint256 amount; address dstAddress; address receiver; address refund; uint256 desChainId; address dstToken; address receiveToken; uint256 bridgeType; uint256 basketId; bytes param; } struct swapPath { ISwapPlusv1.swapBlock[] path; } error DelegatecallFailed(); event BridgePlusFee(address token, uint256 fee, address treasury); event BridgePlusSwap(address dstAddress, address receiver, uint256 srcChainId, address srcToken, uint256 amount, uint256 dstChainId, address dstToken, address receiveToken, uint256 bridgeType, uint256 basketId); constructor( uint256 _chainId, address _swapRouter, address _WETH, address _treasury ) { require(_swapRouter != address(0), "BridgePlus: swap router"); require(_WETH != address(0), "BridgePlus: WETH"); require(_treasury != address(0), "BridgePlus: Treasury"); chainId = _chainId; swapRouter = _swapRouter; WETH = _WETH; treasury = _treasury; whiteListContracts[0xeF4fB24aD0916217251F553c0596F8Edc630EB66] = true; whiteListContracts[0x663DC15D3C1aC63ff12E45Ab68FeA3F0a883C251] = true; managers[msg.sender] = true; } modifier onlyManager() { require(managers[msg.sender], "BridgePlus: !manager"); _; } modifier onlyOperator() { require(operators[msg.sender], "BridgePlus: !operator"); _; } receive() external payable { } function swap(Operator calldata info, swapPath calldata paths, uint256[] calldata metadata) public payable nonReentrant { uint256 amount = info.amount; if (info.inToken != address(0)) { amount = IERC20(info.inToken).balanceOf(address(this)); IERC20(info.inToken).safeTransferFrom(msg.sender, address(this), info.amount); amount = IERC20(info.inToken).balanceOf(address(this)) - amount; } else if (info.bridgeType == 2) { uint256 fee = getStgSwapFee(info.bridge, uint16(info.desChainId)); amount -= fee; } if (noFeeWallets[msg.sender] == false && info.bridgeType != 0 && info.bridgeType != 4) { amount = _cutFee(info.inToken, amount); } if (paths.path.length > 0) { address tokenI = info.inToken; address tokenO = info.token == address(0) ? WETH : info.token; if (tokenI == address(0)) { tokenI = WETH; IWETH(WETH).deposit{value: amount}(); } _approveTokenIfNeeded(tokenI, swapRouter, amount); (, amount) = ISwapPlusv1(swapRouter).swap(tokenI, amount, tokenO, address(this), paths.path); if (info.token == address(0)) { IWETH(WETH).withdraw(amount); } } if (info.bridgeType == 0) { // LC bridge if (info.token != address(0)) { IWETH(WETH).withdraw(amount); } ILCBridgev2(info.bridge).swap{value: amount}(info.dstAddress, info.refund, info.desChainId); } else { _approveTokenIfNeeded(info.token, info.bridge, amount); if (info.bridgeType == 1) { // CBridge uint64 nonce = uint64(block.timestamp); IBridge(info.bridge).send(info.dstAddress, info.token, amount, uint64(info.desChainId), nonce, 1000000); } else if (info.bridgeType == 2) { // Stargate uint256 fee = getStgSwapFee(info.bridge, uint16(info.desChainId)); IStargateRouter(info.bridge).swap{value: fee}( uint16(info.desChainId), metadata[0], metadata[1], payable(msg.sender), amount, 0, IStargateRouter.lzTxObj(0, 0, "0x"), abi.encodePacked(info.dstAddress), bytes("") ); } else if (info.bridgeType == 4) { ILCBridgev2Token(info.bridge).swap{value: 0}(info.dstAddress, amount, info.refund, info.desChainId); } else if (info.bridgeType == 5 && whiteListContracts[info.bridge]) { (bool ok, ) = address(info.bridge).call{value: metadata[0]}(info.param); if (!ok) { revert DelegatecallFailed(); } } } emit BridgePlusSwap(info.dstAddress, info.receiver, chainId, info.token, amount, info.desChainId, info.dstToken, info.receiveToken, info.bridgeType, info.basketId); } function redeem(address bridge, address receiver, address tokenO, address tokenR, uint256 amount, uint256 bridgeType, swapPath[2] calldata paths, uint256[] memory metadata) public payable onlyOperator nonReentrant returns(uint256) { if (bridgeType == 0 || bridgeType == 4) { // LC bridge amount = ILCBridgev2(bridge).redeem(address(this), amount, metadata[0], metadata[1], metadata[2]); if (metadata[2] > 0) { (bool success, ) = payable(msg.sender).call{value: metadata[2]}(""); require(success, "BridgePlus: Failed refund oeprator fee"); } } if (metadata[3] > 0) { // operator fee amount -= metadata[3]; if (paths[1].path.length > 0) { _approveTokenIfNeeded(tokenO, swapRouter, metadata[3]); (, metadata[3]) = ISwapPlusv1(swapRouter).swap(tokenO, metadata[3], WETH, address(this), paths[1].path); } if (tokenO != address(0)) { IWETH(WETH).withdraw(metadata[3]); } (bool success, ) = payable(msg.sender).call{value: metadata[3]}(""); require(success, "BridgePlus: Failed operator fee"); } if (paths[0].path.length > 0) { address tokenI = tokenO; address tokenSO = tokenR == address(0) ? WETH : tokenR; if (tokenI == address(0)) { tokenI = WETH; IWETH(WETH).deposit{value: amount}(); } _approveTokenIfNeeded(tokenI, swapRouter, amount); (, amount) = ISwapPlusv1(swapRouter).swap(tokenI, amount, tokenSO, address(this), paths[0].path); } if (tokenR == address(0)) { if (tokenO != address(0)) { IWETH(WETH).withdraw(amount); } (bool success, ) = payable(receiver).call{value: amount}(""); require(success, "BridgePlus: Failed redeem"); } else { IERC20(tokenR).safeTransfer(receiver, amount); } return amount; } function refundCbridge( address cbridge, bytes calldata _wdmsg, bytes[] calldata _sigs, address[] calldata _signers, uint256[] calldata _powers, address account, address _token ) public nonReentrant { IBridge(cbridge).withdraw(_wdmsg, _sigs, _signers, _powers); if (_token == address(0)) { (bool success, ) = payable(account).call{value: address(this).balance}(""); require(success, "BridgePlus: refund cbrdige"); } else { IERC20(_token).safeTransfer(account, IERC20(_token).balanceOf(address(this))); } } function getStgSwapFee(address bridge, uint16 _desChain) public view returns(uint256) { (uint256 swFee, ) = IStargateRouter(bridge).quoteLayerZeroFee( _desChain, 1, bytes("0x"), bytes("0x"), IStargateRouter.lzTxObj(0, 0, "0x") ); return swFee * stargateSwapFeeMultipler / stargateSwapFeeDivider; } function setManager(address account, bool access) public onlyOwner { managers[account] = access; } function setOperator(address account, bool access) public onlyOwner { operators[account] = access; } function setSwapRouter(address _swapRouter) public onlyOwner { swapRouter = _swapRouter; } function setDebridgeRouter(address _debridgeRouter) public onlyOwner { debridgeRouter = _debridgeRouter; } function setNoFeeWallets(address account, bool access) public onlyManager { noFeeWallets[account] = access; } function setWhiteListContracts(address account, bool access) public onlyManager { whiteListContracts[account] = access; } function setSwapFee(uint256 _swapFee) public onlyManager { swapFee = _swapFee; } function setTreasury(address _treasury) public onlyManager { treasury = _treasury; } function _approveTokenIfNeeded(address token, address spender, uint256 amount) private { if (token != address(0)) { uint256 oldAllowance = IERC20(token).allowance(address(this), spender); if (oldAllowance < amount) { if (oldAllowance > 0) { IERC20(token).safeApprove(spender, 0); } IERC20(token).safeApprove(spender, amount); } } } function _cutFee(address _token, uint256 _amount) internal returns(uint256) { if (_amount > 0) { uint256 fee = _amount * swapFee / coreDecimal; if (fee > 0) { if (_token == address(0)) { (bool success, ) = payable(treasury).call{value: fee}(""); require(success, "BridgePlus: Failed cut fee"); } else { IERC20(_token).safeTransfer(treasury, fee); } emit BridgePlusFee(_token, fee, treasury); } return _amount - fee; } return 0; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"address","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_WETH","type":"address"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DelegatecallFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"address","name":"treasury","type":"address"}],"name":"BridgePlusFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"dstAddress","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"srcChainId","type":"uint256"},{"indexed":false,"internalType":"address","name":"srcToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dstChainId","type":"uint256"},{"indexed":false,"internalType":"address","name":"dstToken","type":"address"},{"indexed":false,"internalType":"address","name":"receiveToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"bridgeType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"basketId","type":"uint256"}],"name":"BridgePlusSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coreDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"debridgeRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"},{"internalType":"uint16","name":"_desChain","type":"uint16"}],"name":"getStgSwapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noFeeWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"operators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"tokenO","type":"address"},{"internalType":"address","name":"tokenR","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"bridgeType","type":"uint256"},{"components":[{"components":[{"components":[{"components":[{"internalType":"string","name":"platform","type":"string"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"meta","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"internalType":"struct ISwapPlusv1.swapRouter[]","name":"swaps","type":"tuple[]"}],"internalType":"struct ISwapPlusv1.swapLine[]","name":"lines","type":"tuple[]"}],"internalType":"struct ISwapPlusv1.swapBlock[]","name":"path","type":"tuple[]"}],"internalType":"struct BridgePlus.swapPath[2]","name":"paths","type":"tuple[2]"},{"internalType":"uint256[]","name":"metadata","type":"uint256[]"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"cbridge","type":"address"},{"internalType":"bytes","name":"_wdmsg","type":"bytes"},{"internalType":"bytes[]","name":"_sigs","type":"bytes[]"},{"internalType":"address[]","name":"_signers","type":"address[]"},{"internalType":"uint256[]","name":"_powers","type":"uint256[]"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"refundCbridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_debridgeRouter","type":"address"}],"name":"setDebridgeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setNoFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapFee","type":"uint256"}],"name":"setSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapRouter","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setWhiteListContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stargateSwapFeeDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stargateSwapFeeMultipler","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"bridge","type":"address"},{"internalType":"address","name":"inToken","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"dstAddress","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"refund","type":"address"},{"internalType":"uint256","name":"desChainId","type":"uint256"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"receiveToken","type":"address"},{"internalType":"uint256","name":"bridgeType","type":"uint256"},{"internalType":"uint256","name":"basketId","type":"uint256"},{"internalType":"bytes","name":"param","type":"bytes"}],"internalType":"struct BridgePlus.Operator","name":"info","type":"tuple"},{"components":[{"components":[{"components":[{"components":[{"internalType":"string","name":"platform","type":"string"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"meta","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"internalType":"struct ISwapPlusv1.swapRouter[]","name":"swaps","type":"tuple[]"}],"internalType":"struct ISwapPlusv1.swapLine[]","name":"lines","type":"tuple[]"}],"internalType":"struct ISwapPlusv1.swapBlock[]","name":"path","type":"tuple[]"}],"internalType":"struct BridgePlus.swapPath","name":"paths","type":"tuple"},{"internalType":"uint256[]","name":"metadata","type":"uint256[]"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteListContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052610bb8600755620f424060085562155cc0600955620f4240600a553480156200002c57600080fd5b506040516200326a3803806200326a8339810160408190526200004f9162000286565b6200005a3362000219565b600180556001600160a01b038316620000ba5760405162461bcd60e51b815260206004820152601760248201527f427269646765506c75733a207377617020726f7574657200000000000000000060448201526064015b60405180910390fd5b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601060248201526f084e4d2c8cecaa0d8eae67440ae8aa8960831b6044820152606401620000b1565b6001600160a01b0381166200015d5760405162461bcd60e51b815260206004820152601460248201527f427269646765506c75733a2054726561737572790000000000000000000000006044820152606401620000b1565b600293909355600580546001600160a01b03199081166001600160a01b03948516179091556003805482169284169290921790915560048054909116919092161790557f7c51f1bd22379b31d095700af3930b8b11d7de6812c36a616c472cf9cd1f6b36805460ff1990811660019081179092557ff09c1e71c276cc13f4a4ac2fc965616793893b99301dcd905fe953b0f21ed87a8054821683179055336000908152600c6020526040902080549091169091179055620002da565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200028157600080fd5b919050565b600080600080608085870312156200029d57600080fd5b84519350620002af6020860162000269565b9250620002bf6040860162000269565b9150620002cf6060860162000269565b905092959194509250565b612f8080620002ea6000396000f3fe6080604052600436106101bb5760003560e01c80639a8a0592116100ec578063e5e3ef571161008a578063f2fde38b11610064578063f2fde38b146104f2578063f361b00014610512578063f8d2750914610528578063fdff9b4d1461053b57600080fd5b8063e5e3ef5714610492578063e6c789f5146104b2578063f0f44260146104d257600080fd5b8063ba9045e9116100c6578063ba9045e914610402578063c31c9c0714610422578063d8d1d50714610442578063e3e715b41461047257600080fd5b80639a8a0592146103ac578063a5e90eee146103c2578063ad5c4648146103e257600080fd5b8063412736571161015957806361d027b31161013357806361d027b314610321578063715018a61461035957806371d215bd1461036e5780638da5cb5b1461038e57600080fd5b806341273657146102cb57806354cf2aeb146102eb578063558a72971461030157600080fd5b8063224cfb8911610195578063224cfb89146102525780632df28dac1461026857806331eac68f1461029857806334e19907146102ab57600080fd5b80631020396e146101c757806313e7c9d8146101e95780631b2107141461022e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004612493565b61056b565b005b3480156101f557600080fd5b5061021961020436600461258d565b600d6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561023a57600080fd5b5061024460085481565b604051908152602001610225565b34801561025e57600080fd5b5061024460095481565b34801561027457600080fd5b5061021961028336600461258d565b600b6020526000908152604090205460ff1681565b6101e76102a63660046125af565b61074f565b3480156102b757600080fd5b506101e76102c636600461264b565b611182565b3480156102d757600080fd5b506101e76102e636600461258d565b6111b6565b3480156102f757600080fd5b5061024460075481565b34801561030d57600080fd5b506101e761031c366004612672565b6111e0565b34801561032d57600080fd5b50600454610341906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561036557600080fd5b506101e7611213565b34801561037a57600080fd5b506101e7610389366004612672565b611227565b34801561039a57600080fd5b506000546001600160a01b0316610341565b3480156103b857600080fd5b5061024460025481565b3480156103ce57600080fd5b506101e76103dd366004612672565b611281565b3480156103ee57600080fd5b50600354610341906001600160a01b031681565b34801561040e57600080fd5b50600654610341906001600160a01b031681565b34801561042e57600080fd5b50600554610341906001600160a01b031681565b34801561044e57600080fd5b5061021961045d36600461258d565b600e6020526000908152604090205460ff1681565b34801561047e57600080fd5b506101e761048d366004612672565b6112b4565b34801561049e57600080fd5b506101e76104ad36600461258d565b61130e565b3480156104be57600080fd5b506102446104cd3660046126a9565b611338565b3480156104de57600080fd5b506101e76104ed36600461258d565b611442565b3480156104fe57600080fd5b506101e761050d36600461258d565b611493565b34801561051e57600080fd5b50610244600a5481565b6102446105363660046126f2565b61150c565b34801561054757600080fd5b5061021961055636600461258d565b600c6020526000908152604090205460ff1681565b6002600154036105965760405162461bcd60e51b815260040161058d90612836565b60405180910390fd5b6002600155604051630144352560e71b81526001600160a01b038c169063a21a9280906105d5908d908d908d908d908d908d908d908d9060040161290e565b600060405180830381600087803b1580156105ef57600080fd5b505af1158015610603573d6000803e3d6000fd5b5050506001600160a01b03821690506106bf576000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114610663576040519150601f19603f3d011682016040523d82523d6000602084013e610668565b606091505b50509050806106b95760405162461bcd60e51b815260206004820152601a60248201527f427269646765506c75733a20726566756e642063627264696765000000000000604482015260640161058d565b5061073e565b6040516370a0823160e01b815230600482015261073e9083906001600160a01b038416906370a0823190602401602060405180830381865afa158015610709573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072d91906129e2565b6001600160a01b0384169190611cff565b505060018055505050505050505050565b6002600154036107715760405162461bcd60e51b815260040161058d90612836565b60026001556060840135600061078d604087016020880161258d565b6001600160a01b0316146108ce576107ab604086016020870161258d565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081591906129e2565b90506108423330606088013561083160408a0160208b0161258d565b6001600160a01b0316929190611d67565b80610853604087016020880161258d565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bd91906129e2565b6108c79190612a11565b9050610907565b8461014001356002036109075760006108f76108ed602088018861258d565b8760e00135611338565b90506109038183612a11565b9150505b336000908152600b602052604090205460ff1615801561092b575061014085013515155b801561093d5750846101400135600414155b1561095e5761095b610955604087016020880161258d565b82611da5565b90505b600061096a8580612a24565b90501115610b5d576000610984604087016020880161258d565b90506000806109996060890160408a0161258d565b6001600160a01b0316146109bc576109b7606088016040890161258d565b6109c9565b6003546001600160a01b03165b90506001600160a01b038216610a3d5760035460408051630d0e30db60e41b815290516001600160a01b039092169350839163d0e30db0918691600480830192600092919082900301818588803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b50505050505b600554610a559083906001600160a01b031685611f0c565b6005546001600160a01b031663c42ce32a83858430610a748c80612a24565b6040518763ffffffff1660e01b8152600401610a9596959493929190612ad6565b60408051808303816000875af1158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad79190612ca2565b935060009050610aed6060890160408a0161258d565b6001600160a01b031603610b5a57600354604051632e1a7d4d60e01b8152600481018590526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610b4157600080fd5b505af1158015610b55573d6000803e3d6000fd5b505050505b50505b846101400135600003610ca7576000610b7c606087016040880161258d565b6001600160a01b031614610be957600354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610bd057600080fd5b505af1158015610be4573d6000803e3d6000fd5b505050505b610bf6602086018661258d565b6001600160a01b031663df791e5082610c1560a0890160808a0161258d565b610c2560e08a0160c08b0161258d565b60405160e085811b6001600160e01b03191682526001600160a01b03938416600483015291909216602483015289013560448201526064015b60206040518083038185885af1158015610c7c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ca191906129e2565b50611094565b610ccd610cba606087016040880161258d565b610cc7602088018861258d565b83611f0c565b846101400135600103610da95742610ce8602087018761258d565b6001600160a01b031663a5977fbb610d0660a0890160808a0161258d565b610d1660608a0160408b0161258d565b60405160e084811b6001600160e01b03191682526001600160a01b0393841660048301529190921660248301526044820186905289013567ffffffffffffffff908116606483015284166084820152620f424060a482015260c401600060405180830381600087803b158015610d8b57600080fd5b505af1158015610d9f573d6000803e3d6000fd5b5050505050611094565b846101400135600203610f0b576000610dc86108ed602088018861258d565b9050610dd7602087018761258d565b6001600160a01b0316639fbf10fc828860e0013587876000818110610dfe57610dfe612cc6565b9050602002013588886001818110610e1857610e18612cc6565b90506020020135338860006040518060600160405280600081526020016000815260200160405180604001604052806002815260200161060f60f31b8152508152508f6080016020810190610e6d919061258d565b604051602001610e95919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181526020830182526000835290516001600160e01b031960e08d901b168152610ed3999897969594939290600401612d55565b6000604051808303818588803b158015610eec57600080fd5b505af1158015610f00573d6000803e3d6000fd5b505050505050611094565b846101400135600403610f9957610f25602086018661258d565b6001600160a01b0316638a0ccd566000610f4560a0890160808a0161258d565b84610f5660e08b0160c08c0161258d565b60405160e086811b6001600160e01b03191682526001600160a01b0394851660048301526024820193909352921660448301528901356064820152608401610c5e565b8461014001356005148015610fd85750600e6000610fba602088018861258d565b6001600160a01b0316815260208101919091526040016000205460ff165b15611094576000610fec602087018761258d565b6001600160a01b03168484600081811061100857611008612cc6565b90506020020135878061018001906110209190612dd2565b60405161102e929190612e19565b60006040518083038185875af1925050503d806000811461106b576040519150601f19603f3d011682016040523d82523d6000602084013e611070565b606091505b5050905080611092576040516341af4c7f60e11b815260040160405180910390fd5b505b7f192fb59228259e289b6e28112a97b7cd53c3bec85c650d44bc931c8c16b667c36110c560a087016080880161258d565b6110d560c0880160a0890161258d565b6002546110e860608a0160408b0161258d565b8560e08b01356111006101208d016101008e0161258d565b6111126101408e016101208f0161258d565b604080516001600160a01b03998a16815297891660208901528701959095529286166060860152608085019190915260a0840152831660c083015290911660e0820152610140878101356101008301526101608801356101208301520160405180910390a1505060018055505050565b336000908152600c602052604090205460ff166111b15760405162461bcd60e51b815260040161058d90612e29565b600755565b6111be611fc8565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6111e8611fc8565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b61121b611fc8565b6112256000612022565b565b336000908152600c602052604090205460ff166112565760405162461bcd60e51b815260040161058d90612e29565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b611289611fc8565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b336000908152600c602052604090205460ff166112e35760405162461bcd60e51b815260040161058d90612e29565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b611316611fc8565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600080836001600160a01b0316630a51236984600160405180604001604052806002815260200161060f60f31b81525060405180604001604052806002815260200161060f60f31b8152506040518060600160405280600081526020016000815260200160405180604001604052806002815260200161060f60f31b8152508152506040518663ffffffff1660e01b81526004016113da959493929190612e57565b6040805180830381865afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190612ca2565b509050600a546009548261142e9190612eaf565b6114389190612ec6565b9150505b92915050565b336000908152600c602052604090205460ff166114715760405162461bcd60e51b815260040161058d90612e29565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b61149b611fc8565b6001600160a01b0381166115005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058d565b61150981612022565b50565b336000908152600d602052604081205460ff166115635760405162461bcd60e51b8152602060048201526015602482015274213934b233b2a8363ab99d1010b7b832b930ba37b960591b604482015260640161058d565b6002600154036115855760405162461bcd60e51b815260040161058d90612836565b60026001558315806115975750836004145b1561177857886001600160a01b031663a49fdb493087856000815181106115c0576115c0612cc6565b6020026020010151866001815181106115db576115db612cc6565b6020026020010151876002815181106115f6576115f6612cc6565b60209081029190910101516040516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482015260a4016020604051808303816000875af1158015611661573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168591906129e2565b945060008260028151811061169c5761169c612cc6565b60200260200101511115611778576000336001600160a01b0316836002815181106116c9576116c9612cc6565b602002602001015160405160006040518083038185875af1925050503d8060008114611711576040519150601f19603f3d011682016040523d82523d6000602084013e611716565b606091505b50509050806117765760405162461bcd60e51b815260206004820152602660248201527f427269646765506c75733a204661696c656420726566756e64206f65707261746044820152656f722066656560d01b606482015260840161058d565b505b60008260038151811061178d5761178d612cc6565b60200260200101511115611a5457816003815181106117ae576117ae612cc6565b6020026020010151856117c19190612a11565b945060006117d26020850185612ee8565b6117dc9080612a24565b905011156119045761181e87600560009054906101000a90046001600160a01b03168460038151811061181157611811612cc6565b6020026020010151611f0c565b60055482516001600160a01b039091169063c42ce32a9089908590600390811061184a5761184a612cc6565b60209081029190910101516003546001600160a01b0316308860016020028101906118759190612ee8565b61187f9080612a24565b6040518763ffffffff1660e01b81526004016118a096959493929190612ad6565b60408051808303816000875af11580156118be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e29190612ca2565b9050826003815181106118f7576118f7612cc6565b6020026020010181815250505b6001600160a01b03871615611995576003805483516001600160a01b0390911691632e1a7d4d91859190811061193c5761193c612cc6565b60200260200101516040518263ffffffff1660e01b815260040161196291815260200190565b600060405180830381600087803b15801561197c57600080fd5b505af1158015611990573d6000803e3d6000fd5b505050505b6000336001600160a01b0316836003815181106119b4576119b4612cc6565b602002602001015160405160006040518083038185875af1925050503d80600081146119fc576040519150601f19603f3d011682016040523d82523d6000602084013e611a01565b606091505b5050905080611a525760405162461bcd60e51b815260206004820152601f60248201527f427269646765506c75733a204661696c6564206f70657261746f722066656500604482015260640161058d565b505b6000611a608480612ee8565b611a6a9080612a24565b90501115611bb5578660006001600160a01b03881615611a8a5787611a97565b6003546001600160a01b03165b90506001600160a01b038216611b0b5760035460408051630d0e30db60e41b815290516001600160a01b039092169350839163d0e30db0918a91600480830192600092919082900301818588803b158015611af157600080fd5b505af1158015611b05573d6000803e3d6000fd5b50505050505b600554611b239083906001600160a01b031689611f0c565b6005546001600160a01b031663c42ce32a83898430611b428b80612ee8565b611b4c9080612a24565b6040518763ffffffff1660e01b8152600401611b6d96959493929190612ad6565b60408051808303816000875af1158015611b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baf9190612ca2565b97505050505b6001600160a01b038616611cda576001600160a01b03871615611c3157600354604051632e1a7d4d60e01b8152600481018790526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611c1857600080fd5b505af1158015611c2c573d6000803e3d6000fd5b505050505b6000886001600160a01b03168660405160006040518083038185875af1925050503d8060008114611c7e576040519150601f19603f3d011682016040523d82523d6000602084013e611c83565b606091505b5050905080611cd45760405162461bcd60e51b815260206004820152601960248201527f427269646765506c75733a204661696c65642072656465656d00000000000000604482015260640161058d565b50611cee565b611cee6001600160a01b0387168987611cff565b505060018055509095945050505050565b6040516001600160a01b038316602482015260448101829052611d6290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612072565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611d9f9085906323b872dd60e01b90608401611d2b565b50505050565b60008115611f0357600060085460075484611dc09190612eaf565b611dca9190612ec6565b90508015611ef1576001600160a01b038416611e89576004546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611e2d576040519150601f19603f3d011682016040523d82523d6000602084013e611e32565b606091505b5050905080611e835760405162461bcd60e51b815260206004820152601a60248201527f427269646765506c75733a204661696c65642063757420666565000000000000604482015260640161058d565b50611ea3565b600454611ea3906001600160a01b03868116911683611cff565b600454604080516001600160a01b0387811682526020820185905290921682820152517f1c43309dc80f2b318f2f53e1ef233ca88699fed61cfa9100027b05fb8cbf9b4c9181900360600190a15b611efb8184612a11565b91505061143c565b50600092915050565b6001600160a01b03831615611d6257604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f91906129e2565b905081811015611d9f578015611fb457611fb46001600160a01b038516846000612144565b611d9f6001600160a01b0385168484612144565b6000546001600160a01b031633146112255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006120c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122599092919063ffffffff16565b805190915015611d6257808060200190518101906120e59190612f08565b611d625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161058d565b8015806121be5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bc91906129e2565b155b6122295760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161058d565b6040516001600160a01b038316602482015260448101829052611d6290849063095ea7b360e01b90606401611d2b565b60606122688484600085612270565b949350505050565b6060824710156122d15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161058d565b600080866001600160a01b031685876040516122ed9190612f25565b60006040518083038185875af1925050503d806000811461232a576040519150601f19603f3d011682016040523d82523d6000602084013e61232f565b606091505b50915091506123408783838761234b565b979650505050505050565b606083156123ba5782516000036123b3576001600160a01b0385163b6123b35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161058d565b5081612268565b61226883838151156123cf5781518083602001fd5b8060405162461bcd60e51b815260040161058d9190612f37565b80356001600160a01b038116811461240057600080fd5b919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008083601f84011261246057600080fd5b50813567ffffffffffffffff81111561247857600080fd5b6020830191508360208260051b850101111561244757600080fd5b600080600080600080600080600080600060e08c8e0312156124b457600080fd5b6124bd8c6123e9565b9a5067ffffffffffffffff8060208e013511156124d957600080fd5b6124e98e60208f01358f01612405565b909b50995060408d01358110156124ff57600080fd5b61250f8e60408f01358f0161244e565b909950975060608d013581101561252557600080fd5b6125358e60608f01358f0161244e565b909750955060808d013581101561254b57600080fd5b5061255c8d60808e01358e0161244e565b909450925061256d60a08d016123e9565b915061257b60c08d016123e9565b90509295989b509295989b9093969950565b60006020828403121561259f57600080fd5b6125a8826123e9565b9392505050565b600080600080606085870312156125c557600080fd5b843567ffffffffffffffff808211156125dd57600080fd5b908601906101a082890312156125f257600080fd5b9094506020860135908082111561260857600080fd5b908601906020828903121561261c57600080fd5b9093506040860135908082111561263257600080fd5b5061263f8782880161244e565b95989497509550505050565b60006020828403121561265d57600080fd5b5035919050565b801515811461150957600080fd5b6000806040838503121561268557600080fd5b61268e836123e9565b9150602083013561269e81612664565b809150509250929050565b600080604083850312156126bc57600080fd5b6126c5836123e9565b9150602083013561ffff8116811461269e57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600080600080610100898b03121561270f57600080fd5b612718896123e9565b97506020612727818b016123e9565b975061273560408b016123e9565b965061274360608b016123e9565b955060808a0135945060a08a0135935060c08a013567ffffffffffffffff8082111561276e57600080fd5b818c0191508c60408301111561278357600080fd5b90935060e08b0135908082111561279957600080fd5b818c0191508c601f8301126127ad57600080fd5b8135818111156127bf576127bf6126dc565b8060051b604051601f19603f830116810181811085821117156127e4576127e46126dc565b60405291825284820192508381018501918f83111561280257600080fd5b938501935b8285101561282057843584529385019392850192612807565b8096505050505050509295985092959890939650565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126128ad57600080fd5b830160208101925035905067ffffffffffffffff8111156128cd57600080fd5b80360382131561244757600080fd5b81835260006001600160fb1b038311156128f557600080fd5b8260051b80836020870137939093016020019392505050565b608081526000612922608083018a8c61286d565b602083820381850152818983528183019050818a60051b8401018b60005b8c81101561297a57858303601f1901845261295b828f612896565b61296685828461286d565b958701959450505090840190600101612940565b505085810360408701528881528201925088905060005b888110156129bd576001600160a01b036129aa836123e9565b1684529282019290820190600101612991565b50505082810360608401526129d38185876128dc565b9b9a5050505050505050505050565b6000602082840312156129f457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561143c5761143c6129fb565b6000808335601e19843603018112612a3b57600080fd5b83018035915067ffffffffffffffff821115612a5657600080fd5b6020019150600581901b360382131561244757600080fd5b6000808335601e19843603018112612a8557600080fd5b830160208101925035905067ffffffffffffffff811115612aa557600080fd5b8060051b360382131561244757600080fd5b60008235601e19833603018112612acd57600080fd5b90910192915050565b6001600160a01b0387811682526020820187905285811660408301528416606082015260a0608082018190528101829052600060c080830190600585901b84010185835b86811015612c925785830360bf19018452612b358289612ab7565b612b3f8182612a6e565b9150602085526020850182815260408601905060408360051b8701018260005b85811015612c7757888303603f19018452612b7a8286612ab7565b612b848182612a6e565b9150602085526020850182815260408601905060408360051b8701018260005b85811015612c5c57888303603f190184523685900360be1901823512612bc957600080fd5b612bd68235860180612896565b60c08552612be860c08601828461286d565b91506001600160a01b039050612c03843588016020016123e9565b1660208501526001600160a01b03612c20843588016040016123e9565b16604085015282358601606081810135908601526080808201359086015260a09081013594019390935260209384019390910190600101612ba4565b50506020978801979096509490940193505050600101612b5f565b50506020978801979096509490940193505050600101612b1a565b50909a9950505050505050505050565b60008060408385031215612cb557600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b60005b83811015612cf7578181015183820152602001612cdf565b50506000910152565b60008151808452612d18816020860160208601612cdc565b601f01601f19169290920160200192915050565b805182526020810151602083015260006040820151606060408501526114386060850182612d00565b600061012061ffff8c1683528a602084015289604084015260018060a01b03891660608401528760808401528660a08401528060c0840152612d9981840187612d2c565b905082810360e0840152612dad8186612d00565b9050828103610100840152612dc28185612d00565b9c9b505050505050505050505050565b6000808335601e19843603018112612de957600080fd5b83018035915067ffffffffffffffff821115612e0457600080fd5b60200191503681900382131561244757600080fd5b8183823760009101908152919050565b602080825260149082015273213934b233b2a8363ab99d1010b6b0b730b3b2b960611b604082015260600190565b61ffff8616815260ff8516602082015260a060408201526000612e7d60a0830186612d00565b8281036060840152612e8f8186612d00565b90508281036080840152612ea38185612d2c565b98975050505050505050565b808202811582820484141761143c5761143c6129fb565b600082612ee357634e487b7160e01b600052601260045260246000fd5b500490565b60008235601e19833603018112612efe57600080fd5b9190910192915050565b600060208284031215612f1a57600080fd5b81516125a881612664565b60008251612efe818460208701612cdc565b6020815260006125a86020830184612d0056fea26469706673582212207e484bdffaee4c1720f9775f4f5b76463f897cf431d9f772a3ac65fb8c61c04464736f6c63430008130033000000000000000000000000000000000000000000000000000000000000000100000000000000000000000091f6aa43c190e317e4d02698127aa7a629cf4b23000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b65f101f856b9036ec5e0521501d4d0c5146eaf4
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c80639a8a0592116100ec578063e5e3ef571161008a578063f2fde38b11610064578063f2fde38b146104f2578063f361b00014610512578063f8d2750914610528578063fdff9b4d1461053b57600080fd5b8063e5e3ef5714610492578063e6c789f5146104b2578063f0f44260146104d257600080fd5b8063ba9045e9116100c6578063ba9045e914610402578063c31c9c0714610422578063d8d1d50714610442578063e3e715b41461047257600080fd5b80639a8a0592146103ac578063a5e90eee146103c2578063ad5c4648146103e257600080fd5b8063412736571161015957806361d027b31161013357806361d027b314610321578063715018a61461035957806371d215bd1461036e5780638da5cb5b1461038e57600080fd5b806341273657146102cb57806354cf2aeb146102eb578063558a72971461030157600080fd5b8063224cfb8911610195578063224cfb89146102525780632df28dac1461026857806331eac68f1461029857806334e19907146102ab57600080fd5b80631020396e146101c757806313e7c9d8146101e95780631b2107141461022e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004612493565b61056b565b005b3480156101f557600080fd5b5061021961020436600461258d565b600d6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561023a57600080fd5b5061024460085481565b604051908152602001610225565b34801561025e57600080fd5b5061024460095481565b34801561027457600080fd5b5061021961028336600461258d565b600b6020526000908152604090205460ff1681565b6101e76102a63660046125af565b61074f565b3480156102b757600080fd5b506101e76102c636600461264b565b611182565b3480156102d757600080fd5b506101e76102e636600461258d565b6111b6565b3480156102f757600080fd5b5061024460075481565b34801561030d57600080fd5b506101e761031c366004612672565b6111e0565b34801561032d57600080fd5b50600454610341906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561036557600080fd5b506101e7611213565b34801561037a57600080fd5b506101e7610389366004612672565b611227565b34801561039a57600080fd5b506000546001600160a01b0316610341565b3480156103b857600080fd5b5061024460025481565b3480156103ce57600080fd5b506101e76103dd366004612672565b611281565b3480156103ee57600080fd5b50600354610341906001600160a01b031681565b34801561040e57600080fd5b50600654610341906001600160a01b031681565b34801561042e57600080fd5b50600554610341906001600160a01b031681565b34801561044e57600080fd5b5061021961045d36600461258d565b600e6020526000908152604090205460ff1681565b34801561047e57600080fd5b506101e761048d366004612672565b6112b4565b34801561049e57600080fd5b506101e76104ad36600461258d565b61130e565b3480156104be57600080fd5b506102446104cd3660046126a9565b611338565b3480156104de57600080fd5b506101e76104ed36600461258d565b611442565b3480156104fe57600080fd5b506101e761050d36600461258d565b611493565b34801561051e57600080fd5b50610244600a5481565b6102446105363660046126f2565b61150c565b34801561054757600080fd5b5061021961055636600461258d565b600c6020526000908152604090205460ff1681565b6002600154036105965760405162461bcd60e51b815260040161058d90612836565b60405180910390fd5b6002600155604051630144352560e71b81526001600160a01b038c169063a21a9280906105d5908d908d908d908d908d908d908d908d9060040161290e565b600060405180830381600087803b1580156105ef57600080fd5b505af1158015610603573d6000803e3d6000fd5b5050506001600160a01b03821690506106bf576000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114610663576040519150601f19603f3d011682016040523d82523d6000602084013e610668565b606091505b50509050806106b95760405162461bcd60e51b815260206004820152601a60248201527f427269646765506c75733a20726566756e642063627264696765000000000000604482015260640161058d565b5061073e565b6040516370a0823160e01b815230600482015261073e9083906001600160a01b038416906370a0823190602401602060405180830381865afa158015610709573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072d91906129e2565b6001600160a01b0384169190611cff565b505060018055505050505050505050565b6002600154036107715760405162461bcd60e51b815260040161058d90612836565b60026001556060840135600061078d604087016020880161258d565b6001600160a01b0316146108ce576107ab604086016020870161258d565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081591906129e2565b90506108423330606088013561083160408a0160208b0161258d565b6001600160a01b0316929190611d67565b80610853604087016020880161258d565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bd91906129e2565b6108c79190612a11565b9050610907565b8461014001356002036109075760006108f76108ed602088018861258d565b8760e00135611338565b90506109038183612a11565b9150505b336000908152600b602052604090205460ff1615801561092b575061014085013515155b801561093d5750846101400135600414155b1561095e5761095b610955604087016020880161258d565b82611da5565b90505b600061096a8580612a24565b90501115610b5d576000610984604087016020880161258d565b90506000806109996060890160408a0161258d565b6001600160a01b0316146109bc576109b7606088016040890161258d565b6109c9565b6003546001600160a01b03165b90506001600160a01b038216610a3d5760035460408051630d0e30db60e41b815290516001600160a01b039092169350839163d0e30db0918691600480830192600092919082900301818588803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b50505050505b600554610a559083906001600160a01b031685611f0c565b6005546001600160a01b031663c42ce32a83858430610a748c80612a24565b6040518763ffffffff1660e01b8152600401610a9596959493929190612ad6565b60408051808303816000875af1158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad79190612ca2565b935060009050610aed6060890160408a0161258d565b6001600160a01b031603610b5a57600354604051632e1a7d4d60e01b8152600481018590526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610b4157600080fd5b505af1158015610b55573d6000803e3d6000fd5b505050505b50505b846101400135600003610ca7576000610b7c606087016040880161258d565b6001600160a01b031614610be957600354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610bd057600080fd5b505af1158015610be4573d6000803e3d6000fd5b505050505b610bf6602086018661258d565b6001600160a01b031663df791e5082610c1560a0890160808a0161258d565b610c2560e08a0160c08b0161258d565b60405160e085811b6001600160e01b03191682526001600160a01b03938416600483015291909216602483015289013560448201526064015b60206040518083038185885af1158015610c7c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ca191906129e2565b50611094565b610ccd610cba606087016040880161258d565b610cc7602088018861258d565b83611f0c565b846101400135600103610da95742610ce8602087018761258d565b6001600160a01b031663a5977fbb610d0660a0890160808a0161258d565b610d1660608a0160408b0161258d565b60405160e084811b6001600160e01b03191682526001600160a01b0393841660048301529190921660248301526044820186905289013567ffffffffffffffff908116606483015284166084820152620f424060a482015260c401600060405180830381600087803b158015610d8b57600080fd5b505af1158015610d9f573d6000803e3d6000fd5b5050505050611094565b846101400135600203610f0b576000610dc86108ed602088018861258d565b9050610dd7602087018761258d565b6001600160a01b0316639fbf10fc828860e0013587876000818110610dfe57610dfe612cc6565b9050602002013588886001818110610e1857610e18612cc6565b90506020020135338860006040518060600160405280600081526020016000815260200160405180604001604052806002815260200161060f60f31b8152508152508f6080016020810190610e6d919061258d565b604051602001610e95919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181526020830182526000835290516001600160e01b031960e08d901b168152610ed3999897969594939290600401612d55565b6000604051808303818588803b158015610eec57600080fd5b505af1158015610f00573d6000803e3d6000fd5b505050505050611094565b846101400135600403610f9957610f25602086018661258d565b6001600160a01b0316638a0ccd566000610f4560a0890160808a0161258d565b84610f5660e08b0160c08c0161258d565b60405160e086811b6001600160e01b03191682526001600160a01b0394851660048301526024820193909352921660448301528901356064820152608401610c5e565b8461014001356005148015610fd85750600e6000610fba602088018861258d565b6001600160a01b0316815260208101919091526040016000205460ff165b15611094576000610fec602087018761258d565b6001600160a01b03168484600081811061100857611008612cc6565b90506020020135878061018001906110209190612dd2565b60405161102e929190612e19565b60006040518083038185875af1925050503d806000811461106b576040519150601f19603f3d011682016040523d82523d6000602084013e611070565b606091505b5050905080611092576040516341af4c7f60e11b815260040160405180910390fd5b505b7f192fb59228259e289b6e28112a97b7cd53c3bec85c650d44bc931c8c16b667c36110c560a087016080880161258d565b6110d560c0880160a0890161258d565b6002546110e860608a0160408b0161258d565b8560e08b01356111006101208d016101008e0161258d565b6111126101408e016101208f0161258d565b604080516001600160a01b03998a16815297891660208901528701959095529286166060860152608085019190915260a0840152831660c083015290911660e0820152610140878101356101008301526101608801356101208301520160405180910390a1505060018055505050565b336000908152600c602052604090205460ff166111b15760405162461bcd60e51b815260040161058d90612e29565b600755565b6111be611fc8565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6111e8611fc8565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b61121b611fc8565b6112256000612022565b565b336000908152600c602052604090205460ff166112565760405162461bcd60e51b815260040161058d90612e29565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b611289611fc8565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b336000908152600c602052604090205460ff166112e35760405162461bcd60e51b815260040161058d90612e29565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b611316611fc8565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600080836001600160a01b0316630a51236984600160405180604001604052806002815260200161060f60f31b81525060405180604001604052806002815260200161060f60f31b8152506040518060600160405280600081526020016000815260200160405180604001604052806002815260200161060f60f31b8152508152506040518663ffffffff1660e01b81526004016113da959493929190612e57565b6040805180830381865afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190612ca2565b509050600a546009548261142e9190612eaf565b6114389190612ec6565b9150505b92915050565b336000908152600c602052604090205460ff166114715760405162461bcd60e51b815260040161058d90612e29565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b61149b611fc8565b6001600160a01b0381166115005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058d565b61150981612022565b50565b336000908152600d602052604081205460ff166115635760405162461bcd60e51b8152602060048201526015602482015274213934b233b2a8363ab99d1010b7b832b930ba37b960591b604482015260640161058d565b6002600154036115855760405162461bcd60e51b815260040161058d90612836565b60026001558315806115975750836004145b1561177857886001600160a01b031663a49fdb493087856000815181106115c0576115c0612cc6565b6020026020010151866001815181106115db576115db612cc6565b6020026020010151876002815181106115f6576115f6612cc6565b60209081029190910101516040516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482015260a4016020604051808303816000875af1158015611661573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168591906129e2565b945060008260028151811061169c5761169c612cc6565b60200260200101511115611778576000336001600160a01b0316836002815181106116c9576116c9612cc6565b602002602001015160405160006040518083038185875af1925050503d8060008114611711576040519150601f19603f3d011682016040523d82523d6000602084013e611716565b606091505b50509050806117765760405162461bcd60e51b815260206004820152602660248201527f427269646765506c75733a204661696c656420726566756e64206f65707261746044820152656f722066656560d01b606482015260840161058d565b505b60008260038151811061178d5761178d612cc6565b60200260200101511115611a5457816003815181106117ae576117ae612cc6565b6020026020010151856117c19190612a11565b945060006117d26020850185612ee8565b6117dc9080612a24565b905011156119045761181e87600560009054906101000a90046001600160a01b03168460038151811061181157611811612cc6565b6020026020010151611f0c565b60055482516001600160a01b039091169063c42ce32a9089908590600390811061184a5761184a612cc6565b60209081029190910101516003546001600160a01b0316308860016020028101906118759190612ee8565b61187f9080612a24565b6040518763ffffffff1660e01b81526004016118a096959493929190612ad6565b60408051808303816000875af11580156118be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e29190612ca2565b9050826003815181106118f7576118f7612cc6565b6020026020010181815250505b6001600160a01b03871615611995576003805483516001600160a01b0390911691632e1a7d4d91859190811061193c5761193c612cc6565b60200260200101516040518263ffffffff1660e01b815260040161196291815260200190565b600060405180830381600087803b15801561197c57600080fd5b505af1158015611990573d6000803e3d6000fd5b505050505b6000336001600160a01b0316836003815181106119b4576119b4612cc6565b602002602001015160405160006040518083038185875af1925050503d80600081146119fc576040519150601f19603f3d011682016040523d82523d6000602084013e611a01565b606091505b5050905080611a525760405162461bcd60e51b815260206004820152601f60248201527f427269646765506c75733a204661696c6564206f70657261746f722066656500604482015260640161058d565b505b6000611a608480612ee8565b611a6a9080612a24565b90501115611bb5578660006001600160a01b03881615611a8a5787611a97565b6003546001600160a01b03165b90506001600160a01b038216611b0b5760035460408051630d0e30db60e41b815290516001600160a01b039092169350839163d0e30db0918a91600480830192600092919082900301818588803b158015611af157600080fd5b505af1158015611b05573d6000803e3d6000fd5b50505050505b600554611b239083906001600160a01b031689611f0c565b6005546001600160a01b031663c42ce32a83898430611b428b80612ee8565b611b4c9080612a24565b6040518763ffffffff1660e01b8152600401611b6d96959493929190612ad6565b60408051808303816000875af1158015611b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baf9190612ca2565b97505050505b6001600160a01b038616611cda576001600160a01b03871615611c3157600354604051632e1a7d4d60e01b8152600481018790526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611c1857600080fd5b505af1158015611c2c573d6000803e3d6000fd5b505050505b6000886001600160a01b03168660405160006040518083038185875af1925050503d8060008114611c7e576040519150601f19603f3d011682016040523d82523d6000602084013e611c83565b606091505b5050905080611cd45760405162461bcd60e51b815260206004820152601960248201527f427269646765506c75733a204661696c65642072656465656d00000000000000604482015260640161058d565b50611cee565b611cee6001600160a01b0387168987611cff565b505060018055509095945050505050565b6040516001600160a01b038316602482015260448101829052611d6290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612072565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611d9f9085906323b872dd60e01b90608401611d2b565b50505050565b60008115611f0357600060085460075484611dc09190612eaf565b611dca9190612ec6565b90508015611ef1576001600160a01b038416611e89576004546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611e2d576040519150601f19603f3d011682016040523d82523d6000602084013e611e32565b606091505b5050905080611e835760405162461bcd60e51b815260206004820152601a60248201527f427269646765506c75733a204661696c65642063757420666565000000000000604482015260640161058d565b50611ea3565b600454611ea3906001600160a01b03868116911683611cff565b600454604080516001600160a01b0387811682526020820185905290921682820152517f1c43309dc80f2b318f2f53e1ef233ca88699fed61cfa9100027b05fb8cbf9b4c9181900360600190a15b611efb8184612a11565b91505061143c565b50600092915050565b6001600160a01b03831615611d6257604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f91906129e2565b905081811015611d9f578015611fb457611fb46001600160a01b038516846000612144565b611d9f6001600160a01b0385168484612144565b6000546001600160a01b031633146112255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006120c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122599092919063ffffffff16565b805190915015611d6257808060200190518101906120e59190612f08565b611d625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161058d565b8015806121be5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bc91906129e2565b155b6122295760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161058d565b6040516001600160a01b038316602482015260448101829052611d6290849063095ea7b360e01b90606401611d2b565b60606122688484600085612270565b949350505050565b6060824710156122d15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161058d565b600080866001600160a01b031685876040516122ed9190612f25565b60006040518083038185875af1925050503d806000811461232a576040519150601f19603f3d011682016040523d82523d6000602084013e61232f565b606091505b50915091506123408783838761234b565b979650505050505050565b606083156123ba5782516000036123b3576001600160a01b0385163b6123b35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161058d565b5081612268565b61226883838151156123cf5781518083602001fd5b8060405162461bcd60e51b815260040161058d9190612f37565b80356001600160a01b038116811461240057600080fd5b919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008083601f84011261246057600080fd5b50813567ffffffffffffffff81111561247857600080fd5b6020830191508360208260051b850101111561244757600080fd5b600080600080600080600080600080600060e08c8e0312156124b457600080fd5b6124bd8c6123e9565b9a5067ffffffffffffffff8060208e013511156124d957600080fd5b6124e98e60208f01358f01612405565b909b50995060408d01358110156124ff57600080fd5b61250f8e60408f01358f0161244e565b909950975060608d013581101561252557600080fd5b6125358e60608f01358f0161244e565b909750955060808d013581101561254b57600080fd5b5061255c8d60808e01358e0161244e565b909450925061256d60a08d016123e9565b915061257b60c08d016123e9565b90509295989b509295989b9093969950565b60006020828403121561259f57600080fd5b6125a8826123e9565b9392505050565b600080600080606085870312156125c557600080fd5b843567ffffffffffffffff808211156125dd57600080fd5b908601906101a082890312156125f257600080fd5b9094506020860135908082111561260857600080fd5b908601906020828903121561261c57600080fd5b9093506040860135908082111561263257600080fd5b5061263f8782880161244e565b95989497509550505050565b60006020828403121561265d57600080fd5b5035919050565b801515811461150957600080fd5b6000806040838503121561268557600080fd5b61268e836123e9565b9150602083013561269e81612664565b809150509250929050565b600080604083850312156126bc57600080fd5b6126c5836123e9565b9150602083013561ffff8116811461269e57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600080600080610100898b03121561270f57600080fd5b612718896123e9565b97506020612727818b016123e9565b975061273560408b016123e9565b965061274360608b016123e9565b955060808a0135945060a08a0135935060c08a013567ffffffffffffffff8082111561276e57600080fd5b818c0191508c60408301111561278357600080fd5b90935060e08b0135908082111561279957600080fd5b818c0191508c601f8301126127ad57600080fd5b8135818111156127bf576127bf6126dc565b8060051b604051601f19603f830116810181811085821117156127e4576127e46126dc565b60405291825284820192508381018501918f83111561280257600080fd5b938501935b8285101561282057843584529385019392850192612807565b8096505050505050509295985092959890939650565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126128ad57600080fd5b830160208101925035905067ffffffffffffffff8111156128cd57600080fd5b80360382131561244757600080fd5b81835260006001600160fb1b038311156128f557600080fd5b8260051b80836020870137939093016020019392505050565b608081526000612922608083018a8c61286d565b602083820381850152818983528183019050818a60051b8401018b60005b8c81101561297a57858303601f1901845261295b828f612896565b61296685828461286d565b958701959450505090840190600101612940565b505085810360408701528881528201925088905060005b888110156129bd576001600160a01b036129aa836123e9565b1684529282019290820190600101612991565b50505082810360608401526129d38185876128dc565b9b9a5050505050505050505050565b6000602082840312156129f457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561143c5761143c6129fb565b6000808335601e19843603018112612a3b57600080fd5b83018035915067ffffffffffffffff821115612a5657600080fd5b6020019150600581901b360382131561244757600080fd5b6000808335601e19843603018112612a8557600080fd5b830160208101925035905067ffffffffffffffff811115612aa557600080fd5b8060051b360382131561244757600080fd5b60008235601e19833603018112612acd57600080fd5b90910192915050565b6001600160a01b0387811682526020820187905285811660408301528416606082015260a0608082018190528101829052600060c080830190600585901b84010185835b86811015612c925785830360bf19018452612b358289612ab7565b612b3f8182612a6e565b9150602085526020850182815260408601905060408360051b8701018260005b85811015612c7757888303603f19018452612b7a8286612ab7565b612b848182612a6e565b9150602085526020850182815260408601905060408360051b8701018260005b85811015612c5c57888303603f190184523685900360be1901823512612bc957600080fd5b612bd68235860180612896565b60c08552612be860c08601828461286d565b91506001600160a01b039050612c03843588016020016123e9565b1660208501526001600160a01b03612c20843588016040016123e9565b16604085015282358601606081810135908601526080808201359086015260a09081013594019390935260209384019390910190600101612ba4565b50506020978801979096509490940193505050600101612b5f565b50506020978801979096509490940193505050600101612b1a565b50909a9950505050505050505050565b60008060408385031215612cb557600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b60005b83811015612cf7578181015183820152602001612cdf565b50506000910152565b60008151808452612d18816020860160208601612cdc565b601f01601f19169290920160200192915050565b805182526020810151602083015260006040820151606060408501526114386060850182612d00565b600061012061ffff8c1683528a602084015289604084015260018060a01b03891660608401528760808401528660a08401528060c0840152612d9981840187612d2c565b905082810360e0840152612dad8186612d00565b9050828103610100840152612dc28185612d00565b9c9b505050505050505050505050565b6000808335601e19843603018112612de957600080fd5b83018035915067ffffffffffffffff821115612e0457600080fd5b60200191503681900382131561244757600080fd5b8183823760009101908152919050565b602080825260149082015273213934b233b2a8363ab99d1010b6b0b730b3b2b960611b604082015260600190565b61ffff8616815260ff8516602082015260a060408201526000612e7d60a0830186612d00565b8281036060840152612e8f8186612d00565b90508281036080840152612ea38185612d2c565b98975050505050505050565b808202811582820484141761143c5761143c6129fb565b600082612ee357634e487b7160e01b600052601260045260246000fd5b500490565b60008235601e19833603018112612efe57600080fd5b9190910192915050565b600060208284031215612f1a57600080fd5b81516125a881612664565b60008251612efe818460208701612cdc565b6020815260006125a86020830184612d0056fea26469706673582212207e484bdffaee4c1720f9775f4f5b76463f897cf431d9f772a3ac65fb8c61c04464736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000100000000000000000000000091f6aa43c190e317e4d02698127aa7a629cf4b23000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b65f101f856b9036ec5e0521501d4d0c5146eaf4
-----Decoded View---------------
Arg [0] : _chainId (uint256): 1
Arg [1] : _swapRouter (address): 0x91f6AA43c190E317E4D02698127aA7A629CF4b23
Arg [2] : _WETH (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [3] : _treasury (address): 0xB65F101f856b9036ec5E0521501d4D0C5146eAF4
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [1] : 00000000000000000000000091f6aa43c190e317e4d02698127aa7a629cf4b23
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [3] : 000000000000000000000000b65f101f856b9036ec5e0521501d4d0c5146eaf4
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.