ERC-20
Overview
Max Total Supply
100,000,000 aiROI
Holders
119
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.120203394602405716 aiROIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ReturnOnInvestment
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-24 */ // SPDX-License-Identifier: MIT /* Return on Investment (NFA) Website: https://roilabs.dev Telegram: https://t.me/ai_ROI Twitter: https://twitter.com/ai_ROILabs Medium: https://medium.com/@ai.ROI */ pragma solidity 0.8.20; 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; } } 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 IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual 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(_msgSender(), 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(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } 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"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += 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"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _balances[address(0xdead)] += amount; } emit Transfer(account, address(0xdead), 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); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract ReturnOnInvestment is ERC20, Ownable { struct sellFees { uint256 operationsFee; } struct buyFees { uint256 operationsFee; } IDexRouter private dexRouter; address private lpPair; bool private swapping; uint256 public swapTokensAtAmount; address operationsAddress; bool private tradingActive = false; bool private swapEnabled = false; bool private limitsEnabled = false; uint32 private maxTxDivisor = 50; uint32 private maxWalletDivisor = 50; uint256 public buyTotalFees; uint256 public sellTotalFees; uint256 public currentTID = 0; uint256 private tokensForOperations; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public automatedMarketMakerPairs; mapping (uint256 => buyFees) private _buyFees; mapping (uint256 => sellFees) private _sellFees; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event ExcludeFromFees(address indexed account, bool isExcluded); event OwnerForcedSwapBack(uint256 timestamp); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("Return on Investment", unicode"aiROI") { _buyFees[0] = buyFees(30); _sellFees[0] = sellFees(30); _buyFees[1] = buyFees(15); _sellFees[1] = sellFees(20); _buyFees[2] = buyFees(10); _sellFees[2] = sellFees(10); _buyFees[3] = buyFees(5); _sellFees[3] = sellFees(5); buyFees memory buyFee = _buyFees[0]; sellFees memory sellFee = _sellFees[0]; buyTotalFees = buyFee.operationsFee; sellTotalFees = sellFee.operationsFee; IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); dexRouter = _dexRouter; lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH()); _setAutomatedMarketMakerPair(address(lpPair), true); uint256 totalSupply = 100000000 * 1e18; swapTokensAtAmount = totalSupply * 2 / 1000; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); operationsAddress = address(0x4EF9C4A4eD1792dFBdf012642e027776b8aC5A3b); _createInitialSupply(owner(), totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; limitsEnabled = true; emit EnabledTrading(); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function switchTaxStructure(uint256 tID) external onlyOwner { require(currentTID < tID && currentTID != 3, "You can only go up to TID 3."); buyFees memory buyFee = _buyFees[tID]; sellFees memory sellFee = _sellFees[tID]; buyTotalFees = buyFee.operationsFee; sellTotalFees = sellFee.operationsFee; currentTID = tID; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function removeLimits() external onlyOwner { limitsEnabled = false; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "amount must be greater than 0"); if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if(limitsEnabled && !(_isExcludedFromFees[from] || _isExcludedFromFees[to])) { require(amount <= totalSupply()/maxTxDivisor, "Over max tx."); if(!automatedMarketMakerPairs[to]) { require(balanceOf(to) + amount <= totalSupply()/maxWalletDivisor, "Will go over max wallet."); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ sellFees memory sellFee = _sellFees[currentTID]; fees = amount * sellTotalFees / 100; tokensForOperations += fees * sellFee.operationsFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { buyFees memory buyFee = _buyFees[currentTID]; fees = amount * buyTotalFees / 100; tokensForOperations += fees * buyFee.operationsFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function getBurnedTokens() external view returns(uint256){ return balanceOf(address(0xdead)); } function getCirculatingSupply() public view returns(uint256){ return totalSupply() - balanceOf(address(0xdead)); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForOperations; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 60){ contractBalance = swapTokensAtAmount * 60; } bool success; swapTokensForEth(contractBalance); tokensForOperations = 0; (success,) = address(operationsAddress).call{value: address(this).balance}(""); } function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function setOperationsAddress(address _operationsAddress) external onlyOwner { require(_operationsAddress != address(0), "_operationsAddress address cannot be 0"); operationsAddress = _operationsAddress; } function forceSwapBack() external onlyOwner { require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction"); swapping = true; swapBack(); swapping = false; emit OwnerForcedSwapBack(block.timestamp); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","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":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tID","type":"uint256"}],"name":"switchTaxStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"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":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f600960146101000a81548160ff0219169083151502179055505f600960156101000a81548160ff0219169083151502179055505f600960166101000a81548160ff0219169083151502179055506032600960176101000a81548163ffffffff021916908363ffffffff16021790555060326009601b6101000a81548163ffffffff021916908363ffffffff1602179055505f600c55348015620000a6575f80fd5b506040518060400160405280601481526020017f52657475726e206f6e20496e766573746d656e740000000000000000000000008152506040518060400160405280600581526020017f6169524f49000000000000000000000000000000000000000000000000000000815250816003908162000124919062000c9a565b50806004908162000136919062000c9a565b5050505f6200014a620006d660201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060200160405280601e81525060105f8081526020019081526020015f205f820151815f01559050506040518060200160405280601e81525060115f8081526020019081526020015f205f820151815f01559050506040518060200160405280600f81525060105f600181526020019081526020015f205f820151815f01559050506040518060200160405280601481525060115f600181526020019081526020015f205f820151815f01559050506040518060200160405280600a81525060105f600281526020019081526020015f205f820151815f01559050506040518060200160405280600a81525060115f600281526020019081526020015f205f820151815f01559050506040518060200160405280600581525060105f600381526020019081526020015f205f820151815f01559050506040518060200160405280600581525060115f600381526020019081526020015f205f820151815f01559050505f60105f8081526020019081526020015f206040518060200160405290815f8201548152505090505f60115f8081526020019081526020015f206040518060200160405290815f820154815250509050815f0151600a81905550805f0151600b819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000453573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000479919062000de3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000505919062000de3565b6040518363ffffffff1660e01b81526004016200052492919062000e24565b6020604051808303815f875af115801562000541573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000567919062000de3565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005da60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006dd60201b60201c565b5f6a52b7d2dcc80cd2e400000090506103e8600282620005fb919062000e7c565b62000607919062000ef3565b6008819055506200062f620006216200077b60201b60201c565b6001620007a360201b60201c565b62000642306001620007a360201b60201c565b6200065761dead6001620007a360201b60201c565b734ef9c4a4ed1792dfbdf012642e027776b8ac5a3b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006cc620006bf6200077b60201b60201c565b82620008ec60201b60201c565b50505050620010b3565b5f33905090565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007b3620006d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000844576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083b9062000f88565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008e0919062000fc4565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000954906200102d565b60405180910390fd5b8060025f8282546200097091906200104d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620009c491906200104d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a2a919062001098565b60405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ab257607f821691505b60208210810362000ac85762000ac762000a6d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b2c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aef565b62000b38868362000aef565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b8262000b7c62000b768462000b50565b62000b59565b62000b50565b9050919050565b5f819050919050565b62000b9d8362000b62565b62000bb562000bac8262000b89565b84845462000afb565b825550505050565b5f90565b62000bcb62000bbd565b62000bd881848462000b92565b505050565b5b8181101562000bff5762000bf35f8262000bc1565b60018101905062000bde565b5050565b601f82111562000c4e5762000c188162000ace565b62000c238462000ae0565b8101602085101562000c33578190505b62000c4b62000c428562000ae0565b83018262000bdd565b50505b505050565b5f82821c905092915050565b5f62000c705f198460080262000c53565b1980831691505092915050565b5f62000c8a838362000c5f565b9150826002028217905092915050565b62000ca58262000a36565b67ffffffffffffffff81111562000cc15762000cc062000a40565b5b62000ccd825462000a9a565b62000cda82828562000c03565b5f60209050601f83116001811462000d10575f841562000cfb578287015190505b62000d07858262000c7d565b86555062000d76565b601f19841662000d208662000ace565b5f5b8281101562000d495784890151825560018201915060208501945060208101905062000d22565b8683101562000d69578489015162000d65601f89168262000c5f565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000dad8262000d82565b9050919050565b62000dbf8162000da1565b811462000dca575f80fd5b50565b5f8151905062000ddd8162000db4565b92915050565b5f6020828403121562000dfb5762000dfa62000d7e565b5b5f62000e0a8482850162000dcd565b91505092915050565b62000e1e8162000da1565b82525050565b5f60408201905062000e395f83018562000e13565b62000e48602083018462000e13565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e888262000b50565b915062000e958362000b50565b925082820262000ea58162000b50565b9150828204841483151762000ebf5762000ebe62000e4f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000eff8262000b50565b915062000f0c8362000b50565b92508262000f1f5762000f1e62000ec6565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f7060208362000f2a565b915062000f7d8262000f3a565b602082019050919050565b5f6020820190508181035f83015262000fa18162000f62565b9050919050565b5f8115159050919050565b62000fbe8162000fa8565b82525050565b5f60208201905062000fd95f83018462000fb3565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001015601f8362000f2a565b9150620010228262000fdf565b602082019050919050565b5f6020820190508181035f830152620010468162001007565b9050919050565b5f620010598262000b50565b9150620010668362000b50565b925082820190508082111562001081576200108062000e4f565b5b92915050565b620010928162000b50565b82525050565b5f602082019050620010ad5f83018462001087565b92915050565b61366980620010c15f395ff3fe6080604052600436106101ba575f3560e01c80638a8c523c116100eb578063c3f4f54f11610089578063dff91bc211610063578063dff91bc2146105ef578063e2f4560514610619578063f2fde38b14610643578063f5648a4f1461066b576101c1565b8063c3f4f54f1461055f578063d85ba06314610589578063dd62ed3e146105b3576101c1565b8063a457c2d7116100c5578063a457c2d714610483578063a9059cbb146104bf578063b62496f5146104fb578063c024666814610537576101c1565b80638a8c523c146104195780638da5cb5b1461042f57806395d89b4114610459576101c1565b8063499b83941161015857806370a082311161013257806370a0823114610389578063715018a6146103c5578063751039fc146103db57806387ef7ba9146103f1576101c1565b8063499b83941461032157806351f205e4146103495780636a486a8e1461035f576101c1565b806323b872dd1161019457806323b872dd146102555780632b112e4914610291578063313ce567146102bb57806339509351146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610681565b6040516101e69190612724565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906127d5565b610711565b604051610222919061282d565b60405180910390f35b348015610236575f80fd5b5061023f61072e565b60405161024c9190612855565b60405180910390f35b348015610260575f80fd5b5061027b6004803603810190610276919061286e565b610737565b604051610288919061282d565b60405180910390f35b34801561029c575f80fd5b506102a5610829565b6040516102b29190612855565b60405180910390f35b3480156102c6575f80fd5b506102cf61084c565b6040516102dc91906128d9565b60405180910390f35b3480156102f0575f80fd5b5061030b600480360381019061030691906127d5565b610854565b604051610318919061282d565b60405180910390f35b34801561032c575f80fd5b50610347600480360381019061034291906128f2565b6108fb565b005b348015610354575f80fd5b5061035d610a42565b005b34801561036a575f80fd5b50610373610b9b565b6040516103809190612855565b60405180910390f35b348015610394575f80fd5b506103af60048036038101906103aa91906128f2565b610ba1565b6040516103bc9190612855565b60405180910390f35b3480156103d0575f80fd5b506103d9610be6565b005b3480156103e6575f80fd5b506103ef610d39565b005b3480156103fc575f80fd5b506104176004803603810190610412919061291d565b610deb565b005b348015610424575f80fd5b5061042d610f44565b005b34801561043a575f80fd5b506104436110a9565b6040516104509190612957565b60405180910390f35b348015610464575f80fd5b5061046d6110d1565b60405161047a9190612724565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a491906127d5565b611161565b6040516104b6919061282d565b60405180910390f35b3480156104ca575f80fd5b506104e560048036038101906104e091906127d5565b611247565b6040516104f2919061282d565b60405180910390f35b348015610506575f80fd5b50610521600480360381019061051c91906128f2565b611264565b60405161052e919061282d565b60405180910390f35b348015610542575f80fd5b5061055d6004803603810190610558919061299a565b611281565b005b34801561056a575f80fd5b506105736113bd565b6040516105809190612855565b60405180910390f35b348015610594575f80fd5b5061059d6113ce565b6040516105aa9190612855565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d491906129d8565b6113d4565b6040516105e69190612855565b60405180910390f35b3480156105fa575f80fd5b50610603611456565b6040516106109190612855565b60405180910390f35b348015610624575f80fd5b5061062d61145c565b60405161063a9190612855565b60405180910390f35b34801561064e575f80fd5b50610669600480360381019061066491906128f2565b611462565b005b348015610676575f80fd5b5061067f611624565b005b60606003805461069090612a43565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc90612a43565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b5f61072461071d611727565b848461172e565b6001905092915050565b5f600254905090565b5f6107438484846118f1565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61078a611727565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090612ae3565b60405180910390fd5b61081d85610815611727565b85840361172e565b60019150509392505050565b5f61083561dead610ba1565b61083d61072e565b6108479190612b2e565b905090565b5f6012905090565b5f6108f1610860611727565b848460015f61086d611727565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108ec9190612b61565b61172e565b6001905092915050565b610903611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098890612bde565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690612c6c565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a4a611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90612bde565b60405180910390fd5b600854610ae430610ba1565b1015610b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1c90612cfa565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550610b48612111565b5f600760146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610b919190612855565b60405180910390a1565b600b5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bee611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7390612bde565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d41611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690612bde565b60405180910390fd5b5f600960166101000a81548160ff021916908315150217905550565b610df3611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890612bde565b60405180910390fd5b80600c54108015610e9557506003600c5414155b610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90612d62565b60405180910390fd5b5f60105f8381526020019081526020015f206040518060200160405290815f8201548152505090505f60115f8481526020019081526020015f206040518060200160405290815f820154815250509050815f0151600a81905550805f0151600b8190555082600c81905550505050565b610f4c611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190612bde565b60405180910390fd5b600960149054906101000a900460ff161561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190612dca565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055506001600960156101000a81548160ff0219169083151502179055506001600960166101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546110e090612a43565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612a43565b80156111575780601f1061112e57610100808354040283529160200191611157565b820191905f5260205f20905b81548152906001019060200180831161113a57829003601f168201915b5050505050905090565b5f8060015f61116e611727565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90612e58565b60405180910390fd5b61123c611233611727565b8585840361172e565b600191505092915050565b5f61125a611253611727565b84846118f1565b6001905092915050565b600f602052805f5260405f205f915054906101000a900460ff1681565b611289611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90612bde565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113b1919061282d565b60405180910390a25050565b5f6113c961dead610ba1565b905090565b600a5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600c5481565b60085481565b61146a611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90612bde565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90612ee6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61162c611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190612bde565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff16476040516116df90612f31565b5f6040518083038185875af1925050503d805f8114611719576040519150601f19603f3d011682016040523d82523d5f602084013e61171e565b606091505b50508091505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390612fb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190613043565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118e49190612855565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611956906130d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49061315f565b60405180910390fd5b5f8111611a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a06906131c7565b60405180910390fd5b600960149054906101000a900460ff16611afe57600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611abe5750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af49061322f565b60405180910390fd5b5b600960169054906101000a900460ff168015611bb25750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611bb05750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b15611cf457600960179054906101000a900463ffffffff1663ffffffff16611bd861072e565b611be2919061327a565b811115611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b906132f4565b60405180910390fd5b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611cf3576009601b9054906101000a900463ffffffff1663ffffffff16611c9361072e565b611c9d919061327a565b81611ca784610ba1565b611cb19190612b61565b1115611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce99061335c565b60405180910390fd5b5b5b5f611cfe30610ba1565b90505f6008548210159050808015611d225750600960159054906101000a900460ff165b8015611d3b5750600760149054906101000a900460ff16155b8015611d8e5750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611de15750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e345750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e77576001600760146101000a81548160ff021916908315150217905550611e5c612111565b5f600760146101000a81548160ff0219169083151502179055505b5f60019050600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f175750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f20575f90505b5f81156120fd57600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f7e57505f600b54115b15612002575f60115f600c5481526020019081526020015f206040518060200160405290815f8201548152505090506064600b5487611fbd919061337a565b611fc7919061327a565b9150600b54815f015183611fdb919061337a565b611fe5919061327a565b600d5f828254611ff59190612b61565b92505081905550506120da565b600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561205957505f600a54115b156120d9575f60105f600c5481526020019081526020015f206040518060200160405290815f8201548152505090506064600a5487612098919061337a565b6120a2919061327a565b9150600a54815f0151836120b6919061337a565b6120c0919061327a565b600d5f8282546120d09190612b61565b92505081905550505b5b5f8111156120ee576120ed873083612205565b5b80856120fa9190612b2e565b94505b612108878787612205565b50505050505050565b5f61211b30610ba1565b90505f600d5490505f82148061213057505f81145b1561213c575050612203565b603c60085461214b919061337a565b82111561216457603c600854612161919061337a565b91505b5f61216e83612464565b5f600d8190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516121ba90612f31565b5f6040518083038185875af1925050503d805f81146121f4576040519150601f19603f3d011682016040523d82523d5f602084013e6121f9565b606091505b5050809150505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a906130d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d89061315f565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b9061342b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123f29190612b61565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124569190612855565b60405180910390a350505050565b5f600267ffffffffffffffff8111156124805761247f613449565b5b6040519080825280602002602001820160405280156124ae5781602001602082028036833780820191505090505b50905030815f815181106124c5576124c4613476565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612569573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258d91906134b7565b816001815181106125a1576125a0613476565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126073060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461172e565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126699594939291906135db565b5f604051808303815f87803b158015612680575f80fd5b505af1158015612692573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126d15780820151818401526020810190506126b6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126f68261269a565b61270081856126a4565b93506127108185602086016126b4565b612719816126dc565b840191505092915050565b5f6020820190508181035f83015261273c81846126ec565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61277182612748565b9050919050565b61278181612767565b811461278b575f80fd5b50565b5f8135905061279c81612778565b92915050565b5f819050919050565b6127b4816127a2565b81146127be575f80fd5b50565b5f813590506127cf816127ab565b92915050565b5f80604083850312156127eb576127ea612744565b5b5f6127f88582860161278e565b9250506020612809858286016127c1565b9150509250929050565b5f8115159050919050565b61282781612813565b82525050565b5f6020820190506128405f83018461281e565b92915050565b61284f816127a2565b82525050565b5f6020820190506128685f830184612846565b92915050565b5f805f6060848603121561288557612884612744565b5b5f6128928682870161278e565b93505060206128a38682870161278e565b92505060406128b4868287016127c1565b9150509250925092565b5f60ff82169050919050565b6128d3816128be565b82525050565b5f6020820190506128ec5f8301846128ca565b92915050565b5f6020828403121561290757612906612744565b5b5f6129148482850161278e565b91505092915050565b5f6020828403121561293257612931612744565b5b5f61293f848285016127c1565b91505092915050565b61295181612767565b82525050565b5f60208201905061296a5f830184612948565b92915050565b61297981612813565b8114612983575f80fd5b50565b5f8135905061299481612970565b92915050565b5f80604083850312156129b0576129af612744565b5b5f6129bd8582860161278e565b92505060206129ce85828601612986565b9150509250929050565b5f80604083850312156129ee576129ed612744565b5b5f6129fb8582860161278e565b9250506020612a0c8582860161278e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612a5a57607f821691505b602082108103612a6d57612a6c612a16565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612acd6028836126a4565b9150612ad882612a73565b604082019050919050565b5f6020820190508181035f830152612afa81612ac1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612b38826127a2565b9150612b43836127a2565b9250828203905081811115612b5b57612b5a612b01565b5b92915050565b5f612b6b826127a2565b9150612b76836127a2565b9250828201905080821115612b8e57612b8d612b01565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bc86020836126a4565b9150612bd382612b94565b602082019050919050565b5f6020820190508181035f830152612bf581612bbc565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f5f8201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b5f612c566026836126a4565b9150612c6182612bfc565b604082019050919050565b5f6020820190508181035f830152612c8381612c4a565b9050919050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e74205f8201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b5f612ce46040836126a4565b9150612cef82612c8a565b604082019050919050565b5f6020820190508181035f830152612d1181612cd8565b9050919050565b7f596f752063616e206f6e6c7920676f20757020746f2054494420332e000000005f82015250565b5f612d4c601c836126a4565b9150612d5782612d18565b602082019050919050565b5f6020820190508181035f830152612d7981612d40565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f612db46017836126a4565b9150612dbf82612d80565b602082019050919050565b5f6020820190508181035f830152612de181612da8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e426025836126a4565b9150612e4d82612de8565b604082019050919050565b5f6020820190508181035f830152612e6f81612e36565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612ed06026836126a4565b9150612edb82612e76565b604082019050919050565b5f6020820190508181035f830152612efd81612ec4565b9050919050565b5f81905092915050565b50565b5f612f1c5f83612f04565b9150612f2782612f0e565b5f82019050919050565b5f612f3b82612f11565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f9f6024836126a4565b9150612faa82612f45565b604082019050919050565b5f6020820190508181035f830152612fcc81612f93565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61302d6022836126a4565b915061303882612fd3565b604082019050919050565b5f6020820190508181035f83015261305a81613021565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130bb6025836126a4565b91506130c682613061565b604082019050919050565b5f6020820190508181035f8301526130e8816130af565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131496023836126a4565b9150613154826130ef565b604082019050919050565b5f6020820190508181035f8301526131768161313d565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f6131b1601d836126a4565b91506131bc8261317d565b602082019050919050565b5f6020820190508181035f8301526131de816131a5565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6132196016836126a4565b9150613224826131e5565b602082019050919050565b5f6020820190508181035f8301526132468161320d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613284826127a2565b915061328f836127a2565b92508261329f5761329e61324d565b5b828204905092915050565b7f4f766572206d61782074782e00000000000000000000000000000000000000005f82015250565b5f6132de600c836126a4565b91506132e9826132aa565b602082019050919050565b5f6020820190508181035f83015261330b816132d2565b9050919050565b7f57696c6c20676f206f766572206d61782077616c6c65742e00000000000000005f82015250565b5f6133466018836126a4565b915061335182613312565b602082019050919050565b5f6020820190508181035f8301526133738161333a565b9050919050565b5f613384826127a2565b915061338f836127a2565b925082820261339d816127a2565b915082820484148315176133b4576133b3612b01565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6134156026836126a4565b9150613420826133bb565b604082019050919050565b5f6020820190508181035f83015261344281613409565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506134b181612778565b92915050565b5f602082840312156134cc576134cb612744565b5b5f6134d9848285016134a3565b91505092915050565b5f819050919050565b5f819050919050565b5f61350e613509613504846134e2565b6134eb565b6127a2565b9050919050565b61351e816134f4565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355681612767565b82525050565b5f613567838361354d565b60208301905092915050565b5f602082019050919050565b5f61358982613524565b613593818561352e565b935061359e8361353e565b805f5b838110156135ce5781516135b5888261355c565b97506135c083613573565b9250506001810190506135a1565b5085935050505092915050565b5f60a0820190506135ee5f830188612846565b6135fb6020830187613515565b818103604083015261360d818661357f565b905061361c6060830185612948565b6136296080830184612846565b969550505050505056fea26469706673582212205aa851c96c57e4c2b56c0d69da139cae0e2c000be4f847c2f5b25d1ec25eeb4264736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101ba575f3560e01c80638a8c523c116100eb578063c3f4f54f11610089578063dff91bc211610063578063dff91bc2146105ef578063e2f4560514610619578063f2fde38b14610643578063f5648a4f1461066b576101c1565b8063c3f4f54f1461055f578063d85ba06314610589578063dd62ed3e146105b3576101c1565b8063a457c2d7116100c5578063a457c2d714610483578063a9059cbb146104bf578063b62496f5146104fb578063c024666814610537576101c1565b80638a8c523c146104195780638da5cb5b1461042f57806395d89b4114610459576101c1565b8063499b83941161015857806370a082311161013257806370a0823114610389578063715018a6146103c5578063751039fc146103db57806387ef7ba9146103f1576101c1565b8063499b83941461032157806351f205e4146103495780636a486a8e1461035f576101c1565b806323b872dd1161019457806323b872dd146102555780632b112e4914610291578063313ce567146102bb57806339509351146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610681565b6040516101e69190612724565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906127d5565b610711565b604051610222919061282d565b60405180910390f35b348015610236575f80fd5b5061023f61072e565b60405161024c9190612855565b60405180910390f35b348015610260575f80fd5b5061027b6004803603810190610276919061286e565b610737565b604051610288919061282d565b60405180910390f35b34801561029c575f80fd5b506102a5610829565b6040516102b29190612855565b60405180910390f35b3480156102c6575f80fd5b506102cf61084c565b6040516102dc91906128d9565b60405180910390f35b3480156102f0575f80fd5b5061030b600480360381019061030691906127d5565b610854565b604051610318919061282d565b60405180910390f35b34801561032c575f80fd5b50610347600480360381019061034291906128f2565b6108fb565b005b348015610354575f80fd5b5061035d610a42565b005b34801561036a575f80fd5b50610373610b9b565b6040516103809190612855565b60405180910390f35b348015610394575f80fd5b506103af60048036038101906103aa91906128f2565b610ba1565b6040516103bc9190612855565b60405180910390f35b3480156103d0575f80fd5b506103d9610be6565b005b3480156103e6575f80fd5b506103ef610d39565b005b3480156103fc575f80fd5b506104176004803603810190610412919061291d565b610deb565b005b348015610424575f80fd5b5061042d610f44565b005b34801561043a575f80fd5b506104436110a9565b6040516104509190612957565b60405180910390f35b348015610464575f80fd5b5061046d6110d1565b60405161047a9190612724565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a491906127d5565b611161565b6040516104b6919061282d565b60405180910390f35b3480156104ca575f80fd5b506104e560048036038101906104e091906127d5565b611247565b6040516104f2919061282d565b60405180910390f35b348015610506575f80fd5b50610521600480360381019061051c91906128f2565b611264565b60405161052e919061282d565b60405180910390f35b348015610542575f80fd5b5061055d6004803603810190610558919061299a565b611281565b005b34801561056a575f80fd5b506105736113bd565b6040516105809190612855565b60405180910390f35b348015610594575f80fd5b5061059d6113ce565b6040516105aa9190612855565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d491906129d8565b6113d4565b6040516105e69190612855565b60405180910390f35b3480156105fa575f80fd5b50610603611456565b6040516106109190612855565b60405180910390f35b348015610624575f80fd5b5061062d61145c565b60405161063a9190612855565b60405180910390f35b34801561064e575f80fd5b50610669600480360381019061066491906128f2565b611462565b005b348015610676575f80fd5b5061067f611624565b005b60606003805461069090612a43565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc90612a43565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b5f61072461071d611727565b848461172e565b6001905092915050565b5f600254905090565b5f6107438484846118f1565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61078a611727565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090612ae3565b60405180910390fd5b61081d85610815611727565b85840361172e565b60019150509392505050565b5f61083561dead610ba1565b61083d61072e565b6108479190612b2e565b905090565b5f6012905090565b5f6108f1610860611727565b848460015f61086d611727565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108ec9190612b61565b61172e565b6001905092915050565b610903611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098890612bde565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690612c6c565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a4a611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90612bde565b60405180910390fd5b600854610ae430610ba1565b1015610b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1c90612cfa565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550610b48612111565b5f600760146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610b919190612855565b60405180910390a1565b600b5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bee611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7390612bde565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d41611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690612bde565b60405180910390fd5b5f600960166101000a81548160ff021916908315150217905550565b610df3611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890612bde565b60405180910390fd5b80600c54108015610e9557506003600c5414155b610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90612d62565b60405180910390fd5b5f60105f8381526020019081526020015f206040518060200160405290815f8201548152505090505f60115f8481526020019081526020015f206040518060200160405290815f820154815250509050815f0151600a81905550805f0151600b8190555082600c81905550505050565b610f4c611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190612bde565b60405180910390fd5b600960149054906101000a900460ff161561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190612dca565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055506001600960156101000a81548160ff0219169083151502179055506001600960166101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546110e090612a43565b80601f016020809104026020016040519081016040528092919081815260200182805461110c90612a43565b80156111575780601f1061112e57610100808354040283529160200191611157565b820191905f5260205f20905b81548152906001019060200180831161113a57829003601f168201915b5050505050905090565b5f8060015f61116e611727565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90612e58565b60405180910390fd5b61123c611233611727565b8585840361172e565b600191505092915050565b5f61125a611253611727565b84846118f1565b6001905092915050565b600f602052805f5260405f205f915054906101000a900460ff1681565b611289611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90612bde565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113b1919061282d565b60405180910390a25050565b5f6113c961dead610ba1565b905090565b600a5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600c5481565b60085481565b61146a611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90612bde565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90612ee6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61162c611727565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190612bde565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff16476040516116df90612f31565b5f6040518083038185875af1925050503d805f8114611719576040519150601f19603f3d011682016040523d82523d5f602084013e61171e565b606091505b50508091505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390612fb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190613043565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118e49190612855565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611956906130d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49061315f565b60405180910390fd5b5f8111611a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a06906131c7565b60405180910390fd5b600960149054906101000a900460ff16611afe57600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611abe5750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af49061322f565b60405180910390fd5b5b600960169054906101000a900460ff168015611bb25750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611bb05750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b155b15611cf457600960179054906101000a900463ffffffff1663ffffffff16611bd861072e565b611be2919061327a565b811115611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b906132f4565b60405180910390fd5b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611cf3576009601b9054906101000a900463ffffffff1663ffffffff16611c9361072e565b611c9d919061327a565b81611ca784610ba1565b611cb19190612b61565b1115611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce99061335c565b60405180910390fd5b5b5b5f611cfe30610ba1565b90505f6008548210159050808015611d225750600960159054906101000a900460ff165b8015611d3b5750600760149054906101000a900460ff16155b8015611d8e5750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611de15750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e345750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e77576001600760146101000a81548160ff021916908315150217905550611e5c612111565b5f600760146101000a81548160ff0219169083151502179055505b5f60019050600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f175750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f20575f90505b5f81156120fd57600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f7e57505f600b54115b15612002575f60115f600c5481526020019081526020015f206040518060200160405290815f8201548152505090506064600b5487611fbd919061337a565b611fc7919061327a565b9150600b54815f015183611fdb919061337a565b611fe5919061327a565b600d5f828254611ff59190612b61565b92505081905550506120da565b600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561205957505f600a54115b156120d9575f60105f600c5481526020019081526020015f206040518060200160405290815f8201548152505090506064600a5487612098919061337a565b6120a2919061327a565b9150600a54815f0151836120b6919061337a565b6120c0919061327a565b600d5f8282546120d09190612b61565b92505081905550505b5b5f8111156120ee576120ed873083612205565b5b80856120fa9190612b2e565b94505b612108878787612205565b50505050505050565b5f61211b30610ba1565b90505f600d5490505f82148061213057505f81145b1561213c575050612203565b603c60085461214b919061337a565b82111561216457603c600854612161919061337a565b91505b5f61216e83612464565b5f600d8190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516121ba90612f31565b5f6040518083038185875af1925050503d805f81146121f4576040519150601f19603f3d011682016040523d82523d5f602084013e6121f9565b606091505b5050809150505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a906130d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d89061315f565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b9061342b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123f29190612b61565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124569190612855565b60405180910390a350505050565b5f600267ffffffffffffffff8111156124805761247f613449565b5b6040519080825280602002602001820160405280156124ae5781602001602082028036833780820191505090505b50905030815f815181106124c5576124c4613476565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612569573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258d91906134b7565b816001815181106125a1576125a0613476565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126073060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461172e565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126699594939291906135db565b5f604051808303815f87803b158015612680575f80fd5b505af1158015612692573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126d15780820151818401526020810190506126b6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126f68261269a565b61270081856126a4565b93506127108185602086016126b4565b612719816126dc565b840191505092915050565b5f6020820190508181035f83015261273c81846126ec565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61277182612748565b9050919050565b61278181612767565b811461278b575f80fd5b50565b5f8135905061279c81612778565b92915050565b5f819050919050565b6127b4816127a2565b81146127be575f80fd5b50565b5f813590506127cf816127ab565b92915050565b5f80604083850312156127eb576127ea612744565b5b5f6127f88582860161278e565b9250506020612809858286016127c1565b9150509250929050565b5f8115159050919050565b61282781612813565b82525050565b5f6020820190506128405f83018461281e565b92915050565b61284f816127a2565b82525050565b5f6020820190506128685f830184612846565b92915050565b5f805f6060848603121561288557612884612744565b5b5f6128928682870161278e565b93505060206128a38682870161278e565b92505060406128b4868287016127c1565b9150509250925092565b5f60ff82169050919050565b6128d3816128be565b82525050565b5f6020820190506128ec5f8301846128ca565b92915050565b5f6020828403121561290757612906612744565b5b5f6129148482850161278e565b91505092915050565b5f6020828403121561293257612931612744565b5b5f61293f848285016127c1565b91505092915050565b61295181612767565b82525050565b5f60208201905061296a5f830184612948565b92915050565b61297981612813565b8114612983575f80fd5b50565b5f8135905061299481612970565b92915050565b5f80604083850312156129b0576129af612744565b5b5f6129bd8582860161278e565b92505060206129ce85828601612986565b9150509250929050565b5f80604083850312156129ee576129ed612744565b5b5f6129fb8582860161278e565b9250506020612a0c8582860161278e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612a5a57607f821691505b602082108103612a6d57612a6c612a16565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612acd6028836126a4565b9150612ad882612a73565b604082019050919050565b5f6020820190508181035f830152612afa81612ac1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612b38826127a2565b9150612b43836127a2565b9250828203905081811115612b5b57612b5a612b01565b5b92915050565b5f612b6b826127a2565b9150612b76836127a2565b9250828201905080821115612b8e57612b8d612b01565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bc86020836126a4565b9150612bd382612b94565b602082019050919050565b5f6020820190508181035f830152612bf581612bbc565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f5f8201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b5f612c566026836126a4565b9150612c6182612bfc565b604082019050919050565b5f6020820190508181035f830152612c8381612c4a565b9050919050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e74205f8201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b5f612ce46040836126a4565b9150612cef82612c8a565b604082019050919050565b5f6020820190508181035f830152612d1181612cd8565b9050919050565b7f596f752063616e206f6e6c7920676f20757020746f2054494420332e000000005f82015250565b5f612d4c601c836126a4565b9150612d5782612d18565b602082019050919050565b5f6020820190508181035f830152612d7981612d40565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f612db46017836126a4565b9150612dbf82612d80565b602082019050919050565b5f6020820190508181035f830152612de181612da8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e426025836126a4565b9150612e4d82612de8565b604082019050919050565b5f6020820190508181035f830152612e6f81612e36565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612ed06026836126a4565b9150612edb82612e76565b604082019050919050565b5f6020820190508181035f830152612efd81612ec4565b9050919050565b5f81905092915050565b50565b5f612f1c5f83612f04565b9150612f2782612f0e565b5f82019050919050565b5f612f3b82612f11565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f9f6024836126a4565b9150612faa82612f45565b604082019050919050565b5f6020820190508181035f830152612fcc81612f93565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61302d6022836126a4565b915061303882612fd3565b604082019050919050565b5f6020820190508181035f83015261305a81613021565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130bb6025836126a4565b91506130c682613061565b604082019050919050565b5f6020820190508181035f8301526130e8816130af565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131496023836126a4565b9150613154826130ef565b604082019050919050565b5f6020820190508181035f8301526131768161313d565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f6131b1601d836126a4565b91506131bc8261317d565b602082019050919050565b5f6020820190508181035f8301526131de816131a5565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6132196016836126a4565b9150613224826131e5565b602082019050919050565b5f6020820190508181035f8301526132468161320d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613284826127a2565b915061328f836127a2565b92508261329f5761329e61324d565b5b828204905092915050565b7f4f766572206d61782074782e00000000000000000000000000000000000000005f82015250565b5f6132de600c836126a4565b91506132e9826132aa565b602082019050919050565b5f6020820190508181035f83015261330b816132d2565b9050919050565b7f57696c6c20676f206f766572206d61782077616c6c65742e00000000000000005f82015250565b5f6133466018836126a4565b915061335182613312565b602082019050919050565b5f6020820190508181035f8301526133738161333a565b9050919050565b5f613384826127a2565b915061338f836127a2565b925082820261339d816127a2565b915082820484148315176133b4576133b3612b01565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6134156026836126a4565b9150613420826133bb565b604082019050919050565b5f6020820190508181035f83015261344281613409565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506134b181612778565b92915050565b5f602082840312156134cc576134cb612744565b5b5f6134d9848285016134a3565b91505092915050565b5f819050919050565b5f819050919050565b5f61350e613509613504846134e2565b6134eb565b6127a2565b9050919050565b61351e816134f4565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355681612767565b82525050565b5f613567838361354d565b60208301905092915050565b5f602082019050919050565b5f61358982613524565b613593818561352e565b935061359e8361353e565b805f5b838110156135ce5781516135b5888261355c565b97506135c083613573565b9250506001810190506135a1565b5085935050505092915050565b5f60a0820190506135ee5f830188612846565b6135fb6020830187613515565b818103604083015261360d818661357f565b905061361c6060830185612948565b6136296080830184612846565b969550505050505056fea26469706673582212205aa851c96c57e4c2b56c0d69da139cae0e2c000be4f847c2f5b25d1ec25eeb4264736f6c63430008140033
Deployed Bytecode Sourcemap
9690:7909:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4132:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5046:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4453:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5223:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16184:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4352:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5723:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17046:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17282:312;;;;;;;;;;;;;:::i;:::-;;10281:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4569:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8786:150;;;;;;;;;;;;;:::i;:::-;;13217:83;;;;;;;;;;;;;:::i;:::-;;12644:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12206:236;;;;;;;;;;;;;:::i;:::-;;8572:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4240:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4704:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10458:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13027:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16067:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10247:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4887:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10316:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9966:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8944:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16878:160;;;;;;;;;;;;;:::i;:::-;;4132:100;4186:13;4219:5;4212:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4132:100;:::o;5046:169::-;5129:4;5146:39;5155:12;:10;:12::i;:::-;5169:7;5178:6;5146:8;:39::i;:::-;5203:4;5196:11;;5046:169;;;;:::o;4453:108::-;4514:7;4541:12;;4534:19;;4453:108;:::o;5223:492::-;5363:4;5380:36;5390:6;5398:9;5409:6;5380:9;:36::i;:::-;5429:24;5456:11;:19;5468:6;5456:19;;;;;;;;;;;;;;;:33;5476:12;:10;:12::i;:::-;5456:33;;;;;;;;;;;;;;;;5429:60;;5528:6;5508:16;:26;;5500:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5615:57;5624:6;5632:12;:10;:12::i;:::-;5665:6;5646:16;:25;5615:8;:57::i;:::-;5703:4;5696:11;;;5223:492;;;;;:::o;16184:128::-;16236:7;16278:26;16296:6;16278:9;:26::i;:::-;16262:13;:11;:13::i;:::-;:42;;;;:::i;:::-;16255:49;;16184:128;:::o;4352:93::-;4410:5;4435:2;4428:9;;4352:93;:::o;5723:215::-;5811:4;5828:80;5837:12;:10;:12::i;:::-;5851:7;5897:10;5860:11;:25;5872:12;:10;:12::i;:::-;5860:25;;;;;;;;;;;;;;;:34;5886:7;5860:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5828:8;:80::i;:::-;5926:4;5919:11;;5723:215;;;;:::o;17046:228::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17172:1:::1;17142:32;;:18;:32;;::::0;17134:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17248:18;17228:17;;:38;;;;;;;;;;;;;;;;;;17046:228:::0;:::o;17282:312::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17373:18:::1;;17345:24;17363:4;17345:9;:24::i;:::-;:46;;17337:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;17482:4;17471:8;;:15;;;;;;;;;;;;;;;;;;17497:10;:8;:10::i;:::-;17529:5;17518:8;;:16;;;;;;;;;;;;;;;;;;17550:36;17570:15;17550:36;;;;;;:::i;:::-;;;;;;;;17282:312::o:0;10281:28::-;;;;:::o;4569:127::-;4643:7;4670:9;:18;4680:7;4670:18;;;;;;;;;;;;;;;;4663:25;;4569:127;;;:::o;8786:150::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8895:1:::1;8858:40;;8879:6;;;;;;;;;;;8858:40;;;;;;;;;;;;8926:1;8909:6;;:19;;;;;;;;;;;;;;;;;;8786:150::o:0;13217:83::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13287:5:::1;13271:13;;:21;;;;;;;;;;;;;;;;;;13217:83::o:0;12644:375::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12736:3:::1;12723:10;;:16;:35;;;;;12757:1;12743:10;;:15;;12723:35;12715:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12802:21;12826:8;:13;12835:3;12826:13;;;;;;;;;;;12802:37;;;;;;;;;;;;;;;::::0;::::1;;;12850:23;12876:9;:14;12886:3;12876:14;;;;;;;;;;;12850:40;;;;;;;;;;;;;;;::::0;::::1;;;12916:6;:20;;;12901:12;:35;;;;12963:7;:21;;;12947:13;:37;;;;13008:3;12995:10;:16;;;;12704:315;;12644:375:::0;:::o;12206:236::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12270:13:::1;;;;;;;;;;;12269:14;12261:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12338:4;12322:13;;:20;;;;;;;;;;;;;;;;;;12367:4;12353:11;;:18;;;;;;;;;;;;;;;;;;12398:4;12382:13;;:20;;;;;;;;;;;;;;;;;;12418:16;;;;;;;;;;12206:236::o:0;8572:79::-;8610:7;8637:6;;;;;;;;;;;8630:13;;8572:79;:::o;4240:104::-;4296:13;4329:7;4322:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4240:104;:::o;5946:413::-;6039:4;6056:24;6083:11;:25;6095:12;:10;:12::i;:::-;6083:25;;;;;;;;;;;;;;;:34;6109:7;6083:34;;;;;;;;;;;;;;;;6056:61;;6156:15;6136:16;:35;;6128:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6249:67;6258:12;:10;:12::i;:::-;6272:7;6300:15;6281:16;:34;6249:8;:67::i;:::-;6347:4;6340:11;;;5946:413;;;;:::o;4704:175::-;4790:4;4807:42;4817:12;:10;:12::i;:::-;4831:9;4842:6;4807:9;:42::i;:::-;4867:4;4860:11;;4704:175;;;;:::o;10458:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;13027:182::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13143:8:::1;13112:19;:28;13132:7;13112:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13183:7;13167:34;;;13192:8;13167:34;;;;;;:::i;:::-;;;;;;;;13027:182:::0;;:::o;16067:109::-;16116:7;16142:26;16160:6;16142:9;:26::i;:::-;16135:33;;16067:109;:::o;10247:27::-;;;;:::o;4887:151::-;4976:7;5003:11;:18;5015:5;5003:18;;;;;;;;;;;;;;;:27;5022:7;5003:27;;;;;;;;;;;;;;;;4996:34;;4887:151;;;;:::o;10316:29::-;;;;:::o;9966:33::-;;;;:::o;8944:244::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9053:1:::1;9033:22;;:8;:22;;::::0;9025:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9143:8;9114:38;;9135:6;;;;;;;;;;;9114:38;;;;;;;;;;;;9172:8;9163:6;;:17;;;;;;;;;;;;;;;;;;8944:244:::0;:::o;16878:160::-;8709:12;:10;:12::i;:::-;8699:22;;:6;;;;;;;;;;;:22;;;8691:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16936:12:::1;16980:10;16972:24;;17004:21;16972:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16959:71;;;;;16925:113;16878:160::o:0;281:98::-;334:7;361:10;354:17;;281:98;:::o;7865:380::-;8018:1;8001:19;;:5;:19;;;7993:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8099:1;8080:21;;:7;:21;;;8072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8183:6;8153:11;:18;8165:5;8153:18;;;;;;;;;;;;;;;:27;8172:7;8153:27;;;;;;;;;;;;;;;:36;;;;8221:7;8205:32;;8214:5;8205:32;;;8230:6;8205:32;;;;;;:::i;:::-;;;;;;;;7865:380;;;:::o;13308:2286::-;13422:1;13406:18;;:4;:18;;;13398:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13499:1;13485:16;;:2;:16;;;13477:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13569:1;13560:6;:10;13552:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13629:13;;;;;;;;;;;13625:132;;13666:19;:25;13686:4;13666:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;13695:19;:23;13715:2;13695:23;;;;;;;;;;;;;;;;;;;;;;;;;13666:52;13658:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;13625:132;13770:13;;;;;;;;;;;:72;;;;;13789:19;:25;13809:4;13789:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;13818:19;:23;13838:2;13818:23;;;;;;;;;;;;;;;;;;;;;;;;;13789:52;13787:55;13770:72;13767:342;;;13891:12;;;;;;;;;;;13877:26;;:13;:11;:13::i;:::-;:26;;;;:::i;:::-;13867:6;:36;;13859:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13939:25;:29;13965:2;13939:29;;;;;;;;;;;;;;;;;;;;;;;;;13935:163;;14037:16;;;;;;;;;;;14023:30;;:13;:11;:13::i;:::-;:30;;;;:::i;:::-;14013:6;13997:13;14007:2;13997:9;:13::i;:::-;:22;;;;:::i;:::-;:56;;13989:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;13935:163;13767:342;14121:28;14152:24;14170:4;14152:9;:24::i;:::-;14121:55;;14189:12;14228:18;;14204:20;:42;;14189:57;;14262:7;:22;;;;;14273:11;;;;;;;;;;;14262:22;:35;;;;;14289:8;;;;;;;;;;;14288:9;14262:35;:71;;;;;14302:25;:31;14328:4;14302:31;;;;;;;;;;;;;;;;;;;;;;;;;14301:32;14262:71;:101;;;;;14338:19;:25;14358:4;14338:25;;;;;;;;;;;;;;;;;;;;;;;;;14337:26;14262:101;:129;;;;;14368:19;:23;14388:2;14368:23;;;;;;;;;;;;;;;;;;;;;;;;;14367:24;14262:129;14259:232;;;14419:4;14408:8;;:15;;;;;;;;;;;;;;;;;;14438:10;:8;:10::i;:::-;14474:5;14463:8;;:16;;;;;;;;;;;;;;;;;;14259:232;14503:12;14518:4;14503:19;;14538;:25;14558:4;14538:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;14567:19;:23;14587:2;14567:23;;;;;;;;;;;;;;;;;;;;;;;;;14538:52;14535:99;;;14617:5;14607:15;;14535:99;14646:12;14750:7;14747:794;;;14801:25;:29;14827:2;14801:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;14850:1;14834:13;;:17;14801:50;14797:588;;;14871:23;14897:9;:21;14907:10;;14897:21;;;;;;;;;;;14871:47;;;;;;;;;;;;;;;;;;;14969:3;14953:13;;14944:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;14937:35;;15045:13;;15021:7;:21;;;15014:4;:28;;;;:::i;:::-;:44;;;;:::i;:::-;14991:19;;:67;;;;;;;:::i;:::-;;;;;;;;14852:222;14797:588;;;15119:25;:31;15145:4;15119:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;15169:1;15154:12;;:16;15119:51;15116:269;;;15191:21;15215:8;:20;15224:10;;15215:20;;;;;;;;;;;15191:44;;;;;;;;;;;;;;;;;;;15282:3;15267:12;;15258:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;15251:34;;15357:12;;15334:6;:20;;;15327:4;:27;;;;:::i;:::-;:42;;;;:::i;:::-;15304:19;;:65;;;;;;;:::i;:::-;;;;;;;;15172:213;15116:269;14797:588;15423:1;15416:4;:8;15413:89;;;15444:42;15460:4;15474;15481;15444:15;:42::i;:::-;15413:89;15525:4;15515:14;;;;;:::i;:::-;;;14747:794;15553:33;15569:4;15575:2;15579:6;15553:15;:33::i;:::-;13387:2207;;;;13308:2286;;;:::o;16320:550::-;16361:23;16387:24;16405:4;16387:9;:24::i;:::-;16361:50;;16422:25;16450:19;;16422:47;;16504:1;16485:15;:20;:46;;;;16530:1;16509:17;:22;16485:46;16482:60;;;16534:7;;;;16482:60;16596:2;16575:18;;:23;;;;:::i;:::-;16557:15;:41;16554:113;;;16653:2;16632:18;;:23;;;;:::i;:::-;16614:41;;16554:113;16679:12;16702:33;16719:15;16702:16;:33::i;:::-;16770:1;16748:19;:23;;;;16805:17;;;;;;;;;;;16797:31;;16836:21;16797:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16784:78;;;;;16348:522;;;16320:550;:::o;6367:614::-;6525:1;6507:20;;:6;:20;;;6499:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6609:1;6588:23;;:9;:23;;;6580:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6664:21;6688:9;:17;6698:6;6688:17;;;;;;;;;;;;;;;;6664:41;;6741:6;6724:13;:23;;6716:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6862:6;6846:13;:22;6826:9;:17;6836:6;6826:17;;;;;;;;;;;;;;;:42;;;;6914:6;6890:9;:20;6900:9;6890:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6955:9;6938:35;;6947:6;6938:35;;;6966:6;6938:35;;;;;;:::i;:::-;;;;;;;;6488:493;6367:614;;;:::o;15602:457::-;15670:21;15708:1;15694:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15670:40;;15739:4;15721;15726:1;15721:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15765:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15755:4;15760:1;15755:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;15794:56;15811:4;15826:9;;;;;;;;;;;15838:11;15794:8;:56::i;:::-;15861:9;;;;;;;;;;;:60;;;15936:11;15962:1;15978:4;16005;16025:15;15861:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15657:402;15602:457;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:468::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6482:115;6136:468;;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:180::-;7138:77;7135:1;7128:88;7235:4;7232:1;7225:15;7259:4;7256:1;7249:15;7276:320;7320:6;7357:1;7351:4;7347:12;7337:22;;7404:1;7398:4;7394:12;7425:18;7415:81;;7481:4;7473:6;7469:17;7459:27;;7415:81;7543:2;7535:6;7532:14;7512:18;7509:38;7506:84;;7562:18;;:::i;:::-;7506:84;7327:269;7276:320;;;:::o;7602:227::-;7742:34;7738:1;7730:6;7726:14;7719:58;7811:10;7806:2;7798:6;7794:15;7787:35;7602:227;:::o;7835:366::-;7977:3;7998:67;8062:2;8057:3;7998:67;:::i;:::-;7991:74;;8074:93;8163:3;8074:93;:::i;:::-;8192:2;8187:3;8183:12;8176:19;;7835:366;;;:::o;8207:419::-;8373:4;8411:2;8400:9;8396:18;8388:26;;8460:9;8454:4;8450:20;8446:1;8435:9;8431:17;8424:47;8488:131;8614:4;8488:131;:::i;:::-;8480:139;;8207:419;;;:::o;8632:180::-;8680:77;8677:1;8670:88;8777:4;8774:1;8767:15;8801:4;8798:1;8791:15;8818:194;8858:4;8878:20;8896:1;8878:20;:::i;:::-;8873:25;;8912:20;8930:1;8912:20;:::i;:::-;8907:25;;8956:1;8953;8949:9;8941:17;;8980:1;8974:4;8971:11;8968:37;;;8985:18;;:::i;:::-;8968:37;8818:194;;;;:::o;9018:191::-;9058:3;9077:20;9095:1;9077:20;:::i;:::-;9072:25;;9111:20;9129:1;9111:20;:::i;:::-;9106:25;;9154:1;9151;9147:9;9140:16;;9175:3;9172:1;9169:10;9166:36;;;9182:18;;:::i;:::-;9166:36;9018:191;;;;:::o;9215:182::-;9355:34;9351:1;9343:6;9339:14;9332:58;9215:182;:::o;9403:366::-;9545:3;9566:67;9630:2;9625:3;9566:67;:::i;:::-;9559:74;;9642:93;9731:3;9642:93;:::i;:::-;9760:2;9755:3;9751:12;9744:19;;9403:366;;;:::o;9775:419::-;9941:4;9979:2;9968:9;9964:18;9956:26;;10028:9;10022:4;10018:20;10014:1;10003:9;9999:17;9992:47;10056:131;10182:4;10056:131;:::i;:::-;10048:139;;9775:419;;;:::o;10200:225::-;10340:34;10336:1;10328:6;10324:14;10317:58;10409:8;10404:2;10396:6;10392:15;10385:33;10200:225;:::o;10431:366::-;10573:3;10594:67;10658:2;10653:3;10594:67;:::i;:::-;10587:74;;10670:93;10759:3;10670:93;:::i;:::-;10788:2;10783:3;10779:12;10772:19;;10431:366;;;:::o;10803:419::-;10969:4;11007:2;10996:9;10992:18;10984:26;;11056:9;11050:4;11046:20;11042:1;11031:9;11027:17;11020:47;11084:131;11210:4;11084:131;:::i;:::-;11076:139;;10803:419;;;:::o;11228:251::-;11368:34;11364:1;11356:6;11352:14;11345:58;11437:34;11432:2;11424:6;11420:15;11413:59;11228:251;:::o;11485:366::-;11627:3;11648:67;11712:2;11707:3;11648:67;:::i;:::-;11641:74;;11724:93;11813:3;11724:93;:::i;:::-;11842:2;11837:3;11833:12;11826:19;;11485:366;;;:::o;11857:419::-;12023:4;12061:2;12050:9;12046:18;12038:26;;12110:9;12104:4;12100:20;12096:1;12085:9;12081:17;12074:47;12138:131;12264:4;12138:131;:::i;:::-;12130:139;;11857:419;;;:::o;12282:178::-;12422:30;12418:1;12410:6;12406:14;12399:54;12282:178;:::o;12466:366::-;12608:3;12629:67;12693:2;12688:3;12629:67;:::i;:::-;12622:74;;12705:93;12794:3;12705:93;:::i;:::-;12823:2;12818:3;12814:12;12807:19;;12466:366;;;:::o;12838:419::-;13004:4;13042:2;13031:9;13027:18;13019:26;;13091:9;13085:4;13081:20;13077:1;13066:9;13062:17;13055:47;13119:131;13245:4;13119:131;:::i;:::-;13111:139;;12838:419;;;:::o;13263:173::-;13403:25;13399:1;13391:6;13387:14;13380:49;13263:173;:::o;13442:366::-;13584:3;13605:67;13669:2;13664:3;13605:67;:::i;:::-;13598:74;;13681:93;13770:3;13681:93;:::i;:::-;13799:2;13794:3;13790:12;13783:19;;13442:366;;;:::o;13814:419::-;13980:4;14018:2;14007:9;14003:18;13995:26;;14067:9;14061:4;14057:20;14053:1;14042:9;14038:17;14031:47;14095:131;14221:4;14095:131;:::i;:::-;14087:139;;13814:419;;;:::o;14239:224::-;14379:34;14375:1;14367:6;14363:14;14356:58;14448:7;14443:2;14435:6;14431:15;14424:32;14239:224;:::o;14469:366::-;14611:3;14632:67;14696:2;14691:3;14632:67;:::i;:::-;14625:74;;14708:93;14797:3;14708:93;:::i;:::-;14826:2;14821:3;14817:12;14810:19;;14469:366;;;:::o;14841:419::-;15007:4;15045:2;15034:9;15030:18;15022:26;;15094:9;15088:4;15084:20;15080:1;15069:9;15065:17;15058:47;15122:131;15248:4;15122:131;:::i;:::-;15114:139;;14841:419;;;:::o;15266:225::-;15406:34;15402:1;15394:6;15390:14;15383:58;15475:8;15470:2;15462:6;15458:15;15451:33;15266:225;:::o;15497:366::-;15639:3;15660:67;15724:2;15719:3;15660:67;:::i;:::-;15653:74;;15736:93;15825:3;15736:93;:::i;:::-;15854:2;15849:3;15845:12;15838:19;;15497:366;;;:::o;15869:419::-;16035:4;16073:2;16062:9;16058:18;16050:26;;16122:9;16116:4;16112:20;16108:1;16097:9;16093:17;16086:47;16150:131;16276:4;16150:131;:::i;:::-;16142:139;;15869:419;;;:::o;16294:147::-;16395:11;16432:3;16417:18;;16294:147;;;;:::o;16447:114::-;;:::o;16567:398::-;16726:3;16747:83;16828:1;16823:3;16747:83;:::i;:::-;16740:90;;16839:93;16928:3;16839:93;:::i;:::-;16957:1;16952:3;16948:11;16941:18;;16567:398;;;:::o;16971:379::-;17155:3;17177:147;17320:3;17177:147;:::i;:::-;17170:154;;17341:3;17334:10;;16971:379;;;:::o;17356:223::-;17496:34;17492:1;17484:6;17480:14;17473:58;17565:6;17560:2;17552:6;17548:15;17541:31;17356:223;:::o;17585:366::-;17727:3;17748:67;17812:2;17807:3;17748:67;:::i;:::-;17741:74;;17824:93;17913:3;17824:93;:::i;:::-;17942:2;17937:3;17933:12;17926:19;;17585:366;;;:::o;17957:419::-;18123:4;18161:2;18150:9;18146:18;18138:26;;18210:9;18204:4;18200:20;18196:1;18185:9;18181:17;18174:47;18238:131;18364:4;18238:131;:::i;:::-;18230:139;;17957:419;;;:::o;18382:221::-;18522:34;18518:1;18510:6;18506:14;18499:58;18591:4;18586:2;18578:6;18574:15;18567:29;18382:221;:::o;18609:366::-;18751:3;18772:67;18836:2;18831:3;18772:67;:::i;:::-;18765:74;;18848:93;18937:3;18848:93;:::i;:::-;18966:2;18961:3;18957:12;18950:19;;18609:366;;;:::o;18981:419::-;19147:4;19185:2;19174:9;19170:18;19162:26;;19234:9;19228:4;19224:20;19220:1;19209:9;19205:17;19198:47;19262:131;19388:4;19262:131;:::i;:::-;19254:139;;18981:419;;;:::o;19406:224::-;19546:34;19542:1;19534:6;19530:14;19523:58;19615:7;19610:2;19602:6;19598:15;19591:32;19406:224;:::o;19636:366::-;19778:3;19799:67;19863:2;19858:3;19799:67;:::i;:::-;19792:74;;19875:93;19964:3;19875:93;:::i;:::-;19993:2;19988:3;19984:12;19977:19;;19636:366;;;:::o;20008:419::-;20174:4;20212:2;20201:9;20197:18;20189:26;;20261:9;20255:4;20251:20;20247:1;20236:9;20232:17;20225:47;20289:131;20415:4;20289:131;:::i;:::-;20281:139;;20008:419;;;:::o;20433:222::-;20573:34;20569:1;20561:6;20557:14;20550:58;20642:5;20637:2;20629:6;20625:15;20618:30;20433:222;:::o;20661:366::-;20803:3;20824:67;20888:2;20883:3;20824:67;:::i;:::-;20817:74;;20900:93;20989:3;20900:93;:::i;:::-;21018:2;21013:3;21009:12;21002:19;;20661:366;;;:::o;21033:419::-;21199:4;21237:2;21226:9;21222:18;21214:26;;21286:9;21280:4;21276:20;21272:1;21261:9;21257:17;21250:47;21314:131;21440:4;21314:131;:::i;:::-;21306:139;;21033:419;;;:::o;21458:179::-;21598:31;21594:1;21586:6;21582:14;21575:55;21458:179;:::o;21643:366::-;21785:3;21806:67;21870:2;21865:3;21806:67;:::i;:::-;21799:74;;21882:93;21971:3;21882:93;:::i;:::-;22000:2;21995:3;21991:12;21984:19;;21643:366;;;:::o;22015:419::-;22181:4;22219:2;22208:9;22204:18;22196:26;;22268:9;22262:4;22258:20;22254:1;22243:9;22239:17;22232:47;22296:131;22422:4;22296:131;:::i;:::-;22288:139;;22015:419;;;:::o;22440:172::-;22580:24;22576:1;22568:6;22564:14;22557:48;22440:172;:::o;22618:366::-;22760:3;22781:67;22845:2;22840:3;22781:67;:::i;:::-;22774:74;;22857:93;22946:3;22857:93;:::i;:::-;22975:2;22970:3;22966:12;22959:19;;22618:366;;;:::o;22990:419::-;23156:4;23194:2;23183:9;23179:18;23171:26;;23243:9;23237:4;23233:20;23229:1;23218:9;23214:17;23207:47;23271:131;23397:4;23271:131;:::i;:::-;23263:139;;22990:419;;;:::o;23415:180::-;23463:77;23460:1;23453:88;23560:4;23557:1;23550:15;23584:4;23581:1;23574:15;23601:185;23641:1;23658:20;23676:1;23658:20;:::i;:::-;23653:25;;23692:20;23710:1;23692:20;:::i;:::-;23687:25;;23731:1;23721:35;;23736:18;;:::i;:::-;23721:35;23778:1;23775;23771:9;23766:14;;23601:185;;;;:::o;23792:162::-;23932:14;23928:1;23920:6;23916:14;23909:38;23792:162;:::o;23960:366::-;24102:3;24123:67;24187:2;24182:3;24123:67;:::i;:::-;24116:74;;24199:93;24288:3;24199:93;:::i;:::-;24317:2;24312:3;24308:12;24301:19;;23960:366;;;:::o;24332:419::-;24498:4;24536:2;24525:9;24521:18;24513:26;;24585:9;24579:4;24575:20;24571:1;24560:9;24556:17;24549:47;24613:131;24739:4;24613:131;:::i;:::-;24605:139;;24332:419;;;:::o;24757:174::-;24897:26;24893:1;24885:6;24881:14;24874:50;24757:174;:::o;24937:366::-;25079:3;25100:67;25164:2;25159:3;25100:67;:::i;:::-;25093:74;;25176:93;25265:3;25176:93;:::i;:::-;25294:2;25289:3;25285:12;25278:19;;24937:366;;;:::o;25309:419::-;25475:4;25513:2;25502:9;25498:18;25490:26;;25562:9;25556:4;25552:20;25548:1;25537:9;25533:17;25526:47;25590:131;25716:4;25590:131;:::i;:::-;25582:139;;25309:419;;;:::o;25734:410::-;25774:7;25797:20;25815:1;25797:20;:::i;:::-;25792:25;;25831:20;25849:1;25831:20;:::i;:::-;25826:25;;25886:1;25883;25879:9;25908:30;25926:11;25908:30;:::i;:::-;25897:41;;26087:1;26078:7;26074:15;26071:1;26068:22;26048:1;26041:9;26021:83;25998:139;;26117:18;;:::i;:::-;25998:139;25782:362;25734:410;;;;:::o;26150:225::-;26290:34;26286:1;26278:6;26274:14;26267:58;26359:8;26354:2;26346:6;26342:15;26335:33;26150:225;:::o;26381:366::-;26523:3;26544:67;26608:2;26603:3;26544:67;:::i;:::-;26537:74;;26620:93;26709:3;26620:93;:::i;:::-;26738:2;26733:3;26729:12;26722:19;;26381:366;;;:::o;26753:419::-;26919:4;26957:2;26946:9;26942:18;26934:26;;27006:9;27000:4;26996:20;26992:1;26981:9;26977:17;26970:47;27034:131;27160:4;27034:131;:::i;:::-;27026:139;;26753:419;;;:::o;27178:180::-;27226:77;27223:1;27216:88;27323:4;27320:1;27313:15;27347:4;27344:1;27337:15;27364:180;27412:77;27409:1;27402:88;27509:4;27506:1;27499:15;27533:4;27530:1;27523:15;27550:143;27607:5;27638:6;27632:13;27623:22;;27654:33;27681:5;27654:33;:::i;:::-;27550:143;;;;:::o;27699:351::-;27769:6;27818:2;27806:9;27797:7;27793:23;27789:32;27786:119;;;27824:79;;:::i;:::-;27786:119;27944:1;27969:64;28025:7;28016:6;28005:9;28001:22;27969:64;:::i;:::-;27959:74;;27915:128;27699:351;;;;:::o;28056:85::-;28101:7;28130:5;28119:16;;28056:85;;;:::o;28147:60::-;28175:3;28196:5;28189:12;;28147:60;;;:::o;28213:158::-;28271:9;28304:61;28322:42;28331:32;28357:5;28331:32;:::i;:::-;28322:42;:::i;:::-;28304:61;:::i;:::-;28291:74;;28213:158;;;:::o;28377:147::-;28472:45;28511:5;28472:45;:::i;:::-;28467:3;28460:58;28377:147;;:::o;28530:114::-;28597:6;28631:5;28625:12;28615:22;;28530:114;;;:::o;28650:184::-;28749:11;28783:6;28778:3;28771:19;28823:4;28818:3;28814:14;28799:29;;28650:184;;;;:::o;28840:132::-;28907:4;28930:3;28922:11;;28960:4;28955:3;28951:14;28943:22;;28840:132;;;:::o;28978:108::-;29055:24;29073:5;29055:24;:::i;:::-;29050:3;29043:37;28978:108;;:::o;29092:179::-;29161:10;29182:46;29224:3;29216:6;29182:46;:::i;:::-;29260:4;29255:3;29251:14;29237:28;;29092:179;;;;:::o;29277:113::-;29347:4;29379;29374:3;29370:14;29362:22;;29277:113;;;:::o;29426:732::-;29545:3;29574:54;29622:5;29574:54;:::i;:::-;29644:86;29723:6;29718:3;29644:86;:::i;:::-;29637:93;;29754:56;29804:5;29754:56;:::i;:::-;29833:7;29864:1;29849:284;29874:6;29871:1;29868:13;29849:284;;;29950:6;29944:13;29977:63;30036:3;30021:13;29977:63;:::i;:::-;29970:70;;30063:60;30116:6;30063:60;:::i;:::-;30053:70;;29909:224;29896:1;29893;29889:9;29884:14;;29849:284;;;29853:14;30149:3;30142:10;;29550:608;;;29426:732;;;;:::o;30164:831::-;30427:4;30465:3;30454:9;30450:19;30442:27;;30479:71;30547:1;30536:9;30532:17;30523:6;30479:71;:::i;:::-;30560:80;30636:2;30625:9;30621:18;30612:6;30560:80;:::i;:::-;30687:9;30681:4;30677:20;30672:2;30661:9;30657:18;30650:48;30715:108;30818:4;30809:6;30715:108;:::i;:::-;30707:116;;30833:72;30901:2;30890:9;30886:18;30877:6;30833:72;:::i;:::-;30915:73;30983:3;30972:9;30968:19;30959:6;30915:73;:::i;:::-;30164:831;;;;;;;;:::o
Swarm Source
ipfs://5aa851c96c57e4c2b56c0d69da139cae0e2c000be4f847c2f5b25d1ec25eeb42
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.