More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 485 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20097942 | 39 days ago | IN | 0 ETH | 0.00019013 | ||||
Approve | 19174173 | 169 days ago | IN | 0 ETH | 0.00124057 | ||||
Approve | 18805159 | 220 days ago | IN | 0 ETH | 0.00251756 | ||||
Approve | 18798025 | 221 days ago | IN | 0 ETH | 0.00192905 | ||||
Transfer | 18798019 | 221 days ago | IN | 0 ETH | 0.00178239 | ||||
Transfer | 18798012 | 221 days ago | IN | 0 ETH | 0.00182523 | ||||
Transfer | 18798003 | 221 days ago | IN | 0 ETH | 0.0017589 | ||||
Transfer | 18797997 | 221 days ago | IN | 0 ETH | 0.00190637 | ||||
Transfer | 18797992 | 221 days ago | IN | 0 ETH | 0.00177028 | ||||
Transfer | 18797979 | 221 days ago | IN | 0 ETH | 0.00177315 | ||||
Transfer | 18797965 | 221 days ago | IN | 0 ETH | 0.00162188 | ||||
Transfer | 18797948 | 221 days ago | IN | 0 ETH | 0.00168054 | ||||
Transfer | 18797940 | 221 days ago | IN | 0 ETH | 0.00186078 | ||||
Transfer | 18797933 | 221 days ago | IN | 0 ETH | 0.00173522 | ||||
Transfer | 18797926 | 221 days ago | IN | 0 ETH | 0.00177352 | ||||
Transfer | 18797919 | 221 days ago | IN | 0 ETH | 0.00177288 | ||||
Transfer | 18797914 | 221 days ago | IN | 0 ETH | 0.00189022 | ||||
Transfer | 18797902 | 221 days ago | IN | 0 ETH | 0.00185452 | ||||
Transfer | 18797882 | 221 days ago | IN | 0 ETH | 0.00170943 | ||||
Transfer | 18797868 | 221 days ago | IN | 0 ETH | 0.00165398 | ||||
Transfer | 18797856 | 221 days ago | IN | 0 ETH | 0.00164239 | ||||
Transfer | 18797848 | 221 days ago | IN | 0 ETH | 0.00161137 | ||||
Transfer | 18797839 | 221 days ago | IN | 0 ETH | 0.0016055 | ||||
Transfer | 18797830 | 221 days ago | IN | 0 ETH | 0.00152807 | ||||
Transfer | 18797821 | 221 days ago | IN | 0 ETH | 0.00161635 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18797749 | 221 days ago | 0.0051966 ETH | ||||
18797749 | 221 days ago | 0.02078642 ETH | ||||
18797749 | 221 days ago | 0.01558981 ETH | ||||
18797749 | 221 days ago | 0.04157284 ETH | ||||
18697787 | 235 days ago | 0.00933665 ETH | ||||
18697787 | 235 days ago | 0.03734662 ETH | ||||
18697787 | 235 days ago | 0.02800996 ETH | ||||
18697787 | 235 days ago | 0.07469324 ETH | ||||
18675437 | 239 days ago | 0.01099593 ETH | ||||
18675437 | 239 days ago | 0.04398375 ETH | ||||
18675437 | 239 days ago | 0.03298781 ETH | ||||
18675437 | 239 days ago | 0.08796751 ETH | ||||
18675408 | 239 days ago | 0.0143001 ETH | ||||
18675408 | 239 days ago | 0.05720043 ETH | ||||
18675408 | 239 days ago | 0.04290032 ETH | ||||
18675408 | 239 days ago | 0.11440086 ETH | ||||
18674584 | 239 days ago | 0.01779492 ETH | ||||
18674584 | 239 days ago | 0.07117968 ETH | ||||
18674584 | 239 days ago | 0.05338476 ETH | ||||
18674584 | 239 days ago | 0.14235937 ETH | ||||
18674569 | 239 days ago | 0.02413429 ETH | ||||
18674569 | 239 days ago | 0.09653719 ETH | ||||
18674569 | 239 days ago | 0.07240289 ETH | ||||
18674569 | 239 days ago | 0.19307439 ETH | ||||
18674474 | 239 days ago | 0.01412791 ETH |
Loading...
Loading
Contract Name:
AIBOT
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-13 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.12; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } contract ERC20 is Context, IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } contract AIBOT is Ownable, ERC20 { address public constant DEAD_ADDRESS = 0x000000000000000000000000000000000000dEaD; address public constant TEAM_ADDRESS = 0xD9a12bFbc2802E3Da40EdEad99E391c5BBf26BAF; address public constant HOLDER_ADDRESS = 0x329426D2E3ebf145EC80144D98EC4346b4A593B4; address public constant TOKEN_ADDRESS = 0x11ccf09AAeb5f59311e010af5347c616A3c63c03; address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; IUniswapV2Router02 public immutable uniswapV2Router; IUniswapV2Factory public immutable uniswapV2Factory; bool swapping; bool public startTrading; address public teamReward; address public holderReward; address public tokenReward; address public burnAddress; uint256 public buyFeeRate; uint256 public sellFeeRate; uint256 public totalFeeAmount; uint256 public swapAmount; uint256 public holderShare; uint256 public burnShare; uint256 public teamShare; uint256 public tokenShare; uint256 public burnLimit; mapping (address => mapping(address => uint256)) public balanceFromPool; mapping (address => bool) public uniswapPool; mapping (address => bool) public dutyFree; mapping (address => uint256) public lastTradingBlock; event SwapAmountSet(address indexed owner, uint256 indexed amount); event TeamSet(address indexed owner, address indexed account); event BurnAddressSet(address indexed owner, address indexed account); event ShareSet(address indexed owner, uint256 burnShare, uint256 holderShare,uint256 teamShare,uint256 tokenShare); event HolderRewardSet(address indexed owner, address indexed account); event TokenRewardSet(address indexed owner, address indexed account); event LimitSet(address indexed owner, bool indexed limited, uint256 indexed amount); event PoolSet(address indexed owner, address indexed account, bool indexed value); event DutyFreeSet(address indexed owner, address indexed account, bool indexed value); event FeeRateSet(address indexed owner, uint256 indexed buyFeeRate, uint256 indexed sellFeeRate); event BurnLimitSet(address indexed owner, uint256 burnLimit); constructor(uint256 _totalSupply) ERC20("AIBOT", "AIBOT") { uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Factory = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); swapping = false; swapAmount = (_totalSupply * 1) / 10000; holderShare = 0.4 ether; burnShare = 0.2 ether; teamShare = 0.3 ether; tokenShare = 0.1 ether; burnLimit = _totalSupply / 10000; buyFeeRate = 0.05 ether; sellFeeRate = 0.05 ether; teamReward = TEAM_ADDRESS; tokenReward = TOKEN_ADDRESS; holderReward = HOLDER_ADDRESS; burnAddress = DEAD_ADDRESS; dutyFree[msg.sender] = true; dutyFree[address(this)] = true; _mint(msg.sender, _totalSupply); address pair = uniswapV2Factory.createPair(address(this), WETH); setPool(pair); } fallback() external payable {} receive() external payable {} function setStartTrading() external onlyOwner { startTrading = true; } function withdrawToken(address token, address to) external onlyOwner { require(token != address(0), "token address cannot be zero address"); uint256 balance = IERC20(token).balanceOf(address(this)); IERC20(token).transfer(to, balance); } function withdrawEth(address to) external onlyOwner { (bool success, ) = to.call{value: address(this).balance}(new bytes(0)); require(success, "eth transfer failed"); } function setPool(address account) public onlyOwner { uniswapPool[account] = !uniswapPool[account]; emit PoolSet(msg.sender, account, uniswapPool[account]); } function setTeam(address account) external onlyOwner { teamReward = account; emit TeamSet(msg.sender, teamReward); } function setHolderReward(address account) external onlyOwner { holderReward = account; emit HolderRewardSet(msg.sender, holderReward); } function setTokenReward(address account) external onlyOwner { tokenReward = account; emit TokenRewardSet(msg.sender, tokenReward); } function setBurnAddress(address account) external onlyOwner { burnAddress = account; emit BurnAddressSet(msg.sender, burnAddress); } function setDutyFree(address account) public onlyOwner { dutyFree[account] = !dutyFree[account]; emit DutyFreeSet(msg.sender, account, dutyFree[account]); } function setFeeRate(uint256 _buyFeeRate, uint256 _sellFeeRate) external onlyOwner { buyFeeRate = _buyFeeRate; sellFeeRate = _sellFeeRate; emit FeeRateSet(msg.sender, _buyFeeRate, _sellFeeRate); } function setBurnLimit(uint256 _burnLimit) external onlyOwner { burnLimit = _burnLimit; emit BurnLimitSet(msg.sender, _burnLimit); } function setSwapAmount(uint256 _swapAmount) external onlyOwner { swapAmount = _swapAmount; emit SwapAmountSet(msg.sender, _swapAmount); } function setShare(uint256 _burnShare, uint256 _holderShare, uint256 _teamShare, uint256 _tokenShare) external onlyOwner { uint256 totalShare = _burnShare + _holderShare + _teamShare + _tokenShare; require(totalShare == 1 ether, "forbid"); burnShare = _burnShare; holderShare = _holderShare; teamShare = _teamShare; tokenShare = _tokenShare; emit ShareSet(msg.sender, burnShare, holderShare, teamShare, tokenShare); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal override { if (!startTrading) { require(from == owner() || to == owner(), "trading is not started"); return; } if (uniswapPool[from]) { balanceFromPool[to][from] += amount; } } function _transfer(address from, address to, uint256 amount) internal override { if (!swapping && !uniswapPool[from]) { swapping = true; _swapBack(); swapping = false; } uint256 feeRate = 0; if (uniswapPool[from]) { if (!dutyFree[to]) { feeRate = buyFeeRate; } } else if (uniswapPool[to]) { if (!dutyFree[from]) { feeRate = sellFeeRate; } } if (feeRate > 0 && amount > 0) { uint256 fee = amount * feeRate / 1 ether; totalFeeAmount += fee; super._transfer(from, address(this), fee); amount -= fee; } super._transfer(from, to, amount); } function _swapBack() internal { if (totalFeeAmount <= swapAmount) { return; } bool success; uint256 amountToHolder = totalFeeAmount * holderShare / 1 ether; uint256 amountToToken = totalFeeAmount * tokenShare / 1 ether; uint256 amountToBurn = totalFeeAmount * burnShare / 1 ether; uint256 amountToTeam = totalFeeAmount * teamShare / 1 ether; uint256 amountToSwap = amountToTeam + amountToHolder + amountToToken; if(totalSupply() - IERC20(address(this)).balanceOf(burnAddress) <= burnLimit){ amountToSwap += amountToBurn; } uint256 initialETHBalance = address(this).balance; _swapTokensForEth(amountToSwap); uint256 totalShare = teamShare + holderShare + tokenShare; uint256 teamETHBalance = (address(this).balance - initialETHBalance) * teamShare / totalShare ; uint256 holderETHBalance = (address(this).balance - initialETHBalance) * holderShare / totalShare; uint256 tokenETHBalance = (address(this).balance - initialETHBalance) * tokenShare / totalShare; (success, ) = teamReward.call{value: teamETHBalance}(new bytes(0)); require(success, "eth transfer failed"); (success, ) = holderReward.call{value: holderETHBalance}(new bytes(0)); require(success, "eth transfer failed"); (success, ) = tokenReward.call{value: tokenETHBalance}(new bytes(0)); require(success, "eth transfer failed"); if(totalSupply() - IERC20(address(this)).balanceOf(burnAddress) > burnLimit){ if(totalSupply() - IERC20(address(this)).balanceOf(burnAddress) - amountToBurn < burnLimit){ IERC20(address(this)).transfer(burnAddress, totalSupply() - IERC20(address(this)).balanceOf(burnAddress) - burnLimit); }else { IERC20(address(this)).transfer(burnAddress, amountToBurn); } } totalFeeAmount = 0; } function _swapTokensForEth(uint256 amount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); if (allowance(address(this), address(uniswapV2Router)) < amount) { _approve(address(this), address(uniswapV2Router), type(uint256).max); } uniswapV2Router.swapExactTokensForETH(amount, 0, path, address(this), block.timestamp); } function burn(uint256 value) external { _burn(msg.sender, value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"BurnAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnLimit","type":"uint256"}],"name":"BurnLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"DutyFreeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"buyFeeRate","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFeeRate","type":"uint256"}],"name":"FeeRateSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"HolderRewardSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"bool","name":"limited","type":"bool"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LimitSet","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":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"PoolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"holderShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenShare","type":"uint256"}],"name":"ShareSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapAmountSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TokenRewardSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DEAD_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOLDER_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"balanceFromPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dutyFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderReward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setBurnAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnLimit","type":"uint256"}],"name":"setBurnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setDutyFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFeeRate","type":"uint256"},{"internalType":"uint256","name":"_sellFeeRate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setHolderReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnShare","type":"uint256"},{"internalType":"uint256","name":"_holderShare","type":"uint256"},{"internalType":"uint256","name":"_teamShare","type":"uint256"},{"internalType":"uint256","name":"_tokenShare","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setStartTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setTokenReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamReward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenReward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"uniswapPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040523480156200001157600080fd5b50604051620058e7380380620058e7833981810160405281019062000037919062000c08565b6040518060400160405280600581526020017f4149424f540000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4149424f54000000000000000000000000000000000000000000000000000000815250620000c3620000b7620004ee60201b60201c565b620004f660201b60201c565b8160049080519060200190620000db92919062000b18565b508060059080519060200190620000f492919062000b18565b505050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506000600660006101000a81548160ff021916908315150217905550612710600182620001b4919062000c69565b620001c0919062000cf9565b600d8190555067058d15e176280000600e819055506702c68af0bb140000600f81905550670429d069189e000060108190555067016345785d8a00006011819055506127108162000212919062000cf9565b60128190555066b1a2bc2ec50000600a8190555066b1a2bc2ec50000600b8190555073d9a12bfbc2802e3da40edead99e391c5bbf26baf600660026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507311ccf09aaeb5f59311e010af5347c616a3c63c03600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073329426d2e3ebf145ec80144d98ec4346b4a593b4600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004383382620005ba60201b60201c565b600060a05173ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b81526004016200048d92919062000d76565b6020604051808303816000875af1158015620004ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d3919062000dd4565b9050620004e6816200072960201b60201c565b50506200105d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200062d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006249062000e67565b60405180910390fd5b62000641600083836200088960201b60201c565b806003600082825462000655919062000e89565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000709919062000ef7565b60405180910390a3620007256000838362000a5960201b60201c565b5050565b6200073962000a5e60201b60201c565b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615158173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2563c168fd69ef80f00260284837ea144310fa81558e4265a735e74e6c32706460405160405180910390a450565b600660019054906101000a900460ff166200096a57620008ae62000aef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620009225750620008f362000aef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095b9062000f64565b60405180910390fd5b62000a54565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000a535780601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a4b919062000e89565b925050819055505b5b505050565b505050565b62000a6e620004ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a9462000aef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae49062000fd6565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000b269062001027565b90600052602060002090601f01602090048101928262000b4a576000855562000b96565b82601f1062000b6557805160ff191683800117855562000b96565b8280016001018555821562000b96579182015b8281111562000b9557825182559160200191906001019062000b78565b5b50905062000ba5919062000ba9565b5090565b5b8082111562000bc457600081600090555060010162000baa565b5090565b600080fd5b6000819050919050565b62000be28162000bcd565b811462000bee57600080fd5b50565b60008151905062000c028162000bd7565b92915050565b60006020828403121562000c215762000c2062000bc8565b5b600062000c318482850162000bf1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c768262000bcd565b915062000c838362000bcd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cbf5762000cbe62000c3a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d068262000bcd565b915062000d138362000bcd565b92508262000d265762000d2562000cca565b5b828204905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d5e8262000d31565b9050919050565b62000d708162000d51565b82525050565b600060408201905062000d8d600083018562000d65565b62000d9c602083018462000d65565b9392505050565b62000dae8162000d51565b811462000dba57600080fd5b50565b60008151905062000dce8162000da3565b92915050565b60006020828403121562000ded5762000dec62000bc8565b5b600062000dfd8482850162000dbd565b91505092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e4f601f8362000e06565b915062000e5c8262000e17565b602082019050919050565b6000602082019050818103600083015262000e828162000e40565b9050919050565b600062000e968262000bcd565b915062000ea38362000bcd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000edb5762000eda62000c3a565b5b828201905092915050565b62000ef18162000bcd565b82525050565b600060208201905062000f0e600083018462000ee6565b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600062000f4c60168362000e06565b915062000f598262000f14565b602082019050919050565b6000602082019050818103600083015262000f7f8162000f3d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fbe60208362000e06565b915062000fcb8262000f86565b602082019050919050565b6000602082019050818103600083015262000ff18162000faf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200104057607f821691505b6020821081141562001057576200105662000ff8565b5b50919050565b60805160a0516148486200109f600039600061163b015260008181610f8b015281816132fd015281816133df0152818161340f015261345701526148486000f3fe60806040526004361061031e5760003560e01c80635e2623f3116101ab578063a2558ee2116100f7578063d39c6fd311610095578063ea6ef2fe1161006f578063ea6ef2fe14610bd6578063f2d2a75114610c01578063f2fde38b14610c2a578063fa09b9fd14610c5357610325565b8063d39c6fd314610b45578063dd62ed3e14610b70578063e632313c14610bad57610325565b8063ad5c4648116100d1578063ad5c464814610a8b578063be49e4a814610ab6578063c2d09d3214610af3578063cb48b73c14610b1c57610325565b8063a2558ee2146109e6578063a457c2d714610a11578063a9059cbb14610a4e57610325565b80637278528e116101645780638da5cb5b1161013e5780638da5cb5b1461092857806395d89b4114610953578063965217161461097e578063a0b0904e146109a957610325565b80637278528e146108bb5780637425d2e0146108e657806382f0622a146108fd57610325565b80635e2623f3146107a95780636b1b4987146107e65780636e66f6e91461081157806370a082311461083c57806370d5ae0514610879578063715018a6146108a457610325565b80632e1dc4b81161026a57806342966c68116102235780634e6fd6c4116101fd5780634e6fd6c4146106ff57806351769d291461072a57806359d0f713146107535780635b149feb1461077e57610325565b806342966c68146106845780634437152a146106ad5780634b0e7216146106d657610325565b80632e1dc4b8146105745780632e8fa8211461059d578063313ce567146105c8578063351509a8146105f3578063395093511461061e5780633aeac4e11461065b57610325565b806315c4e385116102d757806323b872dd116102b157806323b872dd146104b857806325e16063146104f5578063293230b81461051e5780632a9c72c81461054957610325565b806315c4e385146104395780631694505e1461046257806318160ddd1461048d57610325565b806305bf0a541461032757806306fdde0314610352578063095cf5c61461037d578063095ea7b3146103a65780630bdf5300146103e3578063145044451461040e57610325565b3661032557005b005b34801561033357600080fd5b5061033c610c90565b604051610349919061351d565b60405180910390f35b34801561035e57600080fd5b50610367610c96565b60405161037491906135d1565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190613665565b610d28565b005b3480156103b257600080fd5b506103cd60048036038101906103c891906136be565b610df0565b6040516103da9190613719565b60405180910390f35b3480156103ef57600080fd5b506103f8610e13565b6040516104059190613743565b60405180910390f35b34801561041a57600080fd5b50610423610e2b565b604051610430919061351d565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190613665565b610e31565b005b34801561046e57600080fd5b50610477610f89565b60405161048491906137bd565b60405180910390f35b34801561049957600080fd5b506104a2610fad565b6040516104af919061351d565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906137d8565b610fb7565b6040516104ec9190613719565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190613665565b610fe6565b005b34801561052a57600080fd5b506105336110ed565b6040516105409190613719565b60405180910390f35b34801561055557600080fd5b5061055e611100565b60405161056b919061351d565b60405180910390f35b34801561058057600080fd5b5061059b60048036038101906105969190613665565b611106565b005b3480156105a957600080fd5b506105b26111ce565b6040516105bf919061351d565b60405180910390f35b3480156105d457600080fd5b506105dd6111d4565b6040516105ea9190613847565b60405180910390f35b3480156105ff57600080fd5b506106086111dd565b6040516106159190613743565b60405180910390f35b34801561062a57600080fd5b50610645600480360381019061064091906136be565b6111f5565b6040516106529190613719565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190613862565b61122c565b005b34801561069057600080fd5b506106ab60048036038101906106a691906138a2565b6113a6565b005b3480156106b957600080fd5b506106d460048036038101906106cf9190613665565b6113b3565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190613665565b61150b565b005b34801561070b57600080fd5b506107146115d3565b6040516107219190613743565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c91906138a2565b6115d9565b005b34801561075f57600080fd5b50610768611639565b60405161077591906138f0565b60405180910390f35b34801561078a57600080fd5b5061079361165d565b6040516107a0919061351d565b60405180910390f35b3480156107b557600080fd5b506107d060048036038101906107cb9190613665565b611663565b6040516107dd919061351d565b60405180910390f35b3480156107f257600080fd5b506107fb61167b565b604051610808919061351d565b60405180910390f35b34801561081d57600080fd5b50610826611681565b6040516108339190613743565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e9190613665565b6116a7565b604051610870919061351d565b60405180910390f35b34801561088557600080fd5b5061088e6116f0565b60405161089b9190613743565b60405180910390f35b3480156108b057600080fd5b506108b9611716565b005b3480156108c757600080fd5b506108d061172a565b6040516108dd919061351d565b60405180910390f35b3480156108f257600080fd5b506108fb611730565b005b34801561090957600080fd5b50610912611755565b60405161091f9190613743565b60405180910390f35b34801561093457600080fd5b5061093d61177b565b60405161094a9190613743565b60405180910390f35b34801561095f57600080fd5b506109686117a4565b60405161097591906135d1565b60405180910390f35b34801561098a57600080fd5b50610993611836565b6040516109a0919061351d565b60405180910390f35b3480156109b557600080fd5b506109d060048036038101906109cb9190613665565b61183c565b6040516109dd9190613719565b60405180910390f35b3480156109f257600080fd5b506109fb61185c565b604051610a089190613743565b60405180910390f35b348015610a1d57600080fd5b50610a386004803603810190610a3391906136be565b611882565b604051610a459190613719565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906136be565b6118f9565b604051610a829190613719565b60405180910390f35b348015610a9757600080fd5b50610aa061191c565b604051610aad9190613743565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190613862565b611934565b604051610aea919061351d565b60405180910390f35b348015610aff57600080fd5b50610b1a6004803603810190610b159190613665565b611959565b005b348015610b2857600080fd5b50610b436004803603810190610b3e919061390b565b611a21565b005b348015610b5157600080fd5b50610b5a611b18565b604051610b679190613743565b60405180910390f35b348015610b7c57600080fd5b50610b976004803603810190610b929190613862565b611b30565b604051610ba4919061351d565b60405180910390f35b348015610bb957600080fd5b50610bd46004803603810190610bcf91906138a2565b611bb7565b005b348015610be257600080fd5b50610beb611c0d565b604051610bf8919061351d565b60405180910390f35b348015610c0d57600080fd5b50610c286004803603810190610c239190613972565b611c13565b005b348015610c3657600080fd5b50610c516004803603810190610c4c9190613665565b611c72565b005b348015610c5f57600080fd5b50610c7a6004803603810190610c759190613665565b611cf6565b604051610c879190613719565b60405180910390f35b600f5481565b606060048054610ca5906139e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd1906139e1565b8015610d1e5780601f10610cf357610100808354040283529160200191610d1e565b820191906000526020600020905b815481529060010190602001808311610d0157829003601f168201915b5050505050905090565b610d30611d16565b80600660026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3a24054aecb6c629e440be09672d66ad4e19dd2c07781e0559c20c14f9c234f260405160405180910390a350565b600080610dfb611d94565b9050610e08818585611d9c565b600191505092915050565b7311ccf09aaeb5f59311e010af5347c616a3c63c0381565b600e5481565b610e39611d16565b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615158173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f30757f9f6b8114acbbc655397099fb9a7aa705ec41498de7a514c1eda8a775bd60405160405180910390a450565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600354905090565b600080610fc2611d94565b9050610fcf858285611f67565b610fda858585611ff3565b60019150509392505050565b610fee611d16565b60008173ffffffffffffffffffffffffffffffffffffffff1647600067ffffffffffffffff81111561102357611022613a13565b5b6040519080825280601f01601f1916602001820160405280156110555781602001600182028036833780820191505090505b506040516110639190613a89565b60006040518083038185875af1925050503d80600081146110a0576040519150601f19603f3d011682016040523d82523d6000602084013e6110a5565b606091505b50509050806110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090613aec565b60405180910390fd5b5050565b600660019054906101000a900460ff1681565b60125481565b61110e611d16565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9dbebdcff3a9daf4cacfb2cac05d9ac155f3f9721123aa2e67f5fa445001593b60405160405180910390a350565b600d5481565b60006012905090565b73d9a12bfbc2802e3da40edead99e391c5bbf26baf81565b600080611200611d94565b90506112218185856112128589611b30565b61121c9190613b3b565b611d9c565b600191505092915050565b611234611d16565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90613c03565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112df9190613743565b602060405180830381865afa1580156112fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113209190613c38565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161135d929190613c65565b6020604051808303816000875af115801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a09190613cba565b50505050565b6113b03382612276565b50565b6113bb611d16565b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615158173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2563c168fd69ef80f00260284837ea144310fa81558e4265a735e74e6c32706460405160405180910390a450565b611513611d16565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2953a6d9d6a3e093c80024a8968a6b6e34f2df0af3d9b4dc14fee15d6928196d60405160405180910390a350565b61dead81565b6115e1611d16565b806012819055503373ffffffffffffffffffffffffffffffffffffffff167f38d9c6f41f695bf19dcf7405f3cff5dfffc286f7afda91032819c5ba5628d06b8260405161162e919061351d565b60405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5481565b60166020528060005260406000206000915090505481565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61171e611d16565b6117286000612446565b565b60115481565b611738611d16565b6001600660016101000a81548160ff021916908315150217905550565b600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546117b3906139e1565b80601f01602080910402602001604051908101604052809291908181526020018280546117df906139e1565b801561182c5780601f106118015761010080835404028352916020019161182c565b820191906000526020600020905b81548152906001019060200180831161180f57829003601f168201915b5050505050905090565b600c5481565b60156020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061188d611d94565b9050600061189b8286611b30565b9050838110156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790613d59565b60405180910390fd5b6118ed8286868403611d9c565b60019250505092915050565b600080611904611d94565b9050611911818585611ff3565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6013602052816000526040600020602052806000526040600020600091509150505481565b611961611d16565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7dad233cc3bb9085a2e1e6078898aae54d7ac430b2b6ba95170d4153204d025f60405160405180910390a350565b611a29611d16565b600081838587611a399190613b3b565b611a439190613b3b565b611a4d9190613b3b565b9050670de0b6b3a76400008114611a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9090613dc5565b60405180910390fd5b84600f8190555083600e8190555082601081905550816011819055503373ffffffffffffffffffffffffffffffffffffffff167f3515e0296862f1d7e4cfe53fd4fe55b24b40e644498a3c4590e10d4e0902d10e600f54600e54601054601154604051611b099493929190613de5565b60405180910390a25050505050565b73329426d2e3ebf145ec80144d98ec4346b4a593b481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bbf611d16565b80600d81905550803373ffffffffffffffffffffffffffffffffffffffff167f784b3429538db33e97d92bcbc511240c0eb8051a85923fd5d00e67a0ff14d72560405160405180910390a350565b60105481565b611c1b611d16565b81600a8190555080600b8190555080823373ffffffffffffffffffffffffffffffffffffffff167f7ad4ef4cd81b13de60e52aa49a4efc6a1bc6e8bb1849d7e7bce2d790b024f07360405160405180910390a45050565b611c7a611d16565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613e9c565b60405180910390fd5b611cf381612446565b50565b60146020528060005260406000206000915054906101000a900460ff1681565b611d1e611d94565b73ffffffffffffffffffffffffffffffffffffffff16611d3c61177b565b73ffffffffffffffffffffffffffffffffffffffff1614611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613f08565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390613f9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061402c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f5a919061351d565b60405180910390a3505050565b6000611f738484611b30565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611fed5781811015611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614098565b60405180910390fd5b611fec8484848403611d9c565b5b50505050565b600660009054906101000a900460ff1615801561205a5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561209e576001600660006101000a81548160ff02191690831515021790555061208261250a565b6000600660006101000a81548160ff0219169083151502179055505b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561214e57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661214957600a5490505b6121f9565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121f857601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121f757600b5490505b5b5b6000811180156122095750600082115b15612265576000670de0b6b3a7640000828461222591906140b8565b61222f9190614141565b905080600c60008282546122439190613b3b565b92505081905550612255853083612e27565b80836122619190614172565b9250505b612270848484612e27565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90614218565b60405180910390fd5b6122f2826000836130a2565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906142aa565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161242d919061351d565b60405180910390a361244183600084613259565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600d54600c541161251a57612e25565b600080670de0b6b3a7640000600e54600c5461253691906140b8565b6125409190614141565b90506000670de0b6b3a7640000601154600c5461255d91906140b8565b6125679190614141565b90506000670de0b6b3a7640000600f54600c5461258491906140b8565b61258e9190614141565b90506000670de0b6b3a7640000601054600c546125ab91906140b8565b6125b59190614141565b905060008385836125c69190613b3b565b6125d09190613b3b565b90506012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016126309190613743565b602060405180830381865afa15801561264d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126719190613c38565b612679610fad565b6126839190614172565b116126975782816126949190613b3b565b90505b60004790506126a58261325e565b6000601154600e546010546126ba9190613b3b565b6126c49190613b3b565b905060008160105484476126d89190614172565b6126e291906140b8565b6126ec9190614141565b9050600082600e5485476127009190614172565b61270a91906140b8565b6127149190614141565b905060008360115486476127289190614172565b61273291906140b8565b61273c9190614141565b9050600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683600067ffffffffffffffff81111561279357612792613a13565b5b6040519080825280601f01601f1916602001820160405280156127c55781602001600182028036833780820191505090505b506040516127d39190613a89565b60006040518083038185875af1925050503d8060008114612810576040519150601f19603f3d011682016040523d82523d6000602084013e612815565b606091505b5050809b50508a61285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285290613aec565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff8111156128b0576128af613a13565b5b6040519080825280601f01601f1916602001820160405280156128e25781602001600182028036833780820191505090505b506040516128f09190613a89565b60006040518083038185875af1925050503d806000811461292d576040519150601f19603f3d011682016040523d82523d6000602084013e612932565b606091505b5050809b50508a612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90613aec565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681600067ffffffffffffffff8111156129cd576129cc613a13565b5b6040519080825280601f01601f1916602001820160405280156129ff5781602001600182028036833780820191505090505b50604051612a0d9190613a89565b60006040518083038185875af1925050503d8060008114612a4a576040519150601f19603f3d011682016040523d82523d6000602084013e612a4f565b606091505b5050809b50508a612a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8c90613aec565b60405180910390fd5b6012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612af39190613743565b602060405180830381865afa158015612b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b349190613c38565b612b3c610fad565b612b469190614172565b1115612e1157601254883073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612bab9190613743565b602060405180830381865afa158015612bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bec9190613c38565b612bf4610fad565b612bfe9190614172565b612c089190614172565b1015612d6e573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612cab9190613743565b602060405180830381865afa158015612cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cec9190613c38565b612cf4610fad565b612cfe9190614172565b612d089190614172565b6040518363ffffffff1660e01b8152600401612d25929190613c65565b6020604051808303816000875af1158015612d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d689190613cba565b50612e10565b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6040518363ffffffff1660e01b8152600401612dcb929190613c65565b6020604051808303816000875af1158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e9190613cba565b505b5b6000600c8190555050505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8e9061433c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe906143ce565b60405180910390fd5b612f128383836130a2565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9090614460565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613089919061351d565b60405180910390a361309c848484613259565b50505050565b600660019054906101000a900460ff1661316d576130be61177b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061312957506130fa61177b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b613168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315f906144cc565b60405180910390fd5b613254565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132535780601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461324b9190613b3b565b925050819055505b5b505050565b505050565b6000600267ffffffffffffffff81111561327b5761327a613a13565b5b6040519080825280602002602001820160405280156132a95781602001602082028036833780820191505090505b50905030816000815181106132c1576132c06144ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338a9190614530565b8160018151811061339e5761339d6144ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081613403307f0000000000000000000000000000000000000000000000000000000000000000611b30565b101561345557613454307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d9c565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58360008430426040518663ffffffff1660e01b81526004016134b7959493929190614656565b6000604051808303816000875af11580156134d6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906134ff91906147c9565b505050565b6000819050919050565b61351781613504565b82525050565b6000602082019050613532600083018461350e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613572578082015181840152602081019050613557565b83811115613581576000848401525b50505050565b6000601f19601f8301169050919050565b60006135a382613538565b6135ad8185613543565b93506135bd818560208601613554565b6135c681613587565b840191505092915050565b600060208201905081810360008301526135eb8184613598565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061363282613607565b9050919050565b61364281613627565b811461364d57600080fd5b50565b60008135905061365f81613639565b92915050565b60006020828403121561367b5761367a6135fd565b5b600061368984828501613650565b91505092915050565b61369b81613504565b81146136a657600080fd5b50565b6000813590506136b881613692565b92915050565b600080604083850312156136d5576136d46135fd565b5b60006136e385828601613650565b92505060206136f4858286016136a9565b9150509250929050565b60008115159050919050565b613713816136fe565b82525050565b600060208201905061372e600083018461370a565b92915050565b61373d81613627565b82525050565b60006020820190506137586000830184613734565b92915050565b6000819050919050565b600061378361377e61377984613607565b61375e565b613607565b9050919050565b600061379582613768565b9050919050565b60006137a78261378a565b9050919050565b6137b78161379c565b82525050565b60006020820190506137d260008301846137ae565b92915050565b6000806000606084860312156137f1576137f06135fd565b5b60006137ff86828701613650565b935050602061381086828701613650565b9250506040613821868287016136a9565b9150509250925092565b600060ff82169050919050565b6138418161382b565b82525050565b600060208201905061385c6000830184613838565b92915050565b60008060408385031215613879576138786135fd565b5b600061388785828601613650565b925050602061389885828601613650565b9150509250929050565b6000602082840312156138b8576138b76135fd565b5b60006138c6848285016136a9565b91505092915050565b60006138da8261378a565b9050919050565b6138ea816138cf565b82525050565b600060208201905061390560008301846138e1565b92915050565b60008060008060808587031215613925576139246135fd565b5b6000613933878288016136a9565b9450506020613944878288016136a9565b9350506040613955878288016136a9565b9250506060613966878288016136a9565b91505092959194509250565b60008060408385031215613989576139886135fd565b5b6000613997858286016136a9565b92505060206139a8858286016136a9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139f957607f821691505b60208210811415613a0d57613a0c6139b2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600081905092915050565b6000613a6382613a42565b613a6d8185613a4d565b9350613a7d818560208601613554565b80840191505092915050565b6000613a958284613a58565b915081905092915050565b7f657468207472616e73666572206661696c656400000000000000000000000000600082015250565b6000613ad6601383613543565b9150613ae182613aa0565b602082019050919050565b60006020820190508181036000830152613b0581613ac9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b4682613504565b9150613b5183613504565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b8657613b85613b0c565b5b828201905092915050565b7f746f6b656e20616464726573732063616e6e6f74206265207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613bed602483613543565b9150613bf882613b91565b604082019050919050565b60006020820190508181036000830152613c1c81613be0565b9050919050565b600081519050613c3281613692565b92915050565b600060208284031215613c4e57613c4d6135fd565b5b6000613c5c84828501613c23565b91505092915050565b6000604082019050613c7a6000830185613734565b613c87602083018461350e565b9392505050565b613c97816136fe565b8114613ca257600080fd5b50565b600081519050613cb481613c8e565b92915050565b600060208284031215613cd057613ccf6135fd565b5b6000613cde84828501613ca5565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d43602583613543565b9150613d4e82613ce7565b604082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f666f726269640000000000000000000000000000000000000000000000000000600082015250565b6000613daf600683613543565b9150613dba82613d79565b602082019050919050565b60006020820190508181036000830152613dde81613da2565b9050919050565b6000608082019050613dfa600083018761350e565b613e07602083018661350e565b613e14604083018561350e565b613e21606083018461350e565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e86602683613543565b9150613e9182613e2a565b604082019050919050565b60006020820190508181036000830152613eb581613e79565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ef2602083613543565b9150613efd82613ebc565b602082019050919050565b60006020820190508181036000830152613f2181613ee5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f84602483613543565b9150613f8f82613f28565b604082019050919050565b60006020820190508181036000830152613fb381613f77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614016602283613543565b915061402182613fba565b604082019050919050565b6000602082019050818103600083015261404581614009565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614082601d83613543565b915061408d8261404c565b602082019050919050565b600060208201905081810360008301526140b181614075565b9050919050565b60006140c382613504565b91506140ce83613504565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561410757614106613b0c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061414c82613504565b915061415783613504565b92508261416757614166614112565b5b828204905092915050565b600061417d82613504565b915061418883613504565b92508282101561419b5761419a613b0c565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614202602183613543565b915061420d826141a6565b604082019050919050565b60006020820190508181036000830152614231816141f5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614294602283613543565b915061429f82614238565b604082019050919050565b600060208201905081810360008301526142c381614287565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614326602583613543565b9150614331826142ca565b604082019050919050565b6000602082019050818103600083015261435581614319565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006143b8602383613543565b91506143c38261435c565b604082019050919050565b600060208201905081810360008301526143e7816143ab565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061444a602683613543565b9150614455826143ee565b604082019050919050565b600060208201905081810360008301526144798161443d565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b60006144b6601683613543565b91506144c182614480565b602082019050919050565b600060208201905081810360008301526144e5816144a9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061452a81613639565b92915050565b600060208284031215614546576145456135fd565b5b60006145548482850161451b565b91505092915050565b6000819050919050565b600061458261457d6145788461455d565b61375e565b613504565b9050919050565b61459281614567565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145cd81613627565b82525050565b60006145df83836145c4565b60208301905092915050565b6000602082019050919050565b600061460382614598565b61460d81856145a3565b9350614618836145b4565b8060005b8381101561464957815161463088826145d3565b975061463b836145eb565b92505060018101905061461c565b5085935050505092915050565b600060a08201905061466b600083018861350e565b6146786020830187614589565b818103604083015261468a81866145f8565b90506146996060830185613734565b6146a6608083018461350e565b9695505050505050565b600080fd5b6146be82613587565b810181811067ffffffffffffffff821117156146dd576146dc613a13565b5b80604052505050565b60006146f06135f3565b90506146fc82826146b5565b919050565b600067ffffffffffffffff82111561471c5761471b613a13565b5b602082029050602081019050919050565b600080fd5b600061474561474084614701565b6146e6565b905080838252602082019050602084028301858111156147685761476761472d565b5b835b81811015614791578061477d8882613c23565b84526020840193505060208101905061476a565b5050509392505050565b600082601f8301126147b0576147af6146b0565b5b81516147c0848260208601614732565b91505092915050565b6000602082840312156147df576147de6135fd565b5b600082015167ffffffffffffffff8111156147fd576147fc613602565b5b6148098482850161479b565b9150509291505056fea2646970667358221220e6489244f6b997783dac81f63d35841fd2a7d9f08baca86e727e1da784a91b1564736f6c634300080c00330000000000000000000000000000000000000002a68bedbb190931f650000000
Deployed Bytecode
0x60806040526004361061031e5760003560e01c80635e2623f3116101ab578063a2558ee2116100f7578063d39c6fd311610095578063ea6ef2fe1161006f578063ea6ef2fe14610bd6578063f2d2a75114610c01578063f2fde38b14610c2a578063fa09b9fd14610c5357610325565b8063d39c6fd314610b45578063dd62ed3e14610b70578063e632313c14610bad57610325565b8063ad5c4648116100d1578063ad5c464814610a8b578063be49e4a814610ab6578063c2d09d3214610af3578063cb48b73c14610b1c57610325565b8063a2558ee2146109e6578063a457c2d714610a11578063a9059cbb14610a4e57610325565b80637278528e116101645780638da5cb5b1161013e5780638da5cb5b1461092857806395d89b4114610953578063965217161461097e578063a0b0904e146109a957610325565b80637278528e146108bb5780637425d2e0146108e657806382f0622a146108fd57610325565b80635e2623f3146107a95780636b1b4987146107e65780636e66f6e91461081157806370a082311461083c57806370d5ae0514610879578063715018a6146108a457610325565b80632e1dc4b81161026a57806342966c68116102235780634e6fd6c4116101fd5780634e6fd6c4146106ff57806351769d291461072a57806359d0f713146107535780635b149feb1461077e57610325565b806342966c68146106845780634437152a146106ad5780634b0e7216146106d657610325565b80632e1dc4b8146105745780632e8fa8211461059d578063313ce567146105c8578063351509a8146105f3578063395093511461061e5780633aeac4e11461065b57610325565b806315c4e385116102d757806323b872dd116102b157806323b872dd146104b857806325e16063146104f5578063293230b81461051e5780632a9c72c81461054957610325565b806315c4e385146104395780631694505e1461046257806318160ddd1461048d57610325565b806305bf0a541461032757806306fdde0314610352578063095cf5c61461037d578063095ea7b3146103a65780630bdf5300146103e3578063145044451461040e57610325565b3661032557005b005b34801561033357600080fd5b5061033c610c90565b604051610349919061351d565b60405180910390f35b34801561035e57600080fd5b50610367610c96565b60405161037491906135d1565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190613665565b610d28565b005b3480156103b257600080fd5b506103cd60048036038101906103c891906136be565b610df0565b6040516103da9190613719565b60405180910390f35b3480156103ef57600080fd5b506103f8610e13565b6040516104059190613743565b60405180910390f35b34801561041a57600080fd5b50610423610e2b565b604051610430919061351d565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190613665565b610e31565b005b34801561046e57600080fd5b50610477610f89565b60405161048491906137bd565b60405180910390f35b34801561049957600080fd5b506104a2610fad565b6040516104af919061351d565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906137d8565b610fb7565b6040516104ec9190613719565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190613665565b610fe6565b005b34801561052a57600080fd5b506105336110ed565b6040516105409190613719565b60405180910390f35b34801561055557600080fd5b5061055e611100565b60405161056b919061351d565b60405180910390f35b34801561058057600080fd5b5061059b60048036038101906105969190613665565b611106565b005b3480156105a957600080fd5b506105b26111ce565b6040516105bf919061351d565b60405180910390f35b3480156105d457600080fd5b506105dd6111d4565b6040516105ea9190613847565b60405180910390f35b3480156105ff57600080fd5b506106086111dd565b6040516106159190613743565b60405180910390f35b34801561062a57600080fd5b50610645600480360381019061064091906136be565b6111f5565b6040516106529190613719565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190613862565b61122c565b005b34801561069057600080fd5b506106ab60048036038101906106a691906138a2565b6113a6565b005b3480156106b957600080fd5b506106d460048036038101906106cf9190613665565b6113b3565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190613665565b61150b565b005b34801561070b57600080fd5b506107146115d3565b6040516107219190613743565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c91906138a2565b6115d9565b005b34801561075f57600080fd5b50610768611639565b60405161077591906138f0565b60405180910390f35b34801561078a57600080fd5b5061079361165d565b6040516107a0919061351d565b60405180910390f35b3480156107b557600080fd5b506107d060048036038101906107cb9190613665565b611663565b6040516107dd919061351d565b60405180910390f35b3480156107f257600080fd5b506107fb61167b565b604051610808919061351d565b60405180910390f35b34801561081d57600080fd5b50610826611681565b6040516108339190613743565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e9190613665565b6116a7565b604051610870919061351d565b60405180910390f35b34801561088557600080fd5b5061088e6116f0565b60405161089b9190613743565b60405180910390f35b3480156108b057600080fd5b506108b9611716565b005b3480156108c757600080fd5b506108d061172a565b6040516108dd919061351d565b60405180910390f35b3480156108f257600080fd5b506108fb611730565b005b34801561090957600080fd5b50610912611755565b60405161091f9190613743565b60405180910390f35b34801561093457600080fd5b5061093d61177b565b60405161094a9190613743565b60405180910390f35b34801561095f57600080fd5b506109686117a4565b60405161097591906135d1565b60405180910390f35b34801561098a57600080fd5b50610993611836565b6040516109a0919061351d565b60405180910390f35b3480156109b557600080fd5b506109d060048036038101906109cb9190613665565b61183c565b6040516109dd9190613719565b60405180910390f35b3480156109f257600080fd5b506109fb61185c565b604051610a089190613743565b60405180910390f35b348015610a1d57600080fd5b50610a386004803603810190610a3391906136be565b611882565b604051610a459190613719565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906136be565b6118f9565b604051610a829190613719565b60405180910390f35b348015610a9757600080fd5b50610aa061191c565b604051610aad9190613743565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190613862565b611934565b604051610aea919061351d565b60405180910390f35b348015610aff57600080fd5b50610b1a6004803603810190610b159190613665565b611959565b005b348015610b2857600080fd5b50610b436004803603810190610b3e919061390b565b611a21565b005b348015610b5157600080fd5b50610b5a611b18565b604051610b679190613743565b60405180910390f35b348015610b7c57600080fd5b50610b976004803603810190610b929190613862565b611b30565b604051610ba4919061351d565b60405180910390f35b348015610bb957600080fd5b50610bd46004803603810190610bcf91906138a2565b611bb7565b005b348015610be257600080fd5b50610beb611c0d565b604051610bf8919061351d565b60405180910390f35b348015610c0d57600080fd5b50610c286004803603810190610c239190613972565b611c13565b005b348015610c3657600080fd5b50610c516004803603810190610c4c9190613665565b611c72565b005b348015610c5f57600080fd5b50610c7a6004803603810190610c759190613665565b611cf6565b604051610c879190613719565b60405180910390f35b600f5481565b606060048054610ca5906139e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd1906139e1565b8015610d1e5780601f10610cf357610100808354040283529160200191610d1e565b820191906000526020600020905b815481529060010190602001808311610d0157829003601f168201915b5050505050905090565b610d30611d16565b80600660026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3a24054aecb6c629e440be09672d66ad4e19dd2c07781e0559c20c14f9c234f260405160405180910390a350565b600080610dfb611d94565b9050610e08818585611d9c565b600191505092915050565b7311ccf09aaeb5f59311e010af5347c616a3c63c0381565b600e5481565b610e39611d16565b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615158173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f30757f9f6b8114acbbc655397099fb9a7aa705ec41498de7a514c1eda8a775bd60405160405180910390a450565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600354905090565b600080610fc2611d94565b9050610fcf858285611f67565b610fda858585611ff3565b60019150509392505050565b610fee611d16565b60008173ffffffffffffffffffffffffffffffffffffffff1647600067ffffffffffffffff81111561102357611022613a13565b5b6040519080825280601f01601f1916602001820160405280156110555781602001600182028036833780820191505090505b506040516110639190613a89565b60006040518083038185875af1925050503d80600081146110a0576040519150601f19603f3d011682016040523d82523d6000602084013e6110a5565b606091505b50509050806110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090613aec565b60405180910390fd5b5050565b600660019054906101000a900460ff1681565b60125481565b61110e611d16565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9dbebdcff3a9daf4cacfb2cac05d9ac155f3f9721123aa2e67f5fa445001593b60405160405180910390a350565b600d5481565b60006012905090565b73d9a12bfbc2802e3da40edead99e391c5bbf26baf81565b600080611200611d94565b90506112218185856112128589611b30565b61121c9190613b3b565b611d9c565b600191505092915050565b611234611d16565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90613c03565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112df9190613743565b602060405180830381865afa1580156112fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113209190613c38565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161135d929190613c65565b6020604051808303816000875af115801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a09190613cba565b50505050565b6113b03382612276565b50565b6113bb611d16565b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615158173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2563c168fd69ef80f00260284837ea144310fa81558e4265a735e74e6c32706460405160405180910390a450565b611513611d16565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2953a6d9d6a3e093c80024a8968a6b6e34f2df0af3d9b4dc14fee15d6928196d60405160405180910390a350565b61dead81565b6115e1611d16565b806012819055503373ffffffffffffffffffffffffffffffffffffffff167f38d9c6f41f695bf19dcf7405f3cff5dfffc286f7afda91032819c5ba5628d06b8260405161162e919061351d565b60405180910390a250565b7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b600b5481565b60166020528060005260406000206000915090505481565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61171e611d16565b6117286000612446565b565b60115481565b611738611d16565b6001600660016101000a81548160ff021916908315150217905550565b600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546117b3906139e1565b80601f01602080910402602001604051908101604052809291908181526020018280546117df906139e1565b801561182c5780601f106118015761010080835404028352916020019161182c565b820191906000526020600020905b81548152906001019060200180831161180f57829003601f168201915b5050505050905090565b600c5481565b60156020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061188d611d94565b9050600061189b8286611b30565b9050838110156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790613d59565b60405180910390fd5b6118ed8286868403611d9c565b60019250505092915050565b600080611904611d94565b9050611911818585611ff3565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6013602052816000526040600020602052806000526040600020600091509150505481565b611961611d16565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7dad233cc3bb9085a2e1e6078898aae54d7ac430b2b6ba95170d4153204d025f60405160405180910390a350565b611a29611d16565b600081838587611a399190613b3b565b611a439190613b3b565b611a4d9190613b3b565b9050670de0b6b3a76400008114611a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9090613dc5565b60405180910390fd5b84600f8190555083600e8190555082601081905550816011819055503373ffffffffffffffffffffffffffffffffffffffff167f3515e0296862f1d7e4cfe53fd4fe55b24b40e644498a3c4590e10d4e0902d10e600f54600e54601054601154604051611b099493929190613de5565b60405180910390a25050505050565b73329426d2e3ebf145ec80144d98ec4346b4a593b481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bbf611d16565b80600d81905550803373ffffffffffffffffffffffffffffffffffffffff167f784b3429538db33e97d92bcbc511240c0eb8051a85923fd5d00e67a0ff14d72560405160405180910390a350565b60105481565b611c1b611d16565b81600a8190555080600b8190555080823373ffffffffffffffffffffffffffffffffffffffff167f7ad4ef4cd81b13de60e52aa49a4efc6a1bc6e8bb1849d7e7bce2d790b024f07360405160405180910390a45050565b611c7a611d16565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613e9c565b60405180910390fd5b611cf381612446565b50565b60146020528060005260406000206000915054906101000a900460ff1681565b611d1e611d94565b73ffffffffffffffffffffffffffffffffffffffff16611d3c61177b565b73ffffffffffffffffffffffffffffffffffffffff1614611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613f08565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390613f9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061402c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f5a919061351d565b60405180910390a3505050565b6000611f738484611b30565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611fed5781811015611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614098565b60405180910390fd5b611fec8484848403611d9c565b5b50505050565b600660009054906101000a900460ff1615801561205a5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561209e576001600660006101000a81548160ff02191690831515021790555061208261250a565b6000600660006101000a81548160ff0219169083151502179055505b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561214e57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661214957600a5490505b6121f9565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121f857601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121f757600b5490505b5b5b6000811180156122095750600082115b15612265576000670de0b6b3a7640000828461222591906140b8565b61222f9190614141565b905080600c60008282546122439190613b3b565b92505081905550612255853083612e27565b80836122619190614172565b9250505b612270848484612e27565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90614218565b60405180910390fd5b6122f2826000836130a2565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906142aa565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161242d919061351d565b60405180910390a361244183600084613259565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600d54600c541161251a57612e25565b600080670de0b6b3a7640000600e54600c5461253691906140b8565b6125409190614141565b90506000670de0b6b3a7640000601154600c5461255d91906140b8565b6125679190614141565b90506000670de0b6b3a7640000600f54600c5461258491906140b8565b61258e9190614141565b90506000670de0b6b3a7640000601054600c546125ab91906140b8565b6125b59190614141565b905060008385836125c69190613b3b565b6125d09190613b3b565b90506012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016126309190613743565b602060405180830381865afa15801561264d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126719190613c38565b612679610fad565b6126839190614172565b116126975782816126949190613b3b565b90505b60004790506126a58261325e565b6000601154600e546010546126ba9190613b3b565b6126c49190613b3b565b905060008160105484476126d89190614172565b6126e291906140b8565b6126ec9190614141565b9050600082600e5485476127009190614172565b61270a91906140b8565b6127149190614141565b905060008360115486476127289190614172565b61273291906140b8565b61273c9190614141565b9050600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683600067ffffffffffffffff81111561279357612792613a13565b5b6040519080825280601f01601f1916602001820160405280156127c55781602001600182028036833780820191505090505b506040516127d39190613a89565b60006040518083038185875af1925050503d8060008114612810576040519150601f19603f3d011682016040523d82523d6000602084013e612815565b606091505b5050809b50508a61285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285290613aec565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff8111156128b0576128af613a13565b5b6040519080825280601f01601f1916602001820160405280156128e25781602001600182028036833780820191505090505b506040516128f09190613a89565b60006040518083038185875af1925050503d806000811461292d576040519150601f19603f3d011682016040523d82523d6000602084013e612932565b606091505b5050809b50508a612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90613aec565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681600067ffffffffffffffff8111156129cd576129cc613a13565b5b6040519080825280601f01601f1916602001820160405280156129ff5781602001600182028036833780820191505090505b50604051612a0d9190613a89565b60006040518083038185875af1925050503d8060008114612a4a576040519150601f19603f3d011682016040523d82523d6000602084013e612a4f565b606091505b5050809b50508a612a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8c90613aec565b60405180910390fd5b6012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612af39190613743565b602060405180830381865afa158015612b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b349190613c38565b612b3c610fad565b612b469190614172565b1115612e1157601254883073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612bab9190613743565b602060405180830381865afa158015612bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bec9190613c38565b612bf4610fad565b612bfe9190614172565b612c089190614172565b1015612d6e573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612cab9190613743565b602060405180830381865afa158015612cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cec9190613c38565b612cf4610fad565b612cfe9190614172565b612d089190614172565b6040518363ffffffff1660e01b8152600401612d25929190613c65565b6020604051808303816000875af1158015612d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d689190613cba565b50612e10565b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6040518363ffffffff1660e01b8152600401612dcb929190613c65565b6020604051808303816000875af1158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e9190613cba565b505b5b6000600c8190555050505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8e9061433c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe906143ce565b60405180910390fd5b612f128383836130a2565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9090614460565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613089919061351d565b60405180910390a361309c848484613259565b50505050565b600660019054906101000a900460ff1661316d576130be61177b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061312957506130fa61177b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b613168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315f906144cc565b60405180910390fd5b613254565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132535780601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461324b9190613b3b565b925050819055505b5b505050565b505050565b6000600267ffffffffffffffff81111561327b5761327a613a13565b5b6040519080825280602002602001820160405280156132a95781602001602082028036833780820191505090505b50905030816000815181106132c1576132c06144ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338a9190614530565b8160018151811061339e5761339d6144ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081613403307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d611b30565b101561345557613454307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d9c565b5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166318cbafe58360008430426040518663ffffffff1660e01b81526004016134b7959493929190614656565b6000604051808303816000875af11580156134d6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906134ff91906147c9565b505050565b6000819050919050565b61351781613504565b82525050565b6000602082019050613532600083018461350e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613572578082015181840152602081019050613557565b83811115613581576000848401525b50505050565b6000601f19601f8301169050919050565b60006135a382613538565b6135ad8185613543565b93506135bd818560208601613554565b6135c681613587565b840191505092915050565b600060208201905081810360008301526135eb8184613598565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061363282613607565b9050919050565b61364281613627565b811461364d57600080fd5b50565b60008135905061365f81613639565b92915050565b60006020828403121561367b5761367a6135fd565b5b600061368984828501613650565b91505092915050565b61369b81613504565b81146136a657600080fd5b50565b6000813590506136b881613692565b92915050565b600080604083850312156136d5576136d46135fd565b5b60006136e385828601613650565b92505060206136f4858286016136a9565b9150509250929050565b60008115159050919050565b613713816136fe565b82525050565b600060208201905061372e600083018461370a565b92915050565b61373d81613627565b82525050565b60006020820190506137586000830184613734565b92915050565b6000819050919050565b600061378361377e61377984613607565b61375e565b613607565b9050919050565b600061379582613768565b9050919050565b60006137a78261378a565b9050919050565b6137b78161379c565b82525050565b60006020820190506137d260008301846137ae565b92915050565b6000806000606084860312156137f1576137f06135fd565b5b60006137ff86828701613650565b935050602061381086828701613650565b9250506040613821868287016136a9565b9150509250925092565b600060ff82169050919050565b6138418161382b565b82525050565b600060208201905061385c6000830184613838565b92915050565b60008060408385031215613879576138786135fd565b5b600061388785828601613650565b925050602061389885828601613650565b9150509250929050565b6000602082840312156138b8576138b76135fd565b5b60006138c6848285016136a9565b91505092915050565b60006138da8261378a565b9050919050565b6138ea816138cf565b82525050565b600060208201905061390560008301846138e1565b92915050565b60008060008060808587031215613925576139246135fd565b5b6000613933878288016136a9565b9450506020613944878288016136a9565b9350506040613955878288016136a9565b9250506060613966878288016136a9565b91505092959194509250565b60008060408385031215613989576139886135fd565b5b6000613997858286016136a9565b92505060206139a8858286016136a9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139f957607f821691505b60208210811415613a0d57613a0c6139b2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600081905092915050565b6000613a6382613a42565b613a6d8185613a4d565b9350613a7d818560208601613554565b80840191505092915050565b6000613a958284613a58565b915081905092915050565b7f657468207472616e73666572206661696c656400000000000000000000000000600082015250565b6000613ad6601383613543565b9150613ae182613aa0565b602082019050919050565b60006020820190508181036000830152613b0581613ac9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b4682613504565b9150613b5183613504565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b8657613b85613b0c565b5b828201905092915050565b7f746f6b656e20616464726573732063616e6e6f74206265207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613bed602483613543565b9150613bf882613b91565b604082019050919050565b60006020820190508181036000830152613c1c81613be0565b9050919050565b600081519050613c3281613692565b92915050565b600060208284031215613c4e57613c4d6135fd565b5b6000613c5c84828501613c23565b91505092915050565b6000604082019050613c7a6000830185613734565b613c87602083018461350e565b9392505050565b613c97816136fe565b8114613ca257600080fd5b50565b600081519050613cb481613c8e565b92915050565b600060208284031215613cd057613ccf6135fd565b5b6000613cde84828501613ca5565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d43602583613543565b9150613d4e82613ce7565b604082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f666f726269640000000000000000000000000000000000000000000000000000600082015250565b6000613daf600683613543565b9150613dba82613d79565b602082019050919050565b60006020820190508181036000830152613dde81613da2565b9050919050565b6000608082019050613dfa600083018761350e565b613e07602083018661350e565b613e14604083018561350e565b613e21606083018461350e565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e86602683613543565b9150613e9182613e2a565b604082019050919050565b60006020820190508181036000830152613eb581613e79565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ef2602083613543565b9150613efd82613ebc565b602082019050919050565b60006020820190508181036000830152613f2181613ee5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f84602483613543565b9150613f8f82613f28565b604082019050919050565b60006020820190508181036000830152613fb381613f77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614016602283613543565b915061402182613fba565b604082019050919050565b6000602082019050818103600083015261404581614009565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614082601d83613543565b915061408d8261404c565b602082019050919050565b600060208201905081810360008301526140b181614075565b9050919050565b60006140c382613504565b91506140ce83613504565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561410757614106613b0c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061414c82613504565b915061415783613504565b92508261416757614166614112565b5b828204905092915050565b600061417d82613504565b915061418883613504565b92508282101561419b5761419a613b0c565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614202602183613543565b915061420d826141a6565b604082019050919050565b60006020820190508181036000830152614231816141f5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614294602283613543565b915061429f82614238565b604082019050919050565b600060208201905081810360008301526142c381614287565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614326602583613543565b9150614331826142ca565b604082019050919050565b6000602082019050818103600083015261435581614319565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006143b8602383613543565b91506143c38261435c565b604082019050919050565b600060208201905081810360008301526143e7816143ab565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061444a602683613543565b9150614455826143ee565b604082019050919050565b600060208201905081810360008301526144798161443d565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b60006144b6601683613543565b91506144c182614480565b602082019050919050565b600060208201905081810360008301526144e5816144a9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061452a81613639565b92915050565b600060208284031215614546576145456135fd565b5b60006145548482850161451b565b91505092915050565b6000819050919050565b600061458261457d6145788461455d565b61375e565b613504565b9050919050565b61459281614567565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145cd81613627565b82525050565b60006145df83836145c4565b60208301905092915050565b6000602082019050919050565b600061460382614598565b61460d81856145a3565b9350614618836145b4565b8060005b8381101561464957815161463088826145d3565b975061463b836145eb565b92505060018101905061461c565b5085935050505092915050565b600060a08201905061466b600083018861350e565b6146786020830187614589565b818103604083015261468a81866145f8565b90506146996060830185613734565b6146a6608083018461350e565b9695505050505050565b600080fd5b6146be82613587565b810181811067ffffffffffffffff821117156146dd576146dc613a13565b5b80604052505050565b60006146f06135f3565b90506146fc82826146b5565b919050565b600067ffffffffffffffff82111561471c5761471b613a13565b5b602082029050602081019050919050565b600080fd5b600061474561474084614701565b6146e6565b905080838252602082019050602084028301858111156147685761476761472d565b5b835b81811015614791578061477d8882613c23565b84526020840193505060208101905061476a565b5050509392505050565b600082601f8301126147b0576147af6146b0565b5b81516147c0848260208601614732565b91505092915050565b6000602082840312156147df576147de6135fd565b5b600082015167ffffffffffffffff8111156147fd576147fc613602565b5b6148098482850161479b565b9150509291505056fea2646970667358221220e6489244f6b997783dac81f63d35841fd2a7d9f08baca86e727e1da784a91b1564736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000002a68bedbb190931f650000000
-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 210000000000000000000000000000
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000002a68bedbb190931f650000000
Deployed Bytecode Sourcemap
22474:9681:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23420:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5964:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26525:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8324:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22782:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23387:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27165:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22953:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7093:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9105:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26137:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23091:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23514;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26839:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23355:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6935:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22604:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9775:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25860:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32071:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26336:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27002:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22516:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27587:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23011:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23286:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23722:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23254:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23188:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7264:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23221:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1523:103;;;;;;;;;;;;;:::i;:::-;;23482:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25768:84;;;;;;;;;;;;;:::i;:::-;;23122:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;882:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6183:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23319:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23674:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23154:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10516:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7597:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22871:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23545:71;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26672:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27917:484;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22692:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7853:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27749:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23451:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27352:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1781:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23623:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23420:24;;;;:::o;5964:100::-;6018:13;6051:5;6044:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5964:100;:::o;26525:139::-;768:13;:11;:13::i;:::-;26602:7:::1;26589:10;;:20;;;;;;;;;;;;;;;;;;26645:10;;;;;;;;;;;26625:31;;26633:10;26625:31;;;;;;;;;;;;26525:139:::0;:::o;8324:201::-;8407:4;8424:13;8440:12;:10;:12::i;:::-;8424:28;;8463:32;8472:5;8479:7;8488:6;8463:8;:32::i;:::-;8513:4;8506:11;;;8324:201;;;;:::o;22782:82::-;22822:42;22782:82;:::o;23387:26::-;;;;:::o;27165:179::-;768:13;:11;:13::i;:::-;27252:8:::1;:17;27261:7;27252:17;;;;;;;;;;;;;;;;;;;;;;;;;27251:18;27231:8;:17;27240:7;27231:17;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;27318:8;:17;27327:7;27318:17;;;;;;;;;;;;;;;;;;;;;;;;;27285:51;;27309:7;27285:51;;27297:10;27285:51;;;;;;;;;;;;27165:179:::0;:::o;22953:51::-;;;:::o;7093:108::-;7154:7;7181:12;;7174:19;;7093:108;:::o;9105:261::-;9202:4;9219:15;9237:12;:10;:12::i;:::-;9219:30;;9260:38;9276:4;9282:7;9291:6;9260:15;:38::i;:::-;9309:27;9319:4;9325:2;9329:6;9309:9;:27::i;:::-;9354:4;9347:11;;;9105:261;;;;;:::o;26137:191::-;768:13;:11;:13::i;:::-;26201:12:::1;26219:2;:7;;26234:21;26267:1;26257:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26219:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26200:70;;;26289:7;26281:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;26189:139;26137:191:::0;:::o;23091:24::-;;;;;;;;;;;;;:::o;23514:::-;;;;:::o;26839:155::-;768:13;:11;:13::i;:::-;26924:7:::1;26910:11;;:21;;;;;;;;;;;;;;;;;;26974:11;;;;;;;;;;;26947:39;;26962:10;26947:39;;;;;;;;;;;;26839:155:::0;:::o;23355:25::-;;;;:::o;6935:93::-;6993:5;7018:2;7011:9;;6935:93;:::o;22604:81::-;22643:42;22604:81;:::o;9775:238::-;9863:4;9880:13;9896:12;:10;:12::i;:::-;9880:28;;9919:64;9928:5;9935:7;9972:10;9944:25;9954:5;9961:7;9944:9;:25::i;:::-;:38;;;;:::i;:::-;9919:8;:64::i;:::-;10001:4;9994:11;;;9775:238;;;;:::o;25860:269::-;768:13;:11;:13::i;:::-;25965:1:::1;25948:19;;:5;:19;;;;25940:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26019:15;26044:5;26037:23;;;26069:4;26037:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26019:56;;26093:5;26086:22;;;26109:2;26113:7;26086:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25929:200;25860:269:::0;;:::o;32071:81::-;32120:24;32126:10;32138:5;32120;:24::i;:::-;32071:81;:::o;26336:181::-;768:13;:11;:13::i;:::-;26423:11:::1;:20;26435:7;26423:20;;;;;;;;;;;;;;;;;;;;;;;;;26422:21;26399:11;:20;26411:7;26399:20;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;26488:11;:20;26500:7;26488:20;;;;;;;;;;;;;;;;;;;;;;;;;26459:50;;26479:7;26459:50;;26467:10;26459:50;;;;;;;;;;;;26336:181:::0;:::o;27002:155::-;768:13;:11;:13::i;:::-;27087:7:::1;27073:11;;:21;;;;;;;;;;;;;;;;;;27137:11;;;;;;;;;;;27110:39;;27125:10;27110:39;;;;;;;;;;;;27002:155:::0;:::o;22516:81::-;22555:42;22516:81;:::o;27587:154::-;768:13;:11;:13::i;:::-;27671:10:::1;27659:9;:22;;;;27710:10;27697:36;;;27722:10;27697:36;;;;;;:::i;:::-;;;;;;;;27587:154:::0;:::o;23011:51::-;;;:::o;23286:26::-;;;;:::o;23722:52::-;;;;;;;;;;;;;;;;;:::o;23254:25::-;;;;:::o;23188:26::-;;;;;;;;;;;;;:::o;7264:127::-;7338:7;7365:9;:18;7375:7;7365:18;;;;;;;;;;;;;;;;7358:25;;7264:127;;;:::o;23221:26::-;;;;;;;;;;;;;:::o;1523:103::-;768:13;:11;:13::i;:::-;1588:30:::1;1615:1;1588:18;:30::i;:::-;1523:103::o:0;23482:25::-;;;;:::o;25768:84::-;768:13;:11;:13::i;:::-;25840:4:::1;25825:12;;:19;;;;;;;;;;;;;;;;;;25768:84::o:0;23122:25::-;;;;;;;;;;;;;:::o;882:87::-;928:7;955:6;;;;;;;;;;;948:13;;882:87;:::o;6183:104::-;6239:13;6272:7;6265:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6183:104;:::o;23319:29::-;;;;:::o;23674:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;23154:27::-;;;;;;;;;;;;;:::o;10516:436::-;10609:4;10626:13;10642:12;:10;:12::i;:::-;10626:28;;10665:24;10692:25;10702:5;10709:7;10692:9;:25::i;:::-;10665:52;;10756:15;10736:16;:35;;10728:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10849:60;10858:5;10865:7;10893:15;10874:16;:34;10849:8;:60::i;:::-;10940:4;10933:11;;;;10516:436;;;;:::o;7597:193::-;7676:4;7693:13;7709:12;:10;:12::i;:::-;7693:28;;7732;7742:5;7749:2;7753:6;7732:9;:28::i;:::-;7778:4;7771:11;;;7597:193;;;;:::o;22871:73::-;22902:42;22871:73;:::o;23545:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26672:159::-;768:13;:11;:13::i;:::-;26759:7:::1;26744:12;;:22;;;;;;;;;;;;;;;;;;26810:12;;;;;;;;;;;26782:41;;26798:10;26782:41;;;;;;;;;;;;26672:159:::0;:::o;27917:484::-;768:13;:11;:13::i;:::-;28048:18:::1;28110:11;28097:10;28082:12;28069:10;:25;;;;:::i;:::-;:38;;;;:::i;:::-;:52;;;;:::i;:::-;28048:73;;28154:7;28140:10;:21;28132:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;28195:10;28183:9;:22;;;;28230:12;28216:11;:26;;;;28265:10;28253:9;:22;;;;28299:11;28286:10;:24;;;;28335:10;28326:67;;;28347:9;;28358:11;;28371:9;;28382:10;;28326:67;;;;;;;;;:::i;:::-;;;;;;;;28037:364;27917:484:::0;;;;:::o;22692:83::-;22733:42;22692:83;:::o;7853:151::-;7942:7;7969:11;:18;7981:5;7969:18;;;;;;;;;;;;;;;:27;7988:7;7969:27;;;;;;;;;;;;;;;;7962:34;;7853:151;;;;:::o;27749:160::-;768:13;:11;:13::i;:::-;27836:11:::1;27823:10;:24;;;;27889:11;27877:10;27863:38;;;;;;;;;;;;27749:160:::0;:::o;23451:24::-;;;;:::o;27352:227::-;768:13;:11;:13::i;:::-;27458:11:::1;27445:10;:24;;;;27494:12;27480:11;:26;;;;27558:12;27545:11;27533:10;27522:49;;;;;;;;;;;;27352:227:::0;;:::o;1781:201::-;768:13;:11;:13::i;:::-;1890:1:::1;1870:22;;:8;:22;;;;1862:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1946:28;1965:8;1946:18;:28::i;:::-;1781:201:::0;:::o;23623:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;1047:132::-;1122:12;:10;:12::i;:::-;1111:23;;:7;:5;:7::i;:::-;:23;;;1103:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1047:132::o;98:98::-;151:7;178:10;171:17;;98:98;:::o;14509:346::-;14628:1;14611:19;;:5;:19;;;;14603:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14709:1;14690:21;;:7;:21;;;;14682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14793:6;14763:11;:18;14775:5;14763:18;;;;;;;;;;;;;;;:27;14782:7;14763:27;;;;;;;;;;;;;;;:36;;;;14831:7;14815:32;;14824:5;14815:32;;;14840:6;14815:32;;;;;;:::i;:::-;;;;;;;;14509:346;;;:::o;15146:419::-;15247:24;15274:25;15284:5;15291:7;15274:9;:25::i;:::-;15247:52;;15334:17;15314:16;:37;15310:248;;15396:6;15376:16;:26;;15368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15480:51;15489:5;15496:7;15524:6;15505:16;:25;15480:8;:51::i;:::-;15310:248;15236:329;15146:419;;;:::o;28758:804::-;28853:8;;;;;;;;;;;28852:9;:31;;;;;28866:11;:17;28878:4;28866:17;;;;;;;;;;;;;;;;;;;;;;;;;28865:18;28852:31;28848:136;;;28911:4;28900:8;;:15;;;;;;;;;;;;;;;;;;28930:11;:9;:11::i;:::-;28967:5;28956:8;;:16;;;;;;;;;;;;;;;;;;28848:136;28996:15;29030:11;:17;29042:4;29030:17;;;;;;;;;;;;;;;;;;;;;;;;;29026:253;;;29069:8;:12;29078:2;29069:12;;;;;;;;;;;;;;;;;;;;;;;;;29064:74;;29112:10;;29102:20;;29064:74;29026:253;;;29159:11;:15;29171:2;29159:15;;;;;;;;;;;;;;;;;;;;;;;;;29155:124;;;29196:8;:14;29205:4;29196:14;;;;;;;;;;;;;;;;;;;;;;;;;29191:77;;29241:11;;29231:21;;29191:77;29155:124;29026:253;29305:1;29295:7;:11;:25;;;;;29319:1;29310:6;:10;29295:25;29291:218;;;29337:11;29370:7;29360;29351:6;:16;;;;:::i;:::-;:26;;;;:::i;:::-;29337:40;;29410:3;29392:14;;:21;;;;;;;:::i;:::-;;;;;;;;29428:41;29444:4;29458;29465:3;29428:15;:41::i;:::-;29494:3;29484:13;;;;;:::i;:::-;;;29322:187;29291:218;29521:33;29537:4;29543:2;29547:6;29521:15;:33::i;:::-;28837:725;28758:804;;;:::o;13396:675::-;13499:1;13480:21;;:7;:21;;;;13472:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13552:49;13573:7;13590:1;13594:6;13552:20;:49::i;:::-;13614:22;13639:9;:18;13649:7;13639:18;;;;;;;;;;;;;;;;13614:43;;13694:6;13676:14;:24;;13668:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13813:6;13796:14;:23;13775:9;:18;13785:7;13775:18;;;;;;;;;;;;;;;:44;;;;13930:6;13914:12;;:22;;;;;;;;;;;13991:1;13965:37;;13974:7;13965:37;;;13995:6;13965:37;;;;;;:::i;:::-;;;;;;;;14015:48;14035:7;14052:1;14056:6;14015:19;:48::i;:::-;13461:610;13396:675;;:::o;2142:191::-;2216:16;2235:6;;;;;;;;;;;2216:25;;2261:8;2252:6;;:17;;;;;;;;;;;;;;;;;;2316:8;2285:40;;2306:8;2285:40;;;;;;;;;;;;2205:128;2142:191;:::o;29570:2026::-;29633:10;;29615:14;;:28;29611:67;;29660:7;;29611:67;29690:12;29715:22;29771:7;29757:11;;29740:14;;:28;;;;:::i;:::-;:38;;;;:::i;:::-;29715:63;;29789:21;29843:7;29830:10;;29813:14;;:27;;;;:::i;:::-;:37;;;;:::i;:::-;29789:61;;29861:20;29913:7;29901:9;;29884:14;;:26;;;;:::i;:::-;:36;;;;:::i;:::-;29861:59;;29931:20;29983:7;29971:9;;29954:14;;:26;;;;:::i;:::-;:36;;;;:::i;:::-;29931:59;;30003:20;30058:13;30041:14;30026:12;:29;;;;:::i;:::-;:45;;;;:::i;:::-;30003:68;;30151:9;;30118:4;30103:31;;;30135:11;;;;;;;;;;;30103:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30087:13;:11;:13::i;:::-;:60;;;;:::i;:::-;:73;30084:132;;30192:12;30176:28;;;;;:::i;:::-;;;30084:132;30228:25;30256:21;30228:49;;30290:31;30308:12;30290:17;:31::i;:::-;30334:18;30381:10;;30367:11;;30355:9;;:23;;;;:::i;:::-;:36;;;;:::i;:::-;30334:57;;30404:22;30487:10;30475:9;;30454:17;30430:21;:41;;;;:::i;:::-;30429:55;;;;:::i;:::-;:68;;;;:::i;:::-;30404:93;;30509:24;30596:10;30582:11;;30561:17;30537:21;:41;;;;:::i;:::-;30536:57;;;;:::i;:::-;:70;;;;:::i;:::-;30509:97;;30617:23;30702:10;30689;;30668:17;30644:21;:41;;;;:::i;:::-;30643:56;;;;:::i;:::-;:69;;;;:::i;:::-;30617:95;;30739:10;;;;;;;;;;;:15;;30762:14;30788:1;30778:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30739:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30725:66;;;;;30810:7;30802:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;30868:12;;;;;;;;;;;:17;;30893:16;30921:1;30911:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30868:56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30854:70;;;;;30943:7;30935:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;31001:11;;;;;;;;;;;:16;;31025:15;31052:1;31042:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31001:54;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30987:68;;;;;31074:7;31066:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;31184:9;;31152:4;31137:31;;;31169:11;;;;;;;;;;;31137:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31121:13;:11;:13::i;:::-;:60;;;;:::i;:::-;:72;31118:442;;;31290:9;;31275:12;31243:4;31228:31;;;31260:11;;;;;;;;;;;31228:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31212:13;:11;:13::i;:::-;:60;;;;:::i;:::-;:75;;;;:::i;:::-;:87;31209:340;;;31334:4;31319:30;;;31350:11;;;;;;;;;;;31426:9;;31394:4;31379:31;;;31411:11;;;;;;;;;;;31379:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31363:13;:11;:13::i;:::-;:60;;;;:::i;:::-;:72;;;;:::i;:::-;31319:117;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31209:340;;;31491:4;31476:30;;;31507:11;;;;;;;;;;;31520:12;31476:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31209:340;31118:442;31587:1;31570:14;:18;;;;29600:1996;;;;;;;;;;;29570:2026;:::o;11422:806::-;11535:1;11519:18;;:4;:18;;;;11511:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11612:1;11598:16;;:2;:16;;;;11590:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11667:38;11688:4;11694:2;11698:6;11667:20;:38::i;:::-;11718:19;11740:9;:15;11750:4;11740:15;;;;;;;;;;;;;;;;11718:37;;11789:6;11774:11;:21;;11766:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11906:6;11892:11;:20;11874:9;:15;11884:4;11874:15;;;;;;;;;;;;;;;:38;;;;12109:6;12092:9;:13;12102:2;12092:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12159:2;12144:26;;12153:4;12144:26;;;12163:6;12144:26;;;;;;:::i;:::-;;;;;;;;12183:37;12203:4;12209:2;12213:6;12183:19;:37::i;:::-;11500:728;11422:806;;;:::o;28409:341::-;28517:12;;;;;;;;;;;28512:134;;28562:7;:5;:7::i;:::-;28554:15;;:4;:15;;;:32;;;;28579:7;:5;:7::i;:::-;28573:13;;:2;:13;;;28554:32;28546:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28628:7;;28512:134;28662:11;:17;28674:4;28662:17;;;;;;;;;;;;;;;;;;;;;;;;;28658:85;;;28725:6;28696:15;:19;28712:2;28696:19;;;;;;;;;;;;;;;:25;28716:4;28696:25;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;28658:85;28409:341;;;;:::o;16860:90::-;;;;:::o;31604:459::-;31667:21;31705:1;31691:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31667:40;;31736:4;31718;31723:1;31718:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31762:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31752:4;31757:1;31752:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31854:6;31801:50;31819:4;31834:15;31801:9;:50::i;:::-;:59;31797:160;;;31877:68;31894:4;31909:15;31927:17;31877:8;:68::i;:::-;31797:160;31969:15;:37;;;32007:6;32015:1;32018:4;32032;32039:15;31969:86;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31656:407;31604:459;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:329::-;2725:6;2774:2;2762:9;2753:7;2749:23;2745:32;2742:119;;;2780:79;;:::i;:::-;2742:119;2900:1;2925:53;2970:7;2961:6;2950:9;2946:22;2925:53;:::i;:::-;2915:63;;2871:117;2666:329;;;;:::o;3001:122::-;3074:24;3092:5;3074:24;:::i;:::-;3067:5;3064:35;3054:63;;3113:1;3110;3103:12;3054:63;3001:122;:::o;3129:139::-;3175:5;3213:6;3200:20;3191:29;;3229:33;3256:5;3229:33;:::i;:::-;3129:139;;;;:::o;3274:474::-;3342:6;3350;3399:2;3387:9;3378:7;3374:23;3370:32;3367:119;;;3405:79;;:::i;:::-;3367:119;3525:1;3550:53;3595:7;3586:6;3575:9;3571:22;3550:53;:::i;:::-;3540:63;;3496:117;3652:2;3678:53;3723:7;3714:6;3703:9;3699:22;3678:53;:::i;:::-;3668:63;;3623:118;3274:474;;;;;:::o;3754:90::-;3788:7;3831:5;3824:13;3817:21;3806:32;;3754:90;;;:::o;3850:109::-;3931:21;3946:5;3931:21;:::i;:::-;3926:3;3919:34;3850:109;;:::o;3965:210::-;4052:4;4090:2;4079:9;4075:18;4067:26;;4103:65;4165:1;4154:9;4150:17;4141:6;4103:65;:::i;:::-;3965:210;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:60::-;4561:3;4582:5;4575:12;;4533:60;;;:::o;4599:142::-;4649:9;4682:53;4700:34;4709:24;4727:5;4709:24;:::i;:::-;4700:34;:::i;:::-;4682:53;:::i;:::-;4669:66;;4599:142;;;:::o;4747:126::-;4797:9;4830:37;4861:5;4830:37;:::i;:::-;4817:50;;4747:126;;;:::o;4879:153::-;4956:9;4989:37;5020:5;4989:37;:::i;:::-;4976:50;;4879:153;;;:::o;5038:185::-;5152:64;5210:5;5152:64;:::i;:::-;5147:3;5140:77;5038:185;;:::o;5229:276::-;5349:4;5387:2;5376:9;5372:18;5364:26;;5400:98;5495:1;5484:9;5480:17;5471:6;5400:98;:::i;:::-;5229:276;;;;:::o;5511:619::-;5588:6;5596;5604;5653:2;5641:9;5632:7;5628:23;5624:32;5621:119;;;5659:79;;:::i;:::-;5621:119;5779:1;5804:53;5849:7;5840:6;5829:9;5825:22;5804:53;:::i;:::-;5794:63;;5750:117;5906:2;5932:53;5977:7;5968:6;5957:9;5953:22;5932:53;:::i;:::-;5922:63;;5877:118;6034:2;6060:53;6105:7;6096:6;6085:9;6081:22;6060:53;:::i;:::-;6050:63;;6005:118;5511:619;;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:474::-;6634:6;6642;6691:2;6679:9;6670:7;6666:23;6662:32;6659:119;;;6697:79;;:::i;:::-;6659:119;6817:1;6842:53;6887:7;6878:6;6867:9;6863:22;6842:53;:::i;:::-;6832:63;;6788:117;6944:2;6970:53;7015:7;7006:6;6995:9;6991:22;6970:53;:::i;:::-;6960:63;;6915:118;6566:474;;;;;:::o;7046:329::-;7105:6;7154:2;7142:9;7133:7;7129:23;7125:32;7122:119;;;7160:79;;:::i;:::-;7122:119;7280:1;7305:53;7350:7;7341:6;7330:9;7326:22;7305:53;:::i;:::-;7295:63;;7251:117;7046:329;;;;:::o;7381:152::-;7457:9;7490:37;7521:5;7490:37;:::i;:::-;7477:50;;7381:152;;;:::o;7539:183::-;7652:63;7709:5;7652:63;:::i;:::-;7647:3;7640:76;7539:183;;:::o;7728:274::-;7847:4;7885:2;7874:9;7870:18;7862:26;;7898:97;7992:1;7981:9;7977:17;7968:6;7898:97;:::i;:::-;7728:274;;;;:::o;8008:765::-;8094:6;8102;8110;8118;8167:3;8155:9;8146:7;8142:23;8138:33;8135:120;;;8174:79;;:::i;:::-;8135:120;8294:1;8319:53;8364:7;8355:6;8344:9;8340:22;8319:53;:::i;:::-;8309:63;;8265:117;8421:2;8447:53;8492:7;8483:6;8472:9;8468:22;8447:53;:::i;:::-;8437:63;;8392:118;8549:2;8575:53;8620:7;8611:6;8600:9;8596:22;8575:53;:::i;:::-;8565:63;;8520:118;8677:2;8703:53;8748:7;8739:6;8728:9;8724:22;8703:53;:::i;:::-;8693:63;;8648:118;8008:765;;;;;;;:::o;8779:474::-;8847:6;8855;8904:2;8892:9;8883:7;8879:23;8875:32;8872:119;;;8910:79;;:::i;:::-;8872:119;9030:1;9055:53;9100:7;9091:6;9080:9;9076:22;9055:53;:::i;:::-;9045:63;;9001:117;9157:2;9183:53;9228:7;9219:6;9208:9;9204:22;9183:53;:::i;:::-;9173:63;;9128:118;8779:474;;;;;:::o;9259:180::-;9307:77;9304:1;9297:88;9404:4;9401:1;9394:15;9428:4;9425:1;9418:15;9445:320;9489:6;9526:1;9520:4;9516:12;9506:22;;9573:1;9567:4;9563:12;9594:18;9584:81;;9650:4;9642:6;9638:17;9628:27;;9584:81;9712:2;9704:6;9701:14;9681:18;9678:38;9675:84;;;9731:18;;:::i;:::-;9675:84;9496:269;9445:320;;;:::o;9771:180::-;9819:77;9816:1;9809:88;9916:4;9913:1;9906:15;9940:4;9937:1;9930:15;9957:98;10008:6;10042:5;10036:12;10026:22;;9957:98;;;:::o;10061:147::-;10162:11;10199:3;10184:18;;10061:147;;;;:::o;10214:373::-;10318:3;10346:38;10378:5;10346:38;:::i;:::-;10400:88;10481:6;10476:3;10400:88;:::i;:::-;10393:95;;10497:52;10542:6;10537:3;10530:4;10523:5;10519:16;10497:52;:::i;:::-;10574:6;10569:3;10565:16;10558:23;;10322:265;10214:373;;;;:::o;10593:271::-;10723:3;10745:93;10834:3;10825:6;10745:93;:::i;:::-;10738:100;;10855:3;10848:10;;10593:271;;;;:::o;10870:169::-;11010:21;11006:1;10998:6;10994:14;10987:45;10870:169;:::o;11045:366::-;11187:3;11208:67;11272:2;11267:3;11208:67;:::i;:::-;11201:74;;11284:93;11373:3;11284:93;:::i;:::-;11402:2;11397:3;11393:12;11386:19;;11045:366;;;:::o;11417:419::-;11583:4;11621:2;11610:9;11606:18;11598:26;;11670:9;11664:4;11660:20;11656:1;11645:9;11641:17;11634:47;11698:131;11824:4;11698:131;:::i;:::-;11690:139;;11417:419;;;:::o;11842:180::-;11890:77;11887:1;11880:88;11987:4;11984:1;11977:15;12011:4;12008:1;12001:15;12028:305;12068:3;12087:20;12105:1;12087:20;:::i;:::-;12082:25;;12121:20;12139:1;12121:20;:::i;:::-;12116:25;;12275:1;12207:66;12203:74;12200:1;12197:81;12194:107;;;12281:18;;:::i;:::-;12194:107;12325:1;12322;12318:9;12311:16;;12028:305;;;;:::o;12339:223::-;12479:34;12475:1;12467:6;12463:14;12456:58;12548:6;12543:2;12535:6;12531:15;12524:31;12339:223;:::o;12568:366::-;12710:3;12731:67;12795:2;12790:3;12731:67;:::i;:::-;12724:74;;12807:93;12896:3;12807:93;:::i;:::-;12925:2;12920:3;12916:12;12909:19;;12568:366;;;:::o;12940:419::-;13106:4;13144:2;13133:9;13129:18;13121:26;;13193:9;13187:4;13183:20;13179:1;13168:9;13164:17;13157:47;13221:131;13347:4;13221:131;:::i;:::-;13213:139;;12940:419;;;:::o;13365:143::-;13422:5;13453:6;13447:13;13438:22;;13469:33;13496:5;13469:33;:::i;:::-;13365:143;;;;:::o;13514:351::-;13584:6;13633:2;13621:9;13612:7;13608:23;13604:32;13601:119;;;13639:79;;:::i;:::-;13601:119;13759:1;13784:64;13840:7;13831:6;13820:9;13816:22;13784:64;:::i;:::-;13774:74;;13730:128;13514:351;;;;:::o;13871:332::-;13992:4;14030:2;14019:9;14015:18;14007:26;;14043:71;14111:1;14100:9;14096:17;14087:6;14043:71;:::i;:::-;14124:72;14192:2;14181:9;14177:18;14168:6;14124:72;:::i;:::-;13871:332;;;;;:::o;14209:116::-;14279:21;14294:5;14279:21;:::i;:::-;14272:5;14269:32;14259:60;;14315:1;14312;14305:12;14259:60;14209:116;:::o;14331:137::-;14385:5;14416:6;14410:13;14401:22;;14432:30;14456:5;14432:30;:::i;:::-;14331:137;;;;:::o;14474:345::-;14541:6;14590:2;14578:9;14569:7;14565:23;14561:32;14558:119;;;14596:79;;:::i;:::-;14558:119;14716:1;14741:61;14794:7;14785:6;14774:9;14770:22;14741:61;:::i;:::-;14731:71;;14687:125;14474:345;;;;:::o;14825:224::-;14965:34;14961:1;14953:6;14949:14;14942:58;15034:7;15029:2;15021:6;15017:15;15010:32;14825:224;:::o;15055:366::-;15197:3;15218:67;15282:2;15277:3;15218:67;:::i;:::-;15211:74;;15294:93;15383:3;15294:93;:::i;:::-;15412:2;15407:3;15403:12;15396:19;;15055:366;;;:::o;15427:419::-;15593:4;15631:2;15620:9;15616:18;15608:26;;15680:9;15674:4;15670:20;15666:1;15655:9;15651:17;15644:47;15708:131;15834:4;15708:131;:::i;:::-;15700:139;;15427:419;;;:::o;15852:156::-;15992:8;15988:1;15980:6;15976:14;15969:32;15852:156;:::o;16014:365::-;16156:3;16177:66;16241:1;16236:3;16177:66;:::i;:::-;16170:73;;16252:93;16341:3;16252:93;:::i;:::-;16370:2;16365:3;16361:12;16354:19;;16014:365;;;:::o;16385:419::-;16551:4;16589:2;16578:9;16574:18;16566:26;;16638:9;16632:4;16628:20;16624:1;16613:9;16609:17;16602:47;16666:131;16792:4;16666:131;:::i;:::-;16658:139;;16385:419;;;:::o;16810:553::-;16987:4;17025:3;17014:9;17010:19;17002:27;;17039:71;17107:1;17096:9;17092:17;17083:6;17039:71;:::i;:::-;17120:72;17188:2;17177:9;17173:18;17164:6;17120:72;:::i;:::-;17202;17270:2;17259:9;17255:18;17246:6;17202:72;:::i;:::-;17284;17352:2;17341:9;17337:18;17328:6;17284:72;:::i;:::-;16810:553;;;;;;;:::o;17369:225::-;17509:34;17505:1;17497:6;17493:14;17486:58;17578:8;17573:2;17565:6;17561:15;17554:33;17369:225;:::o;17600:366::-;17742:3;17763:67;17827:2;17822:3;17763:67;:::i;:::-;17756:74;;17839:93;17928:3;17839:93;:::i;:::-;17957:2;17952:3;17948:12;17941:19;;17600:366;;;:::o;17972:419::-;18138:4;18176:2;18165:9;18161:18;18153:26;;18225:9;18219:4;18215:20;18211:1;18200:9;18196:17;18189:47;18253:131;18379:4;18253:131;:::i;:::-;18245:139;;17972:419;;;:::o;18397:182::-;18537:34;18533:1;18525:6;18521:14;18514:58;18397:182;:::o;18585:366::-;18727:3;18748:67;18812:2;18807:3;18748:67;:::i;:::-;18741:74;;18824:93;18913:3;18824:93;:::i;:::-;18942:2;18937:3;18933:12;18926:19;;18585:366;;;:::o;18957:419::-;19123:4;19161:2;19150:9;19146:18;19138:26;;19210:9;19204:4;19200:20;19196:1;19185:9;19181:17;19174:47;19238:131;19364:4;19238:131;:::i;:::-;19230:139;;18957:419;;;:::o;19382:223::-;19522:34;19518:1;19510:6;19506:14;19499:58;19591:6;19586:2;19578:6;19574:15;19567:31;19382:223;:::o;19611:366::-;19753:3;19774:67;19838:2;19833:3;19774:67;:::i;:::-;19767:74;;19850:93;19939:3;19850:93;:::i;:::-;19968:2;19963:3;19959:12;19952:19;;19611:366;;;:::o;19983:419::-;20149:4;20187:2;20176:9;20172:18;20164:26;;20236:9;20230:4;20226:20;20222:1;20211:9;20207:17;20200:47;20264:131;20390:4;20264:131;:::i;:::-;20256:139;;19983:419;;;:::o;20408:221::-;20548:34;20544:1;20536:6;20532:14;20525:58;20617:4;20612:2;20604:6;20600:15;20593:29;20408:221;:::o;20635:366::-;20777:3;20798:67;20862:2;20857:3;20798:67;:::i;:::-;20791:74;;20874:93;20963:3;20874:93;:::i;:::-;20992:2;20987:3;20983:12;20976:19;;20635:366;;;:::o;21007:419::-;21173:4;21211:2;21200:9;21196:18;21188:26;;21260:9;21254:4;21250:20;21246:1;21235:9;21231:17;21224:47;21288:131;21414:4;21288:131;:::i;:::-;21280:139;;21007:419;;;:::o;21432:179::-;21572:31;21568:1;21560:6;21556:14;21549:55;21432:179;:::o;21617:366::-;21759:3;21780:67;21844:2;21839:3;21780:67;:::i;:::-;21773:74;;21856:93;21945:3;21856:93;:::i;:::-;21974:2;21969:3;21965:12;21958:19;;21617:366;;;:::o;21989:419::-;22155:4;22193:2;22182:9;22178:18;22170:26;;22242:9;22236:4;22232:20;22228:1;22217:9;22213:17;22206:47;22270:131;22396:4;22270:131;:::i;:::-;22262:139;;21989:419;;;:::o;22414:348::-;22454:7;22477:20;22495:1;22477:20;:::i;:::-;22472:25;;22511:20;22529:1;22511:20;:::i;:::-;22506:25;;22699:1;22631:66;22627:74;22624:1;22621:81;22616:1;22609:9;22602:17;22598:105;22595:131;;;22706:18;;:::i;:::-;22595:131;22754:1;22751;22747:9;22736:20;;22414:348;;;;:::o;22768:180::-;22816:77;22813:1;22806:88;22913:4;22910:1;22903:15;22937:4;22934:1;22927:15;22954:185;22994:1;23011:20;23029:1;23011:20;:::i;:::-;23006:25;;23045:20;23063:1;23045:20;:::i;:::-;23040:25;;23084:1;23074:35;;23089:18;;:::i;:::-;23074:35;23131:1;23128;23124:9;23119:14;;22954:185;;;;:::o;23145:191::-;23185:4;23205:20;23223:1;23205:20;:::i;:::-;23200:25;;23239:20;23257:1;23239:20;:::i;:::-;23234:25;;23278:1;23275;23272:8;23269:34;;;23283:18;;:::i;:::-;23269:34;23328:1;23325;23321:9;23313:17;;23145:191;;;;:::o;23342:220::-;23482:34;23478:1;23470:6;23466:14;23459:58;23551:3;23546:2;23538:6;23534:15;23527:28;23342:220;:::o;23568:366::-;23710:3;23731:67;23795:2;23790:3;23731:67;:::i;:::-;23724:74;;23807:93;23896:3;23807:93;:::i;:::-;23925:2;23920:3;23916:12;23909:19;;23568:366;;;:::o;23940:419::-;24106:4;24144:2;24133:9;24129:18;24121:26;;24193:9;24187:4;24183:20;24179:1;24168:9;24164:17;24157:47;24221:131;24347:4;24221:131;:::i;:::-;24213:139;;23940:419;;;:::o;24365:221::-;24505:34;24501:1;24493:6;24489:14;24482:58;24574:4;24569:2;24561:6;24557:15;24550:29;24365:221;:::o;24592:366::-;24734:3;24755:67;24819:2;24814:3;24755:67;:::i;:::-;24748:74;;24831:93;24920:3;24831:93;:::i;:::-;24949:2;24944:3;24940:12;24933:19;;24592:366;;;:::o;24964:419::-;25130:4;25168:2;25157:9;25153:18;25145:26;;25217:9;25211:4;25207:20;25203:1;25192:9;25188:17;25181:47;25245:131;25371:4;25245:131;:::i;:::-;25237:139;;24964:419;;;:::o;25389:224::-;25529:34;25525:1;25517:6;25513:14;25506:58;25598:7;25593:2;25585:6;25581:15;25574:32;25389:224;:::o;25619:366::-;25761:3;25782:67;25846:2;25841:3;25782:67;:::i;:::-;25775:74;;25858:93;25947:3;25858:93;:::i;:::-;25976:2;25971:3;25967:12;25960:19;;25619:366;;;:::o;25991:419::-;26157:4;26195:2;26184:9;26180:18;26172:26;;26244:9;26238:4;26234:20;26230:1;26219:9;26215:17;26208:47;26272:131;26398:4;26272:131;:::i;:::-;26264:139;;25991:419;;;:::o;26416:222::-;26556:34;26552:1;26544:6;26540:14;26533:58;26625:5;26620:2;26612:6;26608:15;26601:30;26416:222;:::o;26644:366::-;26786:3;26807:67;26871:2;26866:3;26807:67;:::i;:::-;26800:74;;26883:93;26972:3;26883:93;:::i;:::-;27001:2;26996:3;26992:12;26985:19;;26644:366;;;:::o;27016:419::-;27182:4;27220:2;27209:9;27205:18;27197:26;;27269:9;27263:4;27259:20;27255:1;27244:9;27240:17;27233:47;27297:131;27423:4;27297:131;:::i;:::-;27289:139;;27016:419;;;:::o;27441:225::-;27581:34;27577:1;27569:6;27565:14;27558:58;27650:8;27645:2;27637:6;27633:15;27626:33;27441:225;:::o;27672:366::-;27814:3;27835:67;27899:2;27894:3;27835:67;:::i;:::-;27828:74;;27911:93;28000:3;27911:93;:::i;:::-;28029:2;28024:3;28020:12;28013:19;;27672:366;;;:::o;28044:419::-;28210:4;28248:2;28237:9;28233:18;28225:26;;28297:9;28291:4;28287:20;28283:1;28272:9;28268:17;28261:47;28325:131;28451:4;28325:131;:::i;:::-;28317:139;;28044:419;;;:::o;28469:172::-;28609:24;28605:1;28597:6;28593:14;28586:48;28469:172;:::o;28647:366::-;28789:3;28810:67;28874:2;28869:3;28810:67;:::i;:::-;28803:74;;28886:93;28975:3;28886:93;:::i;:::-;29004:2;28999:3;28995:12;28988:19;;28647:366;;;:::o;29019:419::-;29185:4;29223:2;29212:9;29208:18;29200:26;;29272:9;29266:4;29262:20;29258:1;29247:9;29243:17;29236:47;29300:131;29426:4;29300:131;:::i;:::-;29292:139;;29019:419;;;:::o;29444:180::-;29492:77;29489:1;29482:88;29589:4;29586:1;29579:15;29613:4;29610:1;29603:15;29630:143;29687:5;29718:6;29712:13;29703:22;;29734:33;29761:5;29734:33;:::i;:::-;29630:143;;;;:::o;29779:351::-;29849:6;29898:2;29886:9;29877:7;29873:23;29869:32;29866:119;;;29904:79;;:::i;:::-;29866:119;30024:1;30049:64;30105:7;30096:6;30085:9;30081:22;30049:64;:::i;:::-;30039:74;;29995:128;29779:351;;;;:::o;30136:85::-;30181:7;30210:5;30199:16;;30136:85;;;:::o;30227:158::-;30285:9;30318:61;30336:42;30345:32;30371:5;30345:32;:::i;:::-;30336:42;:::i;:::-;30318:61;:::i;:::-;30305:74;;30227:158;;;:::o;30391:147::-;30486:45;30525:5;30486:45;:::i;:::-;30481:3;30474:58;30391:147;;:::o;30544:114::-;30611:6;30645:5;30639:12;30629:22;;30544:114;;;:::o;30664:184::-;30763:11;30797:6;30792:3;30785:19;30837:4;30832:3;30828:14;30813:29;;30664:184;;;;:::o;30854:132::-;30921:4;30944:3;30936:11;;30974:4;30969:3;30965:14;30957:22;;30854:132;;;:::o;30992:108::-;31069:24;31087:5;31069:24;:::i;:::-;31064:3;31057:37;30992:108;;:::o;31106:179::-;31175:10;31196:46;31238:3;31230:6;31196:46;:::i;:::-;31274:4;31269:3;31265:14;31251:28;;31106:179;;;;:::o;31291:113::-;31361:4;31393;31388:3;31384:14;31376:22;;31291:113;;;:::o;31440:732::-;31559:3;31588:54;31636:5;31588:54;:::i;:::-;31658:86;31737:6;31732:3;31658:86;:::i;:::-;31651:93;;31768:56;31818:5;31768:56;:::i;:::-;31847:7;31878:1;31863:284;31888:6;31885:1;31882:13;31863:284;;;31964:6;31958:13;31991:63;32050:3;32035:13;31991:63;:::i;:::-;31984:70;;32077:60;32130:6;32077:60;:::i;:::-;32067:70;;31923:224;31910:1;31907;31903:9;31898:14;;31863:284;;;31867:14;32163:3;32156:10;;31564:608;;;31440:732;;;;:::o;32178:831::-;32441:4;32479:3;32468:9;32464:19;32456:27;;32493:71;32561:1;32550:9;32546:17;32537:6;32493:71;:::i;:::-;32574:80;32650:2;32639:9;32635:18;32626:6;32574:80;:::i;:::-;32701:9;32695:4;32691:20;32686:2;32675:9;32671:18;32664:48;32729:108;32832:4;32823:6;32729:108;:::i;:::-;32721:116;;32847:72;32915:2;32904:9;32900:18;32891:6;32847:72;:::i;:::-;32929:73;32997:3;32986:9;32982:19;32973:6;32929:73;:::i;:::-;32178:831;;;;;;;;:::o;33015:117::-;33124:1;33121;33114:12;33138:281;33221:27;33243:4;33221:27;:::i;:::-;33213:6;33209:40;33351:6;33339:10;33336:22;33315:18;33303:10;33300:34;33297:62;33294:88;;;33362:18;;:::i;:::-;33294:88;33402:10;33398:2;33391:22;33181:238;33138:281;;:::o;33425:129::-;33459:6;33486:20;;:::i;:::-;33476:30;;33515:33;33543:4;33535:6;33515:33;:::i;:::-;33425:129;;;:::o;33560:311::-;33637:4;33727:18;33719:6;33716:30;33713:56;;;33749:18;;:::i;:::-;33713:56;33799:4;33791:6;33787:17;33779:25;;33859:4;33853;33849:15;33841:23;;33560:311;;;:::o;33877:117::-;33986:1;33983;33976:12;34017:732;34124:5;34149:81;34165:64;34222:6;34165:64;:::i;:::-;34149:81;:::i;:::-;34140:90;;34250:5;34279:6;34272:5;34265:21;34313:4;34306:5;34302:16;34295:23;;34366:4;34358:6;34354:17;34346:6;34342:30;34395:3;34387:6;34384:15;34381:122;;;34414:79;;:::i;:::-;34381:122;34529:6;34512:231;34546:6;34541:3;34538:15;34512:231;;;34621:3;34650:48;34694:3;34682:10;34650:48;:::i;:::-;34645:3;34638:61;34728:4;34723:3;34719:14;34712:21;;34588:155;34572:4;34567:3;34563:14;34556:21;;34512:231;;;34516:21;34130:619;;34017:732;;;;;:::o;34772:385::-;34854:5;34903:3;34896:4;34888:6;34884:17;34880:27;34870:122;;34911:79;;:::i;:::-;34870:122;35021:6;35015:13;35046:105;35147:3;35139:6;35132:4;35124:6;35120:17;35046:105;:::i;:::-;35037:114;;34860:297;34772:385;;;;:::o;35163:554::-;35258:6;35307:2;35295:9;35286:7;35282:23;35278:32;35275:119;;;35313:79;;:::i;:::-;35275:119;35454:1;35443:9;35439:17;35433:24;35484:18;35476:6;35473:30;35470:117;;;35506:79;;:::i;:::-;35470:117;35611:89;35692:7;35683:6;35672:9;35668:22;35611:89;:::i;:::-;35601:99;;35404:306;35163:554;;;;:::o
Swarm Source
ipfs://e6489244f6b997783dac81f63d35841fd2a7d9f08baca86e727e1da784a91b15
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,177.39 | 0.000000000000000041 | <$0.000001 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.