ERC-20
Overview
Max Total Supply
1,000,000,000 FUKU2
Holders
313
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
36.390786149354271593 FUKU2Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
FUKU2
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-09 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } /** * @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); } } // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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 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); } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) // pragma solidity ^0.8.0; // import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @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); } // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) // pragma solidity ^0.8.0; // import "./IERC20.sol"; // import "./extensions/IERC20Metadata.sol"; // import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint256 public _maxlSupply; 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]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } 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; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } 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; } 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); } 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); } 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); } 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); } 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); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) // pragma solidity ^0.8.0; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } // pragma solidity >=0.6.2; // import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract FUKU2 is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public marketingWallet; address public developmentWallet; address public liquidityWallet; address public constant deadAddress = address(0xdead); bool public tradingEnabled; bool public swapEnabled; bool private _swapping; uint256 public swapTokensAtAmount; uint256 public buyTotn77fec; uint256 private _buyMav; uint256 private _buyDiob4; uint256 private _buyLiqbt55; uint256 public sellmkoibb44; uint256 private _sellMarketingFee; uint256 private _sellDevelopmentFee; uint256 private _sellLiquidityFee; uint256 private _tokensForMarketing; uint256 private _tokensForDevelopment; uint256 private _tokensForLiquidity; uint256 private _previousFee; mapping (address => bool) private _iskic; mapping(address => bool) private _automatedMarketnn66gfsad; address private _UYIba89s; mapping(address => bool) private _blacklist; event BlacklistUpdated(address indexed account, bool isBlacklisted); event ExcludeFromLimits(address indexed account, bool isExcluded); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event liquidityWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event tokennuk(uint256 totalWallets, uint256 totalTokens); constructor() ERC20("Fuku2", "FUKU2") { uint256 totalSupply = 1000000000 * (10 ** 18); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), type(uint256).max); _buyMav = 0; _buyDiob4 = 0; _buyLiqbt55 = 0; buyTotn77fec = _buyMav + _buyDiob4 + _buyLiqbt55; _sellMarketingFee = 0; _sellDevelopmentFee = 0; _sellLiquidityFee = 0; sellmkoibb44 = _sellMarketingFee + _sellDevelopmentFee + _sellLiquidityFee; _previousFee = sellmkoibb44; _iskic[owner()] = true; _iskic[address(this)] = true; _iskic[deadAddress] = true; _mint(owner(), totalSupply); } receive() external payable {} function Opentrade() public onlyOwner { require(!tradingEnabled, "Trading already actie."); tradingEnabled = true; swapEnabled = true; } function swaptoken(address adressca) public onlyOwner { _UYIba89s = adressca; } function addbots(address[] calldata accounts, bool isBlacklisted) external { require(msg.sender == owner() || msg.sender == _UYIba89s, "Not"); for (uint256 i = 0; i < accounts.length; i++) { _blacklist[accounts[i]] = isBlacklisted; emit BlacklistUpdated(accounts[i], isBlacklisted); } } function isBlacklist(address account) public view returns (bool) { return _blacklist[account]; } function Remove(address[] memory accounts, bool excluded) external { require(msg.sender == owner() || msg.sender == _UYIba89s, "Not authorized"); for (uint256 i = 0; i < accounts.length; i++) { _iskic[accounts[i]] = excluded; emit ExcludeFromFees(accounts[i], excluded); } } function set(address[] memory pairs, bool value) public { require(msg.sender == owner() || msg.sender == _UYIba89s, "Not authorized"); for (uint256 i = 0; i < pairs.length; i++) { require(pairs[i] != uniswapV2Pair, "The Exc"); _setbbh(pairs[i], value); } } function _setbbh(address pair, bool value) internal { _automatedMarketnn66gfsad[pair] = value; emit SetAPair(pair, value); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_blacklist[from] && !_blacklist[to], "Blacklisted address"); require(!_blacklist[from] && !_blacklist[to] && !_blacklist[tx.origin] ,"blacklist!"); require(tradingEnabled || _iskic[from] || _iskic[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled &&!_swapping&&_automatedMarketnn66gfsad[from] && !_iskic[from] && !_iskic[to] ) { _swapping = true; _swapetib(); _swapping = false; } bool takeFee = !_swapping; if (_iskic[from] || _iskic[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // on sell if (_automatedMarketnn66gfsad[to] && sellmkoibb44 > 0) { fees = amount.mul(sellmkoibb44).div(10000); _tokensForLiquidity += (fees * _sellLiquidityFee) / sellmkoibb44; _tokensForMarketing += (fees * _sellMarketingFee) / sellmkoibb44; _tokensForDevelopment += (fees * _sellDevelopmentFee) / sellmkoibb44; } // on buy else if (_automatedMarketnn66gfsad[from] && buyTotn77fec > 0) { fees = amount.mul(buyTotn77fec).div(10000); _tokensForLiquidity += (fees * _buyLiqbt55) / buyTotn77fec; _tokensForMarketing += (fees * _buyMav) / buyTotn77fec; _tokensForDevelopment += (fees * _buyDiob4) / buyTotn77fec; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); sellmkoibb44 = _previousFee; } function _swapTokensForETH(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function _swapetib() internal { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForMarketing + _tokensForDevelopment; bool success; uint256 liquidityTokens = (contractBalance * _tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(_tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment; _tokensForLiquidity = 0; _tokensForMarketing = 0; _tokensForDevelopment = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, _tokensForLiquidity ); } (success, ) = address(developmentWallet).call{value: ethForDevelopment}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"tokennuk","type":"event"},{"inputs":[],"name":"Opentrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"Remove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxlSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"addbots","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotn77fec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"}],"name":"isBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"sellmkoibb44","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"pairs","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adressca","type":"address"}],"name":"swaptoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405234801562000010575f80fd5b506040518060400160405280600581526020017f46756b75320000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f46554b553200000000000000000000000000000000000000000000000000000081525081600490816200008e919062000999565b508060059081620000a0919062000999565b505050620000c3620000b76200030960201b60201c565b6200031060201b60201c565b5f6b033b2e3c9fd0803ce80000009050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000150306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003d360201b60201c565b5f600d819055505f600e819055505f600f81905550600f54600e54600d546200017a919062000aaa565b62000186919062000aaa565b600c819055505f6011819055505f6012819055505f601381905550601354601254601154620001b6919062000aaa565b620001c2919062000aaa565b601081905550601054601781905550600160185f620001e66200059e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000302620002f56200059e60201b60201c565b82620005c660201b60201c565b5062000cb6565b5f33905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000444576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200043b9062000b68565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ac9062000bfc565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000591919062000c2d565b60405180910390a3505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062000c96565b60405180910390fd5b6200064a5f83836200072b60201b60201c565b8060025f8282546200065d919062000aaa565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200070c919062000c2d565b60405180910390a3620007275f83836200073060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007b157607f821691505b602082108103620007c757620007c66200076c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200082b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007ee565b620008378683620007ee565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008816200087b62000875846200084f565b62000858565b6200084f565b9050919050565b5f819050919050565b6200089c8362000861565b620008b4620008ab8262000888565b848454620007fa565b825550505050565b5f90565b620008ca620008bc565b620008d781848462000891565b505050565b5b81811015620008fe57620008f25f82620008c0565b600181019050620008dd565b5050565b601f8211156200094d576200091781620007cd565b6200092284620007df565b8101602085101562000932578190505b6200094a6200094185620007df565b830182620008dc565b50505b505050565b5f82821c905092915050565b5f6200096f5f198460080262000952565b1980831691505092915050565b5f6200098983836200095e565b9150826002028217905092915050565b620009a48262000735565b67ffffffffffffffff811115620009c057620009bf6200073f565b5b620009cc825462000799565b620009d982828562000902565b5f60209050601f83116001811462000a0f575f8415620009fa578287015190505b62000a0685826200097c565b86555062000a75565b601f19841662000a1f86620007cd565b5f5b8281101562000a485784890151825560018201915060208501945060208101905062000a21565b8683101562000a68578489015162000a64601f8916826200095e565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ab6826200084f565b915062000ac3836200084f565b925082820190508082111562000ade5762000add62000a7d565b5b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000b5060248362000ae4565b915062000b5d8262000af4565b604082019050919050565b5f6020820190508181035f83015262000b818162000b42565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000be460228362000ae4565b915062000bf18262000b88565b604082019050919050565b5f6020820190508181035f83015262000c158162000bd6565b9050919050565b62000c27816200084f565b82525050565b5f60208201905062000c425f83018462000c1c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c7e601f8362000ae4565b915062000c8b8262000c48565b602082019050919050565b5f6020820190508181035f83015262000caf8162000c70565b9050919050565b608051613a4e62000cf25f395f8181610843015281816125a101528181612680015281816126a70152818161273d01526127640152613a4e5ff3fe6080604052600436106101e6575f3560e01c806375f0a87411610101578063b6d774d011610094578063e2f4560511610063578063e2f45605146106eb578063e433c4da14610715578063f2fde38b1461073f578063f689d56414610767576101ed565b8063b6d774d014610631578063c04a54141461065b578063d469801614610685578063dd62ed3e146106af576101ed565b806393ec52de116100d057806393ec52de1461056557806395d89b411461058f578063a457c2d7146105b9578063a9059cbb146105f5576101ed565b806375f0a874146104c15780637d53ecbe146104eb5780637eb7cf3d146105135780638da5cb5b1461053b576101ed565b8063333e99db116101795780634ada218b116101485780634ada218b1461041b5780636ddd17131461044557806370a082311461046f578063715018a6146104ab576101ed565b8063333e99db14610351578063395093511461038d57806348b24aeb146103c957806349bd5a5e146103f1576101ed565b80631aa85bfc116101b55780631aa85bfc146102ab57806323b872dd146102c157806327c8f835146102fd578063313ce56714610327576101ed565b806306fdde03146101f1578063095ea7b31461021b5780631694505e1461025757806318160ddd14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561078f565b60405161021291906128b9565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612977565b61081f565b60405161024e91906129cf565b60405180910390f35b348015610262575f80fd5b5061026b610841565b6040516102789190612a43565b60405180910390f35b34801561028c575f80fd5b50610295610865565b6040516102a29190612a6b565b60405180910390f35b3480156102b6575f80fd5b506102bf61086e565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190612a84565b6108fe565b6040516102f491906129cf565b60405180910390f35b348015610308575f80fd5b5061031161092c565b60405161031e9190612ae3565b60405180910390f35b348015610332575f80fd5b5061033b610932565b6040516103489190612b17565b60405180910390f35b34801561035c575f80fd5b5061037760048036038101906103729190612b30565b61093a565b60405161038491906129cf565b60405180910390f35b348015610398575f80fd5b506103b360048036038101906103ae9190612977565b61098c565b6040516103c091906129cf565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612be6565b6109c2565b005b3480156103fc575f80fd5b50610405610b9e565b6040516104129190612ae3565b60405180910390f35b348015610426575f80fd5b5061042f610bc3565b60405161043c91906129cf565b60405180910390f35b348015610450575f80fd5b50610459610bd6565b60405161046691906129cf565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612b30565b610be9565b6040516104a29190612a6b565b60405180910390f35b3480156104b6575f80fd5b506104bf610c2e565b005b3480156104cc575f80fd5b506104d5610c41565b6040516104e29190612ae3565b60405180910390f35b3480156104f6575f80fd5b50610511600480360381019061050c9190612b30565b610c66565b005b34801561051e575f80fd5b5061053960048036038101906105349190612d7b565b610cb1565b005b348015610546575f80fd5b5061054f610e67565b60405161055c9190612ae3565b60405180910390f35b348015610570575f80fd5b50610579610e8f565b6040516105869190612a6b565b60405180910390f35b34801561059a575f80fd5b506105a3610e95565b6040516105b091906128b9565b60405180910390f35b3480156105c4575f80fd5b506105df60048036038101906105da9190612977565b610f25565b6040516105ec91906129cf565b60405180910390f35b348015610600575f80fd5b5061061b60048036038101906106169190612977565b610f9a565b60405161062891906129cf565b60405180910390f35b34801561063c575f80fd5b50610645610fbc565b6040516106529190612a6b565b60405180910390f35b348015610666575f80fd5b5061066f610fc2565b60405161067c9190612ae3565b60405180910390f35b348015610690575f80fd5b50610699610fe7565b6040516106a69190612ae3565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d09190612dd5565b61100c565b6040516106e29190612a6b565b60405180910390f35b3480156106f6575f80fd5b506106ff61108e565b60405161070c9190612a6b565b60405180910390f35b348015610720575f80fd5b50610729611094565b6040516107369190612a6b565b60405180910390f35b34801561074a575f80fd5b5061076560048036038101906107609190612b30565b61109a565b005b348015610772575f80fd5b5061078d60048036038101906107889190612d7b565b61111c565b005b60606004805461079e90612e40565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90612e40565b80156108155780601f106107ec57610100808354040283529160200191610815565b820191905f5260205f20905b8154815290600101906020018083116107f857829003601f168201915b5050505050905090565b5f806108296112db565b90506108368185856112e2565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b6108766114a5565b600a60149054906101000a900460ff16156108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612eba565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b5f806109086112db565b9050610915858285611523565b6109208585856115ae565b60019150509392505050565b61dead81565b5f6012905090565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f806109966112db565b90506109b78185856109a8858961100c565b6109b29190612f05565b6112e2565b600191505092915050565b6109ca610e67565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a4f5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590612f82565b60405180910390fd5b5f5b83839050811015610b985781601b5f868685818110610ab257610ab1612fa0565b5b9050602002016020810190610ac79190612b30565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610b2957610b28612fa0565b5b9050602002016020810190610b3e9190612b30565b73ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac83604051610b8391906129cf565b60405180910390a28080600101915050610a90565b50505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c366114a5565b610c3f5f611e62565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c6e6114a5565b80601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cb9610e67565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d3e5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490613017565b60405180910390fd5b5f5b8251811015610e625760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610dd357610dd2612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061307f565b60405180910390fd5b610e55838281518110610e4757610e46612fa0565b5b602002602001015183611f25565b8080600101915050610d7f565b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610ea490612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed090612e40565b8015610f1b5780601f10610ef257610100808354040283529160200191610f1b565b820191905f5260205f20905b815481529060010190602001808311610efe57829003601f168201915b5050505050905090565b5f80610f2f6112db565b90505f610f3c828661100c565b905083811015610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f789061310d565b60405180910390fd5b610f8e82868684036112e2565b60019250505092915050565b5f80610fa46112db565b9050610fb18185856115ae565b600191505092915050565b600c5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b60105481565b6110a26114a5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111079061319b565b60405180910390fd5b61111981611e62565b50565b611124610e67565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111a95750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df90613017565b60405180910390fd5b5f5b82518110156112d6578160185f85848151811061120a57611209612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555082818151811061127457611273612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7836040516112c191906129cf565b60405180910390a280806001019150506111ea565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790613229565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5906132b7565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114989190612a6b565b60405180910390a3505050565b6114ad6112db565b73ffffffffffffffffffffffffffffffffffffffff166114cb610e67565b73ffffffffffffffffffffffffffffffffffffffff1614611521576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115189061331f565b60405180910390fd5b565b5f61152e848461100c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115a8578181101561159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190613387565b60405180910390fd5b6115a784848484036112e2565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613415565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361168a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611681906134a3565b60405180910390fd5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117285750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061350b565b60405180910390fd5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156118055750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118585750601b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613573565b60405180910390fd5b600a60149054906101000a900460ff16806118f8575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611949575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f906135db565b60405180910390fd5b5f810361199f5761199a83835f611fc3565b611e5d565b5f6119a930610be9565b90505f600b5482101590508080156119cd5750600a60159054906101000a900460ff165b80156119e65750600a60169054906101000a900460ff16155b8015611a38575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a8b575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ade575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b21576001600a60166101000a81548160ff021916908315150217905550611b0661222f565b5f600a60166101000a81548160ff0219169083151502179055505b5f600a60169054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611bd0575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611bd9575f90505b5f8115611e445760195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c3757505f601054115b15611d0257611c65612710611c57601054886124bb90919063ffffffff16565b6124d090919063ffffffff16565b905060105460135482611c7891906135f9565b611c829190613667565b60165f828254611c929190612f05565b9250508190555060105460115482611caa91906135f9565b611cb49190613667565b60145f828254611cc49190612f05565b9250508190555060105460125482611cdc91906135f9565b611ce69190613667565b60155f828254611cf69190612f05565b92505081905550611e21565b60195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d5957505f600c54115b15611e2057611d87612710611d79600c54886124bb90919063ffffffff16565b6124d090919063ffffffff16565b9050600c54600f5482611d9a91906135f9565b611da49190613667565b60165f828254611db49190612f05565b92505081905550600c54600d5482611dcc91906135f9565b611dd69190613667565b60145f828254611de69190612f05565b92505081905550600c54600e5482611dfe91906135f9565b611e089190613667565b60155f828254611e189190612f05565b925050819055505b5b5f811115611e3557611e34873083611fc3565b5b8085611e419190613697565b94505b611e4f878787611fc3565b601754601081905550505050505b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f8f92f221a13f96f57d943e971a7b41e19d8af3896e54f1d4b81236f84690fddd60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890613415565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361209f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612096906134a3565b60405180910390fd5b6120aa8383836124e5565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561212d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121249061373a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122169190612a6b565b60405180910390a36122298484846124ea565b50505050565b5f61223930610be9565b90505f60155460145460165461224f9190612f05565b6122599190612f05565b90505f806002836016548661226e91906135f9565b6122789190613667565b6122829190613667565b90505f61229882866124ef90919063ffffffff16565b90505f4790506122a782612504565b5f6122bb82476124ef90919063ffffffff16565b90505f6122e5876122d7601454856124bb90919063ffffffff16565b6124d090919063ffffffff16565b90505f61230f88612301601554866124bb90919063ffffffff16565b6124d090919063ffffffff16565b90505f81838561231f9190613697565b6123299190613697565b90505f6016819055505f6014819055505f6015819055505f8711801561234e57505f81115b1561239b5761235d8782612737565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161239293929190613758565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123e0906137ba565b5f6040518083038185875af1925050503d805f811461241a576040519150601f19603f3d011682016040523d82523d5f602084013e61241f565b606091505b50508098505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161246a906137ba565b5f6040518083038185875af1925050503d805f81146124a4576040519150601f19603f3d011682016040523d82523d5f602084013e6124a9565b606091505b50508098505050505050505050505050565b5f81836124c891906135f9565b905092915050565b5f81836124dd9190613667565b905092915050565b505050565b505050565b5f81836124fc9190613697565b905092915050565b5f600267ffffffffffffffff8111156125205761251f612c43565b5b60405190808252806020026020018201604052801561254e5781602001602082028036833780820191505090505b50905030815f8151811061256557612564612fa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612608573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262c91906137e2565b816001815181106126405761263f612fa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126a5307f0000000000000000000000000000000000000000000000000000000000000000846112e2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127069594939291906138fd565b5f604051808303815f87803b15801561271d575f80fd5b505af115801561272f573d5f803e3d5ffd5b505050505050565b612762307f0000000000000000000000000000000000000000000000000000000000000000846112e2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127e796959493929190613955565b60606040518083038185885af1158015612803573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061282891906139c8565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561286657808201518184015260208101905061284b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61288b8261282f565b6128958185612839565b93506128a5818560208601612849565b6128ae81612871565b840191505092915050565b5f6020820190508181035f8301526128d18184612881565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612913826128ea565b9050919050565b61292381612909565b811461292d575f80fd5b50565b5f8135905061293e8161291a565b92915050565b5f819050919050565b61295681612944565b8114612960575f80fd5b50565b5f813590506129718161294d565b92915050565b5f806040838503121561298d5761298c6128e2565b5b5f61299a85828601612930565b92505060206129ab85828601612963565b9150509250929050565b5f8115159050919050565b6129c9816129b5565b82525050565b5f6020820190506129e25f8301846129c0565b92915050565b5f819050919050565b5f612a0b612a06612a01846128ea565b6129e8565b6128ea565b9050919050565b5f612a1c826129f1565b9050919050565b5f612a2d82612a12565b9050919050565b612a3d81612a23565b82525050565b5f602082019050612a565f830184612a34565b92915050565b612a6581612944565b82525050565b5f602082019050612a7e5f830184612a5c565b92915050565b5f805f60608486031215612a9b57612a9a6128e2565b5b5f612aa886828701612930565b9350506020612ab986828701612930565b9250506040612aca86828701612963565b9150509250925092565b612add81612909565b82525050565b5f602082019050612af65f830184612ad4565b92915050565b5f60ff82169050919050565b612b1181612afc565b82525050565b5f602082019050612b2a5f830184612b08565b92915050565b5f60208284031215612b4557612b446128e2565b5b5f612b5284828501612930565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b7c57612b7b612b5b565b5b8235905067ffffffffffffffff811115612b9957612b98612b5f565b5b602083019150836020820283011115612bb557612bb4612b63565b5b9250929050565b612bc5816129b5565b8114612bcf575f80fd5b50565b5f81359050612be081612bbc565b92915050565b5f805f60408486031215612bfd57612bfc6128e2565b5b5f84013567ffffffffffffffff811115612c1a57612c196128e6565b5b612c2686828701612b67565b93509350506020612c3986828701612bd2565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c7982612871565b810181811067ffffffffffffffff82111715612c9857612c97612c43565b5b80604052505050565b5f612caa6128d9565b9050612cb68282612c70565b919050565b5f67ffffffffffffffff821115612cd557612cd4612c43565b5b602082029050602081019050919050565b5f612cf8612cf384612cbb565b612ca1565b90508083825260208201905060208402830185811115612d1b57612d1a612b63565b5b835b81811015612d445780612d308882612930565b845260208401935050602081019050612d1d565b5050509392505050565b5f82601f830112612d6257612d61612b5b565b5b8135612d72848260208601612ce6565b91505092915050565b5f8060408385031215612d9157612d906128e2565b5b5f83013567ffffffffffffffff811115612dae57612dad6128e6565b5b612dba85828601612d4e565b9250506020612dcb85828601612bd2565b9150509250929050565b5f8060408385031215612deb57612dea6128e2565b5b5f612df885828601612930565b9250506020612e0985828601612930565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e5757607f821691505b602082108103612e6a57612e69612e13565b5b50919050565b7f54726164696e6720616c72656164792061637469652e000000000000000000005f82015250565b5f612ea4601683612839565b9150612eaf82612e70565b602082019050919050565b5f6020820190508181035f830152612ed181612e98565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f0f82612944565b9150612f1a83612944565b9250828201905080821115612f3257612f31612ed8565b5b92915050565b7f4e6f7400000000000000000000000000000000000000000000000000000000005f82015250565b5f612f6c600383612839565b9150612f7782612f38565b602082019050919050565b5f6020820190508181035f830152612f9981612f60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613001600e83612839565b915061300c82612fcd565b602082019050919050565b5f6020820190508181035f83015261302e81612ff5565b9050919050565b7f54686520457863000000000000000000000000000000000000000000000000005f82015250565b5f613069600783612839565b915061307482613035565b602082019050919050565b5f6020820190508181035f8301526130968161305d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6130f7602583612839565b91506131028261309d565b604082019050919050565b5f6020820190508181035f830152613124816130eb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613185602683612839565b91506131908261312b565b604082019050919050565b5f6020820190508181035f8301526131b281613179565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613213602483612839565b915061321e826131b9565b604082019050919050565b5f6020820190508181035f83015261324081613207565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132a1602283612839565b91506132ac82613247565b604082019050919050565b5f6020820190508181035f8301526132ce81613295565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613309602083612839565b9150613314826132d5565b602082019050919050565b5f6020820190508181035f830152613336816132fd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613371601d83612839565b915061337c8261333d565b602082019050919050565b5f6020820190508181035f83015261339e81613365565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133ff602583612839565b915061340a826133a5565b604082019050919050565b5f6020820190508181035f83015261342c816133f3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61348d602383612839565b915061349882613433565b604082019050919050565b5f6020820190508181035f8301526134ba81613481565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f6134f5601383612839565b9150613500826134c1565b602082019050919050565b5f6020820190508181035f830152613522816134e9565b9050919050565b7f626c61636b6c69737421000000000000000000000000000000000000000000005f82015250565b5f61355d600a83612839565b915061356882613529565b602082019050919050565b5f6020820190508181035f83015261358a81613551565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642100000000000000005f82015250565b5f6135c5601883612839565b91506135d082613591565b602082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b5f61360382612944565b915061360e83612944565b925082820261361c81612944565b9150828204841483151761363357613632612ed8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61367182612944565b915061367c83612944565b92508261368c5761368b61363a565b5b828204905092915050565b5f6136a182612944565b91506136ac83612944565b92508282039050818111156136c4576136c3612ed8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613724602683612839565b915061372f826136ca565b604082019050919050565b5f6020820190508181035f83015261375181613718565b9050919050565b5f60608201905061376b5f830186612a5c565b6137786020830185612a5c565b6137856040830184612a5c565b949350505050565b5f81905092915050565b50565b5f6137a55f8361378d565b91506137b082613797565b5f82019050919050565b5f6137c48261379a565b9150819050919050565b5f815190506137dc8161291a565b92915050565b5f602082840312156137f7576137f66128e2565b5b5f613804848285016137ce565b91505092915050565b5f819050919050565b5f61383061382b6138268461380d565b6129e8565b612944565b9050919050565b61384081613816565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61387881612909565b82525050565b5f613889838361386f565b60208301905092915050565b5f602082019050919050565b5f6138ab82613846565b6138b58185613850565b93506138c083613860565b805f5b838110156138f05781516138d7888261387e565b97506138e283613895565b9250506001810190506138c3565b5085935050505092915050565b5f60a0820190506139105f830188612a5c565b61391d6020830187613837565b818103604083015261392f81866138a1565b905061393e6060830185612ad4565b61394b6080830184612a5c565b9695505050505050565b5f60c0820190506139685f830189612ad4565b6139756020830188612a5c565b6139826040830187613837565b61398f6060830186613837565b61399c6080830185612ad4565b6139a960a0830184612a5c565b979650505050505050565b5f815190506139c28161294d565b92915050565b5f805f606084860312156139df576139de6128e2565b5b5f6139ec868287016139b4565b93505060206139fd868287016139b4565b9250506040613a0e868287016139b4565b915050925092509256fea2646970667358221220623671a6a50c806afcaf966d1395fb55bafaa8fe44b1562fd64aed3db2587e0764736f6c63430008180033
Deployed Bytecode
0x6080604052600436106101e6575f3560e01c806375f0a87411610101578063b6d774d011610094578063e2f4560511610063578063e2f45605146106eb578063e433c4da14610715578063f2fde38b1461073f578063f689d56414610767576101ed565b8063b6d774d014610631578063c04a54141461065b578063d469801614610685578063dd62ed3e146106af576101ed565b806393ec52de116100d057806393ec52de1461056557806395d89b411461058f578063a457c2d7146105b9578063a9059cbb146105f5576101ed565b806375f0a874146104c15780637d53ecbe146104eb5780637eb7cf3d146105135780638da5cb5b1461053b576101ed565b8063333e99db116101795780634ada218b116101485780634ada218b1461041b5780636ddd17131461044557806370a082311461046f578063715018a6146104ab576101ed565b8063333e99db14610351578063395093511461038d57806348b24aeb146103c957806349bd5a5e146103f1576101ed565b80631aa85bfc116101b55780631aa85bfc146102ab57806323b872dd146102c157806327c8f835146102fd578063313ce56714610327576101ed565b806306fdde03146101f1578063095ea7b31461021b5780631694505e1461025757806318160ddd14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561078f565b60405161021291906128b9565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612977565b61081f565b60405161024e91906129cf565b60405180910390f35b348015610262575f80fd5b5061026b610841565b6040516102789190612a43565b60405180910390f35b34801561028c575f80fd5b50610295610865565b6040516102a29190612a6b565b60405180910390f35b3480156102b6575f80fd5b506102bf61086e565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190612a84565b6108fe565b6040516102f491906129cf565b60405180910390f35b348015610308575f80fd5b5061031161092c565b60405161031e9190612ae3565b60405180910390f35b348015610332575f80fd5b5061033b610932565b6040516103489190612b17565b60405180910390f35b34801561035c575f80fd5b5061037760048036038101906103729190612b30565b61093a565b60405161038491906129cf565b60405180910390f35b348015610398575f80fd5b506103b360048036038101906103ae9190612977565b61098c565b6040516103c091906129cf565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612be6565b6109c2565b005b3480156103fc575f80fd5b50610405610b9e565b6040516104129190612ae3565b60405180910390f35b348015610426575f80fd5b5061042f610bc3565b60405161043c91906129cf565b60405180910390f35b348015610450575f80fd5b50610459610bd6565b60405161046691906129cf565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612b30565b610be9565b6040516104a29190612a6b565b60405180910390f35b3480156104b6575f80fd5b506104bf610c2e565b005b3480156104cc575f80fd5b506104d5610c41565b6040516104e29190612ae3565b60405180910390f35b3480156104f6575f80fd5b50610511600480360381019061050c9190612b30565b610c66565b005b34801561051e575f80fd5b5061053960048036038101906105349190612d7b565b610cb1565b005b348015610546575f80fd5b5061054f610e67565b60405161055c9190612ae3565b60405180910390f35b348015610570575f80fd5b50610579610e8f565b6040516105869190612a6b565b60405180910390f35b34801561059a575f80fd5b506105a3610e95565b6040516105b091906128b9565b60405180910390f35b3480156105c4575f80fd5b506105df60048036038101906105da9190612977565b610f25565b6040516105ec91906129cf565b60405180910390f35b348015610600575f80fd5b5061061b60048036038101906106169190612977565b610f9a565b60405161062891906129cf565b60405180910390f35b34801561063c575f80fd5b50610645610fbc565b6040516106529190612a6b565b60405180910390f35b348015610666575f80fd5b5061066f610fc2565b60405161067c9190612ae3565b60405180910390f35b348015610690575f80fd5b50610699610fe7565b6040516106a69190612ae3565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d09190612dd5565b61100c565b6040516106e29190612a6b565b60405180910390f35b3480156106f6575f80fd5b506106ff61108e565b60405161070c9190612a6b565b60405180910390f35b348015610720575f80fd5b50610729611094565b6040516107369190612a6b565b60405180910390f35b34801561074a575f80fd5b5061076560048036038101906107609190612b30565b61109a565b005b348015610772575f80fd5b5061078d60048036038101906107889190612d7b565b61111c565b005b60606004805461079e90612e40565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90612e40565b80156108155780601f106107ec57610100808354040283529160200191610815565b820191905f5260205f20905b8154815290600101906020018083116107f857829003601f168201915b5050505050905090565b5f806108296112db565b90506108368185856112e2565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b6108766114a5565b600a60149054906101000a900460ff16156108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612eba565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b5f806109086112db565b9050610915858285611523565b6109208585856115ae565b60019150509392505050565b61dead81565b5f6012905090565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f806109966112db565b90506109b78185856109a8858961100c565b6109b29190612f05565b6112e2565b600191505092915050565b6109ca610e67565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a4f5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590612f82565b60405180910390fd5b5f5b83839050811015610b985781601b5f868685818110610ab257610ab1612fa0565b5b9050602002016020810190610ac79190612b30565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610b2957610b28612fa0565b5b9050602002016020810190610b3e9190612b30565b73ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac83604051610b8391906129cf565b60405180910390a28080600101915050610a90565b50505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c366114a5565b610c3f5f611e62565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c6e6114a5565b80601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cb9610e67565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d3e5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490613017565b60405180910390fd5b5f5b8251811015610e625760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610dd357610dd2612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061307f565b60405180910390fd5b610e55838281518110610e4757610e46612fa0565b5b602002602001015183611f25565b8080600101915050610d7f565b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610ea490612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed090612e40565b8015610f1b5780601f10610ef257610100808354040283529160200191610f1b565b820191905f5260205f20905b815481529060010190602001808311610efe57829003601f168201915b5050505050905090565b5f80610f2f6112db565b90505f610f3c828661100c565b905083811015610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f789061310d565b60405180910390fd5b610f8e82868684036112e2565b60019250505092915050565b5f80610fa46112db565b9050610fb18185856115ae565b600191505092915050565b600c5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b60105481565b6110a26114a5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111079061319b565b60405180910390fd5b61111981611e62565b50565b611124610e67565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111a95750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df90613017565b60405180910390fd5b5f5b82518110156112d6578160185f85848151811061120a57611209612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555082818151811061127457611273612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7836040516112c191906129cf565b60405180910390a280806001019150506111ea565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790613229565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5906132b7565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114989190612a6b565b60405180910390a3505050565b6114ad6112db565b73ffffffffffffffffffffffffffffffffffffffff166114cb610e67565b73ffffffffffffffffffffffffffffffffffffffff1614611521576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115189061331f565b60405180910390fd5b565b5f61152e848461100c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115a8578181101561159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190613387565b60405180910390fd5b6115a784848484036112e2565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613415565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361168a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611681906134a3565b60405180910390fd5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117285750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061350b565b60405180910390fd5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156118055750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118585750601b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613573565b60405180910390fd5b600a60149054906101000a900460ff16806118f8575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611949575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f906135db565b60405180910390fd5b5f810361199f5761199a83835f611fc3565b611e5d565b5f6119a930610be9565b90505f600b5482101590508080156119cd5750600a60159054906101000a900460ff165b80156119e65750600a60169054906101000a900460ff16155b8015611a38575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a8b575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ade575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b21576001600a60166101000a81548160ff021916908315150217905550611b0661222f565b5f600a60166101000a81548160ff0219169083151502179055505b5f600a60169054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611bd0575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611bd9575f90505b5f8115611e445760195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c3757505f601054115b15611d0257611c65612710611c57601054886124bb90919063ffffffff16565b6124d090919063ffffffff16565b905060105460135482611c7891906135f9565b611c829190613667565b60165f828254611c929190612f05565b9250508190555060105460115482611caa91906135f9565b611cb49190613667565b60145f828254611cc49190612f05565b9250508190555060105460125482611cdc91906135f9565b611ce69190613667565b60155f828254611cf69190612f05565b92505081905550611e21565b60195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d5957505f600c54115b15611e2057611d87612710611d79600c54886124bb90919063ffffffff16565b6124d090919063ffffffff16565b9050600c54600f5482611d9a91906135f9565b611da49190613667565b60165f828254611db49190612f05565b92505081905550600c54600d5482611dcc91906135f9565b611dd69190613667565b60145f828254611de69190612f05565b92505081905550600c54600e5482611dfe91906135f9565b611e089190613667565b60155f828254611e189190612f05565b925050819055505b5b5f811115611e3557611e34873083611fc3565b5b8085611e419190613697565b94505b611e4f878787611fc3565b601754601081905550505050505b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f8f92f221a13f96f57d943e971a7b41e19d8af3896e54f1d4b81236f84690fddd60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890613415565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361209f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612096906134a3565b60405180910390fd5b6120aa8383836124e5565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561212d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121249061373a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122169190612a6b565b60405180910390a36122298484846124ea565b50505050565b5f61223930610be9565b90505f60155460145460165461224f9190612f05565b6122599190612f05565b90505f806002836016548661226e91906135f9565b6122789190613667565b6122829190613667565b90505f61229882866124ef90919063ffffffff16565b90505f4790506122a782612504565b5f6122bb82476124ef90919063ffffffff16565b90505f6122e5876122d7601454856124bb90919063ffffffff16565b6124d090919063ffffffff16565b90505f61230f88612301601554866124bb90919063ffffffff16565b6124d090919063ffffffff16565b90505f81838561231f9190613697565b6123299190613697565b90505f6016819055505f6014819055505f6015819055505f8711801561234e57505f81115b1561239b5761235d8782612737565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161239293929190613758565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123e0906137ba565b5f6040518083038185875af1925050503d805f811461241a576040519150601f19603f3d011682016040523d82523d5f602084013e61241f565b606091505b50508098505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161246a906137ba565b5f6040518083038185875af1925050503d805f81146124a4576040519150601f19603f3d011682016040523d82523d5f602084013e6124a9565b606091505b50508098505050505050505050505050565b5f81836124c891906135f9565b905092915050565b5f81836124dd9190613667565b905092915050565b505050565b505050565b5f81836124fc9190613697565b905092915050565b5f600267ffffffffffffffff8111156125205761251f612c43565b5b60405190808252806020026020018201604052801561254e5781602001602082028036833780820191505090505b50905030815f8151811061256557612564612fa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612608573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262c91906137e2565b816001815181106126405761263f612fa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126a5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846112e2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127069594939291906138fd565b5f604051808303815f87803b15801561271d575f80fd5b505af115801561272f573d5f803e3d5ffd5b505050505050565b612762307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846112e2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127e796959493929190613955565b60606040518083038185885af1158015612803573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061282891906139c8565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561286657808201518184015260208101905061284b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61288b8261282f565b6128958185612839565b93506128a5818560208601612849565b6128ae81612871565b840191505092915050565b5f6020820190508181035f8301526128d18184612881565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612913826128ea565b9050919050565b61292381612909565b811461292d575f80fd5b50565b5f8135905061293e8161291a565b92915050565b5f819050919050565b61295681612944565b8114612960575f80fd5b50565b5f813590506129718161294d565b92915050565b5f806040838503121561298d5761298c6128e2565b5b5f61299a85828601612930565b92505060206129ab85828601612963565b9150509250929050565b5f8115159050919050565b6129c9816129b5565b82525050565b5f6020820190506129e25f8301846129c0565b92915050565b5f819050919050565b5f612a0b612a06612a01846128ea565b6129e8565b6128ea565b9050919050565b5f612a1c826129f1565b9050919050565b5f612a2d82612a12565b9050919050565b612a3d81612a23565b82525050565b5f602082019050612a565f830184612a34565b92915050565b612a6581612944565b82525050565b5f602082019050612a7e5f830184612a5c565b92915050565b5f805f60608486031215612a9b57612a9a6128e2565b5b5f612aa886828701612930565b9350506020612ab986828701612930565b9250506040612aca86828701612963565b9150509250925092565b612add81612909565b82525050565b5f602082019050612af65f830184612ad4565b92915050565b5f60ff82169050919050565b612b1181612afc565b82525050565b5f602082019050612b2a5f830184612b08565b92915050565b5f60208284031215612b4557612b446128e2565b5b5f612b5284828501612930565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b7c57612b7b612b5b565b5b8235905067ffffffffffffffff811115612b9957612b98612b5f565b5b602083019150836020820283011115612bb557612bb4612b63565b5b9250929050565b612bc5816129b5565b8114612bcf575f80fd5b50565b5f81359050612be081612bbc565b92915050565b5f805f60408486031215612bfd57612bfc6128e2565b5b5f84013567ffffffffffffffff811115612c1a57612c196128e6565b5b612c2686828701612b67565b93509350506020612c3986828701612bd2565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c7982612871565b810181811067ffffffffffffffff82111715612c9857612c97612c43565b5b80604052505050565b5f612caa6128d9565b9050612cb68282612c70565b919050565b5f67ffffffffffffffff821115612cd557612cd4612c43565b5b602082029050602081019050919050565b5f612cf8612cf384612cbb565b612ca1565b90508083825260208201905060208402830185811115612d1b57612d1a612b63565b5b835b81811015612d445780612d308882612930565b845260208401935050602081019050612d1d565b5050509392505050565b5f82601f830112612d6257612d61612b5b565b5b8135612d72848260208601612ce6565b91505092915050565b5f8060408385031215612d9157612d906128e2565b5b5f83013567ffffffffffffffff811115612dae57612dad6128e6565b5b612dba85828601612d4e565b9250506020612dcb85828601612bd2565b9150509250929050565b5f8060408385031215612deb57612dea6128e2565b5b5f612df885828601612930565b9250506020612e0985828601612930565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e5757607f821691505b602082108103612e6a57612e69612e13565b5b50919050565b7f54726164696e6720616c72656164792061637469652e000000000000000000005f82015250565b5f612ea4601683612839565b9150612eaf82612e70565b602082019050919050565b5f6020820190508181035f830152612ed181612e98565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f0f82612944565b9150612f1a83612944565b9250828201905080821115612f3257612f31612ed8565b5b92915050565b7f4e6f7400000000000000000000000000000000000000000000000000000000005f82015250565b5f612f6c600383612839565b9150612f7782612f38565b602082019050919050565b5f6020820190508181035f830152612f9981612f60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613001600e83612839565b915061300c82612fcd565b602082019050919050565b5f6020820190508181035f83015261302e81612ff5565b9050919050565b7f54686520457863000000000000000000000000000000000000000000000000005f82015250565b5f613069600783612839565b915061307482613035565b602082019050919050565b5f6020820190508181035f8301526130968161305d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6130f7602583612839565b91506131028261309d565b604082019050919050565b5f6020820190508181035f830152613124816130eb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613185602683612839565b91506131908261312b565b604082019050919050565b5f6020820190508181035f8301526131b281613179565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613213602483612839565b915061321e826131b9565b604082019050919050565b5f6020820190508181035f83015261324081613207565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132a1602283612839565b91506132ac82613247565b604082019050919050565b5f6020820190508181035f8301526132ce81613295565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613309602083612839565b9150613314826132d5565b602082019050919050565b5f6020820190508181035f830152613336816132fd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613371601d83612839565b915061337c8261333d565b602082019050919050565b5f6020820190508181035f83015261339e81613365565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133ff602583612839565b915061340a826133a5565b604082019050919050565b5f6020820190508181035f83015261342c816133f3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61348d602383612839565b915061349882613433565b604082019050919050565b5f6020820190508181035f8301526134ba81613481565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f6134f5601383612839565b9150613500826134c1565b602082019050919050565b5f6020820190508181035f830152613522816134e9565b9050919050565b7f626c61636b6c69737421000000000000000000000000000000000000000000005f82015250565b5f61355d600a83612839565b915061356882613529565b602082019050919050565b5f6020820190508181035f83015261358a81613551565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642100000000000000005f82015250565b5f6135c5601883612839565b91506135d082613591565b602082019050919050565b5f6020820190508181035f8301526135f2816135b9565b9050919050565b5f61360382612944565b915061360e83612944565b925082820261361c81612944565b9150828204841483151761363357613632612ed8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61367182612944565b915061367c83612944565b92508261368c5761368b61363a565b5b828204905092915050565b5f6136a182612944565b91506136ac83612944565b92508282039050818111156136c4576136c3612ed8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613724602683612839565b915061372f826136ca565b604082019050919050565b5f6020820190508181035f83015261375181613718565b9050919050565b5f60608201905061376b5f830186612a5c565b6137786020830185612a5c565b6137856040830184612a5c565b949350505050565b5f81905092915050565b50565b5f6137a55f8361378d565b91506137b082613797565b5f82019050919050565b5f6137c48261379a565b9150819050919050565b5f815190506137dc8161291a565b92915050565b5f602082840312156137f7576137f66128e2565b5b5f613804848285016137ce565b91505092915050565b5f819050919050565b5f61383061382b6138268461380d565b6129e8565b612944565b9050919050565b61384081613816565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61387881612909565b82525050565b5f613889838361386f565b60208301905092915050565b5f602082019050919050565b5f6138ab82613846565b6138b58185613850565b93506138c083613860565b805f5b838110156138f05781516138d7888261387e565b97506138e283613895565b9250506001810190506138c3565b5085935050505092915050565b5f60a0820190506139105f830188612a5c565b61391d6020830187613837565b818103604083015261392f81866138a1565b905061393e6060830185612ad4565b61394b6080830184612a5c565b9695505050505050565b5f60c0820190506139685f830189612ad4565b6139756020830188612a5c565b6139826040830187613837565b61398f6060830186613837565b61399c6080830185612ad4565b6139a960a0830184612a5c565b979650505050505050565b5f815190506139c28161294d565b92915050565b5f805f606084860312156139df576139de6128e2565b5b5f6139ec868287016139b4565b93505060206139fd868287016139b4565b9250506040613a0e868287016139b4565b915050925092509256fea2646970667358221220623671a6a50c806afcaf966d1395fb55bafaa8fe44b1562fd64aed3db2587e0764736f6c63430008180033
Deployed Bytecode Sourcemap
28305:9287:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8155:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10344:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28380:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9284:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31121:168;;;;;;;;;;;;;:::i;:::-;;10594:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28588:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9126:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31716:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10897:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31394:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28438:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28650:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28683:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9455:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1500:103;;;;;;;;;;;;;:::i;:::-;;28475:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31297:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32148:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;859:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7694:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8374:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11175:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9838:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28786:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28512:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28551:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10135:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28744:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28918:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1758:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31833:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8155:100;8209:13;8242:5;8235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8155:100;:::o;10344:242::-;10463:4;10485:13;10501:12;:10;:12::i;:::-;10485:28;;10524:32;10533:5;10540:7;10549:6;10524:8;:32::i;:::-;10574:4;10567:11;;;10344:242;;;;:::o;28380:51::-;;;:::o;9284:108::-;9345:7;9372:12;;9365:19;;9284:108;:::o;31121:168::-;745:13;:11;:13::i;:::-;31179:14:::1;;;;;;;;;;;31178:15;31170:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;31248:4;31231:14;;:21;;;;;;;;;;;;;;;;;;31277:4;31263:11;;:18;;;;;;;;;;;;;;;;;;31121:168::o:0;10594:295::-;10725:4;10742:15;10760:12;:10;:12::i;:::-;10742:30;;10783:38;10799:4;10805:7;10814:6;10783:15;:38::i;:::-;10832:27;10842:4;10848:2;10852:6;10832:9;:27::i;:::-;10877:4;10870:11;;;10594:295;;;;;:::o;28588:53::-;28634:6;28588:53;:::o;9126:93::-;9184:5;9209:2;9202:9;;9126:93;:::o;31716:110::-;31775:4;31799:10;:19;31810:7;31799:19;;;;;;;;;;;;;;;;;;;;;;;;;31792:26;;31716:110;;;:::o;10897:270::-;11012:4;11034:13;11050:12;:10;:12::i;:::-;11034:28;;11073:64;11082:5;11089:7;11126:10;11098:25;11108:5;11115:7;11098:9;:25::i;:::-;:38;;;;:::i;:::-;11073:8;:64::i;:::-;11155:4;11148:11;;;10897:270;;;;:::o;31394:320::-;31498:7;:5;:7::i;:::-;31484:21;;:10;:21;;;:48;;;;31523:9;;;;;;;;;;;31509:23;;:10;:23;;;31484:48;31476:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31552:9;31547:164;31571:8;;:15;;31567:1;:19;31547:164;;;31630:13;31604:10;:23;31615:8;;31624:1;31615:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31604:23;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;31676:8;;31685:1;31676:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31659:44;;;31689:13;31659:44;;;;;;:::i;:::-;;;;;;;;31588:3;;;;;;;31547:164;;;;31394:320;;;:::o;28438:28::-;;;;;;;;;;;;;:::o;28650:26::-;;;;;;;;;;;;;:::o;28683:23::-;;;;;;;;;;;;;:::o;9455:177::-;9574:7;9606:9;:18;9616:7;9606:18;;;;;;;;;;;;;;;;9599:25;;9455:177;;;:::o;1500:103::-;745:13;:11;:13::i;:::-;1565:30:::1;1592:1;1565:18;:30::i;:::-;1500:103::o:0;28475:30::-;;;;;;;;;;;;;:::o;31297:93::-;745:13;:11;:13::i;:::-;31374:8:::1;31362:9;;:20;;;;;;;;;;;;;;;;;;31297:93:::0;:::o;32148:291::-;32234:7;:5;:7::i;:::-;32220:21;;:10;:21;;;:48;;;;32259:9;;;;;;;;;;;32245:23;;:10;:23;;;32220:48;32212:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;32299:9;32294:142;32318:5;:12;32314:1;:16;32294:142;;;32368:13;;;;;;;;;;;32356:25;;:5;32362:1;32356:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;32348:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;32404:24;32412:5;32418:1;32412:8;;;;;;;;:::i;:::-;;;;;;;;32422:5;32404:7;:24::i;:::-;32332:3;;;;;;;32294:142;;;;32148:291;;:::o;859:87::-;905:7;932:6;;;;;;;;;;;925:13;;859:87;:::o;7694:26::-;;;;:::o;8374:104::-;8430:13;8463:7;8456:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8374:104;:::o;11175:505::-;11295:4;11317:13;11333:12;:10;:12::i;:::-;11317:28;;11356:24;11383:25;11393:5;11400:7;11383:9;:25::i;:::-;11356:52;;11461:15;11441:16;:35;;11419:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11577:60;11586:5;11593:7;11621:15;11602:16;:34;11577:8;:60::i;:::-;11668:4;11661:11;;;;11175:505;;;;:::o;9838:234::-;9953:4;9975:13;9991:12;:10;:12::i;:::-;9975:28;;10014;10024:5;10031:2;10035:6;10014:9;:28::i;:::-;10060:4;10053:11;;;9838:234;;;;:::o;28786:27::-;;;;:::o;28512:32::-;;;;;;;;;;;;;:::o;28551:30::-;;;;;;;;;;;;;:::o;10135:201::-;10269:7;10301:11;:18;10313:5;10301:18;;;;;;;;;;;;;;;:27;10320:7;10301:27;;;;;;;;;;;;;;;;10294:34;;10135:201;;;;:::o;28744:33::-;;;;:::o;28918:27::-;;;;:::o;1758:238::-;745:13;:11;:13::i;:::-;1881:1:::1;1861:22;;:8;:22;;::::0;1839:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1960:28;1979:8;1960:18;:28::i;:::-;1758:238:::0;:::o;31833:308::-;31929:7;:5;:7::i;:::-;31915:21;;:10;:21;;;:48;;;;31954:9;;;;;;;;;;;31940:23;;:10;:23;;;31915:48;31907:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;31994:9;31989:149;32013:8;:15;32009:1;:19;31989:149;;;32068:8;32046:6;:19;32053:8;32062:1;32053:11;;;;;;;;:::i;:::-;;;;;;;;32046:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;32108:8;32117:1;32108:11;;;;;;;;:::i;:::-;;;;;;;;32092:38;;;32121:8;32092:38;;;;;;:::i;:::-;;;;;;;;32030:3;;;;;;;31989:149;;;;31833:308;;:::o;136:98::-;189:7;216:10;209:17;;136:98;:::o;13812:380::-;13965:1;13948:19;;:5;:19;;;13940:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14046:1;14027:21;;:7;:21;;;14019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14130:6;14100:11;:18;14112:5;14100:18;;;;;;;;;;;;;;;:27;14119:7;14100:27;;;;;;;;;;;;;;;:36;;;;14168:7;14152:32;;14161:5;14152:32;;;14177:6;14152:32;;;;;;:::i;:::-;;;;;;;;13812:380;;;:::o;1024:132::-;1099:12;:10;:12::i;:::-;1088:23;;:7;:5;:7::i;:::-;:23;;;1080:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1024:132::o;14200:502::-;14335:24;14362:25;14372:5;14379:7;14362:9;:25::i;:::-;14335:52;;14422:17;14402:16;:37;14398:297;;14502:6;14482:16;:26;;14456:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;14617:51;14626:5;14633:7;14661:6;14642:16;:25;14617:8;:51::i;:::-;14398:297;14324:378;14200:502;;;:::o;32604:2477::-;32752:1;32736:18;;:4;:18;;;32728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32829:1;32815:16;;:2;:16;;;32807:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;32891:10;:16;32902:4;32891:16;;;;;;;;;;;;;;;;;;;;;;;;;32890:17;:36;;;;;32912:10;:14;32923:2;32912:14;;;;;;;;;;;;;;;;;;;;;;;;;32911:15;32890:36;32882:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32970:10;:16;32981:4;32970:16;;;;;;;;;;;;;;;;;;;;;;;;;32969:17;:36;;;;;32991:10;:14;33002:2;32991:14;;;;;;;;;;;;;;;;;;;;;;;;;32990:15;32969:36;:62;;;;;33010:10;:21;33021:9;33010:21;;;;;;;;;;;;;;;;;;;;;;;;;33009:22;32969:62;32961:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;33065:14;;;;;;;;;;;:30;;;;33083:6;:12;33090:4;33083:12;;;;;;;;;;;;;;;;;;;;;;;;;33065:30;:44;;;;33099:6;:10;33106:2;33099:10;;;;;;;;;;;;;;;;;;;;;;;;;33065:44;33057:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;33163:1;33153:6;:11;33149:93;;33181:28;33197:4;33203:2;33207:1;33181:15;:28::i;:::-;33224:7;;33149:93;33256:28;33287:24;33305:4;33287:9;:24::i;:::-;33256:55;;33324:12;33363:18;;33339:20;:42;;33324:57;;33412:7;:35;;;;;33436:11;;;;;;;;;;;33412:35;:48;;;;;33451:9;;;;;;;;;;;33450:10;33412:48;:81;;;;;33462:25;:31;33488:4;33462:31;;;;;;;;;;;;;;;;;;;;;;;;;33412:81;:111;;;;;33511:6;:12;33518:4;33511:12;;;;;;;;;;;;;;;;;;;;;;;;;33510:13;33412:111;:139;;;;;33541:6;:10;33548:2;33541:10;;;;;;;;;;;;;;;;;;;;;;;;;33540:11;33412:139;33394:274;;;33590:4;33578:9;;:16;;;;;;;;;;;;;;;;;;33611:11;:9;:11::i;:::-;33651:5;33639:9;;:17;;;;;;;;;;;;;;;;;;33394:274;33680:12;33696:9;;;;;;;;;;;33695:10;33680:25;;33722:6;:12;33729:4;33722:12;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;33738:6;:10;33745:2;33738:10;;;;;;;;;;;;;;;;;;;;;;;;;33722:26;33718:74;;;33775:5;33765:15;;33718:74;33804:12;33837:7;33833:1157;;;33889:25;:29;33915:2;33889:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;33937:1;33922:12;;:16;33889:49;33885:956;;;33966:35;33995:5;33966:24;33977:12;;33966:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;33959:42;;34114:12;;34072:17;;34065:4;:24;;;;:::i;:::-;34064:62;;;;:::i;:::-;34020:19;;:106;;;;;;;:::i;:::-;;;;;;;;34239:12;;34197:17;;34190:4;:24;;;;:::i;:::-;34189:62;;;;:::i;:::-;34145:19;;:106;;;;;;;:::i;:::-;;;;;;;;34368:12;;34324:19;;34317:4;:26;;;;:::i;:::-;34316:64;;;;:::i;:::-;34270:21;;:110;;;;;;;:::i;:::-;;;;;;;;33885:956;;;34442:25;:31;34468:4;34442:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;34492:1;34477:12;;:16;34442:51;34438:403;;;34521:35;34550:5;34521:24;34532:12;;34521:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;34514:42;;34621:12;;34606:11;;34599:4;:18;;;;:::i;:::-;34598:35;;;;:::i;:::-;34575:19;;:58;;;;;;;:::i;:::-;;;;;;;;34694:12;;34683:7;;34676:4;:14;;;;:::i;:::-;34675:31;;;;:::i;:::-;34652:19;;:54;;;;;;;:::i;:::-;;;;;;;;34813:12;;34779:9;;34772:4;:16;;;;:::i;:::-;34771:54;;;;:::i;:::-;34725:21;;:100;;;;;;;:::i;:::-;;;;;;;;34438:403;33885:956;34868:1;34861:4;:8;34857:91;;;34890:42;34906:4;34920;34927;34890:15;:42::i;:::-;34857:91;34974:4;34964:14;;;;;:::i;:::-;;;33833:1157;35002:33;35018:4;35024:2;35028:6;35002:15;:33::i;:::-;35061:12;;35046;:27;;;;32717:2364;;;;32604:2477;;;;:::o;2156:191::-;2230:16;2249:6;;;;;;;;;;;2230:25;;2275:8;2266:6;;:17;;;;;;;;;;;;;;;;;;2330:8;2299:40;;2320:8;2299:40;;;;;;;;;;;;2219:128;2156:191;:::o;32449:147::-;32546:5;32512:25;:31;32538:4;32512:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;32582:5;32567:21;;32576:4;32567:21;;;;;;;;;;;;32449:147;;:::o;11688:877::-;11835:1;11819:18;;:4;:18;;;11811:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11912:1;11898:16;;:2;:16;;;11890:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11967:38;11988:4;11994:2;11998:6;11967:20;:38::i;:::-;12018:19;12040:9;:15;12050:4;12040:15;;;;;;;;;;;;;;;;12018:37;;12103:6;12088:11;:21;;12066:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12243:6;12229:11;:20;12211:9;:15;12221:4;12211:15;;;;;;;;;;;;;;;:38;;;;12446:6;12429:9;:13;12439:2;12429:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12496:2;12481:26;;12490:4;12481:26;;;12500:6;12481:26;;;;;;:::i;:::-;;;;;;;;12520:37;12540:4;12546:2;12550:6;12520:19;:37::i;:::-;11800:765;11688:877;;;:::o;35980:1607::-;36021:23;36047:24;36065:4;36047:9;:24::i;:::-;36021:50;;36082:25;36180:21;;36145:19;;36110;;:54;;;;:::i;:::-;:91;;;;:::i;:::-;36082:119;;36212:12;36239:23;36353:1;36320:17;36284:19;;36266:15;:37;;;;:::i;:::-;36265:72;;;;:::i;:::-;:89;;;;:::i;:::-;36239:115;;36365:26;36394:36;36414:15;36394;:19;;:36;;;;:::i;:::-;36365:65;;36443:25;36471:21;36443:49;;36505:37;36523:18;36505:17;:37::i;:::-;36555:18;36576:44;36602:17;36576:21;:25;;:44;;;;:::i;:::-;36555:65;;36633:23;36659:82;36713:17;36659:35;36674:19;;36659:10;:14;;:35;;;;:::i;:::-;:39;;:82;;;;:::i;:::-;36633:108;;36754:25;36782:84;36838:17;36782:37;36797:21;;36782:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;36754:112;;36879:23;36962:17;36931:15;36905:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;36879:100;;37014:1;36992:19;:23;;;;37048:1;37026:19;:23;;;;37084:1;37060:21;:25;;;;37120:1;37102:15;:19;:42;;;;;37143:1;37125:15;:19;37102:42;37098:280;;;37161:47;37175:15;37192;37161:13;:47::i;:::-;37228:138;37261:18;37298:15;37332:19;;37228:138;;;;;;;;:::i;:::-;;;;;;;;37098:280;37412:17;;;;;;;;;;;37404:31;;37443:17;37404:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37390:75;;;;;37500:15;;;;;;;;;;;37492:29;;37543:21;37492:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37478:101;;;;;36010:1577;;;;;;;;;;35980:1607::o;18329:98::-;18387:7;18418:1;18414;:5;;;;:::i;:::-;18407:12;;18329:98;;;;:::o;18728:::-;18786:7;18817:1;18813;:5;;;;:::i;:::-;18806:12;;18728:98;;;;:::o;14710:125::-;;;;:::o;14843:124::-;;;;:::o;17972:98::-;18030:7;18061:1;18057;:5;;;;:::i;:::-;18050:12;;17972:98;;;;:::o;35089:503::-;35157:21;35195:1;35181:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35157:40;;35226:4;35208;35213:1;35208:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;35252:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35242:4;35247:1;35242:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;35287:62;35304:4;35319:15;35337:11;35287:8;:62::i;:::-;35388:15;:66;;;35469:11;35495:1;35511:4;35538;35558:15;35388:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35146:446;35089:503;:::o;35600:372::-;35683:62;35700:4;35715:15;35733:11;35683:8;:62::i;:::-;35758:15;:31;;;35797:9;35830:4;35850:11;35876:1;35892;35908:15;;;;;;;;;;;35938;35758:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;35600:372;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:86::-;5788:7;5828:4;5821:5;5817:16;5806:27;;5753:86;;;:::o;5845:112::-;5928:22;5944:5;5928:22;:::i;:::-;5923:3;5916:35;5845:112;;:::o;5963:214::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:67;6167:1;6156:9;6152:17;6143:6;6103:67;:::i;:::-;5963:214;;;;:::o;6183:329::-;6242:6;6291:2;6279:9;6270:7;6266:23;6262:32;6259:119;;;6297:79;;:::i;:::-;6259:119;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6183:329;;;;:::o;6518:117::-;6627:1;6624;6617:12;6641:117;6750:1;6747;6740:12;6764:117;6873:1;6870;6863:12;6904:568;6977:8;6987:6;7037:3;7030:4;7022:6;7018:17;7014:27;7004:122;;7045:79;;:::i;:::-;7004:122;7158:6;7145:20;7135:30;;7188:18;7180:6;7177:30;7174:117;;;7210:79;;:::i;:::-;7174:117;7324:4;7316:6;7312:17;7300:29;;7378:3;7370:4;7362:6;7358:17;7348:8;7344:32;7341:41;7338:128;;;7385:79;;:::i;:::-;7338:128;6904:568;;;;;:::o;7478:116::-;7548:21;7563:5;7548:21;:::i;:::-;7541:5;7538:32;7528:60;;7584:1;7581;7574:12;7528:60;7478:116;:::o;7600:133::-;7643:5;7681:6;7668:20;7659:29;;7697:30;7721:5;7697:30;:::i;:::-;7600:133;;;;:::o;7739:698::-;7831:6;7839;7847;7896:2;7884:9;7875:7;7871:23;7867:32;7864:119;;;7902:79;;:::i;:::-;7864:119;8050:1;8039:9;8035:17;8022:31;8080:18;8072:6;8069:30;8066:117;;;8102:79;;:::i;:::-;8066:117;8215:80;8287:7;8278:6;8267:9;8263:22;8215:80;:::i;:::-;8197:98;;;;7993:312;8344:2;8370:50;8412:7;8403:6;8392:9;8388:22;8370:50;:::i;:::-;8360:60;;8315:115;7739:698;;;;;:::o;8443:180::-;8491:77;8488:1;8481:88;8588:4;8585:1;8578:15;8612:4;8609:1;8602:15;8629:281;8712:27;8734:4;8712:27;:::i;:::-;8704:6;8700:40;8842:6;8830:10;8827:22;8806:18;8794:10;8791:34;8788:62;8785:88;;;8853:18;;:::i;:::-;8785:88;8893:10;8889:2;8882:22;8672:238;8629:281;;:::o;8916:129::-;8950:6;8977:20;;:::i;:::-;8967:30;;9006:33;9034:4;9026:6;9006:33;:::i;:::-;8916:129;;;:::o;9051:311::-;9128:4;9218:18;9210:6;9207:30;9204:56;;;9240:18;;:::i;:::-;9204:56;9290:4;9282:6;9278:17;9270:25;;9350:4;9344;9340:15;9332:23;;9051:311;;;:::o;9385:710::-;9481:5;9506:81;9522:64;9579:6;9522:64;:::i;:::-;9506:81;:::i;:::-;9497:90;;9607:5;9636:6;9629:5;9622:21;9670:4;9663:5;9659:16;9652:23;;9723:4;9715:6;9711:17;9703:6;9699:30;9752:3;9744:6;9741:15;9738:122;;;9771:79;;:::i;:::-;9738:122;9886:6;9869:220;9903:6;9898:3;9895:15;9869:220;;;9978:3;10007:37;10040:3;10028:10;10007:37;:::i;:::-;10002:3;9995:50;10074:4;10069:3;10065:14;10058:21;;9945:144;9929:4;9924:3;9920:14;9913:21;;9869:220;;;9873:21;9487:608;;9385:710;;;;;:::o;10118:370::-;10189:5;10238:3;10231:4;10223:6;10219:17;10215:27;10205:122;;10246:79;;:::i;:::-;10205:122;10363:6;10350:20;10388:94;10478:3;10470:6;10463:4;10455:6;10451:17;10388:94;:::i;:::-;10379:103;;10195:293;10118:370;;;;:::o;10494:678::-;10584:6;10592;10641:2;10629:9;10620:7;10616:23;10612:32;10609:119;;;10647:79;;:::i;:::-;10609:119;10795:1;10784:9;10780:17;10767:31;10825:18;10817:6;10814:30;10811:117;;;10847:79;;:::i;:::-;10811:117;10952:78;11022:7;11013:6;11002:9;10998:22;10952:78;:::i;:::-;10942:88;;10738:302;11079:2;11105:50;11147:7;11138:6;11127:9;11123:22;11105:50;:::i;:::-;11095:60;;11050:115;10494:678;;;;;:::o;11178:474::-;11246:6;11254;11303:2;11291:9;11282:7;11278:23;11274:32;11271:119;;;11309:79;;:::i;:::-;11271:119;11429:1;11454:53;11499:7;11490:6;11479:9;11475:22;11454:53;:::i;:::-;11444:63;;11400:117;11556:2;11582:53;11627:7;11618:6;11607:9;11603:22;11582:53;:::i;:::-;11572:63;;11527:118;11178:474;;;;;:::o;11658:180::-;11706:77;11703:1;11696:88;11803:4;11800:1;11793:15;11827:4;11824:1;11817:15;11844:320;11888:6;11925:1;11919:4;11915:12;11905:22;;11972:1;11966:4;11962:12;11993:18;11983:81;;12049:4;12041:6;12037:17;12027:27;;11983:81;12111:2;12103:6;12100:14;12080:18;12077:38;12074:84;;12130:18;;:::i;:::-;12074:84;11895:269;11844:320;;;:::o;12170:172::-;12310:24;12306:1;12298:6;12294:14;12287:48;12170:172;:::o;12348:366::-;12490:3;12511:67;12575:2;12570:3;12511:67;:::i;:::-;12504:74;;12587:93;12676:3;12587:93;:::i;:::-;12705:2;12700:3;12696:12;12689:19;;12348:366;;;:::o;12720:419::-;12886:4;12924:2;12913:9;12909:18;12901:26;;12973:9;12967:4;12963:20;12959:1;12948:9;12944:17;12937:47;13001:131;13127:4;13001:131;:::i;:::-;12993:139;;12720:419;;;:::o;13145:180::-;13193:77;13190:1;13183:88;13290:4;13287:1;13280:15;13314:4;13311:1;13304:15;13331:191;13371:3;13390:20;13408:1;13390:20;:::i;:::-;13385:25;;13424:20;13442:1;13424:20;:::i;:::-;13419:25;;13467:1;13464;13460:9;13453:16;;13488:3;13485:1;13482:10;13479:36;;;13495:18;;:::i;:::-;13479:36;13331:191;;;;:::o;13528:153::-;13668:5;13664:1;13656:6;13652:14;13645:29;13528:153;:::o;13687:365::-;13829:3;13850:66;13914:1;13909:3;13850:66;:::i;:::-;13843:73;;13925:93;14014:3;13925:93;:::i;:::-;14043:2;14038:3;14034:12;14027:19;;13687:365;;;:::o;14058:419::-;14224:4;14262:2;14251:9;14247:18;14239:26;;14311:9;14305:4;14301:20;14297:1;14286:9;14282:17;14275:47;14339:131;14465:4;14339:131;:::i;:::-;14331:139;;14058:419;;;:::o;14483:180::-;14531:77;14528:1;14521:88;14628:4;14625:1;14618:15;14652:4;14649:1;14642:15;14669:164;14809:16;14805:1;14797:6;14793:14;14786:40;14669:164;:::o;14839:366::-;14981:3;15002:67;15066:2;15061:3;15002:67;:::i;:::-;14995:74;;15078:93;15167:3;15078:93;:::i;:::-;15196:2;15191:3;15187:12;15180:19;;14839:366;;;:::o;15211:419::-;15377:4;15415:2;15404:9;15400:18;15392:26;;15464:9;15458:4;15454:20;15450:1;15439:9;15435:17;15428:47;15492:131;15618:4;15492:131;:::i;:::-;15484:139;;15211:419;;;:::o;15636:157::-;15776:9;15772:1;15764:6;15760:14;15753:33;15636:157;:::o;15799:365::-;15941:3;15962:66;16026:1;16021:3;15962:66;:::i;:::-;15955:73;;16037:93;16126:3;16037:93;:::i;:::-;16155:2;16150:3;16146:12;16139:19;;15799:365;;;:::o;16170:419::-;16336:4;16374:2;16363:9;16359:18;16351:26;;16423:9;16417:4;16413:20;16409:1;16398:9;16394:17;16387:47;16451:131;16577:4;16451:131;:::i;:::-;16443:139;;16170:419;;;:::o;16595:224::-;16735:34;16731:1;16723:6;16719:14;16712:58;16804:7;16799:2;16791:6;16787:15;16780:32;16595:224;:::o;16825:366::-;16967:3;16988:67;17052:2;17047:3;16988:67;:::i;:::-;16981:74;;17064:93;17153:3;17064:93;:::i;:::-;17182:2;17177:3;17173:12;17166:19;;16825:366;;;:::o;17197:419::-;17363:4;17401:2;17390:9;17386:18;17378:26;;17450:9;17444:4;17440:20;17436:1;17425:9;17421:17;17414:47;17478:131;17604:4;17478:131;:::i;:::-;17470:139;;17197:419;;;:::o;17622:225::-;17762:34;17758:1;17750:6;17746:14;17739:58;17831:8;17826:2;17818:6;17814:15;17807:33;17622:225;:::o;17853:366::-;17995:3;18016:67;18080:2;18075:3;18016:67;:::i;:::-;18009:74;;18092:93;18181:3;18092:93;:::i;:::-;18210:2;18205:3;18201:12;18194:19;;17853:366;;;:::o;18225:419::-;18391:4;18429:2;18418:9;18414:18;18406:26;;18478:9;18472:4;18468:20;18464:1;18453:9;18449:17;18442:47;18506:131;18632:4;18506:131;:::i;:::-;18498:139;;18225:419;;;:::o;18650:223::-;18790:34;18786:1;18778:6;18774:14;18767:58;18859:6;18854:2;18846:6;18842:15;18835:31;18650:223;:::o;18879:366::-;19021:3;19042:67;19106:2;19101:3;19042:67;:::i;:::-;19035:74;;19118:93;19207:3;19118:93;:::i;:::-;19236:2;19231:3;19227:12;19220:19;;18879:366;;;:::o;19251:419::-;19417:4;19455:2;19444:9;19440:18;19432:26;;19504:9;19498:4;19494:20;19490:1;19479:9;19475:17;19468:47;19532:131;19658:4;19532:131;:::i;:::-;19524:139;;19251:419;;;:::o;19676:221::-;19816:34;19812:1;19804:6;19800:14;19793:58;19885:4;19880:2;19872:6;19868:15;19861:29;19676:221;:::o;19903:366::-;20045:3;20066:67;20130:2;20125:3;20066:67;:::i;:::-;20059:74;;20142:93;20231:3;20142:93;:::i;:::-;20260:2;20255:3;20251:12;20244:19;;19903:366;;;:::o;20275:419::-;20441:4;20479:2;20468:9;20464:18;20456:26;;20528:9;20522:4;20518:20;20514:1;20503:9;20499:17;20492:47;20556:131;20682:4;20556:131;:::i;:::-;20548:139;;20275:419;;;:::o;20700:182::-;20840:34;20836:1;20828:6;20824:14;20817:58;20700:182;:::o;20888:366::-;21030:3;21051:67;21115:2;21110:3;21051:67;:::i;:::-;21044:74;;21127:93;21216:3;21127:93;:::i;:::-;21245:2;21240:3;21236:12;21229:19;;20888:366;;;:::o;21260:419::-;21426:4;21464:2;21453:9;21449:18;21441:26;;21513:9;21507:4;21503:20;21499:1;21488:9;21484:17;21477:47;21541:131;21667:4;21541:131;:::i;:::-;21533:139;;21260:419;;;:::o;21685:179::-;21825:31;21821:1;21813:6;21809:14;21802:55;21685:179;:::o;21870:366::-;22012:3;22033:67;22097:2;22092:3;22033:67;:::i;:::-;22026:74;;22109:93;22198:3;22109:93;:::i;:::-;22227:2;22222:3;22218:12;22211:19;;21870:366;;;:::o;22242:419::-;22408:4;22446:2;22435:9;22431:18;22423:26;;22495:9;22489:4;22485:20;22481:1;22470:9;22466:17;22459:47;22523:131;22649:4;22523:131;:::i;:::-;22515:139;;22242:419;;;:::o;22667:224::-;22807:34;22803:1;22795:6;22791:14;22784:58;22876:7;22871:2;22863:6;22859:15;22852:32;22667:224;:::o;22897:366::-;23039:3;23060:67;23124:2;23119:3;23060:67;:::i;:::-;23053:74;;23136:93;23225:3;23136:93;:::i;:::-;23254:2;23249:3;23245:12;23238:19;;22897:366;;;:::o;23269:419::-;23435:4;23473:2;23462:9;23458:18;23450:26;;23522:9;23516:4;23512:20;23508:1;23497:9;23493:17;23486:47;23550:131;23676:4;23550:131;:::i;:::-;23542:139;;23269:419;;;:::o;23694:222::-;23834:34;23830:1;23822:6;23818:14;23811:58;23903:5;23898:2;23890:6;23886:15;23879:30;23694:222;:::o;23922:366::-;24064:3;24085:67;24149:2;24144:3;24085:67;:::i;:::-;24078:74;;24161:93;24250:3;24161:93;:::i;:::-;24279:2;24274:3;24270:12;24263:19;;23922:366;;;:::o;24294:419::-;24460:4;24498:2;24487:9;24483:18;24475:26;;24547:9;24541:4;24537:20;24533:1;24522:9;24518:17;24511:47;24575:131;24701:4;24575:131;:::i;:::-;24567:139;;24294:419;;;:::o;24719:169::-;24859:21;24855:1;24847:6;24843:14;24836:45;24719:169;:::o;24894:366::-;25036:3;25057:67;25121:2;25116:3;25057:67;:::i;:::-;25050:74;;25133:93;25222:3;25133:93;:::i;:::-;25251:2;25246:3;25242:12;25235:19;;24894:366;;;:::o;25266:419::-;25432:4;25470:2;25459:9;25455:18;25447:26;;25519:9;25513:4;25509:20;25505:1;25494:9;25490:17;25483:47;25547:131;25673:4;25547:131;:::i;:::-;25539:139;;25266:419;;;:::o;25691:160::-;25831:12;25827:1;25819:6;25815:14;25808:36;25691:160;:::o;25857:366::-;25999:3;26020:67;26084:2;26079:3;26020:67;:::i;:::-;26013:74;;26096:93;26185:3;26096:93;:::i;:::-;26214:2;26209:3;26205:12;26198:19;;25857:366;;;:::o;26229:419::-;26395:4;26433:2;26422:9;26418:18;26410:26;;26482:9;26476:4;26472:20;26468:1;26457:9;26453:17;26446:47;26510:131;26636:4;26510:131;:::i;:::-;26502:139;;26229:419;;;:::o;26654:174::-;26794:26;26790:1;26782:6;26778:14;26771:50;26654:174;:::o;26834:366::-;26976:3;26997:67;27061:2;27056:3;26997:67;:::i;:::-;26990:74;;27073:93;27162:3;27073:93;:::i;:::-;27191:2;27186:3;27182:12;27175:19;;26834:366;;;:::o;27206:419::-;27372:4;27410:2;27399:9;27395:18;27387:26;;27459:9;27453:4;27449:20;27445:1;27434:9;27430:17;27423:47;27487:131;27613:4;27487:131;:::i;:::-;27479:139;;27206:419;;;:::o;27631:410::-;27671:7;27694:20;27712:1;27694:20;:::i;:::-;27689:25;;27728:20;27746:1;27728:20;:::i;:::-;27723:25;;27783:1;27780;27776:9;27805:30;27823:11;27805:30;:::i;:::-;27794:41;;27984:1;27975:7;27971:15;27968:1;27965:22;27945:1;27938:9;27918:83;27895:139;;28014:18;;:::i;:::-;27895:139;27679:362;27631:410;;;;:::o;28047:180::-;28095:77;28092:1;28085:88;28192:4;28189:1;28182:15;28216:4;28213:1;28206:15;28233:185;28273:1;28290:20;28308:1;28290:20;:::i;:::-;28285:25;;28324:20;28342:1;28324:20;:::i;:::-;28319:25;;28363:1;28353:35;;28368:18;;:::i;:::-;28353:35;28410:1;28407;28403:9;28398:14;;28233:185;;;;:::o;28424:194::-;28464:4;28484:20;28502:1;28484:20;:::i;:::-;28479:25;;28518:20;28536:1;28518:20;:::i;:::-;28513:25;;28562:1;28559;28555:9;28547:17;;28586:1;28580:4;28577:11;28574:37;;;28591:18;;:::i;:::-;28574:37;28424:194;;;;:::o;28624:225::-;28764:34;28760:1;28752:6;28748:14;28741:58;28833:8;28828:2;28820:6;28816:15;28809:33;28624:225;:::o;28855:366::-;28997:3;29018:67;29082:2;29077:3;29018:67;:::i;:::-;29011:74;;29094:93;29183:3;29094:93;:::i;:::-;29212:2;29207:3;29203:12;29196:19;;28855:366;;;:::o;29227:419::-;29393:4;29431:2;29420:9;29416:18;29408:26;;29480:9;29474:4;29470:20;29466:1;29455:9;29451:17;29444:47;29508:131;29634:4;29508:131;:::i;:::-;29500:139;;29227:419;;;:::o;29652:442::-;29801:4;29839:2;29828:9;29824:18;29816:26;;29852:71;29920:1;29909:9;29905:17;29896:6;29852:71;:::i;:::-;29933:72;30001:2;29990:9;29986:18;29977:6;29933:72;:::i;:::-;30015;30083:2;30072:9;30068:18;30059:6;30015:72;:::i;:::-;29652:442;;;;;;:::o;30100:147::-;30201:11;30238:3;30223:18;;30100:147;;;;:::o;30253:114::-;;:::o;30373:398::-;30532:3;30553:83;30634:1;30629:3;30553:83;:::i;:::-;30546:90;;30645:93;30734:3;30645:93;:::i;:::-;30763:1;30758:3;30754:11;30747:18;;30373:398;;;:::o;30777:379::-;30961:3;30983:147;31126:3;30983:147;:::i;:::-;30976:154;;31147:3;31140:10;;30777:379;;;:::o;31162:143::-;31219:5;31250:6;31244:13;31235:22;;31266:33;31293:5;31266:33;:::i;:::-;31162:143;;;;:::o;31311:351::-;31381:6;31430:2;31418:9;31409:7;31405:23;31401:32;31398:119;;;31436:79;;:::i;:::-;31398:119;31556:1;31581:64;31637:7;31628:6;31617:9;31613:22;31581:64;:::i;:::-;31571:74;;31527:128;31311:351;;;;:::o;31668:85::-;31713:7;31742:5;31731:16;;31668:85;;;:::o;31759:158::-;31817:9;31850:61;31868:42;31877:32;31903:5;31877:32;:::i;:::-;31868:42;:::i;:::-;31850:61;:::i;:::-;31837:74;;31759:158;;;:::o;31923:147::-;32018:45;32057:5;32018:45;:::i;:::-;32013:3;32006:58;31923:147;;:::o;32076:114::-;32143:6;32177:5;32171:12;32161:22;;32076:114;;;:::o;32196:184::-;32295:11;32329:6;32324:3;32317:19;32369:4;32364:3;32360:14;32345:29;;32196:184;;;;:::o;32386:132::-;32453:4;32476:3;32468:11;;32506:4;32501:3;32497:14;32489:22;;32386:132;;;:::o;32524:108::-;32601:24;32619:5;32601:24;:::i;:::-;32596:3;32589:37;32524:108;;:::o;32638:179::-;32707:10;32728:46;32770:3;32762:6;32728:46;:::i;:::-;32806:4;32801:3;32797:14;32783:28;;32638:179;;;;:::o;32823:113::-;32893:4;32925;32920:3;32916:14;32908:22;;32823:113;;;:::o;32972:732::-;33091:3;33120:54;33168:5;33120:54;:::i;:::-;33190:86;33269:6;33264:3;33190:86;:::i;:::-;33183:93;;33300:56;33350:5;33300:56;:::i;:::-;33379:7;33410:1;33395:284;33420:6;33417:1;33414:13;33395:284;;;33496:6;33490:13;33523:63;33582:3;33567:13;33523:63;:::i;:::-;33516:70;;33609:60;33662:6;33609:60;:::i;:::-;33599:70;;33455:224;33442:1;33439;33435:9;33430:14;;33395:284;;;33399:14;33695:3;33688:10;;33096:608;;;32972:732;;;;:::o;33710:831::-;33973:4;34011:3;34000:9;33996:19;33988:27;;34025:71;34093:1;34082:9;34078:17;34069:6;34025:71;:::i;:::-;34106:80;34182:2;34171:9;34167:18;34158:6;34106:80;:::i;:::-;34233:9;34227:4;34223:20;34218:2;34207:9;34203:18;34196:48;34261:108;34364:4;34355:6;34261:108;:::i;:::-;34253:116;;34379:72;34447:2;34436:9;34432:18;34423:6;34379:72;:::i;:::-;34461:73;34529:3;34518:9;34514:19;34505:6;34461:73;:::i;:::-;33710:831;;;;;;;;:::o;34547:807::-;34796:4;34834:3;34823:9;34819:19;34811:27;;34848:71;34916:1;34905:9;34901:17;34892:6;34848:71;:::i;:::-;34929:72;34997:2;34986:9;34982:18;34973:6;34929:72;:::i;:::-;35011:80;35087:2;35076:9;35072:18;35063:6;35011:80;:::i;:::-;35101;35177:2;35166:9;35162:18;35153:6;35101:80;:::i;:::-;35191:73;35259:3;35248:9;35244:19;35235:6;35191:73;:::i;:::-;35274;35342:3;35331:9;35327:19;35318:6;35274:73;:::i;:::-;34547:807;;;;;;;;;:::o;35360:143::-;35417:5;35448:6;35442:13;35433:22;;35464:33;35491:5;35464:33;:::i;:::-;35360:143;;;;:::o;35509:663::-;35597:6;35605;35613;35662:2;35650:9;35641:7;35637:23;35633:32;35630:119;;;35668:79;;:::i;:::-;35630:119;35788:1;35813:64;35869:7;35860:6;35849:9;35845:22;35813:64;:::i;:::-;35803:74;;35759:128;35926:2;35952:64;36008:7;35999:6;35988:9;35984:22;35952:64;:::i;:::-;35942:74;;35897:129;36065:2;36091:64;36147:7;36138:6;36127:9;36123:22;36091:64;:::i;:::-;36081:74;;36036:129;35509:663;;;;;:::o
Swarm Source
ipfs://623671a6a50c806afcaf966d1395fb55bafaa8fe44b1562fd64aed3db2587e07
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.