More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 369 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15410041 | 878 days ago | IN | 0 ETH | 0.00231194 | ||||
Approve | 15410034 | 878 days ago | IN | 0 ETH | 0.00201212 | ||||
Approve | 15328943 | 891 days ago | IN | 0 ETH | 0.00059028 | ||||
Approve | 15298094 | 895 days ago | IN | 0 ETH | 0.00057793 | ||||
Approve | 15290543 | 897 days ago | IN | 0 ETH | 0.00051865 | ||||
Approve | 15259013 | 901 days ago | IN | 0 ETH | 0.00126541 | ||||
Approve | 15258673 | 902 days ago | IN | 0 ETH | 0.00059849 | ||||
Approve | 15258555 | 902 days ago | IN | 0 ETH | 0.00050741 | ||||
Approve | 15258554 | 902 days ago | IN | 0 ETH | 0.00080199 | ||||
Approve | 15256660 | 902 days ago | IN | 0 ETH | 0.00060027 | ||||
Approve | 15256575 | 902 days ago | IN | 0 ETH | 0.00037031 | ||||
Transfer | 15256557 | 902 days ago | IN | 0 ETH | 0.0004712 | ||||
Transfer | 15256140 | 902 days ago | IN | 0 ETH | 0.00074069 | ||||
Transfer | 15255841 | 902 days ago | IN | 0 ETH | 0.00089553 | ||||
Transfer | 15255717 | 902 days ago | IN | 0 ETH | 0.00066218 | ||||
Transfer | 15255689 | 902 days ago | IN | 0 ETH | 0.00070819 | ||||
Transfer | 15255677 | 902 days ago | IN | 0 ETH | 0.00087923 | ||||
Transfer | 15255671 | 902 days ago | IN | 0 ETH | 0.00064582 | ||||
Approve | 15252692 | 902 days ago | IN | 0 ETH | 0.00042976 | ||||
Transfer | 15250608 | 903 days ago | IN | 0 ETH | 0.0002875 | ||||
Transfer | 15248413 | 903 days ago | IN | 0 ETH | 0.00019643 | ||||
Transfer | 15238257 | 905 days ago | IN | 0 ETH | 0.00094825 | ||||
Transfer | 15236426 | 905 days ago | IN | 0 ETH | 0.00068275 | ||||
Approve | 15236022 | 905 days ago | IN | 0 ETH | 0.00070796 | ||||
Transfer | 15233761 | 905 days ago | IN | 0 ETH | 0.00071056 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
AsgardERC20Token
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-19 */ // SPDX-License-Identifier: MIT pragma solidity >=0.7.5; interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @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); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } // Only used in the BondingCalculator.sol function sqrrt(uint256 a) internal pure returns (uint c) { if (a > 3) { c = a; uint b = add( div( a, 2), 1 ); while (b < c) { c = b; b = div( add( div( a, b ), b), 2 ); } } else if (a != 0) { c = 1; } } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } library Counters { using SafeMath for uint256; struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { // The {SafeMath} overflow check can be skipped here, see the comment at the top counter._value += 1; } function decrement(Counter storage counter) internal { counter._value = counter._value.sub(1); } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } pragma solidity >=0.7.5; contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } abstract contract ERC20 is Context, IERC20{ using SafeMath for uint256; // TODO comment actual hash value. bytes32 constant private ERC20TOKEN_ERC1820_INTERFACE_ID = keccak256( "ERC20Token" ); mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowances; uint256 internal _totalSupply; string internal _name; string internal _symbol; uint8 internal immutable _decimals; constructor (string memory name_, string memory symbol_, uint8 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } 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) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, 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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(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); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(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 _beforeTokenTransfer( address from_, address to_, uint256 amount_ ) internal virtual { } } interface SwapContract{ function executeSwap(uint256 liquidityTokens, uint256 forMarketing, uint256 forReflection, uint256 forLiquidity) external; } contract AsgardERC20Token is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool public tradingActive = false; bool public swapEnabled = false; bool private swapping; uint256 public enableBlock = 0; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyReflectionFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellReflectionFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForReflection; address public swapContract; bool public superPower = true; bool public limitsInEffect = true; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; uint256 public maxTransactionAmount; uint256 public maxWallet; uint256 public initialSupply; address constant public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; mapping (address => bool) public earlyBotBuyers; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); constructor(address _swapContract) ERC20("Asgard", "ASG", 9) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), USDC); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); initialSupply = 1000000*1e9; maxTransactionAmount = initialSupply * 35 / 10000; // 0.35% maxTransactionAmountTxn maxWallet = initialSupply * 10 / 1000; // 1% maxWallet _mint(owner(), initialSupply); //Setting very high initial fee, will go back to normal as soon as the contract goes live. See init() buyMarketingFee = 0; buyLiquidityFee = 0; buyReflectionFee = 99; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyReflectionFee; sellMarketingFee = 0; sellLiquidityFee = 0; sellReflectionFee = 99; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellReflectionFee; swapContract = _swapContract; // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(swapContract, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); } receive() external payable { } function removeSuperPower() external onlyOwner returns (bool){ superPower = false; return true; } // remove limits after token is stable, can only be re-enabled if you have superpowers function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function addLimits() external onlyOwner returns (bool){ require(superPower, "You gave up your SuperPowers. Sadge!"); limitsInEffect = true; return true; } // disable Transfer delay - cannot be re-enabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function udpateSwapContract(address _swapContract) public onlyOwner{ swapContract = _swapContract; } // Launch :p function init() external onlyOwner { require(!tradingActive, "Trading is already active"); require(enableBlock == 0, "Trading has already been enabled"); tradingActive = true; swapEnabled = true; enableBlock = block.number; buyMarketingFee = 1; buyLiquidityFee = 2; buyReflectionFee = 3; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyReflectionFee; sellMarketingFee = 3; sellLiquidityFee = 2; sellReflectionFee = 4; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellReflectionFee; } function setEarlyBotBuyers(address _add, bool _isTrue) external onlyOwner{ if (_isTrue){ // Can only add manually if you have superpowers (initailly) require(superPower, "You gave up your SuperPowers. Sadge!"); } earlyBotBuyers[_add] = _isTrue; } function pauseTrading() external onlyOwner { tradingActive = false; } function resumeTrading() external onlyOwner { tradingActive = true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**9); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e9, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**9); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner{ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _reflectionFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyReflectionFee = _reflectionFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyReflectionFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _reflectionFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellReflectionFee = _reflectionFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellReflectionFee; require(sellTotalFees <= 30, "Must keep fees at 30% or less"); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function isContract(address _addr) private view returns (bool){ uint32 size; assembly { size := extcodesize(_addr) } return (size > 0); } 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"); if(amount == 0) { super._transfer(from, to, 0); return; } // check if blacklisted if (earlyBotBuyers[from] || earlyBotBuyers[to]){ super._transfer(from, to, 0); return; } uint256 fees = 0; if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (!(_isExcludedFromFees[from] || _isExcludedFromFees[to])){ if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } // Add to earlyBuyerlist for launch if (automatedMarketMakerPairs[from] && enableBlock != 0 && block.number <= enableBlock){ earlyBotBuyers[to] = true; } } } if( swapEnabled && !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] && !automatedMarketMakerPairs[from] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForReflection += fees * sellReflectionFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForReflection += fees * buyReflectionFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForUSDC(uint256 tokenAmount) public { require(swapContract != address(0x0), "Swap Contract not set!"); // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = USDC; _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForTokens( tokenAmount, 0, // accept any amount of ETH path, swapContract, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForReflection; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > totalSupply() * 5 / 10000 * 20){ contractBalance = totalSupply() * 5 / 10000 * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForUSDC = contractBalance.sub(liquidityTokens); IERC20(address(this)).transfer(swapContract, liquidityTokens); uint256 initialUSDCBalance = IERC20(USDC).balanceOf(swapContract); swapTokensForUSDC(amountToSwapForUSDC); uint256 USDCBalance = IERC20(USDC).balanceOf(swapContract).sub(initialUSDCBalance); uint256 forMarketing = USDCBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 forReflection = USDCBalance.mul(tokensForReflection).div(totalTokensToSwap); uint256 forLiquidity = USDCBalance - forMarketing - forReflection; //Call swap ca here SwapContract(swapContract).executeSwap(liquidityTokens, forMarketing, forReflection, forLiquidity); tokensForLiquidity = 0; tokensForMarketing = 0; tokensForReflection = 0; } function withdrawEthPool() external onlyOwner() { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_swapContract","type":"address"}],"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":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"SetAutomatedMarketMakerPair","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":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","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"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","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":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"earlyBotBuyers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","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":[],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeSuperPower","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_add","type":"address"},{"internalType":"bool","name":"_isTrue","type":"bool"}],"name":"setEarlyBotBuyers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"superPower","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"swapTokensForUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapContract","type":"address"}],"name":"udpateSwapContract","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"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEthPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff021916908315150217905550600060085560016014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff0219169083151502179055506001601660006101000a81548160ff0219169083151502179055503480156200009c57600080fd5b5060405162006c8038038062006c808339818101604052810190620000c2919062000adf565b6040518060400160405280600681526020017f41736761726400000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4153470000000000000000000000000000000000000000000000000000000000815250600982600390805190602001906200014892919062000a18565b5081600490805190602001906200016192919062000a18565b508060ff1660808160ff1660f81b81525050505050600062000188620005e160201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c857600080fd5b505afa158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000adf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b81526004016200035392919062000bb9565b602060405180830381600087803b1580156200036e57600080fd5b505af115801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a9919062000adf565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200041e600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e960201b60201c565b66038d7ea4c68000601b819055506127106023601b5462000440919062000d2c565b6200044c919062000cf4565b6019819055506103e8600a601b5462000466919062000d2c565b62000472919062000cf4565b601a819055506200049b6200048c6200068a60201b60201c565b601b54620006b460201b60201c565b6000600a819055506000600b819055506063600c81905550600c54600b54600a54620004c8919062000c97565b620004d4919062000c97565b6009819055506000600e819055506000600f819055506063601081905550601054600f54600e5462000507919062000c97565b62000513919062000c97565b600d8190555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200057c6200056e6200068a60201b60201c565b60016200086360201b60201c565b620005b1601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086360201b60201c565b620005c43060016200086360201b60201c565b620005d961dead60016200086360201b60201c565b505062000f34565b600033905090565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000727576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071e9062000c47565b60405180910390fd5b6200073b60008383620009b060201b60201c565b6200075781600254620009b560201b62002d181790919060201c565b600281905550620007b5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009b560201b62002d181790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000857919062000c69565b60405180910390a35050565b62000873620005e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000905576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008fc9062000c25565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009a4919062000be6565b60405180910390a25050565b505050565b6000808284620009c6919062000c97565b90508381101562000a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a059062000c03565b60405180910390fd5b8091505092915050565b82805462000a269062000dd7565b90600052602060002090601f01602090048101928262000a4a576000855562000a96565b82601f1062000a6557805160ff191683800117855562000a96565b8280016001018555821562000a96579182015b8281111562000a9557825182559160200191906001019062000a78565b5b50905062000aa5919062000aa9565b5090565b5b8082111562000ac457600081600090555060010162000aaa565b5090565b60008151905062000ad98162000f1a565b92915050565b60006020828403121562000af85762000af762000e9a565b5b600062000b088482850162000ac8565b91505092915050565b62000b1c8162000d8d565b82525050565b62000b2d8162000da1565b82525050565b600062000b42601b8362000c86565b915062000b4f8262000e9f565b602082019050919050565b600062000b6960208362000c86565b915062000b768262000ec8565b602082019050919050565b600062000b90601f8362000c86565b915062000b9d8262000ef1565b602082019050919050565b62000bb38162000dcd565b82525050565b600060408201905062000bd0600083018562000b11565b62000bdf602083018462000b11565b9392505050565b600060208201905062000bfd600083018462000b22565b92915050565b6000602082019050818103600083015262000c1e8162000b33565b9050919050565b6000602082019050818103600083015262000c408162000b5a565b9050919050565b6000602082019050818103600083015262000c628162000b81565b9050919050565b600060208201905062000c80600083018462000ba8565b92915050565b600082825260208201905092915050565b600062000ca48262000dcd565b915062000cb18362000dcd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ce95762000ce862000e0d565b5b828201905092915050565b600062000d018262000dcd565b915062000d0e8362000dcd565b92508262000d215762000d2062000e3c565b5b828204905092915050565b600062000d398262000dcd565b915062000d468362000dcd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d825762000d8162000e0d565b5b828202905092915050565b600062000d9a8262000dad565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000df057607f821691505b6020821081141562000e075762000e0662000e6b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b62000f258162000d8d565b811462000f3157600080fd5b50565b60805160f81c615d2d62000f5360003960006115a50152615d2d6000f3fe6080604052600436106103b15760003560e01c80637bce5a04116101e7578063c02466681161010d578063daf3f5d1116100a0578063f11a24d31161006f578063f11a24d314610dc7578063f2fde38b14610df2578063f637434214610e1b578063f8b45b0514610e46576103b8565b8063daf3f5d114610d0b578063dd62ed3e14610d48578063e1c7392a14610d85578063e884f26014610d9c576103b8565b8063c876d0b9116100dc578063c876d0b914610c5f578063c8c8ebe414610c8a578063cfd05e8314610cb5578063d85ba06314610ce0576103b8565b8063c024666814610bbb578063c17b5b8c14610be4578063c18bc19514610c0d578063c46223b514610c36576103b8565b8063924de9b711610185578063a457c2d711610154578063a457c2d714610ad9578063a9059cbb14610b16578063b62496f514610b53578063bbc0c74214610b90576103b8565b8063924de9b714610a315780639372d39314610a5a57806395d89b4114610a855780639a7a23d614610ab0576103b8565b806389a30271116101c157806389a30271146109855780638da5cb5b146109b05780638ea83031146109db5780639213691314610a06576103b8565b80637bce5a04146109085780638095d56414610933578063873987e21461095c576103b8565b806327c8f835116102d75780634fbee1931161026a57806370a082311161023957806370a0823114610860578063715018a61461089d578063751039fc146108b45780637571336a146108df576103b8565b80634fbee193146107a25780636042f719146107df5780636a486a8e1461080a5780636ddd171314610835576103b8565b806339509351116102a657806339509351146106e657806349bd5a5e146107235780634a62bb651461074e5780634c7a960614610779576103b8565b806327c8f8351461063a578063313ce56714610665578063378dc3dc14610690578063381bedb5146106bb576103b8565b80631694505e1161034f578063203e727e1161031e578063203e727e1461057e57806321874c8c146105a757806323136371146105d257806323b872dd146105fd576103b8565b80631694505e146104d257806318160ddd146104fd5780631a8145bb146105285780631f3fed8f14610553576103b8565b8063095ea7b31161038b578063095ea7b31461042a5780630e3d57eb146104675780631031e36e1461047e57806310d5de5314610495576103b8565b806305378a41146103bd5780630694db1e146103e857806306fdde03146103ff576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610e71565b6040516103df9190614ea7565b60405180910390f35b3480156103f457600080fd5b506103fd610f2b565b005b34801561040b57600080fd5b50610414610fdf565b6040516104219190614edd565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906148a4565b611071565b60405161045e9190614ea7565b60405180910390f35b34801561047357600080fd5b5061047c611088565b005b34801561048a57600080fd5b50610493611190565b005b3480156104a157600080fd5b506104bc60048036038101906104b791906147a4565b611244565b6040516104c99190614ea7565b60405180910390f35b3480156104de57600080fd5b506104e7611264565b6040516104f49190614ec2565b60405180910390f35b34801561050957600080fd5b5061051261128a565b60405161051f919061519f565b60405180910390f35b34801561053457600080fd5b5061053d611294565b60405161054a919061519f565b60405180910390f35b34801561055f57600080fd5b5061056861129a565b604051610575919061519f565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a09190614987565b6112a0565b005b3480156105b357600080fd5b506105bc6113c2565b6040516105c99190614ea7565b60405180910390f35b3480156105de57600080fd5b506105e76114ca565b6040516105f4919061519f565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190614811565b6114d0565b6040516106319190614ea7565b60405180910390f35b34801561064657600080fd5b5061064f61159b565b60405161065c9190614e63565b60405180910390f35b34801561067157600080fd5b5061067a6115a1565b6040516106879190615259565b60405180910390f35b34801561069c57600080fd5b506106a56115c9565b6040516106b2919061519f565b60405180910390f35b3480156106c757600080fd5b506106d06115cf565b6040516106dd919061519f565b60405180910390f35b3480156106f257600080fd5b5061070d600480360381019061070891906148a4565b6115d5565b60405161071a9190614ea7565b60405180910390f35b34801561072f57600080fd5b5061073861167a565b6040516107459190614e63565b60405180910390f35b34801561075a57600080fd5b506107636116a0565b6040516107709190614ea7565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b91906147a4565b6116b3565b005b3480156107ae57600080fd5b506107c960048036038101906107c491906147a4565b61178e565b6040516107d69190614ea7565b60405180910390f35b3480156107eb57600080fd5b506107f46117e4565b604051610801919061519f565b60405180910390f35b34801561081657600080fd5b5061081f6117ea565b60405161082c919061519f565b60405180910390f35b34801561084157600080fd5b5061084a6117f0565b6040516108579190614ea7565b60405180910390f35b34801561086c57600080fd5b50610887600480360381019061088291906147a4565b611803565b604051610894919061519f565b60405180910390f35b3480156108a957600080fd5b506108b261184b565b005b3480156108c057600080fd5b506108c96119a3565b6040516108d69190614ea7565b60405180910390f35b3480156108eb57600080fd5b5061090660048036038101906109019190614864565b611a5e565b005b34801561091457600080fd5b5061091d611b50565b60405161092a919061519f565b60405180910390f35b34801561093f57600080fd5b5061095a600480360381019061095591906149e1565b611b56565b005b34801561096857600080fd5b50610983600480360381019061097e9190614987565b611c70565b005b34801561099157600080fd5b5061099a611f11565b6040516109a79190614e63565b60405180910390f35b3480156109bc57600080fd5b506109c5611f29565b6040516109d29190614e63565b60405180910390f35b3480156109e757600080fd5b506109f0611f53565b6040516109fd9190614e63565b60405180910390f35b348015610a1257600080fd5b50610a1b611f79565b604051610a28919061519f565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a53919061492d565b611f7f565b005b348015610a6657600080fd5b50610a6f612033565b604051610a7c9190614ea7565b60405180910390f35b348015610a9157600080fd5b50610a9a612044565b604051610aa79190614edd565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad29190614864565b6120d6565b005b348015610ae557600080fd5b50610b006004803603810190610afb91906148a4565b61220c565b604051610b0d9190614ea7565b60405180910390f35b348015610b2257600080fd5b50610b3d6004803603810190610b3891906148a4565b6122cb565b604051610b4a9190614ea7565b60405180910390f35b348015610b5f57600080fd5b50610b7a6004803603810190610b7591906147a4565b6122e2565b604051610b879190614ea7565b60405180910390f35b348015610b9c57600080fd5b50610ba5612302565b604051610bb29190614ea7565b60405180910390f35b348015610bc757600080fd5b50610be26004803603810190610bdd9190614864565b612315565b005b348015610bf057600080fd5b50610c0b6004803603810190610c0691906149e1565b612455565b005b348015610c1957600080fd5b50610c346004803603810190610c2f9190614987565b61256f565b005b348015610c4257600080fd5b50610c5d6004803603810190610c589190614864565b612691565b005b348015610c6b57600080fd5b50610c746127d7565b604051610c819190614ea7565b60405180910390f35b348015610c9657600080fd5b50610c9f6127ea565b604051610cac919061519f565b60405180910390f35b348015610cc157600080fd5b50610cca6127f0565b604051610cd7919061519f565b60405180910390f35b348015610cec57600080fd5b50610cf56127f6565b604051610d02919061519f565b60405180910390f35b348015610d1757600080fd5b50610d326004803603810190610d2d91906147a4565b6127fc565b604051610d3f9190614ea7565b60405180910390f35b348015610d5457600080fd5b50610d6f6004803603810190610d6a91906147d1565b61281c565b604051610d7c919061519f565b60405180910390f35b348015610d9157600080fd5b50610d9a6128a3565b005b348015610da857600080fd5b50610db1612a84565b604051610dbe9190614ea7565b60405180910390f35b348015610dd357600080fd5b50610ddc612b3f565b604051610de9919061519f565b60405180910390f35b348015610dfe57600080fd5b50610e196004803603810190610e1491906147a4565b612b45565b005b348015610e2757600080fd5b50610e30612d0c565b604051610e3d919061519f565b60405180910390f35b348015610e5257600080fd5b50610e5b612d12565b604051610e68919061519f565b60405180910390f35b6000610e7b612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f019061509f565b60405180910390fd5b60006014806101000a81548160ff0219169083151502179055506001905090565b610f33612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb99061509f565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b606060038054610fee906154f8565b80601f016020809104026020016040519081016040528092919081815260200182805461101a906154f8565b80156110675780601f1061103c57610100808354040283529160200191611067565b820191906000526020600020905b81548152906001019060200180831161104a57829003601f168201915b5050505050905090565b600061107e338484612d7e565b6001905092915050565b611090612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111169061509f565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161114590614e4e565b60006040518083038185875af1925050503d8060008114611182576040519150601f19603f3d011682016040523d82523d6000602084013e611187565b606091505b50508091505050565b611198612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e9061509f565b60405180910390fd5b6000600760146101000a81548160ff021916908315150217905550565b60186020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60125481565b60115481565b6112a8612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e9061509f565b60405180910390fd5b633b9aca006103e8600161134961128a565b61135391906153ac565b61135d919061537b565b611367919061537b565b8110156113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061517f565b60405180910390fd5b633b9aca00816113b991906153ac565b60198190555050565b60006113cc612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114529061509f565b60405180910390fd5b60148054906101000a900460ff166114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f9061515f565b60405180910390fd5b6001601460156101000a81548160ff0219169083151502179055506001905090565b600c5481565b60006114dd848484612f49565b611590843361158b85604051806060016040528060288152602001615cab60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf59092919063ffffffff16565b612d7e565b600190509392505050565b61dead81565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b601b5481565b60135481565b6000611670338461166b85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1890919063ffffffff16565b612d7e565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460159054906101000a900460ff1681565b6116bb612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117419061509f565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b600d5481565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611853612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d99061509f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006119ad612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a339061509f565b60405180910390fd5b6000601460156101000a81548160ff0219169083151502179055506001905090565b611a66612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec9061509f565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b611b5e612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be49061509f565b60405180910390fd5b82600a8190555081600b8190555080600c81905550600c54600b54600a54611c159190615325565b611c1f9190615325565b60098190555060146009541115611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c629061501f565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf990614f5f565b60405180910390fd5b6000600267ffffffffffffffff811115611d1f57611d1e615677565b5b604051908082528060200260200182016040528015611d4d5781602001602082028036833780820191505090505b5090503081600081518110611d6557611d64615648565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881600181518110611dc857611dc7615648565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e2f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d7e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173983600084601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611eb59594939291906151ba565b600060405180830381600087803b158015611ecf57600080fd5b505af1158015611ee3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611f0c91906148e4565b505050565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b611f87612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d9061509f565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60148054906101000a900460ff1681565b606060048054612053906154f8565b80601f016020809104026020016040519081016040528092919081815260200182805461207f906154f8565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b5050505050905090565b6120de612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121649061509f565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f590614fbf565b60405180910390fd5b6122088282613d59565b5050565b60006122c133846122bc85604051806060016040528060258152602001615cd360259139600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf59092919063ffffffff16565b612d7e565b6001905092915050565b60006122d8338484612f49565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600760149054906101000a900460ff1681565b61231d612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a39061509f565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516124499190614ea7565b60405180910390a25050565b61245d612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e39061509f565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546125149190615325565b61251e9190615325565b600d81905550601e600d54111561256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256190614fdf565b60405180910390fd5b505050565b612577612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd9061509f565b60405180910390fd5b633b9aca006103e8600561261861128a565b61262291906153ac565b61262c919061537b565b612636919061537b565b811015612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266f90614f9f565b60405180910390fd5b633b9aca008161268891906153ac565b601a8190555050565b612699612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271f9061509f565b60405180910390fd5b801561277c5760148054906101000a900460ff1661277b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127729061515f565b60405180910390fd5b5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b60195481565b60085481565b60095481565b601d6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128ab612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461293a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129319061509f565b60405180910390fd5b600760149054906101000a900460ff161561298a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612981906150df565b60405180910390fd5b6000600854146129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c69061513f565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055506001600a819055506002600b819055506003600c81905550600c54600b54600a54612a379190615325565b612a419190615325565b6009819055506003600e819055506002600f819055506004601081905550601054600f54600e54612a729190615325565b612a7c9190615325565b600d81905550565b6000612a8e612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b149061509f565b60405180910390fd5b6000601660006101000a81548160ff0219169083151502179055506001905090565b600b5481565b612b4d612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd39061509f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4390614f1f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b601a5481565b6000808284612d279190615325565b905083811015612d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6390614f7f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de5906150ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5590614f3f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f3c919061519f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb0906150bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302090614eff565b60405180910390fd5b60008114156130435761303e83836000613dfa565b613cf0565b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130e45750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130fa576130f583836000613dfa565b613cf0565b6000601460159054906101000a900460ff161561383c57613119611f29565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156131875750613157611f29565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156131c05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156131fa575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156132135750600760169054906101000a900460ff16155b1561383b57601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132b95750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61348a57601660009054906101000a900460ff1615613489576132da611f29565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133635750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133bd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156134885743601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343a9061505f565b60405180910390fd5b43601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561352d5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135d457601954821115613577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356e9061503f565b60405180910390fd5b601a5461358384611803565b8361358e9190615325565b11156135cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c69061511f565b60405180910390fd5b613772565b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136775750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c6576019548211156136c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b890614fff565b60405180910390fd5b613771565b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661377057601a5461372384611803565b8361372e9190615325565b111561376f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137669061511f565b60405180910390fd5b5b5b5b601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137ce5750600060085414155b80156137dc57506008544311155b1561383a576001601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b600760159054906101000a900460ff1680156138655750600760169054906101000a900460ff16155b80156138bb5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139115750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139675750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139ab576001600760166101000a81548160ff02191690831515021790555061398f61408f565b6000600760166101000a81548160ff0219169083151502179055505b6000600760169054906101000a900460ff16159050601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a615750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a6b57600090505b8015613ce257601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613acc57506000600d54115b15613b9957613af96064613aeb600d54866144f590919063ffffffff16565b61457090919063ffffffff16565b9150600d54600f5483613b0c91906153ac565b613b16919061537b565b60126000828254613b279190615325565b92505081905550600d5460105483613b3f91906153ac565b613b49919061537b565b60136000828254613b5a9190615325565b92505081905550600d54600e5483613b7291906153ac565b613b7c919061537b565b60116000828254613b8d9190615325565b92505081905550613cbe565b601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613bf457506000600954115b15613cbd57613c216064613c13600954866144f590919063ffffffff16565b61457090919063ffffffff16565b9150600954600b5483613c3491906153ac565b613c3e919061537b565b60126000828254613c4f9190615325565b92505081905550600954600c5483613c6791906153ac565b613c71919061537b565b60136000828254613c829190615325565b92505081905550600954600a5483613c9a91906153ac565b613ca4919061537b565b60116000828254613cb59190615325565b925050819055505b5b6000821115613cd357613cd2853084613dfa565b5b8183613cdf9190615406565b92505b613ced858585613dfa565b50505b505050565b6000838311158290613d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d349190614edd565b60405180910390fd5b5060008385613d4c9190615406565b9050809150509392505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e61906150bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ed190614eff565b60405180910390fd5b613ee58383836145ba565b613f5081604051806060016040528060268152602001615c85602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fe3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614082919061519f565b60405180910390a3505050565b600061409a30611803565b905060006013546011546012546140b19190615325565b6140bb9190615325565b905060008214806140cc5750600081145b156140d85750506144f3565b601461271060056140e761128a565b6140f191906153ac565b6140fb919061537b565b61410591906153ac565b82111561413c576014612710600561411b61128a565b61412591906153ac565b61412f919061537b565b61413991906153ac565b91505b60006002826012548561414f91906153ac565b614159919061537b565b614163919061537b565b9050600061417a82856145bf90919063ffffffff16565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016141d9929190614e7e565b602060405180830381600087803b1580156141f357600080fd5b505af1158015614207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061422b919061495a565b50600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161429d9190614e63565b60206040518083038186803b1580156142b557600080fd5b505afa1580156142c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142ed91906149b4565b90506142f882611c70565b60006143cb8273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161436d9190614e63565b60206040518083038186803b15801561438557600080fd5b505afa158015614399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bd91906149b4565b6145bf90919063ffffffff16565b905060006143f6866143e8601154856144f590919063ffffffff16565b61457090919063ffffffff16565b9050600061442187614413601354866144f590919063ffffffff16565b61457090919063ffffffff16565b905060008183856144329190615406565b61443c9190615406565b9050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b4ab637888585856040518563ffffffff1660e01b815260040161449f9493929190615214565b600060405180830381600087803b1580156144b957600080fd5b505af11580156144cd573d6000803e3d6000fd5b505050506000601281905550600060118190555060006013819055505050505050505050505b565b600080831415614508576000905061456a565b6000828461451691906153ac565b9050828482614525919061537b565b14614565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161455c9061507f565b60405180910390fd5b809150505b92915050565b60006145b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614609565b905092915050565b505050565b600061460183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613cf5565b905092915050565b60008083118290614650576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146479190614edd565b60405180910390fd5b506000838561465f919061537b565b9050838561466d919061555b565b818561467991906153ac565b6146839190615325565b85146146925761469161558c565b5b809150509392505050565b60006146b06146ab84615299565b615274565b905080838252602082019050828560208602820111156146d3576146d26156ab565b5b60005b8581101561470357816146e9888261478f565b8452602084019350602083019250506001810190506146d6565b5050509392505050565b60008135905061471c81615c3f565b92915050565b600082601f830112614737576147366156a6565b5b815161474784826020860161469d565b91505092915050565b60008135905061475f81615c56565b92915050565b60008151905061477481615c56565b92915050565b60008135905061478981615c6d565b92915050565b60008151905061479e81615c6d565b92915050565b6000602082840312156147ba576147b96156b5565b5b60006147c88482850161470d565b91505092915050565b600080604083850312156147e8576147e76156b5565b5b60006147f68582860161470d565b92505060206148078582860161470d565b9150509250929050565b60008060006060848603121561482a576148296156b5565b5b60006148388682870161470d565b93505060206148498682870161470d565b925050604061485a8682870161477a565b9150509250925092565b6000806040838503121561487b5761487a6156b5565b5b60006148898582860161470d565b925050602061489a85828601614750565b9150509250929050565b600080604083850312156148bb576148ba6156b5565b5b60006148c98582860161470d565b92505060206148da8582860161477a565b9150509250929050565b6000602082840312156148fa576148f96156b5565b5b600082015167ffffffffffffffff811115614918576149176156b0565b5b61492484828501614722565b91505092915050565b600060208284031215614943576149426156b5565b5b600061495184828501614750565b91505092915050565b6000602082840312156149705761496f6156b5565b5b600061497e84828501614765565b91505092915050565b60006020828403121561499d5761499c6156b5565b5b60006149ab8482850161477a565b91505092915050565b6000602082840312156149ca576149c96156b5565b5b60006149d88482850161478f565b91505092915050565b6000806000606084860312156149fa576149f96156b5565b5b6000614a088682870161477a565b9350506020614a198682870161477a565b9250506040614a2a8682870161477a565b9150509250925092565b6000614a408383614a4c565b60208301905092915050565b614a558161543a565b82525050565b614a648161543a565b82525050565b6000614a75826152d5565b614a7f81856152f8565b9350614a8a836152c5565b8060005b83811015614abb578151614aa28882614a34565b9750614aad836152eb565b925050600181019050614a8e565b5085935050505092915050565b614ad18161544c565b82525050565b614ae08161548f565b82525050565b614aef816154b3565b82525050565b6000614b00826152e0565b614b0a8185615314565b9350614b1a8185602086016154c5565b614b23816156ba565b840191505092915050565b6000614b3b602383615314565b9150614b46826156cb565b604082019050919050565b6000614b5e602683615314565b9150614b698261571a565b604082019050919050565b6000614b81602283615314565b9150614b8c82615769565b604082019050919050565b6000614ba4601683615314565b9150614baf826157b8565b602082019050919050565b6000614bc7601b83615314565b9150614bd2826157e1565b602082019050919050565b6000614bea602483615314565b9150614bf58261580a565b604082019050919050565b6000614c0d603983615314565b9150614c1882615859565b604082019050919050565b6000614c30601d83615314565b9150614c3b826158a8565b602082019050919050565b6000614c53603683615314565b9150614c5e826158d1565b604082019050919050565b6000614c76601d83615314565b9150614c8182615920565b602082019050919050565b6000614c99603583615314565b9150614ca482615949565b604082019050919050565b6000614cbc604983615314565b9150614cc782615998565b606082019050919050565b6000614cdf602183615314565b9150614cea82615a0d565b604082019050919050565b6000614d02602083615314565b9150614d0d82615a5c565b602082019050919050565b6000614d25602583615314565b9150614d3082615a85565b604082019050919050565b6000614d48600083615309565b9150614d5382615ad4565b600082019050919050565b6000614d6b601983615314565b9150614d7682615ad7565b602082019050919050565b6000614d8e602483615314565b9150614d9982615b00565b604082019050919050565b6000614db1601383615314565b9150614dbc82615b4f565b602082019050919050565b6000614dd4602083615314565b9150614ddf82615b78565b602082019050919050565b6000614df7602483615314565b9150614e0282615ba1565b604082019050919050565b6000614e1a602f83615314565b9150614e2582615bf0565b604082019050919050565b614e3981615478565b82525050565b614e4881615482565b82525050565b6000614e5982614d3b565b9150819050919050565b6000602082019050614e786000830184614a5b565b92915050565b6000604082019050614e936000830185614a5b565b614ea06020830184614e30565b9392505050565b6000602082019050614ebc6000830184614ac8565b92915050565b6000602082019050614ed76000830184614ad7565b92915050565b60006020820190508181036000830152614ef78184614af5565b905092915050565b60006020820190508181036000830152614f1881614b2e565b9050919050565b60006020820190508181036000830152614f3881614b51565b9050919050565b60006020820190508181036000830152614f5881614b74565b9050919050565b60006020820190508181036000830152614f7881614b97565b9050919050565b60006020820190508181036000830152614f9881614bba565b9050919050565b60006020820190508181036000830152614fb881614bdd565b9050919050565b60006020820190508181036000830152614fd881614c00565b9050919050565b60006020820190508181036000830152614ff881614c23565b9050919050565b6000602082019050818103600083015261501881614c46565b9050919050565b6000602082019050818103600083015261503881614c69565b9050919050565b6000602082019050818103600083015261505881614c8c565b9050919050565b6000602082019050818103600083015261507881614caf565b9050919050565b6000602082019050818103600083015261509881614cd2565b9050919050565b600060208201905081810360008301526150b881614cf5565b9050919050565b600060208201905081810360008301526150d881614d18565b9050919050565b600060208201905081810360008301526150f881614d5e565b9050919050565b6000602082019050818103600083015261511881614d81565b9050919050565b6000602082019050818103600083015261513881614da4565b9050919050565b6000602082019050818103600083015261515881614dc7565b9050919050565b6000602082019050818103600083015261517881614dea565b9050919050565b6000602082019050818103600083015261519881614e0d565b9050919050565b60006020820190506151b46000830184614e30565b92915050565b600060a0820190506151cf6000830188614e30565b6151dc6020830187614ae6565b81810360408301526151ee8186614a6a565b90506151fd6060830185614a5b565b61520a6080830184614e30565b9695505050505050565b60006080820190506152296000830187614e30565b6152366020830186614e30565b6152436040830185614e30565b6152506060830184614e30565b95945050505050565b600060208201905061526e6000830184614e3f565b92915050565b600061527e61528f565b905061528a828261552a565b919050565b6000604051905090565b600067ffffffffffffffff8211156152b4576152b3615677565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061533082615478565b915061533b83615478565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153705761536f6155bb565b5b828201905092915050565b600061538682615478565b915061539183615478565b9250826153a1576153a06155ea565b5b828204905092915050565b60006153b782615478565b91506153c283615478565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153fb576153fa6155bb565b5b828202905092915050565b600061541182615478565b915061541c83615478565b92508282101561542f5761542e6155bb565b5b828203905092915050565b600061544582615458565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061549a826154a1565b9050919050565b60006154ac82615458565b9050919050565b60006154be82615478565b9050919050565b60005b838110156154e35780820151818401526020810190506154c8565b838111156154f2576000848401525b50505050565b6000600282049050600182168061551057607f821691505b6020821081141561552457615523615619565b5b50919050565b615533826156ba565b810181811067ffffffffffffffff8211171561555257615551615677565b5b80604052505050565b600061556682615478565b915061557183615478565b925082615581576155806155ea565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5377617020436f6e7472616374206e6f74207365742100000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f54726164696e6720697320616c72656164792061637469766500000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f54726164696e672068617320616c7265616479206265656e20656e61626c6564600082015250565b7f596f75206761766520757020796f7572205375706572506f776572732e20536160008201527f6467652100000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b615c488161543a565b8114615c5357600080fd5b50565b615c5f8161544c565b8114615c6a57600080fd5b50565b615c7681615478565b8114615c8157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200cb28606fd13d15170192ec0faca4a616724739e90dff3bc0a99c11d524884ea64736f6c634300080500330000000000000000000000008ea92a4ca400a209a44a584f4a522d274bef5df4
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80637bce5a04116101e7578063c02466681161010d578063daf3f5d1116100a0578063f11a24d31161006f578063f11a24d314610dc7578063f2fde38b14610df2578063f637434214610e1b578063f8b45b0514610e46576103b8565b8063daf3f5d114610d0b578063dd62ed3e14610d48578063e1c7392a14610d85578063e884f26014610d9c576103b8565b8063c876d0b9116100dc578063c876d0b914610c5f578063c8c8ebe414610c8a578063cfd05e8314610cb5578063d85ba06314610ce0576103b8565b8063c024666814610bbb578063c17b5b8c14610be4578063c18bc19514610c0d578063c46223b514610c36576103b8565b8063924de9b711610185578063a457c2d711610154578063a457c2d714610ad9578063a9059cbb14610b16578063b62496f514610b53578063bbc0c74214610b90576103b8565b8063924de9b714610a315780639372d39314610a5a57806395d89b4114610a855780639a7a23d614610ab0576103b8565b806389a30271116101c157806389a30271146109855780638da5cb5b146109b05780638ea83031146109db5780639213691314610a06576103b8565b80637bce5a04146109085780638095d56414610933578063873987e21461095c576103b8565b806327c8f835116102d75780634fbee1931161026a57806370a082311161023957806370a0823114610860578063715018a61461089d578063751039fc146108b45780637571336a146108df576103b8565b80634fbee193146107a25780636042f719146107df5780636a486a8e1461080a5780636ddd171314610835576103b8565b806339509351116102a657806339509351146106e657806349bd5a5e146107235780634a62bb651461074e5780634c7a960614610779576103b8565b806327c8f8351461063a578063313ce56714610665578063378dc3dc14610690578063381bedb5146106bb576103b8565b80631694505e1161034f578063203e727e1161031e578063203e727e1461057e57806321874c8c146105a757806323136371146105d257806323b872dd146105fd576103b8565b80631694505e146104d257806318160ddd146104fd5780631a8145bb146105285780631f3fed8f14610553576103b8565b8063095ea7b31161038b578063095ea7b31461042a5780630e3d57eb146104675780631031e36e1461047e57806310d5de5314610495576103b8565b806305378a41146103bd5780630694db1e146103e857806306fdde03146103ff576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610e71565b6040516103df9190614ea7565b60405180910390f35b3480156103f457600080fd5b506103fd610f2b565b005b34801561040b57600080fd5b50610414610fdf565b6040516104219190614edd565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906148a4565b611071565b60405161045e9190614ea7565b60405180910390f35b34801561047357600080fd5b5061047c611088565b005b34801561048a57600080fd5b50610493611190565b005b3480156104a157600080fd5b506104bc60048036038101906104b791906147a4565b611244565b6040516104c99190614ea7565b60405180910390f35b3480156104de57600080fd5b506104e7611264565b6040516104f49190614ec2565b60405180910390f35b34801561050957600080fd5b5061051261128a565b60405161051f919061519f565b60405180910390f35b34801561053457600080fd5b5061053d611294565b60405161054a919061519f565b60405180910390f35b34801561055f57600080fd5b5061056861129a565b604051610575919061519f565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a09190614987565b6112a0565b005b3480156105b357600080fd5b506105bc6113c2565b6040516105c99190614ea7565b60405180910390f35b3480156105de57600080fd5b506105e76114ca565b6040516105f4919061519f565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190614811565b6114d0565b6040516106319190614ea7565b60405180910390f35b34801561064657600080fd5b5061064f61159b565b60405161065c9190614e63565b60405180910390f35b34801561067157600080fd5b5061067a6115a1565b6040516106879190615259565b60405180910390f35b34801561069c57600080fd5b506106a56115c9565b6040516106b2919061519f565b60405180910390f35b3480156106c757600080fd5b506106d06115cf565b6040516106dd919061519f565b60405180910390f35b3480156106f257600080fd5b5061070d600480360381019061070891906148a4565b6115d5565b60405161071a9190614ea7565b60405180910390f35b34801561072f57600080fd5b5061073861167a565b6040516107459190614e63565b60405180910390f35b34801561075a57600080fd5b506107636116a0565b6040516107709190614ea7565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b91906147a4565b6116b3565b005b3480156107ae57600080fd5b506107c960048036038101906107c491906147a4565b61178e565b6040516107d69190614ea7565b60405180910390f35b3480156107eb57600080fd5b506107f46117e4565b604051610801919061519f565b60405180910390f35b34801561081657600080fd5b5061081f6117ea565b60405161082c919061519f565b60405180910390f35b34801561084157600080fd5b5061084a6117f0565b6040516108579190614ea7565b60405180910390f35b34801561086c57600080fd5b50610887600480360381019061088291906147a4565b611803565b604051610894919061519f565b60405180910390f35b3480156108a957600080fd5b506108b261184b565b005b3480156108c057600080fd5b506108c96119a3565b6040516108d69190614ea7565b60405180910390f35b3480156108eb57600080fd5b5061090660048036038101906109019190614864565b611a5e565b005b34801561091457600080fd5b5061091d611b50565b60405161092a919061519f565b60405180910390f35b34801561093f57600080fd5b5061095a600480360381019061095591906149e1565b611b56565b005b34801561096857600080fd5b50610983600480360381019061097e9190614987565b611c70565b005b34801561099157600080fd5b5061099a611f11565b6040516109a79190614e63565b60405180910390f35b3480156109bc57600080fd5b506109c5611f29565b6040516109d29190614e63565b60405180910390f35b3480156109e757600080fd5b506109f0611f53565b6040516109fd9190614e63565b60405180910390f35b348015610a1257600080fd5b50610a1b611f79565b604051610a28919061519f565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a53919061492d565b611f7f565b005b348015610a6657600080fd5b50610a6f612033565b604051610a7c9190614ea7565b60405180910390f35b348015610a9157600080fd5b50610a9a612044565b604051610aa79190614edd565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad29190614864565b6120d6565b005b348015610ae557600080fd5b50610b006004803603810190610afb91906148a4565b61220c565b604051610b0d9190614ea7565b60405180910390f35b348015610b2257600080fd5b50610b3d6004803603810190610b3891906148a4565b6122cb565b604051610b4a9190614ea7565b60405180910390f35b348015610b5f57600080fd5b50610b7a6004803603810190610b7591906147a4565b6122e2565b604051610b879190614ea7565b60405180910390f35b348015610b9c57600080fd5b50610ba5612302565b604051610bb29190614ea7565b60405180910390f35b348015610bc757600080fd5b50610be26004803603810190610bdd9190614864565b612315565b005b348015610bf057600080fd5b50610c0b6004803603810190610c0691906149e1565b612455565b005b348015610c1957600080fd5b50610c346004803603810190610c2f9190614987565b61256f565b005b348015610c4257600080fd5b50610c5d6004803603810190610c589190614864565b612691565b005b348015610c6b57600080fd5b50610c746127d7565b604051610c819190614ea7565b60405180910390f35b348015610c9657600080fd5b50610c9f6127ea565b604051610cac919061519f565b60405180910390f35b348015610cc157600080fd5b50610cca6127f0565b604051610cd7919061519f565b60405180910390f35b348015610cec57600080fd5b50610cf56127f6565b604051610d02919061519f565b60405180910390f35b348015610d1757600080fd5b50610d326004803603810190610d2d91906147a4565b6127fc565b604051610d3f9190614ea7565b60405180910390f35b348015610d5457600080fd5b50610d6f6004803603810190610d6a91906147d1565b61281c565b604051610d7c919061519f565b60405180910390f35b348015610d9157600080fd5b50610d9a6128a3565b005b348015610da857600080fd5b50610db1612a84565b604051610dbe9190614ea7565b60405180910390f35b348015610dd357600080fd5b50610ddc612b3f565b604051610de9919061519f565b60405180910390f35b348015610dfe57600080fd5b50610e196004803603810190610e1491906147a4565b612b45565b005b348015610e2757600080fd5b50610e30612d0c565b604051610e3d919061519f565b60405180910390f35b348015610e5257600080fd5b50610e5b612d12565b604051610e68919061519f565b60405180910390f35b6000610e7b612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f019061509f565b60405180910390fd5b60006014806101000a81548160ff0219169083151502179055506001905090565b610f33612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb99061509f565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b606060038054610fee906154f8565b80601f016020809104026020016040519081016040528092919081815260200182805461101a906154f8565b80156110675780601f1061103c57610100808354040283529160200191611067565b820191906000526020600020905b81548152906001019060200180831161104a57829003601f168201915b5050505050905090565b600061107e338484612d7e565b6001905092915050565b611090612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111169061509f565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161114590614e4e565b60006040518083038185875af1925050503d8060008114611182576040519150601f19603f3d011682016040523d82523d6000602084013e611187565b606091505b50508091505050565b611198612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e9061509f565b60405180910390fd5b6000600760146101000a81548160ff021916908315150217905550565b60186020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60125481565b60115481565b6112a8612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e9061509f565b60405180910390fd5b633b9aca006103e8600161134961128a565b61135391906153ac565b61135d919061537b565b611367919061537b565b8110156113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061517f565b60405180910390fd5b633b9aca00816113b991906153ac565b60198190555050565b60006113cc612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114529061509f565b60405180910390fd5b60148054906101000a900460ff166114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f9061515f565b60405180910390fd5b6001601460156101000a81548160ff0219169083151502179055506001905090565b600c5481565b60006114dd848484612f49565b611590843361158b85604051806060016040528060288152602001615cab60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf59092919063ffffffff16565b612d7e565b600190509392505050565b61dead81565b60007f0000000000000000000000000000000000000000000000000000000000000009905090565b601b5481565b60135481565b6000611670338461166b85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1890919063ffffffff16565b612d7e565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460159054906101000a900460ff1681565b6116bb612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117419061509f565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b600d5481565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611853612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d99061509f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006119ad612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a339061509f565b60405180910390fd5b6000601460156101000a81548160ff0219169083151502179055506001905090565b611a66612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec9061509f565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b611b5e612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be49061509f565b60405180910390fd5b82600a8190555081600b8190555080600c81905550600c54600b54600a54611c159190615325565b611c1f9190615325565b60098190555060146009541115611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c629061501f565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf990614f5f565b60405180910390fd5b6000600267ffffffffffffffff811115611d1f57611d1e615677565b5b604051908082528060200260200182016040528015611d4d5781602001602082028036833780820191505090505b5090503081600081518110611d6557611d64615648565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881600181518110611dc857611dc7615648565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e2f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d7e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173983600084601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611eb59594939291906151ba565b600060405180830381600087803b158015611ecf57600080fd5b505af1158015611ee3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611f0c91906148e4565b505050565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b611f87612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d9061509f565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60148054906101000a900460ff1681565b606060048054612053906154f8565b80601f016020809104026020016040519081016040528092919081815260200182805461207f906154f8565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b5050505050905090565b6120de612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121649061509f565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f590614fbf565b60405180910390fd5b6122088282613d59565b5050565b60006122c133846122bc85604051806060016040528060258152602001615cd360259139600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf59092919063ffffffff16565b612d7e565b6001905092915050565b60006122d8338484612f49565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600760149054906101000a900460ff1681565b61231d612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a39061509f565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516124499190614ea7565b60405180910390a25050565b61245d612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e39061509f565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546125149190615325565b61251e9190615325565b600d81905550601e600d54111561256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256190614fdf565b60405180910390fd5b505050565b612577612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd9061509f565b60405180910390fd5b633b9aca006103e8600561261861128a565b61262291906153ac565b61262c919061537b565b612636919061537b565b811015612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266f90614f9f565b60405180910390fd5b633b9aca008161268891906153ac565b601a8190555050565b612699612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271f9061509f565b60405180910390fd5b801561277c5760148054906101000a900460ff1661277b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127729061515f565b60405180910390fd5b5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b60195481565b60085481565b60095481565b601d6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128ab612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461293a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129319061509f565b60405180910390fd5b600760149054906101000a900460ff161561298a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612981906150df565b60405180910390fd5b6000600854146129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c69061513f565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055506001600a819055506002600b819055506003600c81905550600c54600b54600a54612a379190615325565b612a419190615325565b6009819055506003600e819055506002600f819055506004601081905550601054600f54600e54612a729190615325565b612a7c9190615325565b600d81905550565b6000612a8e612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b149061509f565b60405180910390fd5b6000601660006101000a81548160ff0219169083151502179055506001905090565b600b5481565b612b4d612d76565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd39061509f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4390614f1f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b601a5481565b6000808284612d279190615325565b905083811015612d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6390614f7f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de5906150ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5590614f3f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f3c919061519f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb0906150bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302090614eff565b60405180910390fd5b60008114156130435761303e83836000613dfa565b613cf0565b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130e45750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130fa576130f583836000613dfa565b613cf0565b6000601460159054906101000a900460ff161561383c57613119611f29565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156131875750613157611f29565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156131c05750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156131fa575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156132135750600760169054906101000a900460ff16155b1561383b57601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132b95750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61348a57601660009054906101000a900460ff1615613489576132da611f29565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133635750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133bd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156134885743601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343a9061505f565b60405180910390fd5b43601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561352d5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135d457601954821115613577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356e9061503f565b60405180910390fd5b601a5461358384611803565b8361358e9190615325565b11156135cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c69061511f565b60405180910390fd5b613772565b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136775750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c6576019548211156136c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b890614fff565b60405180910390fd5b613771565b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661377057601a5461372384611803565b8361372e9190615325565b111561376f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137669061511f565b60405180910390fd5b5b5b5b601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137ce5750600060085414155b80156137dc57506008544311155b1561383a576001601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b600760159054906101000a900460ff1680156138655750600760169054906101000a900460ff16155b80156138bb5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139115750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139675750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139ab576001600760166101000a81548160ff02191690831515021790555061398f61408f565b6000600760166101000a81548160ff0219169083151502179055505b6000600760169054906101000a900460ff16159050601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a615750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a6b57600090505b8015613ce257601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613acc57506000600d54115b15613b9957613af96064613aeb600d54866144f590919063ffffffff16565b61457090919063ffffffff16565b9150600d54600f5483613b0c91906153ac565b613b16919061537b565b60126000828254613b279190615325565b92505081905550600d5460105483613b3f91906153ac565b613b49919061537b565b60136000828254613b5a9190615325565b92505081905550600d54600e5483613b7291906153ac565b613b7c919061537b565b60116000828254613b8d9190615325565b92505081905550613cbe565b601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613bf457506000600954115b15613cbd57613c216064613c13600954866144f590919063ffffffff16565b61457090919063ffffffff16565b9150600954600b5483613c3491906153ac565b613c3e919061537b565b60126000828254613c4f9190615325565b92505081905550600954600c5483613c6791906153ac565b613c71919061537b565b60136000828254613c829190615325565b92505081905550600954600a5483613c9a91906153ac565b613ca4919061537b565b60116000828254613cb59190615325565b925050819055505b5b6000821115613cd357613cd2853084613dfa565b5b8183613cdf9190615406565b92505b613ced858585613dfa565b50505b505050565b6000838311158290613d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d349190614edd565b60405180910390fd5b5060008385613d4c9190615406565b9050809150509392505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e61906150bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ed190614eff565b60405180910390fd5b613ee58383836145ba565b613f5081604051806060016040528060268152602001615c85602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cf59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fe3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d1890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614082919061519f565b60405180910390a3505050565b600061409a30611803565b905060006013546011546012546140b19190615325565b6140bb9190615325565b905060008214806140cc5750600081145b156140d85750506144f3565b601461271060056140e761128a565b6140f191906153ac565b6140fb919061537b565b61410591906153ac565b82111561413c576014612710600561411b61128a565b61412591906153ac565b61412f919061537b565b61413991906153ac565b91505b60006002826012548561414f91906153ac565b614159919061537b565b614163919061537b565b9050600061417a82856145bf90919063ffffffff16565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016141d9929190614e7e565b602060405180830381600087803b1580156141f357600080fd5b505af1158015614207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061422b919061495a565b50600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161429d9190614e63565b60206040518083038186803b1580156142b557600080fd5b505afa1580156142c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142ed91906149b4565b90506142f882611c70565b60006143cb8273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161436d9190614e63565b60206040518083038186803b15801561438557600080fd5b505afa158015614399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143bd91906149b4565b6145bf90919063ffffffff16565b905060006143f6866143e8601154856144f590919063ffffffff16565b61457090919063ffffffff16565b9050600061442187614413601354866144f590919063ffffffff16565b61457090919063ffffffff16565b905060008183856144329190615406565b61443c9190615406565b9050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b4ab637888585856040518563ffffffff1660e01b815260040161449f9493929190615214565b600060405180830381600087803b1580156144b957600080fd5b505af11580156144cd573d6000803e3d6000fd5b505050506000601281905550600060118190555060006013819055505050505050505050505b565b600080831415614508576000905061456a565b6000828461451691906153ac565b9050828482614525919061537b565b14614565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161455c9061507f565b60405180910390fd5b809150505b92915050565b60006145b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614609565b905092915050565b505050565b600061460183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613cf5565b905092915050565b60008083118290614650576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146479190614edd565b60405180910390fd5b506000838561465f919061537b565b9050838561466d919061555b565b818561467991906153ac565b6146839190615325565b85146146925761469161558c565b5b809150509392505050565b60006146b06146ab84615299565b615274565b905080838252602082019050828560208602820111156146d3576146d26156ab565b5b60005b8581101561470357816146e9888261478f565b8452602084019350602083019250506001810190506146d6565b5050509392505050565b60008135905061471c81615c3f565b92915050565b600082601f830112614737576147366156a6565b5b815161474784826020860161469d565b91505092915050565b60008135905061475f81615c56565b92915050565b60008151905061477481615c56565b92915050565b60008135905061478981615c6d565b92915050565b60008151905061479e81615c6d565b92915050565b6000602082840312156147ba576147b96156b5565b5b60006147c88482850161470d565b91505092915050565b600080604083850312156147e8576147e76156b5565b5b60006147f68582860161470d565b92505060206148078582860161470d565b9150509250929050565b60008060006060848603121561482a576148296156b5565b5b60006148388682870161470d565b93505060206148498682870161470d565b925050604061485a8682870161477a565b9150509250925092565b6000806040838503121561487b5761487a6156b5565b5b60006148898582860161470d565b925050602061489a85828601614750565b9150509250929050565b600080604083850312156148bb576148ba6156b5565b5b60006148c98582860161470d565b92505060206148da8582860161477a565b9150509250929050565b6000602082840312156148fa576148f96156b5565b5b600082015167ffffffffffffffff811115614918576149176156b0565b5b61492484828501614722565b91505092915050565b600060208284031215614943576149426156b5565b5b600061495184828501614750565b91505092915050565b6000602082840312156149705761496f6156b5565b5b600061497e84828501614765565b91505092915050565b60006020828403121561499d5761499c6156b5565b5b60006149ab8482850161477a565b91505092915050565b6000602082840312156149ca576149c96156b5565b5b60006149d88482850161478f565b91505092915050565b6000806000606084860312156149fa576149f96156b5565b5b6000614a088682870161477a565b9350506020614a198682870161477a565b9250506040614a2a8682870161477a565b9150509250925092565b6000614a408383614a4c565b60208301905092915050565b614a558161543a565b82525050565b614a648161543a565b82525050565b6000614a75826152d5565b614a7f81856152f8565b9350614a8a836152c5565b8060005b83811015614abb578151614aa28882614a34565b9750614aad836152eb565b925050600181019050614a8e565b5085935050505092915050565b614ad18161544c565b82525050565b614ae08161548f565b82525050565b614aef816154b3565b82525050565b6000614b00826152e0565b614b0a8185615314565b9350614b1a8185602086016154c5565b614b23816156ba565b840191505092915050565b6000614b3b602383615314565b9150614b46826156cb565b604082019050919050565b6000614b5e602683615314565b9150614b698261571a565b604082019050919050565b6000614b81602283615314565b9150614b8c82615769565b604082019050919050565b6000614ba4601683615314565b9150614baf826157b8565b602082019050919050565b6000614bc7601b83615314565b9150614bd2826157e1565b602082019050919050565b6000614bea602483615314565b9150614bf58261580a565b604082019050919050565b6000614c0d603983615314565b9150614c1882615859565b604082019050919050565b6000614c30601d83615314565b9150614c3b826158a8565b602082019050919050565b6000614c53603683615314565b9150614c5e826158d1565b604082019050919050565b6000614c76601d83615314565b9150614c8182615920565b602082019050919050565b6000614c99603583615314565b9150614ca482615949565b604082019050919050565b6000614cbc604983615314565b9150614cc782615998565b606082019050919050565b6000614cdf602183615314565b9150614cea82615a0d565b604082019050919050565b6000614d02602083615314565b9150614d0d82615a5c565b602082019050919050565b6000614d25602583615314565b9150614d3082615a85565b604082019050919050565b6000614d48600083615309565b9150614d5382615ad4565b600082019050919050565b6000614d6b601983615314565b9150614d7682615ad7565b602082019050919050565b6000614d8e602483615314565b9150614d9982615b00565b604082019050919050565b6000614db1601383615314565b9150614dbc82615b4f565b602082019050919050565b6000614dd4602083615314565b9150614ddf82615b78565b602082019050919050565b6000614df7602483615314565b9150614e0282615ba1565b604082019050919050565b6000614e1a602f83615314565b9150614e2582615bf0565b604082019050919050565b614e3981615478565b82525050565b614e4881615482565b82525050565b6000614e5982614d3b565b9150819050919050565b6000602082019050614e786000830184614a5b565b92915050565b6000604082019050614e936000830185614a5b565b614ea06020830184614e30565b9392505050565b6000602082019050614ebc6000830184614ac8565b92915050565b6000602082019050614ed76000830184614ad7565b92915050565b60006020820190508181036000830152614ef78184614af5565b905092915050565b60006020820190508181036000830152614f1881614b2e565b9050919050565b60006020820190508181036000830152614f3881614b51565b9050919050565b60006020820190508181036000830152614f5881614b74565b9050919050565b60006020820190508181036000830152614f7881614b97565b9050919050565b60006020820190508181036000830152614f9881614bba565b9050919050565b60006020820190508181036000830152614fb881614bdd565b9050919050565b60006020820190508181036000830152614fd881614c00565b9050919050565b60006020820190508181036000830152614ff881614c23565b9050919050565b6000602082019050818103600083015261501881614c46565b9050919050565b6000602082019050818103600083015261503881614c69565b9050919050565b6000602082019050818103600083015261505881614c8c565b9050919050565b6000602082019050818103600083015261507881614caf565b9050919050565b6000602082019050818103600083015261509881614cd2565b9050919050565b600060208201905081810360008301526150b881614cf5565b9050919050565b600060208201905081810360008301526150d881614d18565b9050919050565b600060208201905081810360008301526150f881614d5e565b9050919050565b6000602082019050818103600083015261511881614d81565b9050919050565b6000602082019050818103600083015261513881614da4565b9050919050565b6000602082019050818103600083015261515881614dc7565b9050919050565b6000602082019050818103600083015261517881614dea565b9050919050565b6000602082019050818103600083015261519881614e0d565b9050919050565b60006020820190506151b46000830184614e30565b92915050565b600060a0820190506151cf6000830188614e30565b6151dc6020830187614ae6565b81810360408301526151ee8186614a6a565b90506151fd6060830185614a5b565b61520a6080830184614e30565b9695505050505050565b60006080820190506152296000830187614e30565b6152366020830186614e30565b6152436040830185614e30565b6152506060830184614e30565b95945050505050565b600060208201905061526e6000830184614e3f565b92915050565b600061527e61528f565b905061528a828261552a565b919050565b6000604051905090565b600067ffffffffffffffff8211156152b4576152b3615677565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061533082615478565b915061533b83615478565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153705761536f6155bb565b5b828201905092915050565b600061538682615478565b915061539183615478565b9250826153a1576153a06155ea565b5b828204905092915050565b60006153b782615478565b91506153c283615478565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153fb576153fa6155bb565b5b828202905092915050565b600061541182615478565b915061541c83615478565b92508282101561542f5761542e6155bb565b5b828203905092915050565b600061544582615458565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061549a826154a1565b9050919050565b60006154ac82615458565b9050919050565b60006154be82615478565b9050919050565b60005b838110156154e35780820151818401526020810190506154c8565b838111156154f2576000848401525b50505050565b6000600282049050600182168061551057607f821691505b6020821081141561552457615523615619565b5b50919050565b615533826156ba565b810181811067ffffffffffffffff8211171561555257615551615677565b5b80604052505050565b600061556682615478565b915061557183615478565b925082615581576155806155ea565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5377617020436f6e7472616374206e6f74207365742100000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f54726164696e6720697320616c72656164792061637469766500000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f54726164696e672068617320616c7265616479206265656e20656e61626c6564600082015250565b7f596f75206761766520757020796f7572205375706572506f776572732e20536160008201527f6467652100000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b615c488161543a565b8114615c5357600080fd5b50565b615c5f8161544c565b8114615c6a57600080fd5b50565b615c7681615478565b8114615c8157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200cb28606fd13d15170192ec0faca4a616724739e90dff3bc0a99c11d524884ea64736f6c63430008050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008ea92a4ca400a209a44a584f4a522d274bef5df4
-----Decoded View---------------
Arg [0] : _swapContract (address): 0x8EA92A4CA400a209A44A584f4A522d274bEF5DF4
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008ea92a4ca400a209a44a584f4a522d274bef5df4
Deployed Bytecode Sourcemap
21633:14816:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25240:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27143:83;;;;;;;;;;;;;:::i;:::-;;17797;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18665:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36283:161;;;;;;;;;;;;;:::i;:::-;;27052:83;;;;;;;;;;;;;:::i;:::-;;22886:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21719:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18082:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22353:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22313;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27234:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25592:186;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22117:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18840:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21802:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17983:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23032:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22393:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19165:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21767:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22506:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25982:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29509:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22272:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22161:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21904:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18190:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16560:148;;;;;;;;;;;;;:::i;:::-;;25460:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27695:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22043:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28684:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34147:628;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23067:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15918:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22436:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22196:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28577:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22470:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17888:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27849:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19387:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18325:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23296:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21864:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28299:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29093:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27474:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26754:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22724:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22959:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21970:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22009:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23361:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18506:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26122:624;;;;;;;;;;;;;:::i;:::-;;25840:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22080:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16863:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22234:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23001:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25240:120;25296:4;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25325:5:::1;25312:10;::::0;:18:::1;;;;;;;;;;;;;;;;;;25348:4;25341:11;;25240:120:::0;:::o;27143:83::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27214:4:::1;27198:13;;:20;;;;;;;;;;;;;;;;;;27143:83::o:0;17797:::-;17834:13;17867:5;17860:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17797:83;:::o;18665:167::-;18748:4;18765:37;18774:10;18786:7;18795:6;18765:8;:37::i;:::-;18820:4;18813:11;;18665:167;;;;:::o;36283:161::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36342:12:::1;36386:10;36378:24;;36410:21;36378:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36365:71;;;;;36331:113;36283:161::o:0;27052:83::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27122:5:::1;27106:13;;:21;;;;;;;;;;;;;;;;;;27052:83::o:0;22886:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;21719:41::-;;;;;;;;;;;;;:::o;18082:100::-;18135:7;18162:12;;18155:19;;18082:100;:::o;22353:33::-;;;;:::o;22313:::-;;;;:::o;27234:232::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27353:3:::1;27347:4;27343:1;27327:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;27326:30;;;;:::i;:::-;27316:6;:40;;27308:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;27452:5;27442:6;:16;;;;:::i;:::-;27419:20;:39;;;;27234:232:::0;:::o;25592:186::-;25641:4;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25665:10:::1;::::0;::::1;;;;;;;;25657:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;25744:4;25727:14;;:21;;;;;;;;;;;;;;;;;;25766:4;25759:11;;25592:186:::0;:::o;22117:31::-;;;;:::o;18840:317::-;18946:4;18963:36;18973:6;18981:9;18992:6;18963:9;:36::i;:::-;19010:117;19019:6;19027:10;19039:87;19075:6;19039:87;;;;;;;;;;;;;;;;;:11;:19;19051:6;19039:19;;;;;;;;;;;;;;;:31;19059:10;19039:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;19010:8;:117::i;:::-;19145:4;19138:11;;18840:317;;;;;:::o;21802:53::-;21848:6;21802:53;:::o;17983:91::-;18032:5;18057:9;18050:16;;17983:91;:::o;23032:28::-;;;;:::o;22393:34::-;;;;:::o;19165:214::-;19253:4;19270:79;19279:10;19291:7;19300:48;19337:10;19300:11;:23;19312:10;19300:23;;;;;;;;;;;;;;;:32;19324:7;19300:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;19270:8;:79::i;:::-;19367:4;19360:11;;19165:214;;;;:::o;21767:28::-;;;;;;;;;;;;;:::o;22506:33::-;;;;;;;;;;;;;:::o;25982:114::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26075:13:::1;26060:12;;:28;;;;;;;;;;;;;;;;;;25982:114:::0;:::o;29509:125::-;29574:4;29598:19;:28;29618:7;29598:28;;;;;;;;;;;;;;;;;;;;;;;;;29591:35;;29509:125;;;:::o;22272:32::-;;;;:::o;22161:28::-;;;;:::o;21904:31::-;;;;;;;;;;;;;:::o;18190:127::-;18264:7;18291:9;:18;18301:7;18291:18;;;;;;;;;;;;;;;;18284:25;;18190:127;;;:::o;16560:148::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16667:1:::1;16630:40;;16651:6;;;;;;;;;;;16630:40;;;;;;;;;;;;16698:1;16681:6;;:19;;;;;;;;;;;;;;;;;;16560:148::o:0;25460:120::-;25512:4;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25545:5:::1;25528:14;;:22;;;;;;;;;;;;;;;;;;25568:4;25561:11;;25460:120:::0;:::o;27695:144::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27827:4:::1;27785:31;:39;27817:6;27785:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;27695:144:::0;;:::o;22043:30::-;;;;:::o;28684:397::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28825:13:::1;28807:15;:31;;;;28867:13;28849:15;:31;;;;28910:14;28891:16;:33;;;;28986:16;;28968:15;;28950;;:33;;;;:::i;:::-;:52;;;;:::i;:::-;28935:12;:67;;;;29037:2;29021:12;;:18;;29013:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;28684:397:::0;;;:::o;34147:628::-;34245:3;34221:28;;:12;;;;;;;;;;;:28;;;;34213:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;34347:21;34385:1;34371:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34347:40;;34416:4;34398;34403:1;34398:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23098:42;34432:4;34437:1;34432:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;34467:62;34484:4;34499:15;;;;;;;;;;;34517:11;34467:8;:62::i;:::-;34568:15;;;;;;;;;;;:40;;;34623:11;34649:1;34693:4;34712:12;;;;;;;;;;;34739:15;34568:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34202:573;34147:628;:::o;23067:73::-;23098:42;23067:73;:::o;15918:79::-;15956:7;15983:6;;;;;;;;;;;15976:13;;15918:79;:::o;22436:27::-;;;;;;;;;;;;;:::o;22196:31::-;;;;:::o;28577:99::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28661:7:::1;28647:11;;:21;;;;;;;;;;;;;;;;;;28577:99:::0;:::o;22470:29::-;;;;;;;;;;;;:::o;17888:87::-;17927:13;17960:7;17953:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17888:87;:::o;27849:244::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27956:13:::1;;;;;;;;;;;27948:21;;:4;:21;;;;27940:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;28044:41;28073:4;28079:5;28044:28;:41::i;:::-;27849:244:::0;;:::o;19387:265::-;19480:4;19497:125;19506:10;19518:7;19527:94;19564:15;19527:94;;;;;;;;;;;;;;;;;:11;:23;19539:10;19527:23;;;;;;;;;;;;;;;:32;19551:7;19527:32;;;;;;;;;;;;;;;;:36;;:94;;;;;:::i;:::-;19497:8;:125::i;:::-;19640:4;19633:11;;19387:265;;;;:::o;18325:173::-;18411:4;18428:40;18438:10;18450:9;18461:6;18428:9;:40::i;:::-;18486:4;18479:11;;18325:173;;;;:::o;23296:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;21864:33::-;;;;;;;;;;;;;:::o;28299:182::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28415:8:::1;28384:19;:28;28404:7;28384:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;28455:7;28439:34;;;28464:8;28439:34;;;;;;:::i;:::-;;;;;;;;28299:182:::0;;:::o;29093:406::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29236:13:::1;29217:16;:32;;;;29279:13;29260:16;:32;;;;29323:14;29303:17;:34;;;;29402:17;;29383:16;;29364;;:35;;;;:::i;:::-;:55;;;;:::i;:::-;29348:13;:71;;;;29455:2;29438:13;;:19;;29430:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29093:406:::0;;;:::o;27474:213::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27596:3:::1;27590:4;27586:1;27570:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;27569:30;;;;:::i;:::-;27559:6;:40;;27551:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;27673:5;27663:6;:16;;;;:::i;:::-;27651:9;:28;;;;27474:213:::0;:::o;26754:290::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26839:7:::1;26835:161;;;26938:10;::::0;::::1;;;;;;;;26930:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;26835:161;27029:7;27006:14;:20;27021:4;27006:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;26754:290:::0;;:::o;22724:39::-;;;;;;;;;;;;;:::o;22959:35::-;;;;:::o;21970:30::-;;;;:::o;22009:27::-;;;;:::o;23361:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;18506:151::-;18595:7;18622:11;:18;18634:5;18622:18;;;;;;;;;;;;;;;:27;18641:7;18622:27;;;;;;;;;;;;;;;;18615:34;;18506:151;;;;:::o;26122:624::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26177:13:::1;;;;;;;;;;;26176:14;26168:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;26254:1;26239:11;;:16;26231:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;26319:4;26303:13;;:20;;;;;;;;;;;;;;;;;;26348:4;26334:11;;:18;;;;;;;;;;;;;;;;;;26377:12;26363:11;:26;;;;26418:1;26400:15;:19;;;;26448:1;26430:15;:19;;;;26479:1;26460:16;:20;;;;26542:16;;26524:15;;26506;;:33;;;;:::i;:::-;:52;;;;:::i;:::-;26491:12;:67;;;;26590:1;26571:16;:20;;;;26621:1;26602:16;:20;;;;26653:1;26633:17;:21;;;;26719:17;;26700:16;;26681;;:35;;;;:::i;:::-;:55;;;;:::i;:::-;26665:13;:71;;;;26122:624::o:0;25840:134::-;25900:4;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25939:5:::1;25916:20;;:28;;;;;;;;;;;;;;;;;;25962:4;25955:11;;25840:134:::0;:::o;22080:30::-;;;;:::o;16863:244::-;16140:12;:10;:12::i;:::-;16130:22;;:6;;;;;;;;;;;:22;;;16122:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16972:1:::1;16952:22;;:8;:22;;;;16944:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17062:8;17033:38;;17054:6;;;;;;;;;;;17033:38;;;;;;;;;;;;17091:8;17082:6;;:17;;;;;;;;;;;;;;;;;;16863:244:::0;:::o;22234:31::-;;;;:::o;23001:24::-;;;;:::o;10577:181::-;10635:7;10655:9;10671:1;10667;:5;;;;:::i;:::-;10655:17;;10696:1;10691;:6;;10683:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10749:1;10742:8;;;10577:181;;;;:::o;15046:98::-;15099:7;15126:10;15119:17;;15046:98;:::o;21015:346::-;21134:1;21117:19;;:5;:19;;;;21109:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21215:1;21196:21;;:7;:21;;;;21188:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21299:6;21269:11;:18;21281:5;21269:18;;;;;;;;;;;;;;;:27;21288:7;21269:27;;;;;;;;;;;;;;;:36;;;;21337:7;21321:32;;21330:5;21321:32;;;21346:6;21321:32;;;;;;:::i;:::-;;;;;;;;21015:346;;;:::o;29841:4296::-;29989:1;29973:18;;:4;:18;;;;29965:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30066:1;30052:16;;:2;:16;;;;30044:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30142:1;30132:6;:11;30129:92;;;30160:28;30176:4;30182:2;30186:1;30160:15;:28::i;:::-;30203:7;;30129:92;30268:14;:20;30283:4;30268:20;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;30292:14;:18;30307:2;30292:18;;;;;;;;;;;;;;;;;;;;;;;;;30268:42;30264:123;;;30326:28;30342:4;30348:2;30352:1;30326:15;:28::i;:::-;30369:7;;30264:123;30399:12;30431:14;;;;;;;;;;;30428:2005;;;30491:7;:5;:7::i;:::-;30483:15;;:4;:15;;;;:49;;;;;30525:7;:5;:7::i;:::-;30519:13;;:2;:13;;;;30483:49;:86;;;;;30567:1;30553:16;;:2;:16;;;;30483:86;:128;;;;;30604:6;30590:21;;:2;:21;;;;30483:128;:158;;;;;30633:8;;;;;;;;;;;30632:9;30483:158;30461:1961;;;30832:19;:25;30852:4;30832:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30861:19;:23;30881:2;30861:23;;;;;;;;;;;;;;;;;;;;;;;;;30832:52;30826:545;;30913:20;;;;;;;;;;;30909:443;;;30971:7;:5;:7::i;:::-;30965:13;;:2;:13;;;;:47;;;;;30996:15;;;;;;;;;;;30982:30;;:2;:30;;;;30965:47;:79;;;;;31030:13;;;;;;;;;;;31016:28;;:2;:28;;;;30965:79;30961:368;;;31126:12;31084:28;:39;31113:9;31084:39;;;;;;;;;;;;;;;;:54;31076:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;31289:12;31247:28;:39;31276:9;31247:39;;;;;;;;;;;;;;;:54;;;;30961:368;30909:443;30826:545;31423:25;:31;31449:4;31423:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;31459:31;:35;31491:2;31459:35;;;;;;;;;;;;;;;;;;;;;;;;;31458:36;31423:71;31419:762;;;31541:20;;31531:6;:30;;31523:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;31680:9;;31663:13;31673:2;31663:9;:13::i;:::-;31654:6;:22;;;;:::i;:::-;:35;;31646:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31419:762;;;31791:25;:29;31817:2;31791:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;31825:31;:37;31857:4;31825:37;;;;;;;;;;;;;;;;;;;;;;;;;31824:38;31791:71;31787:394;;;31909:20;;31899:6;:30;;31891:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;31787:394;;;32035:31;:35;32067:2;32035:35;;;;;;;;;;;;;;;;;;;;;;;;;32031:150;;32128:9;;32111:13;32121:2;32111:9;:13::i;:::-;32102:6;:22;;;;:::i;:::-;:35;;32094:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32031:150;31787:394;31419:762;32256:25;:31;32282:4;32256:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;32306:1;32291:11;;:16;;32256:51;:82;;;;;32327:11;;32311:12;:27;;32256:82;32252:155;;;32383:4;32362:14;:18;32377:2;32362:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;32252:155;30461:1961;30428:2005;32467:11;;;;;;;;;;;:37;;;;;32496:8;;;;;;;;;;;32495:9;32467:37;:80;;;;;32522:19;:25;32542:4;32522:25;;;;;;;;;;;;;;;;;;;;;;;;;32521:26;32467:80;:121;;;;;32565:19;:23;32585:2;32565:23;;;;;;;;;;;;;;;;;;;;;;;;;32564:24;32467:121;:170;;;;;32606:25;:31;32632:4;32606:31;;;;;;;;;;;;;;;;;;;;;;;;;32605:32;32467:170;32449:314;;;32675:4;32664:8;;:15;;;;;;;;;;;;;;;;;;32708:10;:8;:10::i;:::-;32746:5;32735:8;;:16;;;;;;;;;;;;;;;;;;32449:314;32785:12;32801:8;;;;;;;;;;;32800:9;32785:24;;32910:19;:25;32930:4;32910:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;32939:19;:23;32959:2;32939:23;;;;;;;;;;;;;;;;;;;;;;;;;32910:52;32907:99;;;32989:5;32979:15;;32907:99;33103:7;33100:984;;;33154:25;:29;33180:2;33154:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;33203:1;33187:13;;:17;33154:50;33150:776;;;33231:34;33261:3;33231:25;33242:13;;33231:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;33224:41;;33332:13;;33313:16;;33306:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;33284:18;;:61;;;;;;;:::i;:::-;;;;;;;;33414:13;;33394:17;;33387:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;33364:19;;:63;;;;;;;:::i;:::-;;;;;;;;33494:13;;33475:16;;33468:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;33446:18;;:61;;;;;;;:::i;:::-;;;;;;;;33150:776;;;33568:25;:31;33594:4;33568:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;33618:1;33603:12;;:16;33568:51;33565:361;;;33644:33;33673:3;33644:24;33655:12;;33644:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;33637:40;;33740:12;;33722:15;;33715:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;33693:18;;:59;;;;;;;:::i;:::-;;;;;;;;33820:12;;33801:16;;33794:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;33771:19;;:61;;;;;;;:::i;:::-;;;;;;;;33898:12;;33880:15;;33873:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;33851:18;;:59;;;;;;;:::i;:::-;;;;;;;;33565:361;33150:776;33964:1;33957:4;:8;33954:93;;;33989:42;34005:4;34019;34026;33989:15;:42::i;:::-;33954:93;34068:4;34058:14;;;;;:::i;:::-;;;33100:984;34096:33;34112:4;34118:2;34122:6;34096:15;:33::i;:::-;29954:4183;;29841:4296;;;;:::o;10910:192::-;10996:7;11029:1;11024;:6;;11032:12;11016:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11056:9;11072:1;11068;:5;;;;:::i;:::-;11056:17;;11093:1;11086:8;;;10910:192;;;;;:::o;28101:188::-;28218:5;28184:25;:31;28210:4;28184:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;28275:5;28241:40;;28269:4;28241:40;;;;;;;;;;;;28101:188;;:::o;19660:539::-;19784:1;19766:20;;:6;:20;;;;19758:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19868:1;19847:23;;:9;:23;;;;19839:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19923:47;19944:6;19952:9;19963:6;19923:20;:47::i;:::-;20003:71;20025:6;20003:71;;;;;;;;;;;;;;;;;:9;:17;20013:6;20003:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;19983:9;:17;19993:6;19983:17;;;;;;;;;;;;;;;:91;;;;20108:32;20133:6;20108:9;:20;20118:9;20108:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20085:9;:20;20095:9;20085:20;;;;;;;;;;;;;;;:55;;;;20173:9;20156:35;;20165:6;20156:35;;;20184:6;20156:35;;;;;;:::i;:::-;;;;;;;;19660:539;;;:::o;34789:1486::-;34828:23;34854:24;34872:4;34854:9;:24::i;:::-;34828:50;;34889:25;34959:19;;34938:18;;34917;;:39;;;;:::i;:::-;:61;;;;:::i;:::-;34889:89;;35021:1;35002:15;:20;:46;;;;35047:1;35026:17;:22;35002:46;34999:60;;;35051:7;;;;34999:60;35128:2;35120:5;35116:1;35100:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:25;;;;:::i;:::-;:30;;;;:::i;:::-;35082:15;:48;35079:125;;;35190:2;35182:5;35178:1;35162:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:25;;;;:::i;:::-;:30;;;;:::i;:::-;35144:48;;35079:125;35263:23;35348:1;35328:17;35307:18;;35289:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;35263:86;;35360:27;35390:36;35410:15;35390;:19;;:36;;;;:::i;:::-;35360:66;;35462:4;35447:30;;;35478:12;;;;;;;;;;;35492:15;35447:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35519:26;23098:42;35548:22;;;35571:12;;;;;;;;;;;35548:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35519:65;;35597:38;35615:19;35597:17;:38::i;:::-;35657:19;35679:60;35720:18;23098:42;35679:22;;;35702:12;;;;;;;;;;;35679:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;:60;;;;:::i;:::-;35657:82;;35762:20;35785:58;35825:17;35785:35;35801:18;;35785:11;:15;;:35;;;;:::i;:::-;:39;;:58;;;;:::i;:::-;35762:81;;35854:21;35878:59;35919:17;35878:36;35894:19;;35878:11;:15;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;35854:83;;35958:20;36010:13;35995:12;35981:11;:26;;;;:::i;:::-;:42;;;;:::i;:::-;35958:65;;36078:12;;;;;;;;;;;36065:38;;;36104:15;36121:12;36135:13;36150:12;36065:98;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36197:1;36176:18;:22;;;;36230:1;36209:18;:22;;;;36264:1;36242:19;:23;;;;34817:1458;;;;;;;;;34789:1486;:::o;11110:250::-;11168:7;11197:1;11192;:6;11188:47;;;11222:1;11215:8;;;;11188:47;11247:9;11263:1;11259;:5;;;;:::i;:::-;11247:17;;11292:1;11287;11283;:5;;;;:::i;:::-;:10;11275:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11351:1;11344:8;;;11110:250;;;;;:::o;11368:132::-;11426:7;11453:39;11457:1;11460;11453:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11446:46;;11368:132;;;;:::o;21367:97::-;;;;:::o;10766:136::-;10824:7;10851:43;10855:1;10858;10851:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10844:50;;10766:136;;;;:::o;11508:275::-;11594:7;11626:1;11622;:5;11629:12;11614:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11653:9;11669:1;11665;:5;;;;:::i;:::-;11653:17;;11705:1;11701;:5;;;;:::i;:::-;11697:1;11693;:5;;;;:::i;:::-;:13;;;;:::i;:::-;11688:1;:18;11681:26;;;;:::i;:::-;;11774:1;11767:8;;;11508:275;;;;;:::o;24:744:1:-;131:5;156:81;172:64;229:6;172:64;:::i;:::-;156:81;:::i;:::-;147:90;;257:5;286:6;279:5;272:21;320:4;313:5;309:16;302:23;;346:6;396:3;388:4;380:6;376:17;371:3;367:27;364:36;361:2;;;415:79;;:::i;:::-;361:2;528:1;513:249;538:6;535:1;532:13;513:249;;;606:3;635:48;679:3;667:10;635:48;:::i;:::-;630:3;623:61;713:4;708:3;704:14;697:21;;747:4;742:3;738:14;731:21;;573:189;560:1;557;553:9;548:14;;513:249;;;517:14;137:631;;;;;;;:::o;774:139::-;820:5;858:6;845:20;836:29;;874:33;901:5;874:33;:::i;:::-;826:87;;;;:::o;936:385::-;1018:5;1067:3;1060:4;1052:6;1048:17;1044:27;1034:2;;1075:79;;:::i;:::-;1034:2;1185:6;1179:13;1210:105;1311:3;1303:6;1296:4;1288:6;1284:17;1210:105;:::i;:::-;1201:114;;1024:297;;;;;:::o;1327:133::-;1370:5;1408:6;1395:20;1386:29;;1424:30;1448:5;1424:30;:::i;:::-;1376:84;;;;:::o;1466:137::-;1520:5;1551:6;1545:13;1536:22;;1567:30;1591:5;1567:30;:::i;:::-;1526:77;;;;:::o;1609:139::-;1655:5;1693:6;1680:20;1671:29;;1709:33;1736:5;1709:33;:::i;:::-;1661:87;;;;:::o;1754:143::-;1811:5;1842:6;1836:13;1827:22;;1858:33;1885:5;1858:33;:::i;:::-;1817:80;;;;:::o;1903:329::-;1962:6;2011:2;1999:9;1990:7;1986:23;1982:32;1979:2;;;2017:79;;:::i;:::-;1979:2;2137:1;2162:53;2207:7;2198:6;2187:9;2183:22;2162:53;:::i;:::-;2152:63;;2108:117;1969:263;;;;:::o;2238:474::-;2306:6;2314;2363:2;2351:9;2342:7;2338:23;2334:32;2331:2;;;2369:79;;:::i;:::-;2331:2;2489:1;2514:53;2559:7;2550:6;2539:9;2535:22;2514:53;:::i;:::-;2504:63;;2460:117;2616:2;2642:53;2687:7;2678:6;2667:9;2663:22;2642:53;:::i;:::-;2632:63;;2587:118;2321:391;;;;;:::o;2718:619::-;2795:6;2803;2811;2860:2;2848:9;2839:7;2835:23;2831:32;2828:2;;;2866:79;;:::i;:::-;2828:2;2986:1;3011:53;3056:7;3047:6;3036:9;3032:22;3011:53;:::i;:::-;3001:63;;2957:117;3113:2;3139:53;3184:7;3175:6;3164:9;3160:22;3139:53;:::i;:::-;3129:63;;3084:118;3241:2;3267:53;3312:7;3303:6;3292:9;3288:22;3267:53;:::i;:::-;3257:63;;3212:118;2818:519;;;;;:::o;3343:468::-;3408:6;3416;3465:2;3453:9;3444:7;3440:23;3436:32;3433:2;;;3471:79;;:::i;:::-;3433:2;3591:1;3616:53;3661:7;3652:6;3641:9;3637:22;3616:53;:::i;:::-;3606:63;;3562:117;3718:2;3744:50;3786:7;3777:6;3766:9;3762:22;3744:50;:::i;:::-;3734:60;;3689:115;3423:388;;;;;:::o;3817:474::-;3885:6;3893;3942:2;3930:9;3921:7;3917:23;3913:32;3910:2;;;3948:79;;:::i;:::-;3910:2;4068:1;4093:53;4138:7;4129:6;4118:9;4114:22;4093:53;:::i;:::-;4083:63;;4039:117;4195:2;4221:53;4266:7;4257:6;4246:9;4242:22;4221:53;:::i;:::-;4211:63;;4166:118;3900:391;;;;;:::o;4297:554::-;4392:6;4441:2;4429:9;4420:7;4416:23;4412:32;4409:2;;;4447:79;;:::i;:::-;4409:2;4588:1;4577:9;4573:17;4567:24;4618:18;4610:6;4607:30;4604:2;;;4640:79;;:::i;:::-;4604:2;4745:89;4826:7;4817:6;4806:9;4802:22;4745:89;:::i;:::-;4735:99;;4538:306;4399:452;;;;:::o;4857:323::-;4913:6;4962:2;4950:9;4941:7;4937:23;4933:32;4930:2;;;4968:79;;:::i;:::-;4930:2;5088:1;5113:50;5155:7;5146:6;5135:9;5131:22;5113:50;:::i;:::-;5103:60;;5059:114;4920:260;;;;:::o;5186:345::-;5253:6;5302:2;5290:9;5281:7;5277:23;5273:32;5270:2;;;5308:79;;:::i;:::-;5270:2;5428:1;5453:61;5506:7;5497:6;5486:9;5482:22;5453:61;:::i;:::-;5443:71;;5399:125;5260:271;;;;:::o;5537:329::-;5596:6;5645:2;5633:9;5624:7;5620:23;5616:32;5613:2;;;5651:79;;:::i;:::-;5613:2;5771:1;5796:53;5841:7;5832:6;5821:9;5817:22;5796:53;:::i;:::-;5786:63;;5742:117;5603:263;;;;:::o;5872:351::-;5942:6;5991:2;5979:9;5970:7;5966:23;5962:32;5959:2;;;5997:79;;:::i;:::-;5959:2;6117:1;6142:64;6198:7;6189:6;6178:9;6174:22;6142:64;:::i;:::-;6132:74;;6088:128;5949:274;;;;:::o;6229:619::-;6306:6;6314;6322;6371:2;6359:9;6350:7;6346:23;6342:32;6339:2;;;6377:79;;:::i;:::-;6339:2;6497:1;6522:53;6567:7;6558:6;6547:9;6543:22;6522:53;:::i;:::-;6512:63;;6468:117;6624:2;6650:53;6695:7;6686:6;6675:9;6671:22;6650:53;:::i;:::-;6640:63;;6595:118;6752:2;6778:53;6823:7;6814:6;6803:9;6799:22;6778:53;:::i;:::-;6768:63;;6723:118;6329:519;;;;;:::o;6854:179::-;6923:10;6944:46;6986:3;6978:6;6944:46;:::i;:::-;7022:4;7017:3;7013:14;6999:28;;6934:99;;;;:::o;7039:108::-;7116:24;7134:5;7116:24;:::i;:::-;7111:3;7104:37;7094:53;;:::o;7153:118::-;7240:24;7258:5;7240:24;:::i;:::-;7235:3;7228:37;7218:53;;:::o;7307:732::-;7426:3;7455:54;7503:5;7455:54;:::i;:::-;7525:86;7604:6;7599:3;7525:86;:::i;:::-;7518:93;;7635:56;7685:5;7635:56;:::i;:::-;7714:7;7745:1;7730:284;7755:6;7752:1;7749:13;7730:284;;;7831:6;7825:13;7858:63;7917:3;7902:13;7858:63;:::i;:::-;7851:70;;7944:60;7997:6;7944:60;:::i;:::-;7934:70;;7790:224;7777:1;7774;7770:9;7765:14;;7730:284;;;7734:14;8030:3;8023:10;;7431:608;;;;;;;:::o;8045:109::-;8126:21;8141:5;8126:21;:::i;:::-;8121:3;8114:34;8104:50;;:::o;8160:183::-;8273:63;8330:5;8273:63;:::i;:::-;8268:3;8261:76;8251:92;;:::o;8349:147::-;8444:45;8483:5;8444:45;:::i;:::-;8439:3;8432:58;8422:74;;:::o;8502:364::-;8590:3;8618:39;8651:5;8618:39;:::i;:::-;8673:71;8737:6;8732:3;8673:71;:::i;:::-;8666:78;;8753:52;8798:6;8793:3;8786:4;8779:5;8775:16;8753:52;:::i;:::-;8830:29;8852:6;8830:29;:::i;:::-;8825:3;8821:39;8814:46;;8594:272;;;;;:::o;8872:366::-;9014:3;9035:67;9099:2;9094:3;9035:67;:::i;:::-;9028:74;;9111:93;9200:3;9111:93;:::i;:::-;9229:2;9224:3;9220:12;9213:19;;9018:220;;;:::o;9244:366::-;9386:3;9407:67;9471:2;9466:3;9407:67;:::i;:::-;9400:74;;9483:93;9572:3;9483:93;:::i;:::-;9601:2;9596:3;9592:12;9585:19;;9390:220;;;:::o;9616:366::-;9758:3;9779:67;9843:2;9838:3;9779:67;:::i;:::-;9772:74;;9855:93;9944:3;9855:93;:::i;:::-;9973:2;9968:3;9964:12;9957:19;;9762:220;;;:::o;9988:366::-;10130:3;10151:67;10215:2;10210:3;10151:67;:::i;:::-;10144:74;;10227:93;10316:3;10227:93;:::i;:::-;10345:2;10340:3;10336:12;10329:19;;10134:220;;;:::o;10360:366::-;10502:3;10523:67;10587:2;10582:3;10523:67;:::i;:::-;10516:74;;10599:93;10688:3;10599:93;:::i;:::-;10717:2;10712:3;10708:12;10701:19;;10506:220;;;:::o;10732:366::-;10874:3;10895:67;10959:2;10954:3;10895:67;:::i;:::-;10888:74;;10971:93;11060:3;10971:93;:::i;:::-;11089:2;11084:3;11080:12;11073:19;;10878:220;;;:::o;11104:366::-;11246:3;11267:67;11331:2;11326:3;11267:67;:::i;:::-;11260:74;;11343:93;11432:3;11343:93;:::i;:::-;11461:2;11456:3;11452:12;11445:19;;11250:220;;;:::o;11476:366::-;11618:3;11639:67;11703:2;11698:3;11639:67;:::i;:::-;11632:74;;11715:93;11804:3;11715:93;:::i;:::-;11833:2;11828:3;11824:12;11817:19;;11622:220;;;:::o;11848:366::-;11990:3;12011:67;12075:2;12070:3;12011:67;:::i;:::-;12004:74;;12087:93;12176:3;12087:93;:::i;:::-;12205:2;12200:3;12196:12;12189:19;;11994:220;;;:::o;12220:366::-;12362:3;12383:67;12447:2;12442:3;12383:67;:::i;:::-;12376:74;;12459:93;12548:3;12459:93;:::i;:::-;12577:2;12572:3;12568:12;12561:19;;12366:220;;;:::o;12592:366::-;12734:3;12755:67;12819:2;12814:3;12755:67;:::i;:::-;12748:74;;12831:93;12920:3;12831:93;:::i;:::-;12949:2;12944:3;12940:12;12933:19;;12738:220;;;:::o;12964:366::-;13106:3;13127:67;13191:2;13186:3;13127:67;:::i;:::-;13120:74;;13203:93;13292:3;13203:93;:::i;:::-;13321:2;13316:3;13312:12;13305:19;;13110:220;;;:::o;13336:366::-;13478:3;13499:67;13563:2;13558:3;13499:67;:::i;:::-;13492:74;;13575:93;13664:3;13575:93;:::i;:::-;13693:2;13688:3;13684:12;13677:19;;13482:220;;;:::o;13708:366::-;13850:3;13871:67;13935:2;13930:3;13871:67;:::i;:::-;13864:74;;13947:93;14036:3;13947:93;:::i;:::-;14065:2;14060:3;14056:12;14049:19;;13854:220;;;:::o;14080:366::-;14222:3;14243:67;14307:2;14302:3;14243:67;:::i;:::-;14236:74;;14319:93;14408:3;14319:93;:::i;:::-;14437:2;14432:3;14428:12;14421:19;;14226:220;;;:::o;14452:398::-;14611:3;14632:83;14713:1;14708:3;14632:83;:::i;:::-;14625:90;;14724:93;14813:3;14724:93;:::i;:::-;14842:1;14837:3;14833:11;14826:18;;14615:235;;;:::o;14856:366::-;14998:3;15019:67;15083:2;15078:3;15019:67;:::i;:::-;15012:74;;15095:93;15184:3;15095:93;:::i;:::-;15213:2;15208:3;15204:12;15197:19;;15002:220;;;:::o;15228:366::-;15370:3;15391:67;15455:2;15450:3;15391:67;:::i;:::-;15384:74;;15467:93;15556:3;15467:93;:::i;:::-;15585:2;15580:3;15576:12;15569:19;;15374:220;;;:::o;15600:366::-;15742:3;15763:67;15827:2;15822:3;15763:67;:::i;:::-;15756:74;;15839:93;15928:3;15839:93;:::i;:::-;15957:2;15952:3;15948:12;15941:19;;15746:220;;;:::o;15972:366::-;16114:3;16135:67;16199:2;16194:3;16135:67;:::i;:::-;16128:74;;16211:93;16300:3;16211:93;:::i;:::-;16329:2;16324:3;16320:12;16313:19;;16118:220;;;:::o;16344:366::-;16486:3;16507:67;16571:2;16566:3;16507:67;:::i;:::-;16500:74;;16583:93;16672:3;16583:93;:::i;:::-;16701:2;16696:3;16692:12;16685:19;;16490:220;;;:::o;16716:366::-;16858:3;16879:67;16943:2;16938:3;16879:67;:::i;:::-;16872:74;;16955:93;17044:3;16955:93;:::i;:::-;17073:2;17068:3;17064:12;17057:19;;16862:220;;;:::o;17088:118::-;17175:24;17193:5;17175:24;:::i;:::-;17170:3;17163:37;17153:53;;:::o;17212:112::-;17295:22;17311:5;17295:22;:::i;:::-;17290:3;17283:35;17273:51;;:::o;17330:379::-;17514:3;17536:147;17679:3;17536:147;:::i;:::-;17529:154;;17700:3;17693:10;;17518:191;;;:::o;17715:222::-;17808:4;17846:2;17835:9;17831:18;17823:26;;17859:71;17927:1;17916:9;17912:17;17903:6;17859:71;:::i;:::-;17813:124;;;;:::o;17943:332::-;18064:4;18102:2;18091:9;18087:18;18079:26;;18115:71;18183:1;18172:9;18168:17;18159:6;18115:71;:::i;:::-;18196:72;18264:2;18253:9;18249:18;18240:6;18196:72;:::i;:::-;18069:206;;;;;:::o;18281:210::-;18368:4;18406:2;18395:9;18391:18;18383:26;;18419:65;18481:1;18470:9;18466:17;18457:6;18419:65;:::i;:::-;18373:118;;;;:::o;18497:274::-;18616:4;18654:2;18643:9;18639:18;18631:26;;18667:97;18761:1;18750:9;18746:17;18737:6;18667:97;:::i;:::-;18621:150;;;;:::o;18777:313::-;18890:4;18928:2;18917:9;18913:18;18905:26;;18977:9;18971:4;18967:20;18963:1;18952:9;18948:17;18941:47;19005:78;19078:4;19069:6;19005:78;:::i;:::-;18997:86;;18895:195;;;;:::o;19096:419::-;19262:4;19300:2;19289:9;19285:18;19277:26;;19349:9;19343:4;19339:20;19335:1;19324:9;19320:17;19313:47;19377:131;19503:4;19377:131;:::i;:::-;19369:139;;19267:248;;;:::o;19521:419::-;19687:4;19725:2;19714:9;19710:18;19702:26;;19774:9;19768:4;19764:20;19760:1;19749:9;19745:17;19738:47;19802:131;19928:4;19802:131;:::i;:::-;19794:139;;19692:248;;;:::o;19946:419::-;20112:4;20150:2;20139:9;20135:18;20127:26;;20199:9;20193:4;20189:20;20185:1;20174:9;20170:17;20163:47;20227:131;20353:4;20227:131;:::i;:::-;20219:139;;20117:248;;;:::o;20371:419::-;20537:4;20575:2;20564:9;20560:18;20552:26;;20624:9;20618:4;20614:20;20610:1;20599:9;20595:17;20588:47;20652:131;20778:4;20652:131;:::i;:::-;20644:139;;20542:248;;;:::o;20796:419::-;20962:4;21000:2;20989:9;20985:18;20977:26;;21049:9;21043:4;21039:20;21035:1;21024:9;21020:17;21013:47;21077:131;21203:4;21077:131;:::i;:::-;21069:139;;20967:248;;;:::o;21221:419::-;21387:4;21425:2;21414:9;21410:18;21402:26;;21474:9;21468:4;21464:20;21460:1;21449:9;21445:17;21438:47;21502:131;21628:4;21502:131;:::i;:::-;21494:139;;21392:248;;;:::o;21646:419::-;21812:4;21850:2;21839:9;21835:18;21827:26;;21899:9;21893:4;21889:20;21885:1;21874:9;21870:17;21863:47;21927:131;22053:4;21927:131;:::i;:::-;21919:139;;21817:248;;;:::o;22071:419::-;22237:4;22275:2;22264:9;22260:18;22252:26;;22324:9;22318:4;22314:20;22310:1;22299:9;22295:17;22288:47;22352:131;22478:4;22352:131;:::i;:::-;22344:139;;22242:248;;;:::o;22496:419::-;22662:4;22700:2;22689:9;22685:18;22677:26;;22749:9;22743:4;22739:20;22735:1;22724:9;22720:17;22713:47;22777:131;22903:4;22777:131;:::i;:::-;22769:139;;22667:248;;;:::o;22921:419::-;23087:4;23125:2;23114:9;23110:18;23102:26;;23174:9;23168:4;23164:20;23160:1;23149:9;23145:17;23138:47;23202:131;23328:4;23202:131;:::i;:::-;23194:139;;23092:248;;;:::o;23346:419::-;23512:4;23550:2;23539:9;23535:18;23527:26;;23599:9;23593:4;23589:20;23585:1;23574:9;23570:17;23563:47;23627:131;23753:4;23627:131;:::i;:::-;23619:139;;23517:248;;;:::o;23771:419::-;23937:4;23975:2;23964:9;23960:18;23952:26;;24024:9;24018:4;24014:20;24010:1;23999:9;23995:17;23988:47;24052:131;24178:4;24052:131;:::i;:::-;24044:139;;23942:248;;;:::o;24196:419::-;24362:4;24400:2;24389:9;24385:18;24377:26;;24449:9;24443:4;24439:20;24435:1;24424:9;24420:17;24413:47;24477:131;24603:4;24477:131;:::i;:::-;24469:139;;24367:248;;;:::o;24621:419::-;24787:4;24825:2;24814:9;24810:18;24802:26;;24874:9;24868:4;24864:20;24860:1;24849:9;24845:17;24838:47;24902:131;25028:4;24902:131;:::i;:::-;24894:139;;24792:248;;;:::o;25046:419::-;25212:4;25250:2;25239:9;25235:18;25227:26;;25299:9;25293:4;25289:20;25285:1;25274:9;25270:17;25263:47;25327:131;25453:4;25327:131;:::i;:::-;25319:139;;25217:248;;;:::o;25471:419::-;25637:4;25675:2;25664:9;25660:18;25652:26;;25724:9;25718:4;25714:20;25710:1;25699:9;25695:17;25688:47;25752:131;25878:4;25752:131;:::i;:::-;25744:139;;25642:248;;;:::o;25896:419::-;26062:4;26100:2;26089:9;26085:18;26077:26;;26149:9;26143:4;26139:20;26135:1;26124:9;26120:17;26113:47;26177:131;26303:4;26177:131;:::i;:::-;26169:139;;26067:248;;;:::o;26321:419::-;26487:4;26525:2;26514:9;26510:18;26502:26;;26574:9;26568:4;26564:20;26560:1;26549:9;26545:17;26538:47;26602:131;26728:4;26602:131;:::i;:::-;26594:139;;26492:248;;;:::o;26746:419::-;26912:4;26950:2;26939:9;26935:18;26927:26;;26999:9;26993:4;26989:20;26985:1;26974:9;26970:17;26963:47;27027:131;27153:4;27027:131;:::i;:::-;27019:139;;26917:248;;;:::o;27171:419::-;27337:4;27375:2;27364:9;27360:18;27352:26;;27424:9;27418:4;27414:20;27410:1;27399:9;27395:17;27388:47;27452:131;27578:4;27452:131;:::i;:::-;27444:139;;27342:248;;;:::o;27596:419::-;27762:4;27800:2;27789:9;27785:18;27777:26;;27849:9;27843:4;27839:20;27835:1;27824:9;27820:17;27813:47;27877:131;28003:4;27877:131;:::i;:::-;27869:139;;27767:248;;;:::o;28021:222::-;28114:4;28152:2;28141:9;28137:18;28129:26;;28165:71;28233:1;28222:9;28218:17;28209:6;28165:71;:::i;:::-;28119:124;;;;:::o;28249:831::-;28512:4;28550:3;28539:9;28535:19;28527:27;;28564:71;28632:1;28621:9;28617:17;28608:6;28564:71;:::i;:::-;28645:80;28721:2;28710:9;28706:18;28697:6;28645:80;:::i;:::-;28772:9;28766:4;28762:20;28757:2;28746:9;28742:18;28735:48;28800:108;28903:4;28894:6;28800:108;:::i;:::-;28792:116;;28918:72;28986:2;28975:9;28971:18;28962:6;28918:72;:::i;:::-;29000:73;29068:3;29057:9;29053:19;29044:6;29000:73;:::i;:::-;28517:563;;;;;;;;:::o;29086:553::-;29263:4;29301:3;29290:9;29286:19;29278:27;;29315:71;29383:1;29372:9;29368:17;29359:6;29315:71;:::i;:::-;29396:72;29464:2;29453:9;29449:18;29440:6;29396:72;:::i;:::-;29478;29546:2;29535:9;29531:18;29522:6;29478:72;:::i;:::-;29560;29628:2;29617:9;29613:18;29604:6;29560:72;:::i;:::-;29268:371;;;;;;;:::o;29645:214::-;29734:4;29772:2;29761:9;29757:18;29749:26;;29785:67;29849:1;29838:9;29834:17;29825:6;29785:67;:::i;:::-;29739:120;;;;:::o;29865:129::-;29899:6;29926:20;;:::i;:::-;29916:30;;29955:33;29983:4;29975:6;29955:33;:::i;:::-;29906:88;;;:::o;30000:75::-;30033:6;30066:2;30060:9;30050:19;;30040:35;:::o;30081:311::-;30158:4;30248:18;30240:6;30237:30;30234:2;;;30270:18;;:::i;:::-;30234:2;30320:4;30312:6;30308:17;30300:25;;30380:4;30374;30370:15;30362:23;;30163:229;;;:::o;30398:132::-;30465:4;30488:3;30480:11;;30518:4;30513:3;30509:14;30501:22;;30470:60;;;:::o;30536:114::-;30603:6;30637:5;30631:12;30621:22;;30610:40;;;:::o;30656:99::-;30708:6;30742:5;30736:12;30726:22;;30715:40;;;:::o;30761:113::-;30831:4;30863;30858:3;30854:14;30846:22;;30836:38;;;:::o;30880:184::-;30979:11;31013:6;31008:3;31001:19;31053:4;31048:3;31044:14;31029:29;;30991:73;;;;:::o;31070:147::-;31171:11;31208:3;31193:18;;31183:34;;;;:::o;31223:169::-;31307:11;31341:6;31336:3;31329:19;31381:4;31376:3;31372:14;31357:29;;31319:73;;;;:::o;31398:305::-;31438:3;31457:20;31475:1;31457:20;:::i;:::-;31452:25;;31491:20;31509:1;31491:20;:::i;:::-;31486:25;;31645:1;31577:66;31573:74;31570:1;31567:81;31564:2;;;31651:18;;:::i;:::-;31564:2;31695:1;31692;31688:9;31681:16;;31442:261;;;;:::o;31709:185::-;31749:1;31766:20;31784:1;31766:20;:::i;:::-;31761:25;;31800:20;31818:1;31800:20;:::i;:::-;31795:25;;31839:1;31829:2;;31844:18;;:::i;:::-;31829:2;31886:1;31883;31879:9;31874:14;;31751:143;;;;:::o;31900:348::-;31940:7;31963:20;31981:1;31963:20;:::i;:::-;31958:25;;31997:20;32015:1;31997:20;:::i;:::-;31992:25;;32185:1;32117:66;32113:74;32110:1;32107:81;32102:1;32095:9;32088:17;32084:105;32081:2;;;32192:18;;:::i;:::-;32081:2;32240:1;32237;32233:9;32222:20;;31948:300;;;;:::o;32254:191::-;32294:4;32314:20;32332:1;32314:20;:::i;:::-;32309:25;;32348:20;32366:1;32348:20;:::i;:::-;32343:25;;32387:1;32384;32381:8;32378:2;;;32392:18;;:::i;:::-;32378:2;32437:1;32434;32430:9;32422:17;;32299:146;;;;:::o;32451:96::-;32488:7;32517:24;32535:5;32517:24;:::i;:::-;32506:35;;32496:51;;;:::o;32553:90::-;32587:7;32630:5;32623:13;32616:21;32605:32;;32595:48;;;:::o;32649:126::-;32686:7;32726:42;32719:5;32715:54;32704:65;;32694:81;;;:::o;32781:77::-;32818:7;32847:5;32836:16;;32826:32;;;:::o;32864:86::-;32899:7;32939:4;32932:5;32928:16;32917:27;;32907:43;;;:::o;32956:178::-;33032:9;33065:63;33122:5;33065:63;:::i;:::-;33052:76;;33042:92;;;:::o;33140:139::-;33216:9;33249:24;33267:5;33249:24;:::i;:::-;33236:37;;33226:53;;;:::o;33285:121::-;33343:9;33376:24;33394:5;33376:24;:::i;:::-;33363:37;;33353:53;;;:::o;33412:307::-;33480:1;33490:113;33504:6;33501:1;33498:13;33490:113;;;33589:1;33584:3;33580:11;33574:18;33570:1;33565:3;33561:11;33554:39;33526:2;33523:1;33519:10;33514:15;;33490:113;;;33621:6;33618:1;33615:13;33612:2;;;33701:1;33692:6;33687:3;33683:16;33676:27;33612:2;33461:258;;;;:::o;33725:320::-;33769:6;33806:1;33800:4;33796:12;33786:22;;33853:1;33847:4;33843:12;33874:18;33864:2;;33930:4;33922:6;33918:17;33908:27;;33864:2;33992;33984:6;33981:14;33961:18;33958:38;33955:2;;;34011:18;;:::i;:::-;33955:2;33776:269;;;;:::o;34051:281::-;34134:27;34156:4;34134:27;:::i;:::-;34126:6;34122:40;34264:6;34252:10;34249:22;34228:18;34216:10;34213:34;34210:62;34207:2;;;34275:18;;:::i;:::-;34207:2;34315:10;34311:2;34304:22;34094:238;;;:::o;34338:176::-;34370:1;34387:20;34405:1;34387:20;:::i;:::-;34382:25;;34421:20;34439:1;34421:20;:::i;:::-;34416:25;;34460:1;34450:2;;34465:18;;:::i;:::-;34450:2;34506:1;34503;34499:9;34494:14;;34372:142;;;;:::o;34520:180::-;34568:77;34565:1;34558:88;34665:4;34662:1;34655:15;34689:4;34686:1;34679:15;34706:180;34754:77;34751:1;34744:88;34851:4;34848:1;34841:15;34875:4;34872:1;34865:15;34892:180;34940:77;34937:1;34930:88;35037:4;35034:1;35027:15;35061:4;35058:1;35051:15;35078:180;35126:77;35123:1;35116:88;35223:4;35220:1;35213:15;35247:4;35244:1;35237:15;35264:180;35312:77;35309:1;35302:88;35409:4;35406:1;35399:15;35433:4;35430:1;35423:15;35450:180;35498:77;35495:1;35488:88;35595:4;35592:1;35585:15;35619:4;35616:1;35609:15;35636:117;35745:1;35742;35735:12;35759:117;35868:1;35865;35858:12;35882:117;35991:1;35988;35981:12;36005:117;36114:1;36111;36104:12;36128:102;36169:6;36220:2;36216:7;36211:2;36204:5;36200:14;36196:28;36186:38;;36176:54;;;:::o;36236:222::-;36376:34;36372:1;36364:6;36360:14;36353:58;36445:5;36440:2;36432:6;36428:15;36421:30;36342:116;:::o;36464:225::-;36604:34;36600:1;36592:6;36588:14;36581:58;36673:8;36668:2;36660:6;36656:15;36649:33;36570:119;:::o;36695:221::-;36835:34;36831:1;36823:6;36819:14;36812:58;36904:4;36899:2;36891:6;36887:15;36880:29;36801:115;:::o;36922:172::-;37062:24;37058:1;37050:6;37046:14;37039:48;37028:66;:::o;37100:177::-;37240:29;37236:1;37228:6;37224:14;37217:53;37206:71;:::o;37283:223::-;37423:34;37419:1;37411:6;37407:14;37400:58;37492:6;37487:2;37479:6;37475:15;37468:31;37389:117;:::o;37512:244::-;37652:34;37648:1;37640:6;37636:14;37629:58;37721:27;37716:2;37708:6;37704:15;37697:52;37618:138;:::o;37762:179::-;37902:31;37898:1;37890:6;37886:14;37879:55;37868:73;:::o;37947:241::-;38087:34;38083:1;38075:6;38071:14;38064:58;38156:24;38151:2;38143:6;38139:15;38132:49;38053:135;:::o;38194:179::-;38334:31;38330:1;38322:6;38318:14;38311:55;38300:73;:::o;38379:240::-;38519:34;38515:1;38507:6;38503:14;38496:58;38588:23;38583:2;38575:6;38571:15;38564:48;38485:134;:::o;38625:297::-;38765:34;38761:1;38753:6;38749:14;38742:58;38834:34;38829:2;38821:6;38817:15;38810:59;38903:11;38898:2;38890:6;38886:15;38879:36;38731:191;:::o;38928:220::-;39068:34;39064:1;39056:6;39052:14;39045:58;39137:3;39132:2;39124:6;39120:15;39113:28;39034:114;:::o;39154:182::-;39294:34;39290:1;39282:6;39278:14;39271:58;39260:76;:::o;39342:224::-;39482:34;39478:1;39470:6;39466:14;39459:58;39551:7;39546:2;39538:6;39534:15;39527:32;39448:118;:::o;39572:114::-;39678:8;:::o;39692:175::-;39832:27;39828:1;39820:6;39816:14;39809:51;39798:69;:::o;39873:223::-;40013:34;40009:1;40001:6;39997:14;39990:58;40082:6;40077:2;40069:6;40065:15;40058:31;39979:117;:::o;40102:169::-;40242:21;40238:1;40230:6;40226:14;40219:45;40208:63;:::o;40277:182::-;40417:34;40413:1;40405:6;40401:14;40394:58;40383:76;:::o;40465:223::-;40605:34;40601:1;40593:6;40589:14;40582:58;40674:6;40669:2;40661:6;40657:15;40650:31;40571:117;:::o;40694:234::-;40834:34;40830:1;40822:6;40818:14;40811:58;40903:17;40898:2;40890:6;40886:15;40879:42;40800:128;:::o;40934:122::-;41007:24;41025:5;41007:24;:::i;:::-;41000:5;40997:35;40987:2;;41046:1;41043;41036:12;40987:2;40977:79;:::o;41062:116::-;41132:21;41147:5;41132:21;:::i;:::-;41125:5;41122:32;41112:2;;41168:1;41165;41158:12;41112:2;41102:76;:::o;41184:122::-;41257:24;41275:5;41257:24;:::i;:::-;41250:5;41247:35;41237:2;;41296:1;41293;41286:12;41237:2;41227:79;:::o
Swarm Source
ipfs://0cb28606fd13d15170192ec0faca4a616724739e90dff3bc0a99c11d524884ea
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.