Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
406,958,652,843,135.419336242 FURN
Holders
141
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.755272446 FURNValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FURN
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-15 */ // SPDX-License-Identifier: Unlicensed // WEB : https://furntoken.com/ // TELEGRAM : https://t.me/FURN_erc // https://x.com/FURN_erc pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; address private _previousOwner; 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 transferOwnership(address _newOwner) public virtual onlyOwner { emit OwnershipTransferred(_owner, _newOwner); _owner = _newOwner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract FURN is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private bots; mapping (address => uint) private cooldown; uint256 private time; uint256 private _tax; uint256 private _tTotal = 420690 * 10**9 * 10**9; uint256 private tokensBurned=0; uint256 private fee1=170; uint256 private fee2=220; uint256 private FineBuyFee=20; uint256 private regularBurnFee=10; string private constant _name = "FineBurn"; string private constant _symbol = "FURN"; uint256 private _maxTxAmount = _tTotal.div(100).mul(2); uint256 private _maxWalletAmount = _tTotal.div(100).mul(2); uint256 private minBalance = _tTotal.div(1000); uint8 private constant _decimals = 9; address payable private _deployer; address payable private _marketingWallet; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private FineBurn = false; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () payable { _deployer = payable(msg.sender); _marketingWallet = payable(0x9BC5dac5Fddd8734F8EE33a427fA053fE1AD4666); _tOwned[address(this)] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_deployer] = true; _isExcludedFromFee[uniswapV2Pair] = true; uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); emit Transfer(address(0),address(this),_tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function burned() public view returns (uint256) { return tokensBurned; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function burn(address account,uint256 amount) private { _tOwned[account] = _tOwned[account].sub(amount); _tTotal -= amount; tokensBurned += amount; emit Transfer(account, address(0), amount); } function enableFineBurn() external { require(_msgSender() == _deployer); FineBurn = !FineBurn; } function changeMinBalance(uint256 newMin) external { require(_msgSender() == _deployer); minBalance = newMin; } function editFees(uint256 _fee1, uint256 _fee2, uint256 _burn) external { require(_msgSender() == _deployer); require(_fee1 <= 100 && _fee2 <= 100 && _burn <= 100,"fees cannot be higher than 10%"); fee1 = _fee1; fee2 = _fee2; FineBuyFee = _burn; } function airdrop(address[] memory addresses, uint256[] memory amounts) external onlyOwner { for(uint i=0;i<addresses.length;i++){ uint256 amount = amounts[i] * 10**9; _tOwned[address(this)] -= amount; _tOwned[addresses[i]] += amount; emit Transfer(address(this),addresses[i],amount); } } function removeLimits() external { require(_msgSender() == _deployer); _maxTxAmount = _tTotal; _maxWalletAmount = _tTotal; } function excludeFromFees(address target) external { require(_msgSender() == _deployer); _isExcludedFromFee[target] = true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); _tax = 0; if (from != _deployer && to != _deployer) { _tax = fee1.add(FineBuyFee).add(regularBurnFee); require(!bots[from] && !bots[to]); if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && (block.timestamp < time)){ // Cooldown require(amount <= _maxTxAmount); require(cooldown[to] < block.timestamp); cooldown[to] = block.timestamp + (30 seconds); } if (!inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from]) { uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance > minBalance){ swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { if(FineBurn) { swapEthForFineAndBurn(contractETHBalance); } sendETHToFee(address(this).balance); } } } } if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) { _tax = fee2.add(FineBuyFee).add(regularBurnFee); } _transferStandard(from,to,amount); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapEthForFineAndBurn(uint256 ethAmount) private { uint256 buyAmount = ethAmount.div(5).mul(2); address [] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(0x75C97384cA209f915381755c582EC0E2cE88c1BA); uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: buyAmount}( 0, path, address(0xdead), block.timestamp ); } function addLiquidity(uint256 tokenAmount,uint256 ethAmount,address target) private lockTheSwap{ _approve(address(this),address(uniswapV2Router),tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,target,block.timestamp); } function sendETHToFee(uint256 amount) private { _marketingWallet.transfer(amount); } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); addLiquidity(balanceOf(address(this)),address(this).balance,owner()); swapEnabled = true; tradingOpen = true; time = block.timestamp + (5 minutes); } function setBots(address[] memory bots_) public onlyOwner { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function delBot(address notbot) public onlyOwner { bots[notbot] = false; } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 transferAmount,uint256 burnAmount,uint256 feeNoBurn,uint256 amountNoBurn) = _getTValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(amountNoBurn); _tOwned[recipient] = _tOwned[recipient].add(transferAmount); _tOwned[address(this)] = _tOwned[address(this)].add(feeNoBurn); burn(sender,burnAmount); emit Transfer(sender, recipient, transferAmount); } receive() external payable {} function manualswap() external { require(_msgSender() == _deployer); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _deployer); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = tAmount.mul(_tax).div(1000); uint256 tTransferAmount = tAmount.sub(tFee); uint256 tBurn = tAmount.mul(regularBurnFee).div(1000); uint256 tFeeNoBurn = tFee.sub(tBurn); uint256 tAmountNoBurn = tAmount.sub(tBurn); return (tTransferAmount, tBurn, tFeeNoBurn, tAmountNoBurn); } function recoverTokens(address tokenAddress) external { require(_msgSender() == _deployer); IERC20 recoveryToken = IERC20(tokenAddress); recoveryToken.transfer(_deployer,recoveryToken.balanceOf(address(this))); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMin","type":"uint256"}],"name":"changeMinBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee1","type":"uint256"},{"internalType":"uint256","name":"_fee2","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"editFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableFineBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052695915a68d88da6a0800006009556000600a5560aa600b5560dc600c556014600d55600a600e556200006260026200004e6064600954620006fe60201b620015c61790919060201c565b6200075060201b620016101790919060201c565b600f556200009c6002620000886064600954620006fe60201b620015c61790919060201c565b6200075060201b620016101790919060201c565b601055620000bd6103e8600954620006fe60201b620015c61790919060201c565b6011556000601560146101000a81548160ff0219169083151502179055506000601560166101000a81548160ff0219169083151502179055506000601560176101000a81548160ff021916908315150217905550600062000123620007d360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739bc5dac5fddd8734f8ee33a427fa053fe1ad4666601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600954600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620002b3620007db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000513573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005399190620008d6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e99190620008d6565b6040518363ffffffff1660e01b81526004016200060892919062000919565b6020604051808303816000875af115801562000628573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200064e9190620008d6565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620006f0919062000961565b60405180910390a362000bb5565b60006200074883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200080460201b60201c565b905092915050565b6000808303620007645760009050620007cd565b60008284620007749190620009ad565b905082848262000785919062000a27565b14620007c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007bf9062000ae6565b60405180910390fd5b809150505b92915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080831182906200084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000845919062000b91565b60405180910390fd5b50600083856200085f919062000a27565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200089e8262000871565b9050919050565b620008b08162000891565b8114620008bc57600080fd5b50565b600081519050620008d081620008a5565b92915050565b600060208284031215620008ef57620008ee6200086c565b5b6000620008ff84828501620008bf565b91505092915050565b620009138162000891565b82525050565b600060408201905062000930600083018562000908565b6200093f602083018462000908565b9392505050565b6000819050919050565b6200095b8162000946565b82525050565b600060208201905062000978600083018462000950565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009ba8262000946565b9150620009c78362000946565b9250828202620009d78162000946565b91508282048414831517620009f157620009f06200097e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a348262000946565b915062000a418362000946565b92508262000a545762000a53620009f8565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000ace60218362000a5f565b915062000adb8262000a70565b604082019050919050565b6000602082019050818103600083015262000b018162000abf565b9050919050565b600081519050919050565b60005b8381101562000b3357808201518184015260208101905062000b16565b60008484015250505050565b6000601f19601f8301169050919050565b600062000b5d8262000b08565b62000b69818562000a5f565b935062000b7b81856020860162000b13565b62000b868162000b3f565b840191505092915050565b6000602082019050818103600083015262000bad818462000b50565b905092915050565b613c988062000bc56000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063c9567bf911610064578063c9567bf9146104d5578063dd62ed3e146104ec578063e57f14e114610529578063f2fde38b1461055257610171565b8063a9059cbb14610458578063b515566a14610495578063c3c8cd80146104be57610171565b8063715018a61461038057806373f4256114610397578063751039fc146103c25780638da5cb5b146103d957806395d89b4114610404578063a63748e51461042f57610171565b8063313ce56711610123578063313ce5671461029857806348ce6d5c146102c35780634ea18fab146102da57806367243482146103035780636fc3eaec1461032c57806370a082311461034357610171565b806306fdde0314610176578063095ea7b3146101a157806316114acd146101de57806318160ddd1461020757806323b872dd14610232578063273123b71461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61057b565b6040516101989190612bdf565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612ca9565b6105b8565b6040516101d59190612d04565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190612d1f565b6105d6565b005b34801561021357600080fd5b5061021c61075a565b6040516102299190612d5b565b60405180910390f35b34801561023e57600080fd5b5061025960048036038101906102549190612d76565b610764565b6040516102669190612d04565b60405180910390f35b34801561027b57600080fd5b5061029660048036038101906102919190612d1f565b61083d565b005b3480156102a457600080fd5b506102ad61092d565b6040516102ba9190612de5565b60405180910390f35b3480156102cf57600080fd5b506102d8610936565b005b3480156102e657600080fd5b5061030160048036038101906102fc9190612e00565b6109c3565b005b34801561030f57600080fd5b5061032a60048036038101906103259190613038565b610a2e565b005b34801561033857600080fd5b50610341610c5b565b005b34801561034f57600080fd5b5061036a60048036038101906103659190612d1f565b610ccd565b6040516103779190612d5b565b60405180910390f35b34801561038c57600080fd5b50610395610d16565b005b3480156103a357600080fd5b506103ac610e69565b6040516103b99190612d5b565b60405180910390f35b3480156103ce57600080fd5b506103d7610e73565b005b3480156103e557600080fd5b506103ee610ee8565b6040516103fb91906130bf565b60405180910390f35b34801561041057600080fd5b50610419610f11565b6040516104269190612bdf565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906130da565b610f4e565b005b34801561046457600080fd5b5061047f600480360381019061047a9190612ca9565b611027565b60405161048c9190612d04565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b7919061312d565b611045565b005b3480156104ca57600080fd5b506104d361116f565b005b3480156104e157600080fd5b506104ea6111e9565b005b3480156104f857600080fd5b50610513600480360381019061050e9190613176565b611331565b6040516105209190612d5b565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190612d1f565b6113b8565b005b34801561055e57600080fd5b5061057960048036038101906105749190612d1f565b611474565b005b60606040518060400160405280600881526020017f46696e654275726e000000000000000000000000000000000000000000000000815250905090565b60006105cc6105c561168a565b8484611692565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061761168a565b73ffffffffffffffffffffffffffffffffffffffff161461063757600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106b491906130bf565b602060405180830381865afa1580156106d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f591906131cb565b6040518363ffffffff1660e01b8152600401610712929190613257565b6020604051808303816000875af1158015610731573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075591906132ac565b505050565b6000600954905090565b600061077184848461185b565b6108328461077d61168a565b61082d85604051806060016040528060288152602001613c3b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107e361168a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f539092919063ffffffff16565b611692565b600190509392505050565b61084561168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990613325565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661097761168a565b73ffffffffffffffffffffffffffffffffffffffff161461099757600080fd5b601560149054906101000a900460ff1615601560146101000a81548160ff021916908315150217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0461168a565b73ffffffffffffffffffffffffffffffffffffffff1614610a2457600080fd5b8060118190555050565b610a3661168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90613325565b60405180910390fd5b60005b8251811015610c56576000633b9aca00838381518110610ae957610ae8613345565b5b6020026020010151610afb91906133a3565b905080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b4c91906133e5565b925050819055508060026000868581518110610b6b57610b6a613345565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbc9190613419565b92505081905550838281518110610bd657610bd5613345565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c3a9190612d5b565b60405180910390a3508080610c4e9061344d565b915050610ac6565b505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9c61168a565b73ffffffffffffffffffffffffffffffffffffffff1614610cbc57600080fd5b6000479050610cca81611fb7565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1e61168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da290613325565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a54905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eb461168a565b73ffffffffffffffffffffffffffffffffffffffff1614610ed457600080fd5b600954600f81905550600954601081905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4655524e00000000000000000000000000000000000000000000000000000000815250905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f8f61168a565b73ffffffffffffffffffffffffffffffffffffffff1614610faf57600080fd5b60648311158015610fc1575060648211155b8015610fce575060648111155b61100d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611004906134e1565b60405180910390fd5b82600b8190555081600c8190555080600d81905550505050565b600061103b61103461168a565b848461185b565b6001905092915050565b61104d61168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d190613325565b60405180910390fd5b60005b815181101561116b576001600560008484815181106110ff576110fe613345565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111639061344d565b9150506110dd565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111b061168a565b73ffffffffffffffffffffffffffffffffffffffff16146111d057600080fd5b60006111db30610ccd565b90506111e681612023565b50565b6111f161168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590613325565b60405180910390fd5b60158054906101000a900460ff16156112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c39061354d565b60405180910390fd5b6112e66112d830610ccd565b476112e1610ee8565b61229c565b6001601560176101000a81548160ff02191690831515021790555060016015806101000a81548160ff02191690831515021790555061012c426113299190613419565b600781905550565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113f961168a565b73ffffffffffffffffffffffffffffffffffffffff161461141957600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61147c61168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090613325565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061160883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123b1565b905092915050565b60008083036116225760009050611684565b6000828461163091906133a3565b905082848261163f919061359c565b1461167f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116769061363f565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f8906136d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176790613763565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161184e9190612d5b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c1906137f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613887565b60405180910390fd5b6000811161197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613919565b60405180910390fd5b6000600881905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a305750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e0b57611a60600e54611a52600d54600b5461241490919063ffffffff16565b61241490919063ffffffff16565b600881905550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b0a5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b1357600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bbe5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c145750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c21575060075442105b15611cd157600f54811115611c3557600080fd5b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611c8057600080fd5b601e42611c8d9190613419565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560169054906101000a900460ff16158015611d3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d545750601560179054906101000a900460ff165b8015611daa5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0a576000611dba30610ccd565b9050601154811115611e0857611dcf81612023565b60004790506000811115611e0657601560149054906101000a900460ff1615611dfc57611dfb81612472565b5b611e0547611fb7565b5b505b505b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611eb65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f0c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4357611f3c600e54611f2e600d54600c5461241490919063ffffffff16565b61241490919063ffffffff16565b6008819055505b611f4e8383836126c9565b505050565b6000838311158290611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f929190612bdf565b60405180910390fd5b5060008385611faa91906133e5565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561201f573d6000803e3d6000fd5b5050565b6001601560166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561205b5761205a612e32565b5b6040519080825280602002602001820160405280156120895781602001602082028036833780820191505090505b50905030816000815181106120a1576120a0613345565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216c919061394e565b816001815181106121805761217f613345565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611692565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161224b959493929190613a74565b600060405180830381600087803b15801561226557600080fd5b505af1158015612279573d6000803e3d6000fd5b50505050506000601560166101000a81548160ff02191690831515021790555050565b6001601560166101000a81548160ff0219169083151502179055506122e430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611692565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b815260040161234b96959493929190613ace565b60606040518083038185885af1158015612369573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061238e9190613b2f565b5050506000601560166101000a81548160ff021916908315150217905550505050565b600080831182906123f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ef9190612bdf565b60405180910390fd5b5060008385612407919061359c565b9050809150509392505050565b60008082846124239190613419565b905083811015612468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245f90613bce565b60405180910390fd5b8091505092915050565b600061249b600261248d6005856115c690919063ffffffff16565b61161090919063ffffffff16565b90506000600267ffffffffffffffff8111156124ba576124b9612e32565b5b6040519080825280602002602001820160405280156124e85781602001602082028036833780820191505090505b509050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257c919061394e565b816000815181106125905761258f613345565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507375c97384ca209f915381755c582ec0e2ce88c1ba816001815181106125f3576125f2613345565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016126929493929190613bee565b6000604051808303818588803b1580156126ab57600080fd5b505af11580156126bf573d6000803e3d6000fd5b5050505050505050565b6000806000806126d885612917565b935093509350935061273281600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d490919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c784600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241490919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285c82600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128a98784612a1e565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516129069190612d5b565b60405180910390a350505050505050565b60008060008060006129486103e861293a6008548961161090919063ffffffff16565b6115c690919063ffffffff16565b9050600061295f82886129d490919063ffffffff16565b9050600061298c6103e861297e600e548b61161090919063ffffffff16565b6115c690919063ffffffff16565b905060006129a382856129d490919063ffffffff16565b905060006129ba838b6129d490919063ffffffff16565b905083838383985098509850985050505050509193509193565b6000612a1683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f53565b905092915050565b612a7081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d490919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060096000828254612ac591906133e5565b9250508190555080600a6000828254612ade9190613419565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b439190612d5b565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b89578082015181840152602081019050612b6e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612bb182612b4f565b612bbb8185612b5a565b9350612bcb818560208601612b6b565b612bd481612b95565b840191505092915050565b60006020820190508181036000830152612bf98184612ba6565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4082612c15565b9050919050565b612c5081612c35565b8114612c5b57600080fd5b50565b600081359050612c6d81612c47565b92915050565b6000819050919050565b612c8681612c73565b8114612c9157600080fd5b50565b600081359050612ca381612c7d565b92915050565b60008060408385031215612cc057612cbf612c0b565b5b6000612cce85828601612c5e565b9250506020612cdf85828601612c94565b9150509250929050565b60008115159050919050565b612cfe81612ce9565b82525050565b6000602082019050612d196000830184612cf5565b92915050565b600060208284031215612d3557612d34612c0b565b5b6000612d4384828501612c5e565b91505092915050565b612d5581612c73565b82525050565b6000602082019050612d706000830184612d4c565b92915050565b600080600060608486031215612d8f57612d8e612c0b565b5b6000612d9d86828701612c5e565b9350506020612dae86828701612c5e565b9250506040612dbf86828701612c94565b9150509250925092565b600060ff82169050919050565b612ddf81612dc9565b82525050565b6000602082019050612dfa6000830184612dd6565b92915050565b600060208284031215612e1657612e15612c0b565b5b6000612e2484828501612c94565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e6a82612b95565b810181811067ffffffffffffffff82111715612e8957612e88612e32565b5b80604052505050565b6000612e9c612c01565b9050612ea88282612e61565b919050565b600067ffffffffffffffff821115612ec857612ec7612e32565b5b602082029050602081019050919050565b600080fd5b6000612ef1612eec84612ead565b612e92565b90508083825260208201905060208402830185811115612f1457612f13612ed9565b5b835b81811015612f3d5780612f298882612c5e565b845260208401935050602081019050612f16565b5050509392505050565b600082601f830112612f5c57612f5b612e2d565b5b8135612f6c848260208601612ede565b91505092915050565b600067ffffffffffffffff821115612f9057612f8f612e32565b5b602082029050602081019050919050565b6000612fb4612faf84612f75565b612e92565b90508083825260208201905060208402830185811115612fd757612fd6612ed9565b5b835b818110156130005780612fec8882612c94565b845260208401935050602081019050612fd9565b5050509392505050565b600082601f83011261301f5761301e612e2d565b5b813561302f848260208601612fa1565b91505092915050565b6000806040838503121561304f5761304e612c0b565b5b600083013567ffffffffffffffff81111561306d5761306c612c10565b5b61307985828601612f47565b925050602083013567ffffffffffffffff81111561309a57613099612c10565b5b6130a68582860161300a565b9150509250929050565b6130b981612c35565b82525050565b60006020820190506130d460008301846130b0565b92915050565b6000806000606084860312156130f3576130f2612c0b565b5b600061310186828701612c94565b935050602061311286828701612c94565b925050604061312386828701612c94565b9150509250925092565b60006020828403121561314357613142612c0b565b5b600082013567ffffffffffffffff81111561316157613160612c10565b5b61316d84828501612f47565b91505092915050565b6000806040838503121561318d5761318c612c0b565b5b600061319b85828601612c5e565b92505060206131ac85828601612c5e565b9150509250929050565b6000815190506131c581612c7d565b92915050565b6000602082840312156131e1576131e0612c0b565b5b60006131ef848285016131b6565b91505092915050565b6000819050919050565b600061321d61321861321384612c15565b6131f8565b612c15565b9050919050565b600061322f82613202565b9050919050565b600061324182613224565b9050919050565b61325181613236565b82525050565b600060408201905061326c6000830185613248565b6132796020830184612d4c565b9392505050565b61328981612ce9565b811461329457600080fd5b50565b6000815190506132a681613280565b92915050565b6000602082840312156132c2576132c1612c0b565b5b60006132d084828501613297565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061330f602083612b5a565b915061331a826132d9565b602082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133ae82612c73565b91506133b983612c73565b92508282026133c781612c73565b915082820484148315176133de576133dd613374565b5b5092915050565b60006133f082612c73565b91506133fb83612c73565b925082820390508181111561341357613412613374565b5b92915050565b600061342482612c73565b915061342f83612c73565b925082820190508082111561344757613446613374565b5b92915050565b600061345882612c73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361348a57613489613374565b5b600182019050919050565b7f666565732063616e6e6f7420626520686967686572207468616e203130250000600082015250565b60006134cb601e83612b5a565b91506134d682613495565b602082019050919050565b600060208201905081810360008301526134fa816134be565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613537601783612b5a565b915061354282613501565b602082019050919050565b600060208201905081810360008301526135668161352a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135a782612c73565b91506135b283612c73565b9250826135c2576135c161356d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613629602183612b5a565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136bb602483612b5a565b91506136c68261365f565b604082019050919050565b600060208201905081810360008301526136ea816136ae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061374d602283612b5a565b9150613758826136f1565b604082019050919050565b6000602082019050818103600083015261377c81613740565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137df602583612b5a565b91506137ea82613783565b604082019050919050565b6000602082019050818103600083015261380e816137d2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613871602383612b5a565b915061387c82613815565b604082019050919050565b600060208201905081810360008301526138a081613864565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613903602983612b5a565b915061390e826138a7565b604082019050919050565b60006020820190508181036000830152613932816138f6565b9050919050565b60008151905061394881612c47565b92915050565b60006020828403121561396457613963612c0b565b5b600061397284828501613939565b91505092915050565b6000819050919050565b60006139a061399b6139968461397b565b6131f8565b612c73565b9050919050565b6139b081613985565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139eb81612c35565b82525050565b60006139fd83836139e2565b60208301905092915050565b6000602082019050919050565b6000613a21826139b6565b613a2b81856139c1565b9350613a36836139d2565b8060005b83811015613a67578151613a4e88826139f1565b9750613a5983613a09565b925050600181019050613a3a565b5085935050505092915050565b600060a082019050613a896000830188612d4c565b613a9660208301876139a7565b8181036040830152613aa88186613a16565b9050613ab760608301856130b0565b613ac46080830184612d4c565b9695505050505050565b600060c082019050613ae360008301896130b0565b613af06020830188612d4c565b613afd60408301876139a7565b613b0a60608301866139a7565b613b1760808301856130b0565b613b2460a0830184612d4c565b979650505050505050565b600080600060608486031215613b4857613b47612c0b565b5b6000613b56868287016131b6565b9350506020613b67868287016131b6565b9250506040613b78868287016131b6565b9150509250925092565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bb8601b83612b5a565b9150613bc382613b82565b602082019050919050565b60006020820190508181036000830152613be781613bab565b9050919050565b6000608082019050613c0360008301876139a7565b8181036020830152613c158186613a16565b9050613c2460408301856130b0565b613c316060830184612d4c565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c5f3caf65a40fe4c36f65b9b63aaf23e3872083f4005db78732881c61ba25b3864736f6c63430008120033
Deployed Bytecode
0x60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063c9567bf911610064578063c9567bf9146104d5578063dd62ed3e146104ec578063e57f14e114610529578063f2fde38b1461055257610171565b8063a9059cbb14610458578063b515566a14610495578063c3c8cd80146104be57610171565b8063715018a61461038057806373f4256114610397578063751039fc146103c25780638da5cb5b146103d957806395d89b4114610404578063a63748e51461042f57610171565b8063313ce56711610123578063313ce5671461029857806348ce6d5c146102c35780634ea18fab146102da57806367243482146103035780636fc3eaec1461032c57806370a082311461034357610171565b806306fdde0314610176578063095ea7b3146101a157806316114acd146101de57806318160ddd1461020757806323b872dd14610232578063273123b71461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61057b565b6040516101989190612bdf565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612ca9565b6105b8565b6040516101d59190612d04565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190612d1f565b6105d6565b005b34801561021357600080fd5b5061021c61075a565b6040516102299190612d5b565b60405180910390f35b34801561023e57600080fd5b5061025960048036038101906102549190612d76565b610764565b6040516102669190612d04565b60405180910390f35b34801561027b57600080fd5b5061029660048036038101906102919190612d1f565b61083d565b005b3480156102a457600080fd5b506102ad61092d565b6040516102ba9190612de5565b60405180910390f35b3480156102cf57600080fd5b506102d8610936565b005b3480156102e657600080fd5b5061030160048036038101906102fc9190612e00565b6109c3565b005b34801561030f57600080fd5b5061032a60048036038101906103259190613038565b610a2e565b005b34801561033857600080fd5b50610341610c5b565b005b34801561034f57600080fd5b5061036a60048036038101906103659190612d1f565b610ccd565b6040516103779190612d5b565b60405180910390f35b34801561038c57600080fd5b50610395610d16565b005b3480156103a357600080fd5b506103ac610e69565b6040516103b99190612d5b565b60405180910390f35b3480156103ce57600080fd5b506103d7610e73565b005b3480156103e557600080fd5b506103ee610ee8565b6040516103fb91906130bf565b60405180910390f35b34801561041057600080fd5b50610419610f11565b6040516104269190612bdf565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906130da565b610f4e565b005b34801561046457600080fd5b5061047f600480360381019061047a9190612ca9565b611027565b60405161048c9190612d04565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b7919061312d565b611045565b005b3480156104ca57600080fd5b506104d361116f565b005b3480156104e157600080fd5b506104ea6111e9565b005b3480156104f857600080fd5b50610513600480360381019061050e9190613176565b611331565b6040516105209190612d5b565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190612d1f565b6113b8565b005b34801561055e57600080fd5b5061057960048036038101906105749190612d1f565b611474565b005b60606040518060400160405280600881526020017f46696e654275726e000000000000000000000000000000000000000000000000815250905090565b60006105cc6105c561168a565b8484611692565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061761168a565b73ffffffffffffffffffffffffffffffffffffffff161461063757600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106b491906130bf565b602060405180830381865afa1580156106d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f591906131cb565b6040518363ffffffff1660e01b8152600401610712929190613257565b6020604051808303816000875af1158015610731573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075591906132ac565b505050565b6000600954905090565b600061077184848461185b565b6108328461077d61168a565b61082d85604051806060016040528060288152602001613c3b60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107e361168a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f539092919063ffffffff16565b611692565b600190509392505050565b61084561168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990613325565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661097761168a565b73ffffffffffffffffffffffffffffffffffffffff161461099757600080fd5b601560149054906101000a900460ff1615601560146101000a81548160ff021916908315150217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0461168a565b73ffffffffffffffffffffffffffffffffffffffff1614610a2457600080fd5b8060118190555050565b610a3661168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90613325565b60405180910390fd5b60005b8251811015610c56576000633b9aca00838381518110610ae957610ae8613345565b5b6020026020010151610afb91906133a3565b905080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b4c91906133e5565b925050819055508060026000868581518110610b6b57610b6a613345565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bbc9190613419565b92505081905550838281518110610bd657610bd5613345565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c3a9190612d5b565b60405180910390a3508080610c4e9061344d565b915050610ac6565b505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9c61168a565b73ffffffffffffffffffffffffffffffffffffffff1614610cbc57600080fd5b6000479050610cca81611fb7565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1e61168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da290613325565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a54905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eb461168a565b73ffffffffffffffffffffffffffffffffffffffff1614610ed457600080fd5b600954600f81905550600954601081905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4655524e00000000000000000000000000000000000000000000000000000000815250905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f8f61168a565b73ffffffffffffffffffffffffffffffffffffffff1614610faf57600080fd5b60648311158015610fc1575060648211155b8015610fce575060648111155b61100d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611004906134e1565b60405180910390fd5b82600b8190555081600c8190555080600d81905550505050565b600061103b61103461168a565b848461185b565b6001905092915050565b61104d61168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d190613325565b60405180910390fd5b60005b815181101561116b576001600560008484815181106110ff576110fe613345565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111639061344d565b9150506110dd565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111b061168a565b73ffffffffffffffffffffffffffffffffffffffff16146111d057600080fd5b60006111db30610ccd565b90506111e681612023565b50565b6111f161168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590613325565b60405180910390fd5b60158054906101000a900460ff16156112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c39061354d565b60405180910390fd5b6112e66112d830610ccd565b476112e1610ee8565b61229c565b6001601560176101000a81548160ff02191690831515021790555060016015806101000a81548160ff02191690831515021790555061012c426113299190613419565b600781905550565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113f961168a565b73ffffffffffffffffffffffffffffffffffffffff161461141957600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61147c61168a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090613325565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061160883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123b1565b905092915050565b60008083036116225760009050611684565b6000828461163091906133a3565b905082848261163f919061359c565b1461167f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116769061363f565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f8906136d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176790613763565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161184e9190612d5b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c1906137f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613887565b60405180910390fd5b6000811161197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613919565b60405180910390fd5b6000600881905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a305750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e0b57611a60600e54611a52600d54600b5461241490919063ffffffff16565b61241490919063ffffffff16565b600881905550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b0a5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b1357600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bbe5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c145750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c21575060075442105b15611cd157600f54811115611c3557600080fd5b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611c8057600080fd5b601e42611c8d9190613419565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560169054906101000a900460ff16158015611d3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d545750601560179054906101000a900460ff165b8015611daa5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0a576000611dba30610ccd565b9050601154811115611e0857611dcf81612023565b60004790506000811115611e0657601560149054906101000a900460ff1615611dfc57611dfb81612472565b5b611e0547611fb7565b5b505b505b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611eb65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f0c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4357611f3c600e54611f2e600d54600c5461241490919063ffffffff16565b61241490919063ffffffff16565b6008819055505b611f4e8383836126c9565b505050565b6000838311158290611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f929190612bdf565b60405180910390fd5b5060008385611faa91906133e5565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561201f573d6000803e3d6000fd5b5050565b6001601560166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561205b5761205a612e32565b5b6040519080825280602002602001820160405280156120895781602001602082028036833780820191505090505b50905030816000815181106120a1576120a0613345565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216c919061394e565b816001815181106121805761217f613345565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611692565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161224b959493929190613a74565b600060405180830381600087803b15801561226557600080fd5b505af1158015612279573d6000803e3d6000fd5b50505050506000601560166101000a81548160ff02191690831515021790555050565b6001601560166101000a81548160ff0219169083151502179055506122e430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611692565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b815260040161234b96959493929190613ace565b60606040518083038185885af1158015612369573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061238e9190613b2f565b5050506000601560166101000a81548160ff021916908315150217905550505050565b600080831182906123f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ef9190612bdf565b60405180910390fd5b5060008385612407919061359c565b9050809150509392505050565b60008082846124239190613419565b905083811015612468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245f90613bce565b60405180910390fd5b8091505092915050565b600061249b600261248d6005856115c690919063ffffffff16565b61161090919063ffffffff16565b90506000600267ffffffffffffffff8111156124ba576124b9612e32565b5b6040519080825280602002602001820160405280156124e85781602001602082028036833780820191505090505b509050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257c919061394e565b816000815181106125905761258f613345565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507375c97384ca209f915381755c582ec0e2ce88c1ba816001815181106125f3576125f2613345565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b81526004016126929493929190613bee565b6000604051808303818588803b1580156126ab57600080fd5b505af11580156126bf573d6000803e3d6000fd5b5050505050505050565b6000806000806126d885612917565b935093509350935061273281600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d490919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c784600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241490919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285c82600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128a98784612a1e565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516129069190612d5b565b60405180910390a350505050505050565b60008060008060006129486103e861293a6008548961161090919063ffffffff16565b6115c690919063ffffffff16565b9050600061295f82886129d490919063ffffffff16565b9050600061298c6103e861297e600e548b61161090919063ffffffff16565b6115c690919063ffffffff16565b905060006129a382856129d490919063ffffffff16565b905060006129ba838b6129d490919063ffffffff16565b905083838383985098509850985050505050509193509193565b6000612a1683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f53565b905092915050565b612a7081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d490919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060096000828254612ac591906133e5565b9250508190555080600a6000828254612ade9190613419565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b439190612d5b565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b89578082015181840152602081019050612b6e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612bb182612b4f565b612bbb8185612b5a565b9350612bcb818560208601612b6b565b612bd481612b95565b840191505092915050565b60006020820190508181036000830152612bf98184612ba6565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4082612c15565b9050919050565b612c5081612c35565b8114612c5b57600080fd5b50565b600081359050612c6d81612c47565b92915050565b6000819050919050565b612c8681612c73565b8114612c9157600080fd5b50565b600081359050612ca381612c7d565b92915050565b60008060408385031215612cc057612cbf612c0b565b5b6000612cce85828601612c5e565b9250506020612cdf85828601612c94565b9150509250929050565b60008115159050919050565b612cfe81612ce9565b82525050565b6000602082019050612d196000830184612cf5565b92915050565b600060208284031215612d3557612d34612c0b565b5b6000612d4384828501612c5e565b91505092915050565b612d5581612c73565b82525050565b6000602082019050612d706000830184612d4c565b92915050565b600080600060608486031215612d8f57612d8e612c0b565b5b6000612d9d86828701612c5e565b9350506020612dae86828701612c5e565b9250506040612dbf86828701612c94565b9150509250925092565b600060ff82169050919050565b612ddf81612dc9565b82525050565b6000602082019050612dfa6000830184612dd6565b92915050565b600060208284031215612e1657612e15612c0b565b5b6000612e2484828501612c94565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e6a82612b95565b810181811067ffffffffffffffff82111715612e8957612e88612e32565b5b80604052505050565b6000612e9c612c01565b9050612ea88282612e61565b919050565b600067ffffffffffffffff821115612ec857612ec7612e32565b5b602082029050602081019050919050565b600080fd5b6000612ef1612eec84612ead565b612e92565b90508083825260208201905060208402830185811115612f1457612f13612ed9565b5b835b81811015612f3d5780612f298882612c5e565b845260208401935050602081019050612f16565b5050509392505050565b600082601f830112612f5c57612f5b612e2d565b5b8135612f6c848260208601612ede565b91505092915050565b600067ffffffffffffffff821115612f9057612f8f612e32565b5b602082029050602081019050919050565b6000612fb4612faf84612f75565b612e92565b90508083825260208201905060208402830185811115612fd757612fd6612ed9565b5b835b818110156130005780612fec8882612c94565b845260208401935050602081019050612fd9565b5050509392505050565b600082601f83011261301f5761301e612e2d565b5b813561302f848260208601612fa1565b91505092915050565b6000806040838503121561304f5761304e612c0b565b5b600083013567ffffffffffffffff81111561306d5761306c612c10565b5b61307985828601612f47565b925050602083013567ffffffffffffffff81111561309a57613099612c10565b5b6130a68582860161300a565b9150509250929050565b6130b981612c35565b82525050565b60006020820190506130d460008301846130b0565b92915050565b6000806000606084860312156130f3576130f2612c0b565b5b600061310186828701612c94565b935050602061311286828701612c94565b925050604061312386828701612c94565b9150509250925092565b60006020828403121561314357613142612c0b565b5b600082013567ffffffffffffffff81111561316157613160612c10565b5b61316d84828501612f47565b91505092915050565b6000806040838503121561318d5761318c612c0b565b5b600061319b85828601612c5e565b92505060206131ac85828601612c5e565b9150509250929050565b6000815190506131c581612c7d565b92915050565b6000602082840312156131e1576131e0612c0b565b5b60006131ef848285016131b6565b91505092915050565b6000819050919050565b600061321d61321861321384612c15565b6131f8565b612c15565b9050919050565b600061322f82613202565b9050919050565b600061324182613224565b9050919050565b61325181613236565b82525050565b600060408201905061326c6000830185613248565b6132796020830184612d4c565b9392505050565b61328981612ce9565b811461329457600080fd5b50565b6000815190506132a681613280565b92915050565b6000602082840312156132c2576132c1612c0b565b5b60006132d084828501613297565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061330f602083612b5a565b915061331a826132d9565b602082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133ae82612c73565b91506133b983612c73565b92508282026133c781612c73565b915082820484148315176133de576133dd613374565b5b5092915050565b60006133f082612c73565b91506133fb83612c73565b925082820390508181111561341357613412613374565b5b92915050565b600061342482612c73565b915061342f83612c73565b925082820190508082111561344757613446613374565b5b92915050565b600061345882612c73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361348a57613489613374565b5b600182019050919050565b7f666565732063616e6e6f7420626520686967686572207468616e203130250000600082015250565b60006134cb601e83612b5a565b91506134d682613495565b602082019050919050565b600060208201905081810360008301526134fa816134be565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613537601783612b5a565b915061354282613501565b602082019050919050565b600060208201905081810360008301526135668161352a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135a782612c73565b91506135b283612c73565b9250826135c2576135c161356d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613629602183612b5a565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136bb602483612b5a565b91506136c68261365f565b604082019050919050565b600060208201905081810360008301526136ea816136ae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061374d602283612b5a565b9150613758826136f1565b604082019050919050565b6000602082019050818103600083015261377c81613740565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137df602583612b5a565b91506137ea82613783565b604082019050919050565b6000602082019050818103600083015261380e816137d2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613871602383612b5a565b915061387c82613815565b604082019050919050565b600060208201905081810360008301526138a081613864565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613903602983612b5a565b915061390e826138a7565b604082019050919050565b60006020820190508181036000830152613932816138f6565b9050919050565b60008151905061394881612c47565b92915050565b60006020828403121561396457613963612c0b565b5b600061397284828501613939565b91505092915050565b6000819050919050565b60006139a061399b6139968461397b565b6131f8565b612c73565b9050919050565b6139b081613985565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139eb81612c35565b82525050565b60006139fd83836139e2565b60208301905092915050565b6000602082019050919050565b6000613a21826139b6565b613a2b81856139c1565b9350613a36836139d2565b8060005b83811015613a67578151613a4e88826139f1565b9750613a5983613a09565b925050600181019050613a3a565b5085935050505092915050565b600060a082019050613a896000830188612d4c565b613a9660208301876139a7565b8181036040830152613aa88186613a16565b9050613ab760608301856130b0565b613ac46080830184612d4c565b9695505050505050565b600060c082019050613ae360008301896130b0565b613af06020830188612d4c565b613afd60408301876139a7565b613b0a60608301866139a7565b613b1760808301856130b0565b613b2460a0830184612d4c565b979650505050505050565b600080600060608486031215613b4857613b47612c0b565b5b6000613b56868287016131b6565b9350506020613b67868287016131b6565b9250506040613b78868287016131b6565b9150509250925092565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bb8601b83612b5a565b9150613bc382613b82565b602082019050919050565b60006020820190508181036000830152613be781613bab565b9050919050565b6000608082019050613c0360008301876139a7565b8181036020830152613c158186613a16565b9050613c2460408301856130b0565b613c316060830184612d4c565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c5f3caf65a40fe4c36f65b9b63aaf23e3872083f4005db78732881c61ba25b3864736f6c63430008120033
Deployed Bytecode Sourcemap
3998:10735:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6047:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6878:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14486:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6324:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7141:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12979:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6233:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7707:119;;;;;;;;;;;;;:::i;:::-;;7834:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8283:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13835:188;;;;;;;;;;;;;:::i;:::-;;6427:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2878:148;;;;;;;;;;;;;:::i;:::-;;7047:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8653:156;;;;;;;;;;;;;:::i;:::-;;2483:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6138:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7978:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6552:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12803:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13634:189;;;;;;;;;;;;;:::i;:::-;;12497:294;;;;;;;;;;;;;:::i;:::-;;6727:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8817:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2697:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6047:83;6084:13;6117:5;;;;;;;;;;;;;;;;;6110:12;;6047:83;:::o;6878:161::-;6953:4;6970:39;6979:12;:10;:12::i;:::-;6993:7;7002:6;6970:8;:39::i;:::-;7027:4;7020:11;;6878:161;;;;:::o;14486:244::-;14575:9;;;;;;;;;;;14559:25;;:12;:10;:12::i;:::-;:25;;;14551:34;;;;;;14596:20;14626:12;14596:43;;14650:13;:22;;;14673:9;;;;;;;;;;;14683:13;:23;;;14715:4;14683:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14650:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14540:190;14486:244;:::o;6324:95::-;6377:7;6404;;6397:14;;6324:95;:::o;7141:313::-;7239:4;7256:36;7266:6;7274:9;7285:6;7256:9;:36::i;:::-;7303:121;7312:6;7320:12;:10;:12::i;:::-;7334:89;7372:6;7334:89;;;;;;;;;;;;;;;;;:11;:19;7346:6;7334:19;;;;;;;;;;;;;;;:33;7354:12;:10;:12::i;:::-;7334:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7303:8;:121::i;:::-;7442:4;7435:11;;7141:313;;;;;:::o;12979:88::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13054:5:::1;13039:4;:12;13044:6;13039:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12979:88:::0;:::o;6233:83::-;6274:5;4960:1;6292:16;;6233:83;:::o;7707:119::-;7777:9;;;;;;;;;;;7761:25;;:12;:10;:12::i;:::-;:25;;;7753:34;;;;;;7810:8;;;;;;;;;;;7809:9;7798:8;;:20;;;;;;;;;;;;;;;;;;7707:119::o;7834:136::-;7920:9;;;;;;;;;;;7904:25;;:12;:10;:12::i;:::-;:25;;;7896:34;;;;;;7954:6;7941:10;:19;;;;7834:136;:::o;8283:362::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8388:6:::1;8384:254;8399:9;:16;8397:1;:18;8384:254;;;8435:14;8465:5;8452:7;8460:1;8452:10;;;;;;;;:::i;:::-;;;;;;;;:18;;;;:::i;:::-;8435:35;;8511:6;8485:7;:22;8501:4;8485:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;8557:6;8532:7;:21;8540:9;8550:1;8540:12;;;;;;;;:::i;:::-;;;;;;;;8532:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;8606:9;8616:1;8606:12;;;;;;;;:::i;:::-;;;;;;;;8583:43;;8600:4;8583:43;;;8619:6;8583:43;;;;;;:::i;:::-;;;;;;;;8420:218;8416:3;;;;;:::i;:::-;;;;8384:254;;;;8283:362:::0;;:::o;13835:188::-;13901:9;;;;;;;;;;;13885:25;;:12;:10;:12::i;:::-;:25;;;13877:34;;;;;;13922:26;13951:21;13922:50;;13983:32;13996:18;13983:12;:32::i;:::-;13866:157;13835:188::o;6427:117::-;6493:7;6520;:16;6528:7;6520:16;;;;;;;;;;;;;;;;6513:23;;6427:117;;;:::o;2878:148::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2985:1:::1;2948:40;;2969:6;::::0;::::1;;;;;;;;2948:40;;;;;;;;;;;;3016:1;2999:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2878:148::o:0;7047:86::-;7086:7;7113:12;;7106:19;;7047:86;:::o;8653:156::-;8721:9;;;;;;;;;;;8705:25;;:12;:10;:12::i;:::-;:25;;;8697:34;;;;;;8757:7;;8742:12;:22;;;;8794:7;;8775:16;:26;;;;8653:156::o;2483:79::-;2521:7;2548:6;;;;;;;;;;;2541:13;;2483:79;:::o;6138:87::-;6177:13;6210:7;;;;;;;;;;;;;;;;;6203:14;;6138:87;:::o;7978:297::-;8085:9;;;;;;;;;;;8069:25;;:12;:10;:12::i;:::-;:25;;;8061:34;;;;;;8123:3;8114:5;:12;;:28;;;;;8139:3;8130:5;:12;;8114:28;:44;;;;;8155:3;8146:5;:12;;8114:44;8106:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8210:5;8203:4;:12;;;;8233:5;8226:4;:12;;;;8262:5;8249:10;:18;;;;7978:297;;;:::o;6552:167::-;6630:4;6647:42;6657:12;:10;:12::i;:::-;6671:9;6682:6;6647:9;:42::i;:::-;6707:4;6700:11;;6552:167;;;;:::o;12803:164::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12877:6:::1;12872:88;12893:5;:12;12889:1;:16;12872:88;;;12944:4;12927;:14;12932:5;12938:1;12932:8;;;;;;;;:::i;:::-;;;;;;;;12927:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12907:3;;;;;:::i;:::-;;;;12872:88;;;;12803:164:::0;:::o;13634:189::-;13700:9;;;;;;;;;;;13684:25;;:12;:10;:12::i;:::-;:25;;;13676:34;;;;;;13721:23;13747:24;13765:4;13747:9;:24::i;:::-;13721:50;;13782:33;13799:15;13782:16;:33::i;:::-;13665:158;13634:189::o;12497:294::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12561:11:::1;::::0;::::1;;;;;;;;12560:12;12552:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12610:68;12623:24;12641:4;12623:9;:24::i;:::-;12648:21;12670:7;:5;:7::i;:::-;12610:12;:68::i;:::-;12703:4;12689:11;;:18;;;;;;;;;;;;;;;;;;12732:4;12718:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12773:9;12754:15;:29;;;;:::i;:::-;12747:4;:36;;;;12497:294::o:0;6727:143::-;6808:7;6835:11;:18;6847:5;6835:18;;;;;;;;;;;;;;;:27;6854:7;6835:27;;;;;;;;;;;;;;;;6828:34;;6727:143;;;;:::o;8817:147::-;8902:9;;;;;;;;;;;8886:25;;:12;:10;:12::i;:::-;:25;;;8878:34;;;;;;8952:4;8923:18;:26;8942:6;8923:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;8817:147;:::o;2697:173::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2813:9:::1;2784:39;;2805:6;::::0;::::1;;;;;;;;2784:39;;;;;;;;;;;;2843:9;2834:6;::::0;:18:::1;;;;;;;;;;;;;;;;;;2697:173:::0;:::o;1790:132::-;1848:7;1875:39;1879:1;1882;1875:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1868:46;;1790:132;;;;:::o;1536:246::-;1594:7;1623:1;1618;:6;1614:47;;1648:1;1641:8;;;;1614:47;1671:9;1687:1;1683;:5;;;;:::i;:::-;1671:17;;1716:1;1711;1707;:5;;;;:::i;:::-;:10;1699:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1773:1;1766:8;;;1536:246;;;;;:::o;201:98::-;254:7;281:10;274:17;;201:98;:::o;8977:335::-;9087:1;9070:19;;:5;:19;;;9062:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9168:1;9149:21;;:7;:21;;;9141:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9250:6;9220:11;:18;9232:5;9220:18;;;;;;;;;;;;;;;:27;9239:7;9220:27;;;;;;;;;;;;;;;:36;;;;9288:7;9272:32;;9281:5;9272:32;;;9297:6;9272:32;;;;;;:::i;:::-;;;;;;;;8977:335;;;:::o;9320:1764::-;9424:1;9408:18;;:4;:18;;;9400:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9501:1;9487:16;;:2;:16;;;9479:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9571:1;9562:6;:10;9554:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9636:1;9629:4;:8;;;;9660:9;;;;;;;;;;;9652:17;;:4;:17;;;;:36;;;;;9679:9;;;;;;;;;;;9673:15;;:2;:15;;;;9652:36;9648:1208;;;9712:40;9737:14;;9712:20;9721:10;;9712:4;;:8;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;9705:4;:47;;;;9776:4;:10;9781:4;9776:10;;;;;;;;;;;;;;;;;;;;;;;;;9775:11;:24;;;;;9791:4;:8;9796:2;9791:8;;;;;;;;;;;;;;;;;;;;;;;;;9790:9;9775:24;9767:33;;;;;;9827:13;;;;;;;;;;;9819:21;;:4;:21;;;:55;;;;;9858:15;;;;;;;;;;;9844:30;;:2;:30;;;;9819:55;:83;;;;;9880:18;:22;9899:2;9880:22;;;;;;;;;;;;;;;;;;;;;;;;;9878:24;9819:83;:111;;;;;9925:4;;9907:15;:22;9819:111;9815:333;;;9997:12;;9987:6;:22;;9979:31;;;;;;10052:15;10037:8;:12;10046:2;10037:12;;;;;;;;;;;;;;;;:30;10029:39;;;;;;10121:10;10102:15;:30;;;;:::i;:::-;10087:8;:12;10096:2;10087:12;;;;;;;;;;;;;;;:45;;;;9815:333;10195:6;;;;;;;;;;;10194:7;:32;;;;;10213:13;;;;;;;;;;;10205:21;;:4;:21;;;;10194:32;:47;;;;;10230:11;;;;;;;;;;;10194:47;:76;;;;;10246:18;:24;10265:4;10246:24;;;;;;;;;;;;;;;;;;;;;;;;;10245:25;10194:76;10190:655;;;10291:28;10322:24;10340:4;10322:9;:24::i;:::-;10291:55;;10391:10;;10368:20;:33;10365:465;;;10425:38;10442:20;10425:16;:38::i;:::-;10486:26;10515:21;10486:50;;10583:1;10562:18;:22;10559:252;;;10616:8;;;;;;;;;;;10613:113;;;10657:41;10679:18;10657:21;:41::i;:::-;10613:113;10752:35;10765:21;10752:12;:35::i;:::-;10559:252;10402:428;10365:465;10272:573;10190:655;9648:1208;10876:13;;;;;;;;;;;10870:19;;:2;:19;;;:55;;;;;10909:15;;;;;;;;;;;10893:32;;:4;:32;;;;10870:55;:85;;;;;10931:18;:24;10950:4;10931:24;;;;;;;;;;;;;;;;;;;;;;;;;10929:26;10870:85;10866:165;;;10979:40;11004:14;;10979:20;10988:10;;10979:4;;:8;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;10972:4;:47;;;;10866:165;11043:33;11061:4;11066:2;11069:6;11043:17;:33::i;:::-;9320:1764;;;:::o;1338:190::-;1424:7;1457:1;1452;:6;;1460:12;1444:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1484:9;1500:1;1496;:5;;;;:::i;:::-;1484:17;;1519:1;1512:8;;;1338:190;;;;;:::o;12387:98::-;12444:16;;;;;;;;;;;:25;;:33;12470:6;12444:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12387:98;:::o;11092:483::-;5321:4;5312:6;;:13;;;;;;;;;;;;;;;;;;11170:21:::1;11208:1;11194:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11170:40;;11239:4;11221;11226:1;11221:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11265:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11255:4;11260:1;11255:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11298:62;11315:4;11330:15;;;;;;;;;;;11348:11;11298:8;:62::i;:::-;11371:15;;;;;;;;;;;:66;;;11452:11;11478:1;11494:4;11521;11541:15;11371:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11159:416;5357:5:::0;5348:6;;:14;;;;;;;;;;;;;;;;;;11092:483;:::o;12085:288::-;5321:4;5312:6;;:13;;;;;;;;;;;;;;;;;;12191:60:::1;12208:4;12222:15;;;;;;;;;;;12239:11;12191:8;:60::i;:::-;12262:15;;;;;;;;;;;:31;;;12301:9;12320:4;12326:11;12338:1;12340::::0;12342:6:::1;12349:15;12262:103;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5357:5:::0;5348:6;;:14;;;;;;;;;;;;;;;;;;12085:288;;;:::o;1930:189::-;2016:7;2048:1;2044;:5;2051:12;2036:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2075:9;2091:1;2087;:5;;;;:::i;:::-;2075:17;;2110:1;2103:8;;;1930:189;;;;;:::o;1007:179::-;1065:7;1085:9;1101:1;1097;:5;;;;:::i;:::-;1085:17;;1126:1;1121;:6;;1113:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1177:1;1170:8;;;1007:179;;;;:::o;11583:488::-;11652:17;11672:23;11693:1;11672:16;11686:1;11672:9;:13;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;11652:43;;11706:22;11745:1;11731:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11706:41;;11768:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11758:4;11763:1;11758:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;11819:42;11801:4;11806:1;11801:7;;;;;;;;:::i;:::-;;;;;;;:61;;;;;;;;;;;11873:15;;;;;;;;;;;:66;;;11947:9;11972:1;11988:4;12015:6;12037:15;11873:190;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11641:430;;11583:488;:::o;13075:510::-;13174:22;13197:18;13216:17;13234:20;13258;13270:7;13258:11;:20::i;:::-;13173:105;;;;;;;;13307:33;13327:12;13307:7;:15;13315:6;13307:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;13289:7;:15;13297:6;13289:15;;;;;;;;;;;;;;;:51;;;;13372:38;13395:14;13372:7;:18;13380:9;13372:18;;;;;;;;;;;;;;;;:22;;:38;;;;:::i;:::-;13351:7;:18;13359:9;13351:18;;;;;;;;;;;;;;;:59;;;;13447:37;13474:9;13447:7;:22;13463:4;13447:22;;;;;;;;;;;;;;;;:26;;:37;;;;:::i;:::-;13422:7;:22;13438:4;13422:22;;;;;;;;;;;;;;;:62;;;;13495:23;13500:6;13507:10;13495:4;:23::i;:::-;13551:9;13534:43;;13543:6;13534:43;;;13562:14;13534:43;;;;;;:::i;:::-;;;;;;;;13162:423;;;;13075:510;;;:::o;14034:444::-;14094:7;14103;14112;14121;14141:12;14156:27;14178:4;14156:17;14168:4;;14156:7;:11;;:17;;;;:::i;:::-;:21;;:27;;;;:::i;:::-;14141:42;;14194:23;14220:17;14232:4;14220:7;:11;;:17;;;;:::i;:::-;14194:43;;14248:13;14264:37;14296:4;14264:27;14276:14;;14264:7;:11;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;14248:53;;14312:18;14333:15;14342:5;14333:4;:8;;:15;;;;:::i;:::-;14312:36;;14359:21;14383:18;14395:5;14383:7;:11;;:18;;;;:::i;:::-;14359:42;;14420:15;14437:5;14444:10;14456:13;14412:58;;;;;;;;;;;;;14034:444;;;;;:::o;1194:136::-;1252:7;1279:43;1283:1;1286;1279:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1272:50;;1194:136;;;;:::o;7462:234::-;7546:28;7567:6;7546:7;:16;7554:7;7546:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;7527:7;:16;7535:7;7527:16;;;;;;;;;;;;;;;:47;;;;7596:6;7585:7;;:17;;;;;;;:::i;:::-;;;;;;;;7629:6;7613:12;;:22;;;;;;;:::i;:::-;;;;;;;;7677:1;7651:37;;7660:7;7651:37;;;7681:6;7651:37;;;;;;:::i;:::-;;;;;;;;7462:234;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;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:117::-;5632:1;5629;5622:12;5646:180;5694:77;5691:1;5684:88;5791:4;5788:1;5781:15;5815:4;5812:1;5805:15;5832:281;5915:27;5937:4;5915:27;:::i;:::-;5907:6;5903:40;6045:6;6033:10;6030:22;6009:18;5997:10;5994:34;5991:62;5988:88;;;6056:18;;:::i;:::-;5988:88;6096:10;6092:2;6085:22;5875:238;5832:281;;:::o;6119:129::-;6153:6;6180:20;;:::i;:::-;6170:30;;6209:33;6237:4;6229:6;6209:33;:::i;:::-;6119:129;;;:::o;6254:311::-;6331:4;6421:18;6413:6;6410:30;6407:56;;;6443:18;;:::i;:::-;6407:56;6493:4;6485:6;6481:17;6473:25;;6553:4;6547;6543:15;6535:23;;6254:311;;;:::o;6571:117::-;6680:1;6677;6670:12;6711:710;6807:5;6832:81;6848:64;6905:6;6848:64;:::i;:::-;6832:81;:::i;:::-;6823:90;;6933:5;6962:6;6955:5;6948:21;6996:4;6989:5;6985:16;6978:23;;7049:4;7041:6;7037:17;7029:6;7025:30;7078:3;7070:6;7067:15;7064:122;;;7097:79;;:::i;:::-;7064:122;7212:6;7195:220;7229:6;7224:3;7221:15;7195:220;;;7304:3;7333:37;7366:3;7354:10;7333:37;:::i;:::-;7328:3;7321:50;7400:4;7395:3;7391:14;7384:21;;7271:144;7255:4;7250:3;7246:14;7239:21;;7195:220;;;7199:21;6813:608;;6711:710;;;;;:::o;7444:370::-;7515:5;7564:3;7557:4;7549:6;7545:17;7541:27;7531:122;;7572:79;;:::i;:::-;7531:122;7689:6;7676:20;7714:94;7804:3;7796:6;7789:4;7781:6;7777:17;7714:94;:::i;:::-;7705:103;;7521:293;7444:370;;;;:::o;7820:311::-;7897:4;7987:18;7979:6;7976:30;7973:56;;;8009:18;;:::i;:::-;7973:56;8059:4;8051:6;8047:17;8039:25;;8119:4;8113;8109:15;8101:23;;7820:311;;;:::o;8154:710::-;8250:5;8275:81;8291:64;8348:6;8291:64;:::i;:::-;8275:81;:::i;:::-;8266:90;;8376:5;8405:6;8398:5;8391:21;8439:4;8432:5;8428:16;8421:23;;8492:4;8484:6;8480:17;8472:6;8468:30;8521:3;8513:6;8510:15;8507:122;;;8540:79;;:::i;:::-;8507:122;8655:6;8638:220;8672:6;8667:3;8664:15;8638:220;;;8747:3;8776:37;8809:3;8797:10;8776:37;:::i;:::-;8771:3;8764:50;8843:4;8838:3;8834:14;8827:21;;8714:144;8698:4;8693:3;8689:14;8682:21;;8638:220;;;8642:21;8256:608;;8154:710;;;;;:::o;8887:370::-;8958:5;9007:3;9000:4;8992:6;8988:17;8984:27;8974:122;;9015:79;;:::i;:::-;8974:122;9132:6;9119:20;9157:94;9247:3;9239:6;9232:4;9224:6;9220:17;9157:94;:::i;:::-;9148:103;;8964:293;8887:370;;;;:::o;9263:894::-;9381:6;9389;9438:2;9426:9;9417:7;9413:23;9409:32;9406:119;;;9444:79;;:::i;:::-;9406:119;9592:1;9581:9;9577:17;9564:31;9622:18;9614:6;9611:30;9608:117;;;9644:79;;:::i;:::-;9608:117;9749:78;9819:7;9810:6;9799:9;9795:22;9749:78;:::i;:::-;9739:88;;9535:302;9904:2;9893:9;9889:18;9876:32;9935:18;9927:6;9924:30;9921:117;;;9957:79;;:::i;:::-;9921:117;10062:78;10132:7;10123:6;10112:9;10108:22;10062:78;:::i;:::-;10052:88;;9847:303;9263:894;;;;;:::o;10163:118::-;10250:24;10268:5;10250:24;:::i;:::-;10245:3;10238:37;10163:118;;:::o;10287:222::-;10380:4;10418:2;10407:9;10403:18;10395:26;;10431:71;10499:1;10488:9;10484:17;10475:6;10431:71;:::i;:::-;10287:222;;;;:::o;10515:619::-;10592:6;10600;10608;10657:2;10645:9;10636:7;10632:23;10628:32;10625:119;;;10663:79;;:::i;:::-;10625:119;10783:1;10808:53;10853:7;10844:6;10833:9;10829:22;10808:53;:::i;:::-;10798:63;;10754:117;10910:2;10936:53;10981:7;10972:6;10961:9;10957:22;10936:53;:::i;:::-;10926:63;;10881:118;11038:2;11064:53;11109:7;11100:6;11089:9;11085:22;11064:53;:::i;:::-;11054:63;;11009:118;10515:619;;;;;:::o;11140:539::-;11224:6;11273:2;11261:9;11252:7;11248:23;11244:32;11241:119;;;11279:79;;:::i;:::-;11241:119;11427:1;11416:9;11412:17;11399:31;11457:18;11449:6;11446:30;11443:117;;;11479:79;;:::i;:::-;11443:117;11584:78;11654:7;11645:6;11634:9;11630:22;11584:78;:::i;:::-;11574:88;;11370:302;11140:539;;;;:::o;11685:474::-;11753:6;11761;11810:2;11798:9;11789:7;11785:23;11781:32;11778:119;;;11816:79;;:::i;:::-;11778:119;11936:1;11961:53;12006:7;11997:6;11986:9;11982:22;11961:53;:::i;:::-;11951:63;;11907:117;12063:2;12089:53;12134:7;12125:6;12114:9;12110:22;12089:53;:::i;:::-;12079:63;;12034:118;11685:474;;;;;:::o;12165:143::-;12222:5;12253:6;12247:13;12238:22;;12269:33;12296:5;12269:33;:::i;:::-;12165:143;;;;:::o;12314:351::-;12384:6;12433:2;12421:9;12412:7;12408:23;12404:32;12401:119;;;12439:79;;:::i;:::-;12401:119;12559:1;12584:64;12640:7;12631:6;12620:9;12616:22;12584:64;:::i;:::-;12574:74;;12530:128;12314:351;;;;:::o;12671:60::-;12699:3;12720:5;12713:12;;12671:60;;;:::o;12737:142::-;12787:9;12820:53;12838:34;12847:24;12865:5;12847:24;:::i;:::-;12838:34;:::i;:::-;12820:53;:::i;:::-;12807:66;;12737:142;;;:::o;12885:126::-;12935:9;12968:37;12999:5;12968:37;:::i;:::-;12955:50;;12885:126;;;:::o;13017:134::-;13075:9;13108:37;13139:5;13108:37;:::i;:::-;13095:50;;13017:134;;;:::o;13157:147::-;13252:45;13291:5;13252:45;:::i;:::-;13247:3;13240:58;13157:147;;:::o;13310:348::-;13439:4;13477:2;13466:9;13462:18;13454:26;;13490:79;13566:1;13555:9;13551:17;13542:6;13490:79;:::i;:::-;13579:72;13647:2;13636:9;13632:18;13623:6;13579:72;:::i;:::-;13310:348;;;;;:::o;13664:116::-;13734:21;13749:5;13734:21;:::i;:::-;13727:5;13724:32;13714:60;;13770:1;13767;13760:12;13714:60;13664:116;:::o;13786:137::-;13840:5;13871:6;13865:13;13856:22;;13887:30;13911:5;13887:30;:::i;:::-;13786:137;;;;:::o;13929:345::-;13996:6;14045:2;14033:9;14024:7;14020:23;14016:32;14013:119;;;14051:79;;:::i;:::-;14013:119;14171:1;14196:61;14249:7;14240:6;14229:9;14225:22;14196:61;:::i;:::-;14186:71;;14142:125;13929:345;;;;:::o;14280:182::-;14420:34;14416:1;14408:6;14404:14;14397:58;14280:182;:::o;14468:366::-;14610:3;14631:67;14695:2;14690:3;14631:67;:::i;:::-;14624:74;;14707:93;14796:3;14707:93;:::i;:::-;14825:2;14820:3;14816:12;14809:19;;14468:366;;;:::o;14840:419::-;15006:4;15044:2;15033:9;15029:18;15021:26;;15093:9;15087:4;15083:20;15079:1;15068:9;15064:17;15057:47;15121:131;15247:4;15121:131;:::i;:::-;15113:139;;14840:419;;;:::o;15265:180::-;15313:77;15310:1;15303:88;15410:4;15407:1;15400:15;15434:4;15431:1;15424:15;15451:180;15499:77;15496:1;15489:88;15596:4;15593:1;15586:15;15620:4;15617:1;15610:15;15637:410;15677:7;15700:20;15718:1;15700:20;:::i;:::-;15695:25;;15734:20;15752:1;15734:20;:::i;:::-;15729:25;;15789:1;15786;15782:9;15811:30;15829:11;15811:30;:::i;:::-;15800:41;;15990:1;15981:7;15977:15;15974:1;15971:22;15951:1;15944:9;15924:83;15901:139;;16020:18;;:::i;:::-;15901:139;15685:362;15637:410;;;;:::o;16053:194::-;16093:4;16113:20;16131:1;16113:20;:::i;:::-;16108:25;;16147:20;16165:1;16147:20;:::i;:::-;16142:25;;16191:1;16188;16184:9;16176:17;;16215:1;16209:4;16206:11;16203:37;;;16220:18;;:::i;:::-;16203:37;16053:194;;;;:::o;16253:191::-;16293:3;16312:20;16330:1;16312:20;:::i;:::-;16307:25;;16346:20;16364:1;16346:20;:::i;:::-;16341:25;;16389:1;16386;16382:9;16375:16;;16410:3;16407:1;16404:10;16401:36;;;16417:18;;:::i;:::-;16401:36;16253:191;;;;:::o;16450:233::-;16489:3;16512:24;16530:5;16512:24;:::i;:::-;16503:33;;16558:66;16551:5;16548:77;16545:103;;16628:18;;:::i;:::-;16545:103;16675:1;16668:5;16664:13;16657:20;;16450:233;;;:::o;16689:180::-;16829:32;16825:1;16817:6;16813:14;16806:56;16689:180;:::o;16875:366::-;17017:3;17038:67;17102:2;17097:3;17038:67;:::i;:::-;17031:74;;17114:93;17203:3;17114:93;:::i;:::-;17232:2;17227:3;17223:12;17216:19;;16875:366;;;:::o;17247:419::-;17413:4;17451:2;17440:9;17436:18;17428:26;;17500:9;17494:4;17490:20;17486:1;17475:9;17471:17;17464:47;17528:131;17654:4;17528:131;:::i;:::-;17520:139;;17247:419;;;:::o;17672:173::-;17812:25;17808:1;17800:6;17796:14;17789:49;17672:173;:::o;17851:366::-;17993:3;18014:67;18078:2;18073:3;18014:67;:::i;:::-;18007:74;;18090:93;18179:3;18090:93;:::i;:::-;18208:2;18203:3;18199:12;18192:19;;17851:366;;;:::o;18223:419::-;18389:4;18427:2;18416:9;18412:18;18404:26;;18476:9;18470:4;18466:20;18462:1;18451:9;18447:17;18440:47;18504:131;18630:4;18504:131;:::i;:::-;18496:139;;18223:419;;;:::o;18648:180::-;18696:77;18693:1;18686:88;18793:4;18790:1;18783:15;18817:4;18814:1;18807:15;18834:185;18874:1;18891:20;18909:1;18891:20;:::i;:::-;18886:25;;18925:20;18943:1;18925:20;:::i;:::-;18920:25;;18964:1;18954:35;;18969:18;;:::i;:::-;18954:35;19011:1;19008;19004:9;18999:14;;18834:185;;;;:::o;19025:220::-;19165:34;19161:1;19153:6;19149:14;19142:58;19234:3;19229:2;19221:6;19217:15;19210:28;19025:220;:::o;19251:366::-;19393:3;19414:67;19478:2;19473:3;19414:67;:::i;:::-;19407:74;;19490:93;19579:3;19490:93;:::i;:::-;19608:2;19603:3;19599:12;19592:19;;19251:366;;;:::o;19623:419::-;19789:4;19827:2;19816:9;19812:18;19804:26;;19876:9;19870:4;19866:20;19862:1;19851:9;19847:17;19840:47;19904:131;20030:4;19904:131;:::i;:::-;19896:139;;19623:419;;;:::o;20048:223::-;20188:34;20184:1;20176:6;20172:14;20165:58;20257:6;20252:2;20244:6;20240:15;20233:31;20048:223;:::o;20277:366::-;20419:3;20440:67;20504:2;20499:3;20440:67;:::i;:::-;20433:74;;20516:93;20605:3;20516:93;:::i;:::-;20634:2;20629:3;20625:12;20618:19;;20277:366;;;:::o;20649:419::-;20815:4;20853:2;20842:9;20838:18;20830:26;;20902:9;20896:4;20892:20;20888:1;20877:9;20873:17;20866:47;20930:131;21056:4;20930:131;:::i;:::-;20922:139;;20649:419;;;:::o;21074:221::-;21214:34;21210:1;21202:6;21198:14;21191:58;21283:4;21278:2;21270:6;21266:15;21259:29;21074:221;:::o;21301:366::-;21443:3;21464:67;21528:2;21523:3;21464:67;:::i;:::-;21457:74;;21540:93;21629:3;21540:93;:::i;:::-;21658:2;21653:3;21649:12;21642:19;;21301:366;;;:::o;21673:419::-;21839:4;21877:2;21866:9;21862:18;21854:26;;21926:9;21920:4;21916:20;21912:1;21901:9;21897:17;21890:47;21954:131;22080:4;21954:131;:::i;:::-;21946:139;;21673:419;;;:::o;22098:224::-;22238:34;22234:1;22226:6;22222:14;22215:58;22307:7;22302:2;22294:6;22290:15;22283:32;22098:224;:::o;22328:366::-;22470:3;22491:67;22555:2;22550:3;22491:67;:::i;:::-;22484:74;;22567:93;22656:3;22567:93;:::i;:::-;22685:2;22680:3;22676:12;22669:19;;22328:366;;;:::o;22700:419::-;22866:4;22904:2;22893:9;22889:18;22881:26;;22953:9;22947:4;22943:20;22939:1;22928:9;22924:17;22917:47;22981:131;23107:4;22981:131;:::i;:::-;22973:139;;22700:419;;;:::o;23125:222::-;23265:34;23261:1;23253:6;23249:14;23242:58;23334:5;23329:2;23321:6;23317:15;23310:30;23125:222;:::o;23353:366::-;23495:3;23516:67;23580:2;23575:3;23516:67;:::i;:::-;23509:74;;23592:93;23681:3;23592:93;:::i;:::-;23710:2;23705:3;23701:12;23694:19;;23353:366;;;:::o;23725:419::-;23891:4;23929:2;23918:9;23914:18;23906:26;;23978:9;23972:4;23968:20;23964:1;23953:9;23949:17;23942:47;24006:131;24132:4;24006:131;:::i;:::-;23998:139;;23725:419;;;:::o;24150:228::-;24290:34;24286:1;24278:6;24274:14;24267:58;24359:11;24354:2;24346:6;24342:15;24335:36;24150:228;:::o;24384:366::-;24526:3;24547:67;24611:2;24606:3;24547:67;:::i;:::-;24540:74;;24623:93;24712:3;24623:93;:::i;:::-;24741:2;24736:3;24732:12;24725:19;;24384:366;;;:::o;24756:419::-;24922:4;24960:2;24949:9;24945:18;24937:26;;25009:9;25003:4;24999:20;24995:1;24984:9;24980:17;24973:47;25037:131;25163:4;25037:131;:::i;:::-;25029:139;;24756:419;;;:::o;25181:143::-;25238:5;25269:6;25263:13;25254:22;;25285:33;25312:5;25285:33;:::i;:::-;25181:143;;;;:::o;25330:351::-;25400:6;25449:2;25437:9;25428:7;25424:23;25420:32;25417:119;;;25455:79;;:::i;:::-;25417:119;25575:1;25600:64;25656:7;25647:6;25636:9;25632:22;25600:64;:::i;:::-;25590:74;;25546:128;25330:351;;;;:::o;25687:85::-;25732:7;25761:5;25750:16;;25687:85;;;:::o;25778:158::-;25836:9;25869:61;25887:42;25896:32;25922:5;25896:32;:::i;:::-;25887:42;:::i;:::-;25869:61;:::i;:::-;25856:74;;25778:158;;;:::o;25942:147::-;26037:45;26076:5;26037:45;:::i;:::-;26032:3;26025:58;25942:147;;:::o;26095:114::-;26162:6;26196:5;26190:12;26180:22;;26095:114;;;:::o;26215:184::-;26314:11;26348:6;26343:3;26336:19;26388:4;26383:3;26379:14;26364:29;;26215:184;;;;:::o;26405:132::-;26472:4;26495:3;26487:11;;26525:4;26520:3;26516:14;26508:22;;26405:132;;;:::o;26543:108::-;26620:24;26638:5;26620:24;:::i;:::-;26615:3;26608:37;26543:108;;:::o;26657:179::-;26726:10;26747:46;26789:3;26781:6;26747:46;:::i;:::-;26825:4;26820:3;26816:14;26802:28;;26657:179;;;;:::o;26842:113::-;26912:4;26944;26939:3;26935:14;26927:22;;26842:113;;;:::o;26991:732::-;27110:3;27139:54;27187:5;27139:54;:::i;:::-;27209:86;27288:6;27283:3;27209:86;:::i;:::-;27202:93;;27319:56;27369:5;27319:56;:::i;:::-;27398:7;27429:1;27414:284;27439:6;27436:1;27433:13;27414:284;;;27515:6;27509:13;27542:63;27601:3;27586:13;27542:63;:::i;:::-;27535:70;;27628:60;27681:6;27628:60;:::i;:::-;27618:70;;27474:224;27461:1;27458;27454:9;27449:14;;27414:284;;;27418:14;27714:3;27707:10;;27115:608;;;26991:732;;;;:::o;27729:831::-;27992:4;28030:3;28019:9;28015:19;28007:27;;28044:71;28112:1;28101:9;28097:17;28088:6;28044:71;:::i;:::-;28125:80;28201:2;28190:9;28186:18;28177:6;28125:80;:::i;:::-;28252:9;28246:4;28242:20;28237:2;28226:9;28222:18;28215:48;28280:108;28383:4;28374:6;28280:108;:::i;:::-;28272:116;;28398:72;28466:2;28455:9;28451:18;28442:6;28398:72;:::i;:::-;28480:73;28548:3;28537:9;28533:19;28524:6;28480:73;:::i;:::-;27729:831;;;;;;;;:::o;28566:807::-;28815:4;28853:3;28842:9;28838:19;28830:27;;28867:71;28935:1;28924:9;28920:17;28911:6;28867:71;:::i;:::-;28948:72;29016:2;29005:9;29001:18;28992:6;28948:72;:::i;:::-;29030:80;29106:2;29095:9;29091:18;29082:6;29030:80;:::i;:::-;29120;29196:2;29185:9;29181:18;29172:6;29120:80;:::i;:::-;29210:73;29278:3;29267:9;29263:19;29254:6;29210:73;:::i;:::-;29293;29361:3;29350:9;29346:19;29337:6;29293:73;:::i;:::-;28566:807;;;;;;;;;:::o;29379:663::-;29467:6;29475;29483;29532:2;29520:9;29511:7;29507:23;29503:32;29500:119;;;29538:79;;:::i;:::-;29500:119;29658:1;29683:64;29739:7;29730:6;29719:9;29715:22;29683:64;:::i;:::-;29673:74;;29629:128;29796:2;29822:64;29878:7;29869:6;29858:9;29854:22;29822:64;:::i;:::-;29812:74;;29767:129;29935:2;29961:64;30017:7;30008:6;29997:9;29993:22;29961:64;:::i;:::-;29951:74;;29906:129;29379:663;;;;;:::o;30048:177::-;30188:29;30184:1;30176:6;30172:14;30165:53;30048:177;:::o;30231:366::-;30373:3;30394:67;30458:2;30453:3;30394:67;:::i;:::-;30387:74;;30470:93;30559:3;30470:93;:::i;:::-;30588:2;30583:3;30579:12;30572:19;;30231:366;;;:::o;30603:419::-;30769:4;30807:2;30796:9;30792:18;30784:26;;30856:9;30850:4;30846:20;30842:1;30831:9;30827:17;30820:47;30884:131;31010:4;30884:131;:::i;:::-;30876:139;;30603:419;;;:::o;31028:720::-;31263:4;31301:3;31290:9;31286:19;31278:27;;31315:79;31391:1;31380:9;31376:17;31367:6;31315:79;:::i;:::-;31441:9;31435:4;31431:20;31426:2;31415:9;31411:18;31404:48;31469:108;31572:4;31563:6;31469:108;:::i;:::-;31461:116;;31587:72;31655:2;31644:9;31640:18;31631:6;31587:72;:::i;:::-;31669;31737:2;31726:9;31722:18;31713:6;31669:72;:::i;:::-;31028:720;;;;;;;:::o
Swarm Source
ipfs://c5f3caf65a40fe4c36f65b9b63aaf23e3872083f4005db78732881c61ba25b38
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.