Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Sentinel
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 800 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.17; import "./GuardedPauser.sol"; import "./GuardedGovernor.sol"; contract Sentinel is GuardedPauser, GuardedGovernor { constructor( address[] memory _guards, address[] memory _pausers, address[] memory _governors ) { _initGuards(_guards); _initPausers(_pausers); _initGovernors(_governors); } // This is to support upgradable deployment. // Only to be called by Proxy via delegateCall as initOwner will require _owner is 0, // so calling init on this contract directly will guarantee to fail function init( address[] memory _guards, address[] memory _pausers, address[] memory _governors ) external { initOwner(); _initGuards(_guards); _initPausers(_pausers); _initGovernors(_governors); } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity >=0.8.0; library Utils { // https://ethereum.stackexchange.com/a/83577 // https://github.com/Uniswap/v3-periphery/blob/v1.0.0/contracts/base/Multicall.sol function getRevertMsg(bytes memory _returnData) internal pure returns (string memory) { // If the _res length is less than 68, then the transaction failed silently (without a revert message) if (_returnData.length < 68) return "Transaction reverted silently"; assembly { // Slice the sighash. _returnData := add(_returnData, 0x04) } return abi.decode(_returnData, (string)); // All that remains is the revert string } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. * * This adds a normal func that setOwner if _owner is address(0). So we can't allow * renounceOwnership. So we can support Proxy based upgradable contract */ abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(msg.sender); } /** * @dev Only to be called by inherit contracts, in their init func called by Proxy * we require _owner == address(0), which is only possible when it's a delegateCall * because constructor sets _owner in contract state. */ function initOwner() internal { require(_owner == address(0), "owner already set"); _setOwner(msg.sender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.17; import "../Ownable.sol"; abstract contract Guard is Ownable { enum GuardState { None, Guarded, Relaxed } bool public relaxed; uint256 public numRelaxedGuards; uint256 public relaxThreshold; address[] public guards; mapping(address => GuardState) public guardStates; // guard address -> guard state event GuardUpdated(address account, GuardState state); event RelaxStatusUpdated(bool relaxed); event RelaxThresholdUpdated(uint256 threshold, uint256 total); function _initGuards(address[] memory _guards) internal { require(guards.length == 0, "guards already initiated"); for (uint256 i = 0; i < _guards.length; i++) { _addGuard(_guards[i]); } _setRelaxThreshold(guards.length); } // change GuardState of msg.sender from relaxed to guarded function guard() external { require(guardStates[msg.sender] == GuardState.Relaxed, "invalid caller"); guardStates[msg.sender] = GuardState.Guarded; numRelaxedGuards--; _updateRelaxed(); emit GuardUpdated(msg.sender, GuardState.Guarded); } // change GuardState of msg.sender from guarded to relaxed function relax() external { require(guardStates[msg.sender] == GuardState.Guarded, "invalid caller"); guardStates[msg.sender] = GuardState.Relaxed; numRelaxedGuards++; _updateRelaxed(); emit GuardUpdated(msg.sender, GuardState.Relaxed); } function updateGuards( address[] calldata _add, address[] calldata _remove, uint256 _newRelaxThreshold ) external onlyOwner { for (uint256 i = 0; i < _remove.length; i++) { _removeGuard(_remove[i]); } for (uint256 i = 0; i < _add.length; i++) { _addGuard(_add[i]); } _setRelaxThreshold(_newRelaxThreshold); } function _addGuard(address _account) private { require(guardStates[_account] == GuardState.None, "account is already guard"); guards.push(_account); guardStates[_account] = GuardState.Guarded; emit GuardUpdated(_account, GuardState.Guarded); } function _removeGuard(address _account) private { GuardState state = guardStates[_account]; require(state != GuardState.None, "account is not guard"); if (state == GuardState.Relaxed) { numRelaxedGuards--; } uint256 lastIndex = guards.length - 1; for (uint256 i = 0; i < guards.length; i++) { if (guards[i] == _account) { if (i < lastIndex) { guards[i] = guards[lastIndex]; } guards.pop(); guardStates[_account] = GuardState.None; emit GuardUpdated(_account, GuardState.None); return; } } revert("guard not found"); // this should never happen } function setRelaxThreshold(uint256 _threshold) external onlyOwner { _setRelaxThreshold(_threshold); } function _setRelaxThreshold(uint256 _threshold) private { require(_threshold <= guards.length, "invalid threshold"); relaxThreshold = _threshold; _updateRelaxed(); emit RelaxThresholdUpdated(_threshold, guards.length); } function _updateRelaxed() private { bool _relaxed = numRelaxedGuards >= relaxThreshold; if (relaxed != _relaxed) { relaxed = _relaxed; emit RelaxStatusUpdated(relaxed); } } function numGuards() public view returns (uint256) { return guards.length; } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.17; import "./Guard.sol"; interface IBridge { // delayed transfer function setDelayPeriod(uint256 _period) external; function delayPeriod() external view returns (uint256); function setDelayThresholds(address[] calldata _tokens, uint256[] calldata _thresholds) external; function delayThresholds(address _token) external view returns (uint256); // volume control function setEpochLength(uint256 _length) external; function epochLength() external view returns (uint256); function setEpochVolumeCaps(address[] calldata _tokens, uint256[] calldata _caps) external; function epochVolumeCaps(address _token) external view returns (uint256); // pool bridge function setMinAdd(address[] calldata _tokens, uint256[] calldata _amounts) external; function minAdd(address _token) external view returns (uint256); function setMinSend(address[] calldata _tokens, uint256[] calldata _amounts) external; function minSend(address _token) external view returns (uint256); function setMaxSend(address[] calldata _tokens, uint256[] calldata _amounts) external; function maxSend(address _token) external view returns (uint256); function setNativeTokenTransferGas(uint256 _gasUsed) external; function setMinimalMaxSlippage(uint32 _minimalMaxSlippage) external; // peg bridge function setMinDeposit(address[] calldata _tokens, uint256[] calldata _amounts) external; function minDeposit(address _token) external view returns (uint256); function setMaxDeposit(address[] calldata _tokens, uint256[] calldata _amounts) external; function maxDeposit(address _token) external view returns (uint256); function setMinBurn(address[] calldata _tokens, uint256[] calldata _amounts) external; function minBurn(address _token) external view returns (uint256); function setMaxBurn(address[] calldata _tokens, uint256[] calldata _amounts) external; function maxBurn(address _token) external view returns (uint256); } abstract contract GuardedGovernor is Guard { uint64 public numGovernors; mapping(address => bool) public governors; event GovernorUpdated(address account, bool added); function _initGovernors(address[] memory _governors) internal { require(numGovernors == 0, "governors already initiated"); for (uint256 i = 0; i < _governors.length; i++) { _addGovernor(_governors[i]); } } modifier onlyGovernor() { require(isGovernor(msg.sender), "Caller is not governor"); _; } // delayed transfer function setDelayPeriod(address _target, uint256 _period) external onlyGovernor { if (!relaxed) { uint256 current = IBridge(_target).delayPeriod(); require(_period > current, "not in relax mode, can only increase period"); } IBridge(_target).setDelayPeriod(_period); } function setDelayThresholds( address _target, address[] calldata _tokens, uint256[] calldata _thresholds ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).delayThresholds(_tokens[i]); require(_thresholds[i] > current, "not in relax mode, can only increase threshold"); } } IBridge(_target).setDelayThresholds(_tokens, _thresholds); } // volume control function setEpochLength(address _target, uint256 _length) external onlyGovernor { if (!relaxed) { uint256 current = IBridge(_target).epochLength(); require(_length > current, "not in relax mode, can only increase length"); } IBridge(_target).setEpochLength(_length); } function setEpochVolumeCaps( address _target, address[] calldata _tokens, uint256[] calldata _caps ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).epochVolumeCaps(_tokens[i]); require(_caps[i] < current, "not in relax mode, can only reduce cap"); } } IBridge(_target).setEpochVolumeCaps(_tokens, _caps); } // pool bridge function setMinAdd( address _target, address[] calldata _tokens, uint256[] calldata _amounts ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).minAdd(_tokens[i]); require(_amounts[i] > current, "not in relax mode, can only increase minAdd"); } } IBridge(_target).setMinAdd(_tokens, _amounts); } function setMinSend( address _target, address[] calldata _tokens, uint256[] calldata _amounts ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).minSend(_tokens[i]); require(_amounts[i] > current, "not in relax mode, can only increase minSend"); } } IBridge(_target).setMinSend(_tokens, _amounts); } function setMaxSend( address _target, address[] calldata _tokens, uint256[] calldata _amounts ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).maxSend(_tokens[i]); require(_amounts[i] < current, "not in relax mode, can only reduce maxSend"); } } IBridge(_target).setMaxSend(_tokens, _amounts); } function setNativeTokenTransferGas(address _target, uint256 _gasUsed) external onlyGovernor { IBridge(_target).setNativeTokenTransferGas(_gasUsed); } function setMinimalMaxSlippage(address _target, uint32 _minimalMaxSlippage) external onlyGovernor { IBridge(_target).setMinimalMaxSlippage(_minimalMaxSlippage); } // peg bridge function setMinDeposit( address _target, address[] calldata _tokens, uint256[] calldata _amounts ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).minDeposit(_tokens[i]); require(_amounts[i] > current, "not in relax mode, can only increase minDeposit"); } } IBridge(_target).setMinDeposit(_tokens, _amounts); } function setMaxDeposit( address _target, address[] calldata _tokens, uint256[] calldata _amounts ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).maxDeposit(_tokens[i]); require(_amounts[i] < current, "not in relax mode, can only reduce maxDeposit"); } } IBridge(_target).setMaxDeposit(_tokens, _amounts); } function setMinBurn( address _target, address[] calldata _tokens, uint256[] calldata _amounts ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).minBurn(_tokens[i]); require(_amounts[i] > current, "not in relax mode, can only increase minBurn"); } } IBridge(_target).setMinBurn(_tokens, _amounts); } function setMaxBurn( address _target, address[] calldata _tokens, uint256[] calldata _amounts ) external onlyGovernor { if (!relaxed) { for (uint256 i = 0; i < _tokens.length; i++) { uint256 current = IBridge(_target).maxBurn(_tokens[i]); require(_amounts[i] < current, "not in relax mode, can only reduce maxBurn"); } } IBridge(_target).setMaxBurn(_tokens, _amounts); } function isGovernor(address _account) public view returns (bool) { return governors[_account]; } function addGovernors(address[] calldata _accounts) external onlyOwner { for (uint256 i = 0; i < _accounts.length; i++) { _addGovernor(_accounts[i]); } } function _addGovernor(address _account) internal { require(!isGovernor(_account), "Account is already governor"); governors[_account] = true; numGovernors++; emit GovernorUpdated(_account, true); } function removeGovernors(address[] calldata _accounts) external onlyOwner { for (uint256 i = 0; i < _accounts.length; i++) { _removeGovernor(_accounts[i]); } } function _removeGovernor(address _account) private { require(isGovernor(_account), "Account is not governor"); governors[_account] = false; numGovernors--; emit GovernorUpdated(_account, false); } function renounceGovernor() external { _removeGovernor(msg.sender); } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.17; import "./Guard.sol"; import "../../libraries/Utils.sol"; interface IPauser { function pause() external; function unpause() external; } abstract contract GuardedPauser is Guard { enum PauserRole { None, Full, PauseOnly } uint64 public numPausers; mapping(address => PauserRole) public pausers; event PauserUpdated(address account, PauserRole role); event Failed(address target, string reason); function _initPausers(address[] memory _pausers) internal { require(numPausers == 0, "pausers already initiated"); for (uint256 i = 0; i < _pausers.length; i++) { _addPauser(_pausers[i], PauserRole.Full); } } function pause(address _target) public { require(pausers[msg.sender] != PauserRole.None, "invalid caller"); IPauser(_target).pause(); } function pause(address[] calldata _targets) public { require(pausers[msg.sender] != PauserRole.None, "invalid caller"); require(_targets.length > 0, "empty target list"); bool hasSuccess; for (uint256 i = 0; i < _targets.length; i++) { (bool ok, bytes memory res) = address(_targets[i]).call(abi.encodeWithSelector(IPauser.pause.selector)); if (ok) { hasSuccess = true; } else { emit Failed(_targets[i], Utils.getRevertMsg(res)); } } require(hasSuccess, "pause failed for all targets"); } function unpause(address _target) public { require(pausers[msg.sender] == PauserRole.Full, "invalid caller"); require(relaxed, "not in relaxed mode"); IPauser(_target).unpause(); } function unpause(address[] calldata _targets) public { require(pausers[msg.sender] == PauserRole.Full, "invalid caller"); require(relaxed, "not in relaxed mode"); require(_targets.length > 0, "empty target list"); bool hasSuccess; for (uint256 i = 0; i < _targets.length; i++) { (bool ok, bytes memory res) = address(_targets[i]).call(abi.encodeWithSelector(IPauser.unpause.selector)); if (ok) { hasSuccess = true; } else { emit Failed(_targets[i], Utils.getRevertMsg(res)); } } require(hasSuccess, "unpause failed for all targets"); } function addPausers(address[] calldata _accounts, PauserRole[] calldata _roles) external onlyOwner { for (uint256 i = 0; i < _accounts.length; i++) { _addPauser(_accounts[i], _roles[i]); } } function _addPauser(address _account, PauserRole _role) private { require(pausers[_account] == PauserRole.None, "account is already pauser"); require(_role == PauserRole.Full || _role == PauserRole.PauseOnly, "invalid role"); pausers[_account] = _role; numPausers++; emit PauserUpdated(_account, _role); } function removePausers(address[] calldata _accounts) external onlyOwner { for (uint256 i = 0; i < _accounts.length; i++) { _removePauser(_accounts[i]); } } function _removePauser(address _account) private { require(pausers[_account] != PauserRole.None, "account is not pauser"); pausers[_account] = PauserRole.None; numPausers--; emit PauserUpdated(_account, PauserRole.None); } function setPausers(address[] calldata _accounts, PauserRole[] calldata _roles) external onlyOwner { for (uint256 i = 0; i < _accounts.length; i++) { _setPauser(_accounts[i], _roles[i]); } } function _setPauser(address _account, PauserRole _role) private { require(pausers[_account] != PauserRole.None, "account is not pauser"); require(_role == PauserRole.Full || _role == PauserRole.PauseOnly, "invalid role"); pausers[_account] = _role; emit PauserUpdated(_account, _role); } }
{ "optimizer": { "enabled": true, "runs": 800 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"_guards","type":"address[]"},{"internalType":"address[]","name":"_pausers","type":"address[]"},{"internalType":"address[]","name":"_governors","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"Failed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"added","type":"bool"}],"name":"GovernorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"enum Guard.GuardState","name":"state","type":"uint8"}],"name":"GuardUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"enum GuardedPauser.PauserRole","name":"role","type":"uint8"}],"name":"PauserUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"relaxed","type":"bool"}],"name":"RelaxStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"RelaxThresholdUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"}],"name":"addGovernors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"enum GuardedPauser.PauserRole[]","name":"_roles","type":"uint8[]"}],"name":"addPausers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"governors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"guardStates","outputs":[{"internalType":"enum Guard.GuardState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"guards","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_guards","type":"address[]"},{"internalType":"address[]","name":"_pausers","type":"address[]"},{"internalType":"address[]","name":"_governors","type":"address[]"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numGovernors","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numGuards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numPausers","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numRelaxedGuards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_targets","type":"address[]"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pausers","outputs":[{"internalType":"enum GuardedPauser.PauserRole","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"relax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"relaxThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"relaxed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"}],"name":"removeGovernors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"}],"name":"removePausers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setDelayPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_thresholds","type":"uint256[]"}],"name":"setDelayThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"setEpochLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_caps","type":"uint256[]"}],"name":"setEpochVolumeCaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMaxBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMaxDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMaxSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMinAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMinBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMinDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMinSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint32","name":"_minimalMaxSlippage","type":"uint32"}],"name":"setMinimalMaxSlippage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_gasUsed","type":"uint256"}],"name":"setNativeTokenTransferGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"enum GuardedPauser.PauserRole[]","name":"_roles","type":"uint8[]"}],"name":"setPausers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setRelaxThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_targets","type":"address[]"}],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_add","type":"address[]"},{"internalType":"address[]","name":"_remove","type":"address[]"},{"internalType":"uint256","name":"_newRelaxThreshold","type":"uint256"}],"name":"updateGuards","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200499e3803806200499e83398101604081905262000034916200088b565b6200003f3362000069565b6200004a83620000b9565b620000558262000170565b620000608162000220565b505050620009f2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600354156200010f5760405162461bcd60e51b815260206004820152601860248201527f67756172647320616c726561647920696e69746961746564000000000000000060448201526064015b60405180910390fd5b60005b81518110156200015e57620001498282815181106200013557620001356200091c565b6020026020010151620002ca60201b60201c565b80620001558162000948565b91505062000112565b506003546200016d90620003e9565b50565b6005546001600160401b031615620001cb5760405162461bcd60e51b815260206004820152601960248201527f7061757365727320616c726561647920696e6974696174656400000000000000604482015260640162000106565b60005b81518110156200021c5762000207828281518110620001f157620001f16200091c565b602002602001015160016200047b60201b60201c565b80620002138162000948565b915050620001ce565b5050565b6007546001600160401b0316156200027b5760405162461bcd60e51b815260206004820152601b60248201527f676f7665726e6f727320616c726561647920696e697469617465640000000000604482015260640162000106565b60005b81518110156200021c57620002b5828281518110620002a157620002a16200091c565b60200260200101516200062b60201b60201c565b80620002c18162000948565b9150506200027e565b6001600160a01b03811660009081526004602052604081205460ff166002811115620002fa57620002fa62000964565b14620003495760405162461bcd60e51b815260206004820152601860248201527f6163636f756e7420697320616c72656164792067756172640000000000000000604482015260640162000106565b6003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03841690811790915560009081526004602052604090819020805460ff191683179055517f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d891620003de9184919062000999565b60405180910390a150565b600354811115620004315760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081d1a1c995cda1bdb19607a1b604482015260640162000106565b60028190556200044062000735565b6003546040805183815260208101929092527fd0c1c43aef36069bb50d6edd52249e6bdaf6966098e7604a024c9fdb4b1378579101620003de565b6001600160a01b03821660009081526006602052604081205460ff166002811115620004ab57620004ab62000964565b14620004fa5760405162461bcd60e51b815260206004820152601960248201527f6163636f756e7420697320616c72656164792070617573657200000000000000604482015260640162000106565b600181600281111562000511576200051162000964565b1480620005325750600281600281111562000530576200053062000964565b145b6200056f5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420726f6c6560a01b604482015260640162000106565b6001600160a01b0382166000908152600660205260409020805482919060ff19166001836002811115620005a757620005a762000964565b0217905550600580546001600160401b0316906000620005c783620009c1565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550507f0dabd4cf3e4858df3a432c6f93736d56848ecd98f4bc1eace563fe71a07bc9ea82826040516200061f92919062000999565b60405180910390a15050565b6001600160a01b03811660009081526008602052604090205460ff1615620006965760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920676f7665726e6f720000000000604482015260640162000106565b6001600160a01b0381166000908152600860205260408120805460ff19166001179055600780546001600160401b031691620006d283620009c1565b82546001600160401b039182166101009390930a928302919092021990911617905550604080516001600160a01b0383168152600160208201527fd56705c538ed903779607d52e743dd909c45abd4fde1eb2a6eaf409d72d635469101620003de565b60025460015460005491111590600160a01b900460ff16151581146200016d576000805460ff60a01b1916600160a01b8315158102919091179182905560405160ff9190920416151581527f29f1b69190de3c8c3ce99dbe54dd5ae6286ba24c2f2a88862ef0ce8899b91bfa90602001620003de565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620007d957600080fd5b919050565b600082601f830112620007f057600080fd5b815160206001600160401b03808311156200080f576200080f620007ab565b8260051b604051601f19603f83011681018181108482111715620008375762000837620007ab565b6040529384528581018301938381019250878511156200085657600080fd5b83870191505b8482101562000880576200087082620007c1565b835291830191908301906200085c565b979650505050505050565b600080600060608486031215620008a157600080fd5b83516001600160401b0380821115620008b957600080fd5b620008c787838801620007de565b94506020860151915080821115620008de57600080fd5b620008ec87838801620007de565b935060408601519150808211156200090357600080fd5b506200091286828701620007de565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200095d576200095d62000932565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600381106200016d57634e487b7160e01b600052602160045260246000fd5b6001600160a01b038316815260408101620009b4836200097a565b8260208301529392505050565b60006001600160401b038281166002600160401b03198101620009e857620009e862000932565b6001019392505050565b613f9c8062000a026000396000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c80638da5cb5b11610186578063db51db3d116100e3578063e43581b811610097578063f2fde38b11610071578063f2fde38b14610613578063f9b1d2df14610626578063fccec8041461063957600080fd5b8063e43581b8146105c1578063eca43a31146105ed578063f11f902e1461060057600080fd5b8063e026049c116100c8578063e026049c14610583578063e3ee79e71461058b578063e3eece261461059e57600080fd5b8063db51db3d1461055d578063dfb0cb971461057057600080fd5b8063a738dbdc1161013a578063c6b1ebcf1161011f578063c6b1ebcf14610524578063c74fc07714610537578063d3b040761461054a57600080fd5b8063a738dbdc146104fd578063c019c3bc1461051157600080fd5b80639755c6a71161016b5780639755c6a7146104ce578063a036e799146104e1578063a60657c3146104f457600080fd5b80638da5cb5b1461049657806394bfab13146104bb57600080fd5b806357b001f9116102345780637ceab3b1116101e857806380f51c12116101cd57806380f51c121461044d578063816f614e146104705780638871ee9d1461048357600080fd5b80637ceab3b1146104215780637ecf1d591461042957600080fd5b806374b9dc451161021957806374b9dc45146103d6578063763446b41461040657806376a67a511461040e57600080fd5b806357b001f91461039657806358a16b44146103a957600080fd5b80634a07247e1161028b5780634ae4ee74116102705780634ae4ee7414610368578063561330f614610370578063564fd94b1461038357600080fd5b80634a07247e146103395780634ad3eac41461035557600080fd5b80630924362e116102bc5780630924362e146103005780631d96b50a1461031357806323c3fae71461032657600080fd5b806303821452146102d85780630756accc146102ed575b600080fd5b6102eb6102e6366004613869565b61064c565b005b6102eb6102fb3660046138ab565b61090d565b6102eb61030e366004613917565b6109f0565b6102eb61032136600461394c565b610a65565b6102eb610334366004613976565b610bff565b61034260025481565b6040519081526020015b60405180910390f35b6102eb610363366004613976565b610e17565b600354610342565b6102eb61037e366004613976565b610ff6565b6102eb610391366004613869565b6111d5565b6102eb6103a43660046139f7565b61128a565b6005546103bd9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161034c565b6103f96103e43660046139f7565b60046020526000908152604090205460ff1681565b60405161034c9190613a4d565b6102eb611396565b6102eb61041c3660046139f7565b61146b565b6102eb611508565b60005461043d90600160a01b900460ff1681565b604051901515815260200161034c565b6103f961045b3660046139f7565b60066020526000908152604090205460ff1681565b6102eb61047e366004613976565b6115d4565b6102eb610491366004613a60565b6117b3565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161034c565b6102eb6104c936600461394c565b6118bf565b6102eb6104dc366004613869565b611a27565b6102eb6104ef366004613869565b611c83565b61034260015481565b6007546103bd9067ffffffffffffffff1681565b6102eb61051f366004613ba2565b611d38565b6102eb610532366004613c2a565b611d5b565b6104a3610545366004613917565b611dda565b6102eb610558366004613976565b611e04565b6102eb61056b366004613976565b611fe3565b6102eb61057e366004613976565b6121c2565b6102eb6123a1565b6102eb610599366004613869565b6123ac565b61043d6105ac3660046139f7565b60086020526000908152604090205460ff1681565b61043d6105cf3660046139f7565b6001600160a01b031660009081526008602052604090205460ff1690565b6102eb6105fb3660046138ab565b612461565b6102eb61060e366004613976565b61253d565b6102eb6106213660046139f7565b61271c565b6102eb61063436600461394c565b61280a565b6102eb610647366004613976565b612884565b60013360009081526006602052604090205460ff16600281111561067257610672613a19565b146106b55760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064015b60405180910390fd5b600054600160a01b900460ff1661070e5760405162461bcd60e51b815260206004820152601360248201527f6e6f7420696e2072656c61786564206d6f64650000000000000000000000000060448201526064016106ac565b8061075b5760405162461bcd60e51b815260206004820152601160248201527f656d70747920746172676574206c69737400000000000000000000000000000060448201526064016106ac565b6000805b828110156108ba5760008085858481811061077c5761077c613c6a565b905060200201602081019061079191906139f7565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16631fa5d41d60e11b17905290516001600160a01b0392909216916107e79190613ca4565b6000604051808303816000865af19150503d8060008114610824576040519150601f19603f3d011682016040523d82523d6000602084013e610829565b606091505b5091509150811561083d57600193506108a5565b7f4d245048906c9a1e4b1110247e42490035d36d63d41b1b8bb8fd6bd19857644d86868581811061087057610870613c6a565b905060200201602081019061088591906139f7565b61088e83612a63565b60405161089c929190613cc0565b60405180910390a15b505080806108b290613d19565b91505061075f565b50806109085760405162461bcd60e51b815260206004820152601e60248201527f756e7061757365206661696c656420666f7220616c6c2074617267657473000060448201526064016106ac565b505050565b336109206000546001600160a01b031690565b6001600160a01b0316146109765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b838110156109e9576109d785858381811061099657610996613c6a565b90506020020160208101906109ab91906139f7565b8484848181106109bd576109bd613c6a565b90506020020160208101906109d29190613d32565b612ac8565b806109e181613d19565b915050610979565b5050505050565b33610a036000546001600160a01b031690565b6001600160a01b031614610a595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b610a6281612c25565b50565b3360009081526008602052604090205460ff16610ab25760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16610ba0576000826001600160a01b03166357d775f86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190613d53565b9050808211610b9e5760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206c656e67746800000000000000000000000000000000000000000060648201526084016106ac565b505b604051632a7753cb60e11b8152600481018290526001600160a01b038316906354eea796906024015b600060405180830381600087803b158015610be357600080fd5b505af1158015610bf7573d6000803e3d6000fd5b505050505050565b3360009081526008602052604090205460ff16610c4c5760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16610dac5760005b83811015610daa576000866001600160a01b0316633c29f839878785818110610c8b57610c8b613c6a565b9050602002016020810190610ca091906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d089190613d53565b905080848484818110610d1d57610d1d613c6a565b9050602002013511610d975760405162461bcd60e51b815260206004820152602f60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206d696e4465706f736974000000000000000000000000000000000060648201526084016106ac565b5080610da281613d19565b915050610c60565b505b604051632f617d1360e11b81526001600160a01b03861690635ec2fa2690610dde908790879087908790600401613d6c565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b505050505050505050565b3360009081526008602052604090205460ff16610e645760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16610fc45760005b83811015610fc2576000866001600160a01b031663497bf3b2878785818110610ea357610ea3613c6a565b9050602002016020810190610eb891906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f209190613d53565b905080848484818110610f3557610f35613c6a565b9050602002013510610faf5760405162461bcd60e51b815260206004820152602a60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c79207265647560448201527f6365206d61784275726e0000000000000000000000000000000000000000000060648201526084016106ac565b5080610fba81613d19565b915050610e78565b505b604051631f351d4160e31b81526001600160a01b0386169063f9a8ea0890610dde908790879087908790600401613d6c565b3360009081526008602052604090205460ff166110435760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166111a35760005b838110156111a1576000866001600160a01b031663618ee05587878581811061108257611082613c6a565b905060200201602081019061109791906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156110db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ff9190613d53565b90508084848481811061111457611114613c6a565b905060200201351061118e5760405162461bcd60e51b815260206004820152602a60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c79207265647560448201527f6365206d617853656e640000000000000000000000000000000000000000000060648201526084016106ac565b508061119981613d19565b915050611057565b505b6040516343c7f0e760e11b81526001600160a01b0386169063878fe1ce90610dde908790879087908790600401613d6c565b336111e86000546001600160a01b031690565b6001600160a01b03161461123e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b818110156109085761127883838381811061125e5761125e613c6a565b905060200201602081019061127391906139f7565b612cc5565b8061128281613d19565b915050611241565b60013360009081526006602052604090205460ff1660028111156112b0576112b0613a19565b146112ee5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b600054600160a01b900460ff166113475760405162461bcd60e51b815260206004820152601360248201527f6e6f7420696e2072656c61786564206d6f64650000000000000000000000000060448201526064016106ac565b806001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561138257600080fd5b505af11580156109e9573d6000803e3d6000fd5b60013360009081526004602052604090205460ff1660028111156113bc576113bc613a19565b146113fa5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b336000908152600460205260408120805460ff19166002179055600180549161142283613d19565b919050555061142f612dcc565b7f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d8336002604051611461929190613e01565b60405180910390a1565b3360009081526006602052604081205460ff16600281111561148f5761148f613a19565b036114cd5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b806001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561138257600080fd5b60023360009081526004602052604090205460ff16600281111561152e5761152e613a19565b1461156c5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b336000908152600460205260408120805460ff1916600190811790915580549161159583613e27565b91905055506115a2612dcc565b7f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d8336001604051611461929190613e01565b3360009081526008602052604090205460ff166116215760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166117815760005b8381101561177f576000866001600160a01b031663f8b30d7d87878581811061166057611660613c6a565b905060200201602081019061167591906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156116b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd9190613d53565b9050808484848181106116f2576116f2613c6a565b905060200201351161176c5760405162461bcd60e51b815260206004820152602c60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206d696e53656e64000000000000000000000000000000000000000060648201526084016106ac565b508061177781613d19565b915050611635565b505b604051630899274160e01b81526001600160a01b03861690630899274190610dde908790879087908790600401613d6c565b336117c66000546001600160a01b031690565b6001600160a01b03161461181c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b828110156118685761185684848381811061183c5761183c613c6a565b905060200201602081019061185191906139f7565b612e5b565b8061186081613d19565b91505061181f565b5060005b848110156118b5576118a386868381811061188957611889613c6a565b905060200201602081019061189e91906139f7565b6130cd565b806118ad81613d19565b91505061186c565b506109e981612c25565b3360009081526008602052604090205460ff1661190c5760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166119fa576000826001600160a01b031663b1c94d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119819190613d53565b90508082116119f85760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f6561736520706572696f6400000000000000000000000000000000000000000060648201526084016106ac565b505b604051633d57210760e01b8152600481018290526001600160a01b03831690633d57210790602401610bc9565b3360009081526006602052604081205460ff166002811115611a4b57611a4b613a19565b03611a895760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b80611ad65760405162461bcd60e51b815260206004820152601160248201527f656d70747920746172676574206c69737400000000000000000000000000000060448201526064016106ac565b6000805b82811015611c3557600080858584818110611af757611af7613c6a565b9050602002016020810190611b0c91906139f7565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16638456cb5960e01b17905290516001600160a01b039290921691611b629190613ca4565b6000604051808303816000865af19150503d8060008114611b9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ba4565b606091505b50915091508115611bb85760019350611c20565b7f4d245048906c9a1e4b1110247e42490035d36d63d41b1b8bb8fd6bd19857644d868685818110611beb57611beb613c6a565b9050602002016020810190611c0091906139f7565b611c0983612a63565b604051611c17929190613cc0565b60405180910390a15b50508080611c2d90613d19565b915050611ada565b50806109085760405162461bcd60e51b815260206004820152601c60248201527f7061757365206661696c656420666f7220616c6c20746172676574730000000060448201526064016106ac565b33611c966000546001600160a01b031690565b6001600160a01b031614611cec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b8181101561090857611d26838383818110611d0c57611d0c613c6a565b9050602002016020810190611d2191906139f7565b6131e7565b80611d3081613d19565b915050611cef565b611d406132f2565b611d4983613354565b611d52826133f1565b61090881613491565b3360009081526008602052604090205460ff16611da85760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b604051632411a09360e11b815263ffffffff821660048201526001600160a01b03831690634823412690602401610bc9565b60038181548110611dea57600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526008602052604090205460ff16611e515760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16611fb15760005b83811015611faf576000866001600160a01b03166352532faa878785818110611e9057611e90613c6a565b9050602002016020810190611ea591906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d9190613d53565b905080848484818110611f2257611f22613c6a565b9050602002013511611f9c5760405162461bcd60e51b815260206004820152602e60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365207468726573686f6c6400000000000000000000000000000000000060648201526084016106ac565b5080611fa781613d19565b915050611e65565b505b6040516317bdbae560e01b81526001600160a01b038616906317bdbae590610dde908790879087908790600401613d6c565b3360009081526008602052604090205460ff166120305760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166121905760005b8381101561218e576000866001600160a01b031663b5f2bc4787878581811061206f5761206f613c6a565b905060200201602081019061208491906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156120c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec9190613d53565b90508084848481811061210157612101613c6a565b905060200201351061217b5760405162461bcd60e51b815260206004820152602660248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c79207265647560448201527f636520636170000000000000000000000000000000000000000000000000000060648201526084016106ac565b508061218681613d19565b915050612044565b505b6040516311ec5b1b60e21b81526001600160a01b038616906347b16c6c90610dde908790879087908790600401613d6c565b3360009081526008602052604090205460ff1661220f5760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff1661236f5760005b8381101561236d576000866001600160a01b0316637f85601387878581811061224e5761224e613c6a565b905060200201602081019061226391906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156122a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cb9190613d53565b9050808484848181106122e0576122e0613c6a565b905060200201351161235a5760405162461bcd60e51b815260206004820152602c60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206d696e4275726e000000000000000000000000000000000000000060648201526084016106ac565b508061236581613d19565b915050612223565b505b604051630bf4816f60e41b81526001600160a01b0386169063bf4816f090610dde908790879087908790600401613d6c565b6123aa3361352b565b565b336123bf6000546001600160a01b031690565b6001600160a01b0316146124155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b818110156109085761244f83838381811061243557612435613c6a565b905060200201602081019061244a91906139f7565b61352b565b8061245981613d19565b915050612418565b336124746000546001600160a01b031690565b6001600160a01b0316146124ca5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b838110156109e95761252b8585838181106124ea576124ea613c6a565b90506020020160208101906124ff91906139f7565b84848481811061251157612511613c6a565b90506020020160208101906125269190613d32565b61362e565b8061253581613d19565b9150506124cd565b3360009081526008602052604090205460ff1661258a5760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166126ea5760005b838110156126e8576000866001600160a01b031663402d267d8787858181106125c9576125c9613c6a565b90506020020160208101906125de91906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126469190613d53565b90508084848481811061265b5761265b613c6a565b90506020020135106126d55760405162461bcd60e51b815260206004820152602d60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c79207265647560448201527f6365206d61784465706f7369740000000000000000000000000000000000000060648201526084016106ac565b50806126e081613d19565b91505061259e565b505b60405163181db22160e11b81526001600160a01b0386169063303b644290610dde908790879087908790600401613d6c565b3361272f6000546001600160a01b031690565b6001600160a01b0316146127855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b6001600160a01b0381166128015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106ac565b610a62816137c0565b3360009081526008602052604090205460ff166128575760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b60405163cefe0df560e01b8152600481018290526001600160a01b0383169063cefe0df590602401610bc9565b3360009081526008602052604090205460ff166128d15760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16612a315760005b83811015612a2f576000866001600160a01b031663ccde517a87878581811061291057612910613c6a565b905060200201602081019061292591906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298d9190613d53565b9050808484848181106129a2576129a2613c6a565b9050602002013511612a1c5760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206d696e41646400000000000000000000000000000000000000000060648201526084016106ac565b5080612a2781613d19565b9150506128e5565b505b604051633a66797d60e21b81526001600160a01b0386169063e999e5f490610dde908790879087908790600401613d6c565b6060604482511015612aa857505060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015290565b60048201915081806020019051810190612ac29190613e3e565b92915050565b6001600160a01b03821660009081526006602052604081205460ff166002811115612af557612af5613a19565b03612b425760405162461bcd60e51b815260206004820152601560248201527f6163636f756e74206973206e6f7420706175736572000000000000000000000060448201526064016106ac565b6001816002811115612b5657612b56613a19565b1480612b7357506002816002811115612b7157612b71613a19565b145b612bae5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420726f6c6560a01b60448201526064016106ac565b6001600160a01b0382166000908152600660205260409020805482919060ff19166001836002811115612be357612be3613a19565b02179055507f0dabd4cf3e4858df3a432c6f93736d56848ecd98f4bc1eace563fe71a07bc9ea8282604051612c19929190613e01565b60405180910390a15050565b600354811115612c775760405162461bcd60e51b815260206004820152601160248201527f696e76616c6964207468726573686f6c6400000000000000000000000000000060448201526064016106ac565b6002819055612c84612dcc565b6003546040805183815260208101929092527fd0c1c43aef36069bb50d6edd52249e6bdaf6966098e7604a024c9fdb4b13785791015b60405180910390a150565b6001600160a01b03811660009081526008602052604090205460ff1615612d2e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920676f7665726e6f72000000000060448201526064016106ac565b6001600160a01b0381166000908152600860205260408120805460ff191660011790556007805467ffffffffffffffff1691612d6983613ed2565b825467ffffffffffffffff9182166101009390930a928302919092021990911617905550604080516001600160a01b0383168152600160208201527fd56705c538ed903779607d52e743dd909c45abd4fde1eb2a6eaf409d72d635469101612cba565b60025460015460005491111590600160a01b900460ff1615158114610a6257600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b8315158102919091179182905560405160ff9190920416151581527f29f1b69190de3c8c3ce99dbe54dd5ae6286ba24c2f2a88862ef0ce8899b91bfa90602001612cba565b6001600160a01b03811660009081526004602052604081205460ff1690816002811115612e8a57612e8a613a19565b03612ed75760405162461bcd60e51b815260206004820152601460248201527f6163636f756e74206973206e6f7420677561726400000000000000000000000060448201526064016106ac565b6002816002811115612eeb57612eeb613a19565b03612f065760018054906000612f0083613e27565b91905055505b600354600090612f1890600190613ef9565b905060005b60035481101561308457836001600160a01b031660038281548110612f4457612f44613c6a565b6000918252602090912001546001600160a01b0316036130725781811015612fd45760038281548110612f7957612f79613c6a565b600091825260209091200154600380546001600160a01b039092169183908110612fa557612fa5613c6a565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6003805480612fe557612fe5613f0c565b600082815260208082206000199084018101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b0386168252600490526040808220805460ff19169055517f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d89161306491879190613e01565b60405180910390a150505050565b8061307c81613d19565b915050612f1d565b5060405162461bcd60e51b815260206004820152600f60248201527f6775617264206e6f7420666f756e64000000000000000000000000000000000060448201526064016106ac565b6001600160a01b03811660009081526004602052604081205460ff1660028111156130fa576130fa613a19565b146131475760405162461bcd60e51b815260206004820152601860248201527f6163636f756e7420697320616c7265616479206775617264000000000000000060448201526064016106ac565b6003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915560009081526004602052604090819020805460ff191683179055517f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d891612cba91849190613e01565b6001600160a01b03811660009081526006602052604081205460ff16600281111561321457613214613a19565b036132615760405162461bcd60e51b815260206004820152601560248201527f6163636f756e74206973206e6f7420706175736572000000000000000000000060448201526064016106ac565b6001600160a01b0381166000908152600660205260408120805460ff191690556005805467ffffffffffffffff169161329983613f22565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550507f0dabd4cf3e4858df3a432c6f93736d56848ecd98f4bc1eace563fe71a07bc9ea816000604051612cba929190613e01565b6000546001600160a01b03161561334b5760405162461bcd60e51b815260206004820152601160248201527f6f776e657220616c72656164792073657400000000000000000000000000000060448201526064016106ac565b6123aa336137c0565b600354156133a45760405162461bcd60e51b815260206004820152601860248201527f67756172647320616c726561647920696e69746961746564000000000000000060448201526064016106ac565b60005b81518110156133e4576133d28282815181106133c5576133c5613c6a565b60200260200101516130cd565b806133dc81613d19565b9150506133a7565b50600354610a6290612c25565b60055467ffffffffffffffff161561344b5760405162461bcd60e51b815260206004820152601960248201527f7061757365727320616c726561647920696e697469617465640000000000000060448201526064016106ac565b60005b815181101561348d5761347b82828151811061346c5761346c613c6a565b6020026020010151600161362e565b8061348581613d19565b91505061344e565b5050565b60075467ffffffffffffffff16156134eb5760405162461bcd60e51b815260206004820152601b60248201527f676f7665726e6f727320616c726561647920696e69746961746564000000000060448201526064016106ac565b60005b815181101561348d5761351982828151811061350c5761350c613c6a565b6020026020010151612cc5565b8061352381613d19565b9150506134ee565b6001600160a01b03811660009081526008602052604090205460ff166135935760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f7420676f7665726e6f7200000000000000000060448201526064016106ac565b6001600160a01b0381166000908152600860205260408120805460ff191690556007805467ffffffffffffffff16916135cb83613f22565b825467ffffffffffffffff9182166101009390930a928302919092021990911617905550604080516001600160a01b0383168152600060208201527fd56705c538ed903779607d52e743dd909c45abd4fde1eb2a6eaf409d72d635469101612cba565b6001600160a01b03821660009081526006602052604081205460ff16600281111561365b5761365b613a19565b146136a85760405162461bcd60e51b815260206004820152601960248201527f6163636f756e7420697320616c7265616479207061757365720000000000000060448201526064016106ac565b60018160028111156136bc576136bc613a19565b14806136d9575060028160028111156136d7576136d7613a19565b145b6137145760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420726f6c6560a01b60448201526064016106ac565b6001600160a01b0382166000908152600660205260409020805482919060ff1916600183600281111561374957613749613a19565b02179055506005805467ffffffffffffffff1690600061376883613ed2565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550507f0dabd4cf3e4858df3a432c6f93736d56848ecd98f4bc1eace563fe71a07bc9ea8282604051612c19929190613e01565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261382f57600080fd5b50813567ffffffffffffffff81111561384757600080fd5b6020830191508360208260051b850101111561386257600080fd5b9250929050565b6000806020838503121561387c57600080fd5b823567ffffffffffffffff81111561389357600080fd5b61389f8582860161381d565b90969095509350505050565b600080600080604085870312156138c157600080fd5b843567ffffffffffffffff808211156138d957600080fd5b6138e58883890161381d565b909650945060208701359150808211156138fe57600080fd5b5061390b8782880161381d565b95989497509550505050565b60006020828403121561392957600080fd5b5035919050565b80356001600160a01b038116811461394757600080fd5b919050565b6000806040838503121561395f57600080fd5b61396883613930565b946020939093013593505050565b60008060008060006060868803121561398e57600080fd5b61399786613930565b9450602086013567ffffffffffffffff808211156139b457600080fd5b6139c089838a0161381d565b909650945060408801359150808211156139d957600080fd5b506139e68882890161381d565b969995985093965092949392505050565b600060208284031215613a0957600080fd5b613a1282613930565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60038110610a6257634e487b7160e01b600052602160045260246000fd5b60208101613a5a83613a2f565b91905290565b600080600080600060608688031215613a7857600080fd5b853567ffffffffffffffff80821115613a9057600080fd5b613a9c89838a0161381d565b90975095506020880135915080821115613ab557600080fd5b50613ac28882890161381d565b96999598509660400135949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b1357613b13613ad4565b604052919050565b600082601f830112613b2c57600080fd5b8135602067ffffffffffffffff821115613b4857613b48613ad4565b8160051b613b57828201613aea565b9283528481018201928281019087851115613b7157600080fd5b83870192505b84831015613b9757613b8883613930565b82529183019190830190613b77565b979650505050505050565b600080600060608486031215613bb757600080fd5b833567ffffffffffffffff80821115613bcf57600080fd5b613bdb87838801613b1b565b94506020860135915080821115613bf157600080fd5b613bfd87838801613b1b565b93506040860135915080821115613c1357600080fd5b50613c2086828701613b1b565b9150509250925092565b60008060408385031215613c3d57600080fd5b613c4683613930565b9150602083013563ffffffff81168114613c5f57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613c9b578181015183820152602001613c83565b50506000910152565b60008251613cb6818460208701613c80565b9190910192915050565b6001600160a01b03831681526040602082015260008251806040840152613cee816060850160208701613c80565b601f01601f1916919091016060019392505050565b634e487b7160e01b600052601160045260246000fd5b600060018201613d2b57613d2b613d03565b5060010190565b600060208284031215613d4457600080fd5b813560038110613a1257600080fd5b600060208284031215613d6557600080fd5b5051919050565b6040808252810184905260008560608301825b87811015613dad576001600160a01b03613d9884613930565b16825260209283019290910190600101613d7f565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115613de657600080fd5b8460051b915081866020830137016020019695505050505050565b6001600160a01b038316815260408101613e1a83613a2f565b8260208301529392505050565b600081613e3657613e36613d03565b506000190190565b600060208284031215613e5057600080fd5b815167ffffffffffffffff80821115613e6857600080fd5b818401915084601f830112613e7c57600080fd5b815181811115613e8e57613e8e613ad4565b613ea1601f8201601f1916602001613aea565b9150808252856020828501011115613eb857600080fd5b613ec9816020840160208601613c80565b50949350505050565b600067ffffffffffffffff808316818103613eef57613eef613d03565b6001019392505050565b81810381811115612ac257612ac2613d03565b634e487b7160e01b600052603160045260246000fd5b600067ffffffffffffffff821680613f3c57613f3c613d03565b600019019291505056fe43616c6c6572206973206e6f7420676f7665726e6f7200000000000000000000a26469706673582212208cefcff510fab2c7d1726e7da30c41419631576456705f3512d7e28a273cf38464736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000083039377ddd862821d92d416b2ddb9efb5ba90000000000000000000000000008934b5d91a33269ad7e2202482a0df5ddbc5d4e10000000000000000000000000000000000000000000000000000000000000006000000000000000000000000ed9fdf5b16f9f254bec5ad389b80b48225186655000000000000000000000000dfe4f07d1f36b8d559b25082460a4f6a72531de200000000000000000000000034dfa1226f8b3e36fe597b34eea809a2b5c0bbf90000000000000000000000009ad3a3ca7d6b14e830de247c8ca3fad9d4c9d88c0000000000000000000000002fb8783c14a71c08bfc1de8fc3d715dd93039bf2000000000000000000000000e45cb56cee56dd1a94f7e5fbdfaa5bafb3c053d30000000000000000000000000000000000000000000000000000000000000004000000000000000000000000ed9fdf5b16f9f254bec5ad389b80b4822518665500000000000000000000000034dfa1226f8b3e36fe597b34eea809a2b5c0bbf90000000000000000000000009ad3a3ca7d6b14e830de247c8ca3fad9d4c9d88c00000000000000000000000040c11bddeb38dec685eed3586baebf086fac9da0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102d35760003560e01c80638da5cb5b11610186578063db51db3d116100e3578063e43581b811610097578063f2fde38b11610071578063f2fde38b14610613578063f9b1d2df14610626578063fccec8041461063957600080fd5b8063e43581b8146105c1578063eca43a31146105ed578063f11f902e1461060057600080fd5b8063e026049c116100c8578063e026049c14610583578063e3ee79e71461058b578063e3eece261461059e57600080fd5b8063db51db3d1461055d578063dfb0cb971461057057600080fd5b8063a738dbdc1161013a578063c6b1ebcf1161011f578063c6b1ebcf14610524578063c74fc07714610537578063d3b040761461054a57600080fd5b8063a738dbdc146104fd578063c019c3bc1461051157600080fd5b80639755c6a71161016b5780639755c6a7146104ce578063a036e799146104e1578063a60657c3146104f457600080fd5b80638da5cb5b1461049657806394bfab13146104bb57600080fd5b806357b001f9116102345780637ceab3b1116101e857806380f51c12116101cd57806380f51c121461044d578063816f614e146104705780638871ee9d1461048357600080fd5b80637ceab3b1146104215780637ecf1d591461042957600080fd5b806374b9dc451161021957806374b9dc45146103d6578063763446b41461040657806376a67a511461040e57600080fd5b806357b001f91461039657806358a16b44146103a957600080fd5b80634a07247e1161028b5780634ae4ee74116102705780634ae4ee7414610368578063561330f614610370578063564fd94b1461038357600080fd5b80634a07247e146103395780634ad3eac41461035557600080fd5b80630924362e116102bc5780630924362e146103005780631d96b50a1461031357806323c3fae71461032657600080fd5b806303821452146102d85780630756accc146102ed575b600080fd5b6102eb6102e6366004613869565b61064c565b005b6102eb6102fb3660046138ab565b61090d565b6102eb61030e366004613917565b6109f0565b6102eb61032136600461394c565b610a65565b6102eb610334366004613976565b610bff565b61034260025481565b6040519081526020015b60405180910390f35b6102eb610363366004613976565b610e17565b600354610342565b6102eb61037e366004613976565b610ff6565b6102eb610391366004613869565b6111d5565b6102eb6103a43660046139f7565b61128a565b6005546103bd9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161034c565b6103f96103e43660046139f7565b60046020526000908152604090205460ff1681565b60405161034c9190613a4d565b6102eb611396565b6102eb61041c3660046139f7565b61146b565b6102eb611508565b60005461043d90600160a01b900460ff1681565b604051901515815260200161034c565b6103f961045b3660046139f7565b60066020526000908152604090205460ff1681565b6102eb61047e366004613976565b6115d4565b6102eb610491366004613a60565b6117b3565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161034c565b6102eb6104c936600461394c565b6118bf565b6102eb6104dc366004613869565b611a27565b6102eb6104ef366004613869565b611c83565b61034260015481565b6007546103bd9067ffffffffffffffff1681565b6102eb61051f366004613ba2565b611d38565b6102eb610532366004613c2a565b611d5b565b6104a3610545366004613917565b611dda565b6102eb610558366004613976565b611e04565b6102eb61056b366004613976565b611fe3565b6102eb61057e366004613976565b6121c2565b6102eb6123a1565b6102eb610599366004613869565b6123ac565b61043d6105ac3660046139f7565b60086020526000908152604090205460ff1681565b61043d6105cf3660046139f7565b6001600160a01b031660009081526008602052604090205460ff1690565b6102eb6105fb3660046138ab565b612461565b6102eb61060e366004613976565b61253d565b6102eb6106213660046139f7565b61271c565b6102eb61063436600461394c565b61280a565b6102eb610647366004613976565b612884565b60013360009081526006602052604090205460ff16600281111561067257610672613a19565b146106b55760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064015b60405180910390fd5b600054600160a01b900460ff1661070e5760405162461bcd60e51b815260206004820152601360248201527f6e6f7420696e2072656c61786564206d6f64650000000000000000000000000060448201526064016106ac565b8061075b5760405162461bcd60e51b815260206004820152601160248201527f656d70747920746172676574206c69737400000000000000000000000000000060448201526064016106ac565b6000805b828110156108ba5760008085858481811061077c5761077c613c6a565b905060200201602081019061079191906139f7565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16631fa5d41d60e11b17905290516001600160a01b0392909216916107e79190613ca4565b6000604051808303816000865af19150503d8060008114610824576040519150601f19603f3d011682016040523d82523d6000602084013e610829565b606091505b5091509150811561083d57600193506108a5565b7f4d245048906c9a1e4b1110247e42490035d36d63d41b1b8bb8fd6bd19857644d86868581811061087057610870613c6a565b905060200201602081019061088591906139f7565b61088e83612a63565b60405161089c929190613cc0565b60405180910390a15b505080806108b290613d19565b91505061075f565b50806109085760405162461bcd60e51b815260206004820152601e60248201527f756e7061757365206661696c656420666f7220616c6c2074617267657473000060448201526064016106ac565b505050565b336109206000546001600160a01b031690565b6001600160a01b0316146109765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b838110156109e9576109d785858381811061099657610996613c6a565b90506020020160208101906109ab91906139f7565b8484848181106109bd576109bd613c6a565b90506020020160208101906109d29190613d32565b612ac8565b806109e181613d19565b915050610979565b5050505050565b33610a036000546001600160a01b031690565b6001600160a01b031614610a595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b610a6281612c25565b50565b3360009081526008602052604090205460ff16610ab25760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16610ba0576000826001600160a01b03166357d775f86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190613d53565b9050808211610b9e5760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206c656e67746800000000000000000000000000000000000000000060648201526084016106ac565b505b604051632a7753cb60e11b8152600481018290526001600160a01b038316906354eea796906024015b600060405180830381600087803b158015610be357600080fd5b505af1158015610bf7573d6000803e3d6000fd5b505050505050565b3360009081526008602052604090205460ff16610c4c5760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16610dac5760005b83811015610daa576000866001600160a01b0316633c29f839878785818110610c8b57610c8b613c6a565b9050602002016020810190610ca091906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d089190613d53565b905080848484818110610d1d57610d1d613c6a565b9050602002013511610d975760405162461bcd60e51b815260206004820152602f60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206d696e4465706f736974000000000000000000000000000000000060648201526084016106ac565b5080610da281613d19565b915050610c60565b505b604051632f617d1360e11b81526001600160a01b03861690635ec2fa2690610dde908790879087908790600401613d6c565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b505050505050505050565b3360009081526008602052604090205460ff16610e645760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16610fc45760005b83811015610fc2576000866001600160a01b031663497bf3b2878785818110610ea357610ea3613c6a565b9050602002016020810190610eb891906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f209190613d53565b905080848484818110610f3557610f35613c6a565b9050602002013510610faf5760405162461bcd60e51b815260206004820152602a60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c79207265647560448201527f6365206d61784275726e0000000000000000000000000000000000000000000060648201526084016106ac565b5080610fba81613d19565b915050610e78565b505b604051631f351d4160e31b81526001600160a01b0386169063f9a8ea0890610dde908790879087908790600401613d6c565b3360009081526008602052604090205460ff166110435760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166111a35760005b838110156111a1576000866001600160a01b031663618ee05587878581811061108257611082613c6a565b905060200201602081019061109791906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156110db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ff9190613d53565b90508084848481811061111457611114613c6a565b905060200201351061118e5760405162461bcd60e51b815260206004820152602a60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c79207265647560448201527f6365206d617853656e640000000000000000000000000000000000000000000060648201526084016106ac565b508061119981613d19565b915050611057565b505b6040516343c7f0e760e11b81526001600160a01b0386169063878fe1ce90610dde908790879087908790600401613d6c565b336111e86000546001600160a01b031690565b6001600160a01b03161461123e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b818110156109085761127883838381811061125e5761125e613c6a565b905060200201602081019061127391906139f7565b612cc5565b8061128281613d19565b915050611241565b60013360009081526006602052604090205460ff1660028111156112b0576112b0613a19565b146112ee5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b600054600160a01b900460ff166113475760405162461bcd60e51b815260206004820152601360248201527f6e6f7420696e2072656c61786564206d6f64650000000000000000000000000060448201526064016106ac565b806001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561138257600080fd5b505af11580156109e9573d6000803e3d6000fd5b60013360009081526004602052604090205460ff1660028111156113bc576113bc613a19565b146113fa5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b336000908152600460205260408120805460ff19166002179055600180549161142283613d19565b919050555061142f612dcc565b7f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d8336002604051611461929190613e01565b60405180910390a1565b3360009081526006602052604081205460ff16600281111561148f5761148f613a19565b036114cd5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b806001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561138257600080fd5b60023360009081526004602052604090205460ff16600281111561152e5761152e613a19565b1461156c5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b336000908152600460205260408120805460ff1916600190811790915580549161159583613e27565b91905055506115a2612dcc565b7f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d8336001604051611461929190613e01565b3360009081526008602052604090205460ff166116215760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166117815760005b8381101561177f576000866001600160a01b031663f8b30d7d87878581811061166057611660613c6a565b905060200201602081019061167591906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156116b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd9190613d53565b9050808484848181106116f2576116f2613c6a565b905060200201351161176c5760405162461bcd60e51b815260206004820152602c60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206d696e53656e64000000000000000000000000000000000000000060648201526084016106ac565b508061177781613d19565b915050611635565b505b604051630899274160e01b81526001600160a01b03861690630899274190610dde908790879087908790600401613d6c565b336117c66000546001600160a01b031690565b6001600160a01b03161461181c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b828110156118685761185684848381811061183c5761183c613c6a565b905060200201602081019061185191906139f7565b612e5b565b8061186081613d19565b91505061181f565b5060005b848110156118b5576118a386868381811061188957611889613c6a565b905060200201602081019061189e91906139f7565b6130cd565b806118ad81613d19565b91505061186c565b506109e981612c25565b3360009081526008602052604090205460ff1661190c5760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166119fa576000826001600160a01b031663b1c94d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119819190613d53565b90508082116119f85760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f6561736520706572696f6400000000000000000000000000000000000000000060648201526084016106ac565b505b604051633d57210760e01b8152600481018290526001600160a01b03831690633d57210790602401610bc9565b3360009081526006602052604081205460ff166002811115611a4b57611a4b613a19565b03611a895760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b60448201526064016106ac565b80611ad65760405162461bcd60e51b815260206004820152601160248201527f656d70747920746172676574206c69737400000000000000000000000000000060448201526064016106ac565b6000805b82811015611c3557600080858584818110611af757611af7613c6a565b9050602002016020810190611b0c91906139f7565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16638456cb5960e01b17905290516001600160a01b039290921691611b629190613ca4565b6000604051808303816000865af19150503d8060008114611b9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ba4565b606091505b50915091508115611bb85760019350611c20565b7f4d245048906c9a1e4b1110247e42490035d36d63d41b1b8bb8fd6bd19857644d868685818110611beb57611beb613c6a565b9050602002016020810190611c0091906139f7565b611c0983612a63565b604051611c17929190613cc0565b60405180910390a15b50508080611c2d90613d19565b915050611ada565b50806109085760405162461bcd60e51b815260206004820152601c60248201527f7061757365206661696c656420666f7220616c6c20746172676574730000000060448201526064016106ac565b33611c966000546001600160a01b031690565b6001600160a01b031614611cec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b8181101561090857611d26838383818110611d0c57611d0c613c6a565b9050602002016020810190611d2191906139f7565b6131e7565b80611d3081613d19565b915050611cef565b611d406132f2565b611d4983613354565b611d52826133f1565b61090881613491565b3360009081526008602052604090205460ff16611da85760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b604051632411a09360e11b815263ffffffff821660048201526001600160a01b03831690634823412690602401610bc9565b60038181548110611dea57600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526008602052604090205460ff16611e515760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16611fb15760005b83811015611faf576000866001600160a01b03166352532faa878785818110611e9057611e90613c6a565b9050602002016020810190611ea591906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d9190613d53565b905080848484818110611f2257611f22613c6a565b9050602002013511611f9c5760405162461bcd60e51b815260206004820152602e60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365207468726573686f6c6400000000000000000000000000000000000060648201526084016106ac565b5080611fa781613d19565b915050611e65565b505b6040516317bdbae560e01b81526001600160a01b038616906317bdbae590610dde908790879087908790600401613d6c565b3360009081526008602052604090205460ff166120305760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166121905760005b8381101561218e576000866001600160a01b031663b5f2bc4787878581811061206f5761206f613c6a565b905060200201602081019061208491906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156120c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec9190613d53565b90508084848481811061210157612101613c6a565b905060200201351061217b5760405162461bcd60e51b815260206004820152602660248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c79207265647560448201527f636520636170000000000000000000000000000000000000000000000000000060648201526084016106ac565b508061218681613d19565b915050612044565b505b6040516311ec5b1b60e21b81526001600160a01b038616906347b16c6c90610dde908790879087908790600401613d6c565b3360009081526008602052604090205460ff1661220f5760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff1661236f5760005b8381101561236d576000866001600160a01b0316637f85601387878581811061224e5761224e613c6a565b905060200201602081019061226391906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156122a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cb9190613d53565b9050808484848181106122e0576122e0613c6a565b905060200201351161235a5760405162461bcd60e51b815260206004820152602c60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206d696e4275726e000000000000000000000000000000000000000060648201526084016106ac565b508061236581613d19565b915050612223565b505b604051630bf4816f60e41b81526001600160a01b0386169063bf4816f090610dde908790879087908790600401613d6c565b6123aa3361352b565b565b336123bf6000546001600160a01b031690565b6001600160a01b0316146124155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b818110156109085761244f83838381811061243557612435613c6a565b905060200201602081019061244a91906139f7565b61352b565b8061245981613d19565b915050612418565b336124746000546001600160a01b031690565b6001600160a01b0316146124ca5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b60005b838110156109e95761252b8585838181106124ea576124ea613c6a565b90506020020160208101906124ff91906139f7565b84848481811061251157612511613c6a565b90506020020160208101906125269190613d32565b61362e565b8061253581613d19565b9150506124cd565b3360009081526008602052604090205460ff1661258a5760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff166126ea5760005b838110156126e8576000866001600160a01b031663402d267d8787858181106125c9576125c9613c6a565b90506020020160208101906125de91906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126469190613d53565b90508084848481811061265b5761265b613c6a565b90506020020135106126d55760405162461bcd60e51b815260206004820152602d60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c79207265647560448201527f6365206d61784465706f7369740000000000000000000000000000000000000060648201526084016106ac565b50806126e081613d19565b91505061259e565b505b60405163181db22160e11b81526001600160a01b0386169063303b644290610dde908790879087908790600401613d6c565b3361272f6000546001600160a01b031690565b6001600160a01b0316146127855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ac565b6001600160a01b0381166128015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106ac565b610a62816137c0565b3360009081526008602052604090205460ff166128575760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b60405163cefe0df560e01b8152600481018290526001600160a01b0383169063cefe0df590602401610bc9565b3360009081526008602052604090205460ff166128d15760405162461bcd60e51b81526020600482015260166024820152600080516020613f4783398151915260448201526064016106ac565b600054600160a01b900460ff16612a315760005b83811015612a2f576000866001600160a01b031663ccde517a87878581811061291057612910613c6a565b905060200201602081019061292591906139f7565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298d9190613d53565b9050808484848181106129a2576129a2613c6a565b9050602002013511612a1c5760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420696e2072656c6178206d6f64652c2063616e206f6e6c7920696e637260448201527f65617365206d696e41646400000000000000000000000000000000000000000060648201526084016106ac565b5080612a2781613d19565b9150506128e5565b505b604051633a66797d60e21b81526001600160a01b0386169063e999e5f490610dde908790879087908790600401613d6c565b6060604482511015612aa857505060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015290565b60048201915081806020019051810190612ac29190613e3e565b92915050565b6001600160a01b03821660009081526006602052604081205460ff166002811115612af557612af5613a19565b03612b425760405162461bcd60e51b815260206004820152601560248201527f6163636f756e74206973206e6f7420706175736572000000000000000000000060448201526064016106ac565b6001816002811115612b5657612b56613a19565b1480612b7357506002816002811115612b7157612b71613a19565b145b612bae5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420726f6c6560a01b60448201526064016106ac565b6001600160a01b0382166000908152600660205260409020805482919060ff19166001836002811115612be357612be3613a19565b02179055507f0dabd4cf3e4858df3a432c6f93736d56848ecd98f4bc1eace563fe71a07bc9ea8282604051612c19929190613e01565b60405180910390a15050565b600354811115612c775760405162461bcd60e51b815260206004820152601160248201527f696e76616c6964207468726573686f6c6400000000000000000000000000000060448201526064016106ac565b6002819055612c84612dcc565b6003546040805183815260208101929092527fd0c1c43aef36069bb50d6edd52249e6bdaf6966098e7604a024c9fdb4b13785791015b60405180910390a150565b6001600160a01b03811660009081526008602052604090205460ff1615612d2e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920676f7665726e6f72000000000060448201526064016106ac565b6001600160a01b0381166000908152600860205260408120805460ff191660011790556007805467ffffffffffffffff1691612d6983613ed2565b825467ffffffffffffffff9182166101009390930a928302919092021990911617905550604080516001600160a01b0383168152600160208201527fd56705c538ed903779607d52e743dd909c45abd4fde1eb2a6eaf409d72d635469101612cba565b60025460015460005491111590600160a01b900460ff1615158114610a6257600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b8315158102919091179182905560405160ff9190920416151581527f29f1b69190de3c8c3ce99dbe54dd5ae6286ba24c2f2a88862ef0ce8899b91bfa90602001612cba565b6001600160a01b03811660009081526004602052604081205460ff1690816002811115612e8a57612e8a613a19565b03612ed75760405162461bcd60e51b815260206004820152601460248201527f6163636f756e74206973206e6f7420677561726400000000000000000000000060448201526064016106ac565b6002816002811115612eeb57612eeb613a19565b03612f065760018054906000612f0083613e27565b91905055505b600354600090612f1890600190613ef9565b905060005b60035481101561308457836001600160a01b031660038281548110612f4457612f44613c6a565b6000918252602090912001546001600160a01b0316036130725781811015612fd45760038281548110612f7957612f79613c6a565b600091825260209091200154600380546001600160a01b039092169183908110612fa557612fa5613c6a565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6003805480612fe557612fe5613f0c565b600082815260208082206000199084018101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b0386168252600490526040808220805460ff19169055517f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d89161306491879190613e01565b60405180910390a150505050565b8061307c81613d19565b915050612f1d565b5060405162461bcd60e51b815260206004820152600f60248201527f6775617264206e6f7420666f756e64000000000000000000000000000000000060448201526064016106ac565b6001600160a01b03811660009081526004602052604081205460ff1660028111156130fa576130fa613a19565b146131475760405162461bcd60e51b815260206004820152601860248201527f6163636f756e7420697320616c7265616479206775617264000000000000000060448201526064016106ac565b6003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915560009081526004602052604090819020805460ff191683179055517f9d2ad6935836e3feec55c26f64a4597dea43438063d58b39199270a89e6916d891612cba91849190613e01565b6001600160a01b03811660009081526006602052604081205460ff16600281111561321457613214613a19565b036132615760405162461bcd60e51b815260206004820152601560248201527f6163636f756e74206973206e6f7420706175736572000000000000000000000060448201526064016106ac565b6001600160a01b0381166000908152600660205260408120805460ff191690556005805467ffffffffffffffff169161329983613f22565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550507f0dabd4cf3e4858df3a432c6f93736d56848ecd98f4bc1eace563fe71a07bc9ea816000604051612cba929190613e01565b6000546001600160a01b03161561334b5760405162461bcd60e51b815260206004820152601160248201527f6f776e657220616c72656164792073657400000000000000000000000000000060448201526064016106ac565b6123aa336137c0565b600354156133a45760405162461bcd60e51b815260206004820152601860248201527f67756172647320616c726561647920696e69746961746564000000000000000060448201526064016106ac565b60005b81518110156133e4576133d28282815181106133c5576133c5613c6a565b60200260200101516130cd565b806133dc81613d19565b9150506133a7565b50600354610a6290612c25565b60055467ffffffffffffffff161561344b5760405162461bcd60e51b815260206004820152601960248201527f7061757365727320616c726561647920696e697469617465640000000000000060448201526064016106ac565b60005b815181101561348d5761347b82828151811061346c5761346c613c6a565b6020026020010151600161362e565b8061348581613d19565b91505061344e565b5050565b60075467ffffffffffffffff16156134eb5760405162461bcd60e51b815260206004820152601b60248201527f676f7665726e6f727320616c726561647920696e69746961746564000000000060448201526064016106ac565b60005b815181101561348d5761351982828151811061350c5761350c613c6a565b6020026020010151612cc5565b8061352381613d19565b9150506134ee565b6001600160a01b03811660009081526008602052604090205460ff166135935760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f7420676f7665726e6f7200000000000000000060448201526064016106ac565b6001600160a01b0381166000908152600860205260408120805460ff191690556007805467ffffffffffffffff16916135cb83613f22565b825467ffffffffffffffff9182166101009390930a928302919092021990911617905550604080516001600160a01b0383168152600060208201527fd56705c538ed903779607d52e743dd909c45abd4fde1eb2a6eaf409d72d635469101612cba565b6001600160a01b03821660009081526006602052604081205460ff16600281111561365b5761365b613a19565b146136a85760405162461bcd60e51b815260206004820152601960248201527f6163636f756e7420697320616c7265616479207061757365720000000000000060448201526064016106ac565b60018160028111156136bc576136bc613a19565b14806136d9575060028160028111156136d7576136d7613a19565b145b6137145760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420726f6c6560a01b60448201526064016106ac565b6001600160a01b0382166000908152600660205260409020805482919060ff1916600183600281111561374957613749613a19565b02179055506005805467ffffffffffffffff1690600061376883613ed2565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550507f0dabd4cf3e4858df3a432c6f93736d56848ecd98f4bc1eace563fe71a07bc9ea8282604051612c19929190613e01565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261382f57600080fd5b50813567ffffffffffffffff81111561384757600080fd5b6020830191508360208260051b850101111561386257600080fd5b9250929050565b6000806020838503121561387c57600080fd5b823567ffffffffffffffff81111561389357600080fd5b61389f8582860161381d565b90969095509350505050565b600080600080604085870312156138c157600080fd5b843567ffffffffffffffff808211156138d957600080fd5b6138e58883890161381d565b909650945060208701359150808211156138fe57600080fd5b5061390b8782880161381d565b95989497509550505050565b60006020828403121561392957600080fd5b5035919050565b80356001600160a01b038116811461394757600080fd5b919050565b6000806040838503121561395f57600080fd5b61396883613930565b946020939093013593505050565b60008060008060006060868803121561398e57600080fd5b61399786613930565b9450602086013567ffffffffffffffff808211156139b457600080fd5b6139c089838a0161381d565b909650945060408801359150808211156139d957600080fd5b506139e68882890161381d565b969995985093965092949392505050565b600060208284031215613a0957600080fd5b613a1282613930565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60038110610a6257634e487b7160e01b600052602160045260246000fd5b60208101613a5a83613a2f565b91905290565b600080600080600060608688031215613a7857600080fd5b853567ffffffffffffffff80821115613a9057600080fd5b613a9c89838a0161381d565b90975095506020880135915080821115613ab557600080fd5b50613ac28882890161381d565b96999598509660400135949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b1357613b13613ad4565b604052919050565b600082601f830112613b2c57600080fd5b8135602067ffffffffffffffff821115613b4857613b48613ad4565b8160051b613b57828201613aea565b9283528481018201928281019087851115613b7157600080fd5b83870192505b84831015613b9757613b8883613930565b82529183019190830190613b77565b979650505050505050565b600080600060608486031215613bb757600080fd5b833567ffffffffffffffff80821115613bcf57600080fd5b613bdb87838801613b1b565b94506020860135915080821115613bf157600080fd5b613bfd87838801613b1b565b93506040860135915080821115613c1357600080fd5b50613c2086828701613b1b565b9150509250925092565b60008060408385031215613c3d57600080fd5b613c4683613930565b9150602083013563ffffffff81168114613c5f57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b60005b83811015613c9b578181015183820152602001613c83565b50506000910152565b60008251613cb6818460208701613c80565b9190910192915050565b6001600160a01b03831681526040602082015260008251806040840152613cee816060850160208701613c80565b601f01601f1916919091016060019392505050565b634e487b7160e01b600052601160045260246000fd5b600060018201613d2b57613d2b613d03565b5060010190565b600060208284031215613d4457600080fd5b813560038110613a1257600080fd5b600060208284031215613d6557600080fd5b5051919050565b6040808252810184905260008560608301825b87811015613dad576001600160a01b03613d9884613930565b16825260209283019290910190600101613d7f565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115613de657600080fd5b8460051b915081866020830137016020019695505050505050565b6001600160a01b038316815260408101613e1a83613a2f565b8260208301529392505050565b600081613e3657613e36613d03565b506000190190565b600060208284031215613e5057600080fd5b815167ffffffffffffffff80821115613e6857600080fd5b818401915084601f830112613e7c57600080fd5b815181811115613e8e57613e8e613ad4565b613ea1601f8201601f1916602001613aea565b9150808252856020828501011115613eb857600080fd5b613ec9816020840160208601613c80565b50949350505050565b600067ffffffffffffffff808316818103613eef57613eef613d03565b6001019392505050565b81810381811115612ac257612ac2613d03565b634e487b7160e01b600052603160045260246000fd5b600067ffffffffffffffff821680613f3c57613f3c613d03565b600019019291505056fe43616c6c6572206973206e6f7420676f7665726e6f7200000000000000000000a26469706673582212208cefcff510fab2c7d1726e7da30c41419631576456705f3512d7e28a273cf38464736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000083039377ddd862821d92d416b2ddb9efb5ba90000000000000000000000000008934b5d91a33269ad7e2202482a0df5ddbc5d4e10000000000000000000000000000000000000000000000000000000000000006000000000000000000000000ed9fdf5b16f9f254bec5ad389b80b48225186655000000000000000000000000dfe4f07d1f36b8d559b25082460a4f6a72531de200000000000000000000000034dfa1226f8b3e36fe597b34eea809a2b5c0bbf90000000000000000000000009ad3a3ca7d6b14e830de247c8ca3fad9d4c9d88c0000000000000000000000002fb8783c14a71c08bfc1de8fc3d715dd93039bf2000000000000000000000000e45cb56cee56dd1a94f7e5fbdfaa5bafb3c053d30000000000000000000000000000000000000000000000000000000000000004000000000000000000000000ed9fdf5b16f9f254bec5ad389b80b4822518665500000000000000000000000034dfa1226f8b3e36fe597b34eea809a2b5c0bbf90000000000000000000000009ad3a3ca7d6b14e830de247c8ca3fad9d4c9d88c00000000000000000000000040c11bddeb38dec685eed3586baebf086fac9da0
-----Decoded View---------------
Arg [0] : _guards (address[]): 0x83039377ddD862821d92d416b2DDB9EFb5BA9000,0x8934b5d91A33269Ad7E2202482A0dF5dDbc5D4E1
Arg [1] : _pausers (address[]): 0xED9fdF5B16F9F254bec5Ad389B80B48225186655,0xDfE4F07D1F36B8d559b25082460a4f6A72531de2,0x34dFa1226F8b3E36FE597B34eEa809a2B5c0bBf9,0x9Ad3A3ca7d6B14E830De247c8ca3FaD9D4c9d88C,0x2FB8783C14A71C08bFC1dE8Fc3D715Dd93039BF2,0xE45CB56CEe56Dd1A94F7E5fBDFaa5BaFB3C053d3
Arg [2] : _governors (address[]): 0xED9fdF5B16F9F254bec5Ad389B80B48225186655,0x34dFa1226F8b3E36FE597B34eEa809a2B5c0bBf9,0x9Ad3A3ca7d6B14E830De247c8ca3FaD9D4c9d88C,0x40C11BddeB38Dec685Eed3586BAeBf086fac9dA0
-----Encoded View---------------
18 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [4] : 00000000000000000000000083039377ddd862821d92d416b2ddb9efb5ba9000
Arg [5] : 0000000000000000000000008934b5d91a33269ad7e2202482a0df5ddbc5d4e1
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [7] : 000000000000000000000000ed9fdf5b16f9f254bec5ad389b80b48225186655
Arg [8] : 000000000000000000000000dfe4f07d1f36b8d559b25082460a4f6a72531de2
Arg [9] : 00000000000000000000000034dfa1226f8b3e36fe597b34eea809a2b5c0bbf9
Arg [10] : 0000000000000000000000009ad3a3ca7d6b14e830de247c8ca3fad9d4c9d88c
Arg [11] : 0000000000000000000000002fb8783c14a71c08bfc1de8fc3d715dd93039bf2
Arg [12] : 000000000000000000000000e45cb56cee56dd1a94f7e5fbdfaa5bafb3c053d3
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [14] : 000000000000000000000000ed9fdf5b16f9f254bec5ad389b80b48225186655
Arg [15] : 00000000000000000000000034dfa1226f8b3e36fe597b34eea809a2b5c0bbf9
Arg [16] : 0000000000000000000000009ad3a3ca7d6b14e830de247c8ca3fad9d4c9d88c
Arg [17] : 00000000000000000000000040c11bddeb38dec685eed3586baebf086fac9da0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.