ERC-20
Overview
Max Total Supply
420,000,000 SHIA2.0
Holders
59
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
13,940.2629805745048328 SHIA2.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SHIA20
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-31 */ // SHIA2.0 // TG: https://t.me/Shia2point0 // Website: https://Shia2-0.com // Twitter: https://twitter.com/shia2point0 // SPDX-License-Identifier: Unlicenced 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 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 SHIA20 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 private tokenLiquidityThreshold = 3360000 * 10**18; uint256 public maxWalletLimit = 4200000 * 10**18; uint256 private genesis_block; uint256 private deadline = 1; uint256 private launchtax = 95; address private marketingWallet = 0x384721C6c468259E57Ade13e24389C59424d0c96; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; } Taxes public taxes = Taxes(20, 0); Taxes public sellTaxes = Taxes(95, 0); mapping(address => bool) public exemptFee; mapping(address => bool) private isearlybuyer; modifier mutexLock() { if (!_liquidityMutex) { _liquidityMutex = true; _; _liquidityMutex = false; } } constructor() ERC20("SHIA2.0", "SHIA2.0") { _tokengeneration(msg.sender, 420000000 * 10**decimals()); 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; exemptFee[address(this)] = true; exemptFee[msg.sender] = true; exemptFee[marketingWallet] = true; exemptFee[deadWallet] = true; exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true; exemptFee[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; } 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 (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" ); } } 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; currentTaxes = sellTaxes; } 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); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; 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 enableTrading() 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; } function updateMarketingWallet(address newWallet) external onlyOwner { marketingWallet = newWallet; } function updateIsEarlyBuyer(address account, bool state) external onlyOwner { isearlybuyer[account] = state; } function bulkIsEarlyBuyer(address[] memory accounts, bool state) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { isearlybuyer[accounts[i]] = state; } } 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":[{"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","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":"enableTrading","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":"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsEarlyBuyer","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":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6007805462ffffff60a01b191690556a02c781f708c509f40000006008556a03796274caf64c710000006009556001600b55605f600c819055600d80546001600160a01b03191673384721c6c468259e57ade13e24389c59424d0c9617905560146080819052600060a0819052600e91909155600f81905561010060405260c082905260e08190526010919091556011553480156200009d57600080fd5b50604080518082018252600780825266053484941322e360cc1b6020808401829052845180860190955291845290830152906003620000dd838262000560565b506004620000ec828262000560565b5050506200010962000103620003a460201b60201c565b620003a8565b62000132336200011c6012600a62000741565b6200012c90631908b10062000759565b620003fa565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b2919062000773565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062000773565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029a919062000773565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260126020526040808220805460ff1990811660019081179092553384528284208054821683179055600d54909416835290822080548416821790557f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f780548416821790557fbd75767b8b114eb536cfef724cc0b07e050152478ecefed43f44f5a3bc46bf3f805484168217905573663a5c229c09b049e36dcc11a9b0d4a8eb9db2149091527fde1971b300b89e7e26ed403a315e2a5fbd019f3d8bff772aabed72d8b23168b580549092161790556200079e565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004635760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004e757607f821691505b6020821081036200050857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004b757600081815260208120601f850160051c81016020861015620005375750805b601f850160051c820191505b81811015620005585782815560010162000543565b505050505050565b81516001600160401b038111156200057c576200057c620004bc565b62000594816200058d8454620004d2565b846200050e565b602080601f831160018114620005cc5760008415620005b35750858301515b600019600386901b1c1916600185901b17855562000558565b600085815260208120601f198616915b82811015620005fd57888601518255948401946001909101908401620005dc565b50858210156200061c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006835781600019048211156200066757620006676200062c565b808516156200067557918102915b93841c939080029062000647565b509250929050565b6000826200069c575060016200073b565b81620006ab575060006200073b565b8160018114620006c45760028114620006cf57620006ef565b60019150506200073b565b60ff841115620006e357620006e36200062c565b50506001821b6200073b565b5060208310610133831016604e8410600b841016171562000714575081810a6200073b565b62000720838362000642565b80600019048211156200073757620007376200062c565b0290505b92915050565b60006200075260ff8416836200068b565b9392505050565b80820281158282048414176200073b576200073b6200062c565b6000602082840312156200078657600080fd5b81516001600160a01b03811681146200075257600080fd5b61246380620007ae6000396000f3fe6080604052600436106102295760003560e01c806385141a7711610123578063aacebbe3116100ab578063f2fde38b1161006f578063f2fde38b146106ab578063f52be97c146106cb578063f570d4de146106eb578063f66895a31461070b578063f887ea401461072657600080fd5b8063aacebbe3146105d5578063c5d32bb2146105f5578063d695609b14610625578063dd62ed3e14610645578063edaa11681461068b57600080fd5b806395d89b41116100f257806395d89b41146105405780639e252f0014610555578063a457c2d714610575578063a8aa1b3114610595578063a9059cbb146105b557600080fd5b806385141a77146104bf5780638a8c523c146104ed5780638cd4426d146105025780638da5cb5b1461052257600080fd5b806342b6fa11116101b157806370a082311161017557806370a0823114610404578063715018a61461043a578063728f8eea1461044f578063832c2bd21461047f5780638514022d1461049f57600080fd5b806342b6fa111461036d5780634324deae1461038d5780634ada218b146103ad5780635dbdb7e3146103ce57806366a88d96146103ee57600080fd5b8063215d92a6116101f8578063215d92a6146102d157806323b872dd146102f1578063251ef09514610311578063313ce56714610331578063395093511461034d57600080fd5b806306fdde0314610235578063095ea7b3146102605780631340538f1461029057806318160ddd146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610746565b6040516102579190611e41565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611eb4565b6107d8565b6040519015158152602001610257565b34801561029c57600080fd5b506102b06102ab366004611eee565b6107ef565b005b3480156102be57600080fd5b506002545b604051908152602001610257565b3480156102dd57600080fd5b506102b06102ec366004611fca565b610840565b3480156102fd57600080fd5b5061028061030c36600461201c565b6108d6565b34801561031d57600080fd5b506102b061032c36600461205d565b610987565b34801561033d57600080fd5b5060405160128152602001610257565b34801561035957600080fd5b50610280610368366004611eb4565b610a1d565b34801561037957600080fd5b506102b061038836600461209a565b610a54565b34801561039957600080fd5b506102b06103a836600461209a565b610a9a565b3480156103b957600080fd5b5060075461028090600160b01b900460ff1681565b3480156103da57600080fd5b506102b06103e93660046120b3565b610ae0565b3480156103fa57600080fd5b506102c360095481565b34801561041057600080fd5b506102c361041f3660046120b3565b6001600160a01b031660009081526020819052604090205490565b34801561044657600080fd5b506102b0610b2e565b34801561045b57600080fd5b50600e54600f5461046a919082565b60408051928352602083019190915201610257565b34801561048b57600080fd5b506102b061049a3660046120b3565b610b64565b3480156104ab57600080fd5b506102b06104ba3660046120d0565b610baf565b3480156104cb57600080fd5b506104d561dead81565b6040516001600160a01b039091168152602001610257565b3480156104f957600080fd5b506102b0610c04565b34801561050e57600080fd5b506102b061051d366004611eb4565b610ca3565b34801561052e57600080fd5b506005546001600160a01b03166104d5565b34801561054c57600080fd5b5061024a610d5f565b34801561056157600080fd5b506102b061057036600461209a565b610d6e565b34801561058157600080fd5b50610280610590366004611eb4565b610dd2565b3480156105a157600080fd5b506007546104d5906001600160a01b031681565b3480156105c157600080fd5b506102806105d0366004611eb4565b610e6d565b3480156105e157600080fd5b506102b06105f03660046120b3565b610e7a565b34801561060157600080fd5b506102806106103660046120b3565b60126020526000908152604090205460ff1681565b34801561063157600080fd5b506102b06106403660046120fe565b610ec6565b34801561065157600080fd5b506102c3610660366004612120565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069757600080fd5b506102b06106a636600461209a565b610f0e565b3480156106b757600080fd5b506102b06106c63660046120b3565b610fa5565b3480156106d757600080fd5b506102b06106e63660046120fe565b611040565b3480156106f757600080fd5b506102b061070636600461205d565b611088565b34801561071757600080fd5b5060105460115461046a919082565b34801561073257600080fd5b506006546104d5906001600160a01b031681565b6060600380546107559061214e565b80601f01602080910402602001604051908101604052809291908181526020018280546107819061214e565b80156107ce5780601f106107a3576101008083540402835291602001916107ce565b820191906000526020600020905b8154815290600101906020018083116107b157829003601f168201915b5050505050905090565b60006107e533848461111a565b5060015b92915050565b6005546001600160a01b031633146108225760405162461bcd60e51b815260040161081990612188565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461086a5760405162461bcd60e51b815260040161081990612188565b60005b82518110156108d157816013600085848151811061088d5761088d6121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108c9816121e9565b91505061086d565b505050565b60006108e384848461123e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610819565b61097c85336109778685612202565b61111a565b506001949350505050565b6005546001600160a01b031633146109b15760405162461bcd60e51b815260040161081990612188565b60005b8151811015610a19576000601260008484815181106109d5576109d56121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a11816121e9565b9150506109b4565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107e5918590610977908690612215565b6005546001600160a01b03163314610a7e5760405162461bcd60e51b815260040161081990612188565b610a8a6012600a61230c565b610a94908261231b565b60085550565b6005546001600160a01b03163314610ac45760405162461bcd60e51b815260040161081990612188565b610ad06012600a61230c565b610ada908261231b565b60095550565b6005546001600160a01b03163314610b0a5760405162461bcd60e51b815260040161081990612188565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6005546001600160a01b03163314610b585760405162461bcd60e51b815260040161081990612188565b610b6260006117b5565b565b6005546001600160a01b03163314610b8e5760405162461bcd60e51b815260040161081990612188565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610bd95760405162461bcd60e51b815260040161081990612188565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c2e5760405162461bcd60e51b815260040161081990612188565b600754600160b01b900460ff1615610c885760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610819565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610ccd5760405162461bcd60e51b815260040161081990612188565b816001600160a01b031663a9059cbb610cee6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190612332565b6060600480546107559061214e565b6005546001600160a01b03163314610d985760405162461bcd60e51b815260040161081990612188565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a19573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e545760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610819565b610e6333856109778685612202565b5060019392505050565b60006107e533848461123e565b6005546001600160a01b03163314610ea45760405162461bcd60e51b815260040161081990612188565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ef05760405162461bcd60e51b815260040161081990612188565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610f385760405162461bcd60e51b815260040161081990612188565b600754600160b01b900460ff1615610fa05760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610819565b600b55565b6005546001600160a01b03163314610fcf5760405162461bcd60e51b815260040161081990612188565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610819565b61103d816117b5565b50565b6005546001600160a01b0316331461106a5760405162461bcd60e51b815260040161081990612188565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146110b25760405162461bcd60e51b815260040161081990612188565b60005b8151811015610a19576001601260008484815181106110d6576110d66121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611112816121e9565b9150506110b5565b6001600160a01b03831661117c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610819565b6001600160a01b0382166111dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610819565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610819565b6001600160a01b03831660009081526013602052604090205460ff161580156112e257506001600160a01b03821660009081526013602052604090205460ff16155b61132e5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610819565b6001600160a01b03831660009081526012602052604090205460ff1615801561137057506001600160a01b03821660009081526012602052604090205460ff16155b156113c457600754600160b01b900460ff166113c45760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610819565b6007546001600160a01b0384811691161480156113fa57506001600160a01b03821660009081526012602052604090205460ff16155b80156114105750600754600160a01b900460ff16155b156114905760095481611438846001600160a01b031660009081526020819052604090205490565b6114429190612215565b11156114905760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610819565b6007546001600160a01b038481169116148015906114c757506001600160a01b03821660009081526012602052604090205460ff16155b80156114ec57506001600160a01b03831660009081526012602052604090205460ff16155b80156115025750600754600160a01b900460ff16155b15611597576007546001600160a01b03838116911614611597576009548161153f846001600160a01b031660009081526020819052604090205490565b6115499190612215565b11156115975760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610819565b60008060006115b9604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526012602052604081205460ff161580156115fb57506001600160a01b03871660009081526012602052604090205460ff16155b80156116155750600b54600a546116129190612215565b43105b600754909150600160a01b900460ff168061164857506001600160a01b03881660009081526012602052604090205460ff165b8061166b57506001600160a01b03871660009081526012602052604090205460ff165b156116795760009250611715565b6007546001600160a01b038881169116148015611694575080155b156116cd576010546011546116a99190612215565b60408051808201909152601054815260115460208201529095508594509150611715565b8061170657600e54600f546116e29190612215565b60408051808201909152600e548152600f5460208201529095508594509150611715565b801561171557600c5494508493505b6064611721858861231b565b61172b919061234f565b600754909350600160a81b900460ff16801561175557506007546001600160a01b03898116911614155b15611764576117648583611807565b6117788888611773868a612202565b611944565b82156117ab5784156117ab5760006064611792878961231b565b61179c919061234f565b90506117a9893083611944565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610a19576007805460ff60a01b1916600160a01b179055811561193357306000908152602081905260409020546008548110611931576001600854111561185a57506008545b600061186784600261231b565b905060008184602001518461187c919061231b565b611886919061234f565b905060006118948285612202565b9050476118a082611b1c565b60006118ac8247612202565b905060008760200151866118c09190612202565b6118ca908361234f565b905060008860200151826118de919061231b565b905080156118f0576118f08682611c76565b885160009061190084600261231b565b61190a919061231b565b9050801561192857600d54611928906001600160a01b031682611d28565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166119a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610819565b6001600160a01b038216611a0a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610819565b6001600160a01b03831660009081526020819052604090205481811015611a825760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610819565b611a8c8282612202565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611ac2908490612215565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0e91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b5157611b516121bd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bce9190612371565b81600181518110611be157611be16121bd565b6001600160a01b039283166020918202929092010152600654611c07913091168461111a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c4090859060009086903090429060040161238e565b600060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050505050565b600654611c8e9030906001600160a01b03168461111a565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611cfc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d2191906123ff565b5050505050565b80471015611d785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610819565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc5576040519150601f19603f3d011682016040523d82523d6000602084013e611dca565b606091505b50509050806108d15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610819565b600060208083528351808285015260005b81811015611e6e57858101830151858201604001528201611e52565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461103d57600080fd5b8035611eaf81611e8f565b919050565b60008060408385031215611ec757600080fd5b8235611ed281611e8f565b946020939093013593505050565b801515811461103d57600080fd5b600060208284031215611f0057600080fd5b8135611f0b81611ee0565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f3957600080fd5b8135602067ffffffffffffffff80831115611f5657611f56611f12565b8260051b604051601f19603f83011681018181108482111715611f7b57611f7b611f12565b604052938452858101830193838101925087851115611f9957600080fd5b83870191505b84821015611fbf57611fb082611ea4565b83529183019190830190611f9f565b979650505050505050565b60008060408385031215611fdd57600080fd5b823567ffffffffffffffff811115611ff457600080fd5b61200085828601611f28565b925050602083013561201181611ee0565b809150509250929050565b60008060006060848603121561203157600080fd5b833561203c81611e8f565b9250602084013561204c81611e8f565b929592945050506040919091013590565b60006020828403121561206f57600080fd5b813567ffffffffffffffff81111561208657600080fd5b61209284828501611f28565b949350505050565b6000602082840312156120ac57600080fd5b5035919050565b6000602082840312156120c557600080fd5b8135611f0b81611e8f565b600080604083850312156120e357600080fd5b82356120ee81611e8f565b9150602083013561201181611ee0565b6000806040838503121561211157600080fd5b50508035926020909101359150565b6000806040838503121561213357600080fd5b823561213e81611e8f565b9150602083013561201181611e8f565b600181811c9082168061216257607f821691505b60208210810361218257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121fb576121fb6121d3565b5060010190565b818103818111156107e9576107e96121d3565b808201808211156107e9576107e96121d3565b600181815b80851115612263578160001904821115612249576122496121d3565b8085161561225657918102915b93841c939080029061222d565b509250929050565b60008261227a575060016107e9565b81612287575060006107e9565b816001811461229d57600281146122a7576122c3565b60019150506107e9565b60ff8411156122b8576122b86121d3565b50506001821b6107e9565b5060208310610133831016604e8410600b84101617156122e6575081810a6107e9565b6122f08383612228565b8060001904821115612304576123046121d3565b029392505050565b6000611f0b60ff84168361226b565b80820281158282048414176107e9576107e96121d3565b60006020828403121561234457600080fd5b8151611f0b81611ee0565b60008261236c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561238357600080fd5b8151611f0b81611e8f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123de5784516001600160a01b0316835293830193918301916001016123b9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561241457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212209cc61b425382d04031e0493a4c3726fa724cc672cb902adbdb98cbba8f6904c564736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102295760003560e01c806385141a7711610123578063aacebbe3116100ab578063f2fde38b1161006f578063f2fde38b146106ab578063f52be97c146106cb578063f570d4de146106eb578063f66895a31461070b578063f887ea401461072657600080fd5b8063aacebbe3146105d5578063c5d32bb2146105f5578063d695609b14610625578063dd62ed3e14610645578063edaa11681461068b57600080fd5b806395d89b41116100f257806395d89b41146105405780639e252f0014610555578063a457c2d714610575578063a8aa1b3114610595578063a9059cbb146105b557600080fd5b806385141a77146104bf5780638a8c523c146104ed5780638cd4426d146105025780638da5cb5b1461052257600080fd5b806342b6fa11116101b157806370a082311161017557806370a0823114610404578063715018a61461043a578063728f8eea1461044f578063832c2bd21461047f5780638514022d1461049f57600080fd5b806342b6fa111461036d5780634324deae1461038d5780634ada218b146103ad5780635dbdb7e3146103ce57806366a88d96146103ee57600080fd5b8063215d92a6116101f8578063215d92a6146102d157806323b872dd146102f1578063251ef09514610311578063313ce56714610331578063395093511461034d57600080fd5b806306fdde0314610235578063095ea7b3146102605780631340538f1461029057806318160ddd146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610746565b6040516102579190611e41565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611eb4565b6107d8565b6040519015158152602001610257565b34801561029c57600080fd5b506102b06102ab366004611eee565b6107ef565b005b3480156102be57600080fd5b506002545b604051908152602001610257565b3480156102dd57600080fd5b506102b06102ec366004611fca565b610840565b3480156102fd57600080fd5b5061028061030c36600461201c565b6108d6565b34801561031d57600080fd5b506102b061032c36600461205d565b610987565b34801561033d57600080fd5b5060405160128152602001610257565b34801561035957600080fd5b50610280610368366004611eb4565b610a1d565b34801561037957600080fd5b506102b061038836600461209a565b610a54565b34801561039957600080fd5b506102b06103a836600461209a565b610a9a565b3480156103b957600080fd5b5060075461028090600160b01b900460ff1681565b3480156103da57600080fd5b506102b06103e93660046120b3565b610ae0565b3480156103fa57600080fd5b506102c360095481565b34801561041057600080fd5b506102c361041f3660046120b3565b6001600160a01b031660009081526020819052604090205490565b34801561044657600080fd5b506102b0610b2e565b34801561045b57600080fd5b50600e54600f5461046a919082565b60408051928352602083019190915201610257565b34801561048b57600080fd5b506102b061049a3660046120b3565b610b64565b3480156104ab57600080fd5b506102b06104ba3660046120d0565b610baf565b3480156104cb57600080fd5b506104d561dead81565b6040516001600160a01b039091168152602001610257565b3480156104f957600080fd5b506102b0610c04565b34801561050e57600080fd5b506102b061051d366004611eb4565b610ca3565b34801561052e57600080fd5b506005546001600160a01b03166104d5565b34801561054c57600080fd5b5061024a610d5f565b34801561056157600080fd5b506102b061057036600461209a565b610d6e565b34801561058157600080fd5b50610280610590366004611eb4565b610dd2565b3480156105a157600080fd5b506007546104d5906001600160a01b031681565b3480156105c157600080fd5b506102806105d0366004611eb4565b610e6d565b3480156105e157600080fd5b506102b06105f03660046120b3565b610e7a565b34801561060157600080fd5b506102806106103660046120b3565b60126020526000908152604090205460ff1681565b34801561063157600080fd5b506102b06106403660046120fe565b610ec6565b34801561065157600080fd5b506102c3610660366004612120565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069757600080fd5b506102b06106a636600461209a565b610f0e565b3480156106b757600080fd5b506102b06106c63660046120b3565b610fa5565b3480156106d757600080fd5b506102b06106e63660046120fe565b611040565b3480156106f757600080fd5b506102b061070636600461205d565b611088565b34801561071757600080fd5b5060105460115461046a919082565b34801561073257600080fd5b506006546104d5906001600160a01b031681565b6060600380546107559061214e565b80601f01602080910402602001604051908101604052809291908181526020018280546107819061214e565b80156107ce5780601f106107a3576101008083540402835291602001916107ce565b820191906000526020600020905b8154815290600101906020018083116107b157829003601f168201915b5050505050905090565b60006107e533848461111a565b5060015b92915050565b6005546001600160a01b031633146108225760405162461bcd60e51b815260040161081990612188565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461086a5760405162461bcd60e51b815260040161081990612188565b60005b82518110156108d157816013600085848151811061088d5761088d6121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108c9816121e9565b91505061086d565b505050565b60006108e384848461123e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610819565b61097c85336109778685612202565b61111a565b506001949350505050565b6005546001600160a01b031633146109b15760405162461bcd60e51b815260040161081990612188565b60005b8151811015610a19576000601260008484815181106109d5576109d56121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a11816121e9565b9150506109b4565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107e5918590610977908690612215565b6005546001600160a01b03163314610a7e5760405162461bcd60e51b815260040161081990612188565b610a8a6012600a61230c565b610a94908261231b565b60085550565b6005546001600160a01b03163314610ac45760405162461bcd60e51b815260040161081990612188565b610ad06012600a61230c565b610ada908261231b565b60095550565b6005546001600160a01b03163314610b0a5760405162461bcd60e51b815260040161081990612188565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6005546001600160a01b03163314610b585760405162461bcd60e51b815260040161081990612188565b610b6260006117b5565b565b6005546001600160a01b03163314610b8e5760405162461bcd60e51b815260040161081990612188565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610bd95760405162461bcd60e51b815260040161081990612188565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c2e5760405162461bcd60e51b815260040161081990612188565b600754600160b01b900460ff1615610c885760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610819565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610ccd5760405162461bcd60e51b815260040161081990612188565b816001600160a01b031663a9059cbb610cee6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190612332565b6060600480546107559061214e565b6005546001600160a01b03163314610d985760405162461bcd60e51b815260040161081990612188565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a19573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e545760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610819565b610e6333856109778685612202565b5060019392505050565b60006107e533848461123e565b6005546001600160a01b03163314610ea45760405162461bcd60e51b815260040161081990612188565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ef05760405162461bcd60e51b815260040161081990612188565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610f385760405162461bcd60e51b815260040161081990612188565b600754600160b01b900460ff1615610fa05760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610819565b600b55565b6005546001600160a01b03163314610fcf5760405162461bcd60e51b815260040161081990612188565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610819565b61103d816117b5565b50565b6005546001600160a01b0316331461106a5760405162461bcd60e51b815260040161081990612188565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146110b25760405162461bcd60e51b815260040161081990612188565b60005b8151811015610a19576001601260008484815181106110d6576110d66121bd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611112816121e9565b9150506110b5565b6001600160a01b03831661117c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610819565b6001600160a01b0382166111dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610819565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610819565b6001600160a01b03831660009081526013602052604090205460ff161580156112e257506001600160a01b03821660009081526013602052604090205460ff16155b61132e5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610819565b6001600160a01b03831660009081526012602052604090205460ff1615801561137057506001600160a01b03821660009081526012602052604090205460ff16155b156113c457600754600160b01b900460ff166113c45760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610819565b6007546001600160a01b0384811691161480156113fa57506001600160a01b03821660009081526012602052604090205460ff16155b80156114105750600754600160a01b900460ff16155b156114905760095481611438846001600160a01b031660009081526020819052604090205490565b6114429190612215565b11156114905760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610819565b6007546001600160a01b038481169116148015906114c757506001600160a01b03821660009081526012602052604090205460ff16155b80156114ec57506001600160a01b03831660009081526012602052604090205460ff16155b80156115025750600754600160a01b900460ff16155b15611597576007546001600160a01b03838116911614611597576009548161153f846001600160a01b031660009081526020819052604090205490565b6115499190612215565b11156115975760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610819565b60008060006115b9604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526012602052604081205460ff161580156115fb57506001600160a01b03871660009081526012602052604090205460ff16155b80156116155750600b54600a546116129190612215565b43105b600754909150600160a01b900460ff168061164857506001600160a01b03881660009081526012602052604090205460ff165b8061166b57506001600160a01b03871660009081526012602052604090205460ff165b156116795760009250611715565b6007546001600160a01b038881169116148015611694575080155b156116cd576010546011546116a99190612215565b60408051808201909152601054815260115460208201529095508594509150611715565b8061170657600e54600f546116e29190612215565b60408051808201909152600e548152600f5460208201529095508594509150611715565b801561171557600c5494508493505b6064611721858861231b565b61172b919061234f565b600754909350600160a81b900460ff16801561175557506007546001600160a01b03898116911614155b15611764576117648583611807565b6117788888611773868a612202565b611944565b82156117ab5784156117ab5760006064611792878961231b565b61179c919061234f565b90506117a9893083611944565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610a19576007805460ff60a01b1916600160a01b179055811561193357306000908152602081905260409020546008548110611931576001600854111561185a57506008545b600061186784600261231b565b905060008184602001518461187c919061231b565b611886919061234f565b905060006118948285612202565b9050476118a082611b1c565b60006118ac8247612202565b905060008760200151866118c09190612202565b6118ca908361234f565b905060008860200151826118de919061231b565b905080156118f0576118f08682611c76565b885160009061190084600261231b565b61190a919061231b565b9050801561192857600d54611928906001600160a01b031682611d28565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166119a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610819565b6001600160a01b038216611a0a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610819565b6001600160a01b03831660009081526020819052604090205481811015611a825760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610819565b611a8c8282612202565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611ac2908490612215565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0e91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b5157611b516121bd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bce9190612371565b81600181518110611be157611be16121bd565b6001600160a01b039283166020918202929092010152600654611c07913091168461111a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c4090859060009086903090429060040161238e565b600060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050505050565b600654611c8e9030906001600160a01b03168461111a565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611cfc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d2191906123ff565b5050505050565b80471015611d785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610819565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dc5576040519150601f19603f3d011682016040523d82523d6000602084013e611dca565b606091505b50509050806108d15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610819565b600060208083528351808285015260005b81811015611e6e57858101830151858201604001528201611e52565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461103d57600080fd5b8035611eaf81611e8f565b919050565b60008060408385031215611ec757600080fd5b8235611ed281611e8f565b946020939093013593505050565b801515811461103d57600080fd5b600060208284031215611f0057600080fd5b8135611f0b81611ee0565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f3957600080fd5b8135602067ffffffffffffffff80831115611f5657611f56611f12565b8260051b604051601f19603f83011681018181108482111715611f7b57611f7b611f12565b604052938452858101830193838101925087851115611f9957600080fd5b83870191505b84821015611fbf57611fb082611ea4565b83529183019190830190611f9f565b979650505050505050565b60008060408385031215611fdd57600080fd5b823567ffffffffffffffff811115611ff457600080fd5b61200085828601611f28565b925050602083013561201181611ee0565b809150509250929050565b60008060006060848603121561203157600080fd5b833561203c81611e8f565b9250602084013561204c81611e8f565b929592945050506040919091013590565b60006020828403121561206f57600080fd5b813567ffffffffffffffff81111561208657600080fd5b61209284828501611f28565b949350505050565b6000602082840312156120ac57600080fd5b5035919050565b6000602082840312156120c557600080fd5b8135611f0b81611e8f565b600080604083850312156120e357600080fd5b82356120ee81611e8f565b9150602083013561201181611ee0565b6000806040838503121561211157600080fd5b50508035926020909101359150565b6000806040838503121561213357600080fd5b823561213e81611e8f565b9150602083013561201181611e8f565b600181811c9082168061216257607f821691505b60208210810361218257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121fb576121fb6121d3565b5060010190565b818103818111156107e9576107e96121d3565b808201808211156107e9576107e96121d3565b600181815b80851115612263578160001904821115612249576122496121d3565b8085161561225657918102915b93841c939080029061222d565b509250929050565b60008261227a575060016107e9565b81612287575060006107e9565b816001811461229d57600281146122a7576122c3565b60019150506107e9565b60ff8411156122b8576122b86121d3565b50506001821b6107e9565b5060208310610133831016604e8410600b84101617156122e6575081810a6107e9565b6122f08383612228565b8060001904821115612304576123046121d3565b029392505050565b6000611f0b60ff84168361226b565b80820281158282048414176107e9576107e96121d3565b60006020828403121561234457600080fd5b8151611f0b81611ee0565b60008261236c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561238357600080fd5b8151611f0b81611e8f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123de5784516001600160a01b0316835293830193918301916001016123b9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561241457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212209cc61b425382d04031e0493a4c3726fa724cc672cb902adbdb98cbba8f6904c564736f6c63430008130033
Deployed Bytecode Sourcemap
8215:11027:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2146:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10043:161;;;;;;;;;;-1:-1:-1;10043:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;10043:161:0;1162:187:1;16580:152:0;;;;;;;;;;-1:-1:-1;16580:152:0;;;;;:::i;:::-;;:::i;:::-;;2485:108;;;;;;;;;;-1:-1:-1;2573:12:0;;2485:108;;;1869:25:1;;;1857:2;1842:18;2485:108:0;1723:177:1;17942:208:0;;;;;;;;;;-1:-1:-1;17942:208:0;;;;;:::i;:::-;;:::i;10212:448::-;;;;;;;;;;-1:-1:-1;10212:448:0;;;;;:::i;:::-;;:::i;18586:196::-;;;;;;;;;;-1:-1:-1;18586:196:0;;;;;:::i;:::-;;:::i;2378:93::-;;;;;;;;;;-1:-1:-1;2378:93:0;;2461:2;4388:36:1;;4376:2;4361:18;2378:93:0;4246:184:1;10668:248:0;;;;;;;;;;-1:-1:-1;10668:248:0;;;;;:::i;:::-;;:::i;16740:177::-;;;;;;;;;;-1:-1:-1;16740:177:0;;;;;:::i;:::-;;:::i;18790:131::-;;;;;;;;;;-1:-1:-1;18790:131:0;;;;;:::i;:::-;;:::i;8444:34::-;;;;;;;;;;-1:-1:-1;8444:34:0;;;;-1:-1:-1;;;8444:34:0;;;;;;18158:104;;;;;;;;;;-1:-1:-1;18158:104:0;;;;;:::i;:::-;;:::i;8553:48::-;;;;;;;;;;;;;;;;2607:127;;;;;;;;;;-1:-1:-1;2607:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2708:18:0;2681:7;2708:18;;;;;;;;;;;;2607:127;6878:94;;;;;;;;;;;;;:::i;8975:33::-;;;;;;;;;;-1:-1:-1;8975:33:0;;;;;;;;;;;;;5046:25:1;;;5102:2;5087:18;;5080:34;;;;5019:18;8975:33:0;4872:248:1;18270:108:0;;;;;;;;;;-1:-1:-1;18270:108:0;;;;;:::i;:::-;;:::i;17810:124::-;;;;;;;;;;-1:-1:-1;17810:124:0;;;;;:::i;:::-;;:::i;8802:79::-;;;;;;;;;;;;8839:42;8802:79;;;;;-1:-1:-1;;;;;5676:32:1;;;5658:51;;5646:2;5631:18;8802:79:0;5512:203:1;17270:224:0;;;;;;;;;;;;;:::i;19049:135::-;;;;;;;;;;-1:-1:-1;19049:135:0;;;;;:::i;:::-;;:::i;6655:87::-;;;;;;;;;;-1:-1:-1;6728:6:0;;-1:-1:-1;;;;;6728:6:0;6655:87;;2260:104;;;;;;;;;;;;;:::i;18929:112::-;;;;;;;;;;-1:-1:-1;18929:112:0;;;;;:::i;:::-;;:::i;10924:410::-;;;;;;;;;;-1:-1:-1;10924:410:0;;;;;:::i;:::-;;:::i;8326:19::-;;;;;;;;;;-1:-1:-1;8326:19:0;;;;-1:-1:-1;;;;;8326:19:0;;;11342:165;;;;;;;;;;-1:-1:-1;11342:165:0;;;;;:::i;:::-;;:::i;17687:115::-;;;;;;;;;;-1:-1:-1;17687:115:0;;;;;:::i;:::-;;:::i;9061:41::-;;;;;;;;;;-1:-1:-1;9061:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16925:164;;;;;;;;;;-1:-1:-1;16925:164:0;;;;;:::i;:::-;;:::i;2978:201::-;;;;;;;;;;-1:-1:-1;2978:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3144:18:0;;;3112:7;3144:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2978:201;17502:177;;;;;;;;;;-1:-1:-1;17502:177:0;;;;;:::i;:::-;;:::i;6980:192::-;;;;;;;;;;-1:-1:-1;6980:192:0;;;;;:::i;:::-;;:::i;17097:166::-;;;;;;;;;;-1:-1:-1;17097:166:0;;;;;:::i;:::-;;:::i;18386:192::-;;;;;;;;;;-1:-1:-1;18386:192:0;;;;;:::i;:::-;;:::i;9015:37::-;;;;;;;;;;-1:-1:-1;9015:37:0;;;;;;;;;8298:21;;;;;;;;;;-1:-1:-1;8298:21:0;;;;-1:-1:-1;;;;;8298:21:0;;;2146:100;2200:13;2233:5;2226:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2146:100;:::o;10043:161::-;10118:4;10135:39;309:10;10158:7;10167:6;10135:8;:39::i;:::-;-1:-1:-1;10192:4:0;10043:161;;;;;:::o;16580:152::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;;;;;;;;;16698:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16698:26:0::1;-1:-1:-1::0;;;;16698:26:0;;::::1;::::0;;;::::1;::::0;;16580:152::o;17942:208::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;18042:9:::1;18037:106;18061:8;:15;18057:1;:19;18037:106;;;18126:5;18098:12;:25;18111:8;18120:1;18111:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18098:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18098:25:0;:33;;-1:-1:-1;;18098:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18078:3;::::1;::::0;::::1;:::i;:::-;;;;18037:106;;;;17942:208:::0;;:::o;10212:448::-;10344:4;10361:36;10371:6;10379:9;10390:6;10361:9;:36::i;:::-;-1:-1:-1;;;;;10437:19:0;;10410:24;10437:19;;;:11;:19;;;;;;;;309:10;10437:33;;;;;;;;10489:26;;;;10481:79;;;;-1:-1:-1;;;10481:79:0;;7941:2:1;10481:79:0;;;7923:21:1;7980:2;7960:18;;;7953:30;8019:34;7999:18;;;7992:62;-1:-1:-1;;;8070:18:1;;;8063:38;8118:19;;10481:79:0;7739:404:1;10481:79:0;10571:57;10580:6;309:10;10602:25;10621:6;10602:16;:25;:::i;:::-;10571:8;:57::i;:::-;-1:-1:-1;10648:4:0;;10212:448;-1:-1:-1;;;;10212:448:0:o;18586:196::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;18677:9:::1;18672:103;18696:8;:15;18692:1;:19;18672:103;;;18758:5;18733:9;:22;18743:8;18752:1;18743:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18733:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18733:22:0;:30;;-1:-1:-1;;18733:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18713:3;::::1;::::0;::::1;:::i;:::-;;;;18672:103;;;;18586:196:::0;:::o;10668:248::-;309:10;10784:4;10838:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10838:34:0;;;;;;;;;;10784:4;;10806:80;;10829:7;;10838:47;;10875:10;;10838:47;:::i;16740:177::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;16895:14:::1;2461:2:::0;16895::::1;:14;:::i;:::-;16882:27;::::0;:10;:27:::1;:::i;:::-;16856:23;:53:::0;-1:-1:-1;16740:177:0:o;18790:131::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;18898:14:::1;2461:2:::0;18898::::1;:14;:::i;:::-;18886:26;::::0;:9;:26:::1;:::i;:::-;18869:14;:43:::0;-1:-1:-1;18790:131:0:o;18158:104::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18228:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;18228:26:0::1;18250:4;18228:26;::::0;;18158:104::o;6878:94::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;6943:21:::1;6961:1;6943:9;:21::i;:::-;6878:94::o:0;18270:108::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18343:19:0::1;18365:5;18343:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;18343:27:0::1;::::0;;18270:108::o;17810:124::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17897:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;17897:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17810:124::o;17270:224::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17334:14:::1;::::0;-1:-1:-1;;;17334:14:0;::::1;;;17333:15;17325:54;;;::::0;-1:-1:-1;;;17325:54:0;;10169:2:1;17325:54:0::1;::::0;::::1;10151:21:1::0;10208:2;10188:18;;;10181:30;10247:28;10227:18;;;10220:56;10293:18;;17325:54:0::1;9967:350:1::0;17325:54:0::1;17390:14;:21:::0;;-1:-1:-1;;;;17422:25:0;-1:-1:-1;;;17422:25:0;;;17474:12:::1;17458:13;:28:::0;17270:224::o;19049:135::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;19141:8:::1;-1:-1:-1::0;;;;;19134:25:0::1;;19160:7;6728:6:::0;;-1:-1:-1;;;;;6728:6:0;;6655:87;19160:7:::1;19134:42;::::0;-1:-1:-1;;;;;;19134:42:0::1;::::0;;;;;;-1:-1:-1;;;;;10514:32:1;;;19134:42:0::1;::::0;::::1;10496:51:1::0;10563:18;;;10556:34;;;10469:18;;19134:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2260:104::-:0;2316:13;2349:7;2342:14;;;;;:::i;18929:112::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;6728:6;;18997:36:::1;::::0;-1:-1:-1;;;;;6728:6:0;;;;18997:36;::::1;;;::::0;19023:9;;18997:36:::1;::::0;;;19023:9;6728:6;18997:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;10924:410:::0;309:10;11045:4;11094:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11094:34:0;;;;;;;;;;11147:35;;;;11139:85;;;;-1:-1:-1;;;11139:85:0;;11053:2:1;11139:85:0;;;11035:21:1;11092:2;11072:18;;;11065:30;11131:34;11111:18;;;11104:62;-1:-1:-1;;;11182:18:1;;;11175:35;11227:19;;11139:85:0;10851:401:1;11139:85:0;11235:67;309:10;11258:7;11267:34;11286:15;11267:16;:34;:::i;11235:67::-;-1:-1:-1;11322:4:0;;10924:410;-1:-1:-1;;;10924:410:0:o;11342:165::-;11420:4;11437:40;11447:10;11459:9;11470:6;11437:9;:40::i;17687:115::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17767:15:::1;:27:::0;;-1:-1:-1;;;;;;17767:27:0::1;-1:-1:-1::0;;;;;17767:27:0;;;::::1;::::0;;;::::1;::::0;;17687:115::o;16925:164::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17052:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17044:5:::1;:37:::0;;;;;;16925:164::o;17502:177::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17584:14:::1;::::0;-1:-1:-1;;;17584:14:0;::::1;;;17583:15;17575:65;;;::::0;-1:-1:-1;;;17575:65:0;;11459:2:1;17575:65:0::1;::::0;::::1;11441:21:1::0;11498:2;11478:18;;;11471:30;11537:34;11517:18;;;11510:62;-1:-1:-1;;;11588:18:1;;;11581:35;11633:19;;17575:65:0::1;11257:401:1::0;17575:65:0::1;17651:8;:20:::0;17502:177::o;6980:192::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7069:22:0;::::1;7061:73;;;::::0;-1:-1:-1;;;7061:73:0;;11865:2:1;7061:73:0::1;::::0;::::1;11847:21:1::0;11904:2;11884:18;;;11877:30;11943:34;11923:18;;;11916:62;-1:-1:-1;;;11994:18:1;;;11987:36;12040:19;;7061:73:0::1;11663:402:1::0;7061:73:0::1;7145:19;7155:8;7145:9;:19::i;:::-;6980:192:::0;:::o;17097:166::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;17226:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17214:9:::1;:41:::0;;;;;;17097:166::o;18386:192::-;6728:6;;-1:-1:-1;;;;;6728:6:0;309:10;6790:23;6782:68;;;;-1:-1:-1;;;6782:68:0;;;;;;;:::i;:::-;18474:9:::1;18469:102;18493:8;:15;18489:1;:19;18469:102;;;18555:4;18530:9;:22;18540:8;18549:1;18540:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18530:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18530:22:0;:29;;-1:-1:-1;;18530:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18510:3;::::1;::::0;::::1;:::i;:::-;;;;18469:102;;5549:380:::0;-1:-1:-1;;;;;5685:19:0;;5677:68;;;;-1:-1:-1;;;5677:68:0;;12272:2:1;5677:68:0;;;12254:21:1;12311:2;12291:18;;;12284:30;12350:34;12330:18;;;12323:62;-1:-1:-1;;;12401:18:1;;;12394:34;12445:19;;5677:68:0;12070:400:1;5677:68:0;-1:-1:-1;;;;;5764:21:0;;5756:68;;;;-1:-1:-1;;;5756:68:0;;12677:2:1;5756:68:0;;;12659:21:1;12716:2;12696:18;;;12689:30;12755:34;12735:18;;;12728:62;-1:-1:-1;;;12806:18:1;;;12799:32;12848:19;;5756:68:0;12475:398:1;5756:68:0;-1:-1:-1;;;;;5837:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5889:32;;1869:25:1;;;5889:32:0;;1842:18:1;5889:32:0;;;;;;;5549:380;;;:::o;11515:2585::-;11665:1;11656:6;:10;11648:64;;;;-1:-1:-1;;;11648:64:0;;13080:2:1;11648:64:0;;;13062:21:1;13119:2;13099:18;;;13092:30;13158:34;13138:18;;;13131:62;-1:-1:-1;;;13209:18:1;;;13202:39;13258:19;;11648:64:0;12878:405:1;11648:64:0;-1:-1:-1;;;;;11732:20:0;;;;;;:12;:20;;;;;;;;11731:21;:49;;;;-1:-1:-1;;;;;;11757:23:0;;;;;;:12;:23;;;;;;;;11756:24;11731:49;11723:110;;;;-1:-1:-1;;;11723:110:0;;13490:2:1;11723:110:0;;;13472:21:1;13529:2;13509:18;;;13502:30;13568:27;13548:18;;;13541:55;13613:18;;11723:110:0;13288:349:1;11723:110:0;-1:-1:-1;;;;;11851:17:0;;;;;;:9;:17;;;;;;;;11850:18;:43;;;;-1:-1:-1;;;;;;11873:20:0;;;;;;:9;:20;;;;;;;;11872:21;11850:43;11846:122;;;11918:14;;-1:-1:-1;;;11918:14:0;;;;11910:46;;;;-1:-1:-1;;;11910:46:0;;13844:2:1;11910:46:0;;;13826:21:1;13883:2;13863:18;;;13856:30;-1:-1:-1;;;13902:18:1;;;13895:49;13961:18;;11910:46:0;13642:343:1;11910:46:0;11994:4;;-1:-1:-1;;;;;11984:14:0;;;11994:4;;11984:14;:39;;;;-1:-1:-1;;;;;;12003:20:0;;;;;;:9;:20;;;;;;;;12002:21;11984:39;:59;;;;-1:-1:-1;12028:15:0;;-1:-1:-1;;;12028:15:0;;;;12027:16;11984:59;11980:215;;;12101:14;;12091:6;12068:20;12078:9;-1:-1:-1;;;;;2708:18:0;2681:7;2708:18;;;;;;;;;;;;2607:127;12068:20;:29;;;;:::i;:::-;:47;;12060:123;;;;-1:-1:-1;;;12060:123:0;;14192:2:1;12060:123:0;;;14174:21:1;;;14211:18;;;14204:30;14270:34;14250:18;;;14243:62;14322:18;;12060:123:0;13990:356:1;12060:123:0;12221:4;;-1:-1:-1;;;;;12211:14:0;;;12221:4;;12211:14;;;;:39;;-1:-1:-1;;;;;;12230:20:0;;;;;;:9;:20;;;;;;;;12229:21;12211:39;:61;;;;-1:-1:-1;;;;;;12255:17:0;;;;;;:9;:17;;;;;;;;12254:18;12211:61;:81;;;;-1:-1:-1;12277:15:0;;-1:-1:-1;;;12277:15:0;;;;12276:16;12211:81;12207:315;;;12339:4;;-1:-1:-1;;;;;12326:17:0;;;12339:4;;12326:17;12322:189;;12405:14;;12395:6;12372:20;12382:9;-1:-1:-1;;;;;2708:18:0;2681:7;2708:18;;;;;;;;;;;;2607:127;12372:20;:29;;;;:::i;:::-;:47;;12364:131;;;;-1:-1:-1;;;12364:131:0;;14192:2:1;12364:131:0;;;14174:21:1;;;14211:18;;;14204:30;14270:34;14250:18;;;14243:62;14322:18;;12364:131:0;13990:356:1;12364:131:0;12534:15;12560:14;12585:11;12607:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;12607:25:0;-1:-1:-1;;;;;12666:17:0;;12645;12666;;;:9;:17;;;;;;;;12665:18;:56;;;;-1:-1:-1;;;;;;12701:20:0;;;;;;:9;:20;;;;;;;;12700:21;12665:56;:112;;;;;12769:8;;12753:13;;:24;;;;:::i;:::-;12738:12;:39;12665:112;12865:15;;12645:132;;-1:-1:-1;;;;12865:15:0;;;;;:36;;-1:-1:-1;;;;;;12884:17:0;;;;;;:9;:17;;;;;;;;12865:36;:60;;;-1:-1:-1;;;;;;12905:20:0;;;;;;:9;:20;;;;;;;;12865:60;12861:655;;;12946:1;12940:7;;12861:655;;;13011:4;;-1:-1:-1;;;;;12998:17:0;;;13011:4;;12998:17;:34;;;;;13020:12;13019:13;12998:34;12994:522;;;13115:9;:19;13076;;:58;;13115:19;13076:58;:::i;:::-;13181:24;;;;;;;;;13196:9;13181:24;;;;;;;;;13049:85;;-1:-1:-1;13049:85:0;;-1:-1:-1;13181:24:0;-1:-1:-1;12994:522:0;;;13228:12;13223:293;;13319:5;:15;13284;;:50;;13319:15;13284:50;:::i;:::-;13381:20;;;;;;;;;13396:5;13381:20;;;;;;;;;13257:77;;-1:-1:-1;13257:77:0;;-1:-1:-1;13381:20:0;-1:-1:-1;13223:293:0;;;13423:12;13419:97;;;13462:9;;;-1:-1:-1;13462:9:0;;-1:-1:-1;13419:97:0;13554:3;13535:15;13544:6;13535;:15;:::i;:::-;13534:23;;;;:::i;:::-;13671:18;;13528:29;;-1:-1:-1;;;;13671:18:0;;;;:36;;;;-1:-1:-1;13703:4:0;;-1:-1:-1;;;;;13693:14:0;;;13703:4;;13693:14;;13671:36;13667:76;;;13709:34;13721:7;13730:12;13709:11;:34::i;:::-;13785:48;13801:6;13809:9;13820:12;13829:3;13820:6;:12;:::i;:::-;13785:15;:48::i;:::-;13848:7;;13844:249;;13920:11;;13916:164;;13952:17;13993:3;13973:16;13982:7;13973:6;:16;:::i;:::-;13972:24;;;;:::i;:::-;13952:44;;14015:49;14031:6;14047:4;14054:9;14015:15;:49::i;:::-;13933:147;13916:164;11637:2463;;;;;11515:2585;;;:::o;7180:173::-;7255:6;;;-1:-1:-1;;;;;7272:17:0;;;-1:-1:-1;;;;;;7272:17:0;;;;;;;7305:40;;7255:6;;;7272:17;7255:6;;7305:40;;7236:16;;7305:40;7225:128;7180:173;:::o;14108:1422::-;9202:15;;-1:-1:-1;;;9202:15:0;;;;9197:125;;9234:15;:22;;-1:-1:-1;;;;9234:22:0;-1:-1:-1;;;9234:22:0;;;14194:49;;14225:7:::1;14194:49;14300:4;14256:23;2708:18:::0;;;;;;;;;;;14340:23:::1;::::0;14321:42;::::1;14317:1206;;14410:1;14384:23;;:27;14380:109;;;-1:-1:-1::0;14450:23:0::1;::::0;14380:109:::1;14560:19;14582:11;:7:::0;14592:1:::1;14582:11;:::i;:::-;14560:33;;14608:32;14702:11;14662:9;:19;;;14644:15;:37;;;;:::i;:::-;14643:70;;;;:::i;:::-;14608:105:::0;-1:-1:-1;14728:14:0::1;14745:42;14608:105:::0;14745:15;:42:::1;:::i;:::-;14728:59:::0;-1:-1:-1;14829:21:0::1;14867:24;14728:59:::0;14867:16:::1;:24::i;:::-;14908:20;14931:38;14955:14:::0;14931:21:::1;:38;:::i;:::-;14908:61;;14984:19;15036:9;:19;;;15022:11;:33;;;;:::i;:::-;15006:50;::::0;:12;:50:::1;:::i;:::-;14984:72;;15071:29;15117:9;:19;;;15103:11;:33;;;;:::i;:::-;15071:65:::0;-1:-1:-1;15157:25:0;;15153:161:::1;;15237:61;15250:24;15276:21;15237:12;:61::i;:::-;15371:19:::0;;15330:20:::1;::::0;15353:15:::1;:11:::0;15367:1:::1;15353:15;:::i;:::-;:37;;;;:::i;:::-;15330:60:::0;-1:-1:-1;15409:16:0;;15405:105:::1;;15454:15;::::0;15446:48:::1;::::0;-1:-1:-1;;;;;15454:15:0::1;15481:12:::0;15446:34:::1;:48::i;:::-;14365:1158;;;;;;;;14317:1206;14188:1342;9271:1;9287:15:::0;:23;;-1:-1:-1;;;;9287:23:0;;;14108:1422;;:::o;4530:638::-;-1:-1:-1;;;;;4670:20:0;;4662:70;;;;-1:-1:-1;;;4662:70:0;;14775:2:1;4662:70:0;;;14757:21:1;14814:2;14794:18;;;14787:30;14853:34;14833:18;;;14826:62;-1:-1:-1;;;14904:18:1;;;14897:35;14949:19;;4662:70:0;14573:401:1;4662:70:0;-1:-1:-1;;;;;4751:23:0;;4743:71;;;;-1:-1:-1;;;4743:71:0;;15181:2:1;4743:71:0;;;15163:21:1;15220:2;15200:18;;;15193:30;15259:34;15239:18;;;15232:62;-1:-1:-1;;;15310:18:1;;;15303:33;15353:19;;4743:71:0;14979:399:1;4743:71:0;-1:-1:-1;;;;;4911:17:0;;4887:21;4911:17;;;;;;;;;;;4947:23;;;;4939:74;;;;-1:-1:-1;;;4939:74:0;;15585:2:1;4939:74:0;;;15567:21:1;15624:2;15604:18;;;15597:30;15663:34;15643:18;;;15636:62;-1:-1:-1;;;15714:18:1;;;15707:36;15760:19;;4939:74:0;15383:402:1;4939:74:0;5044:22;5060:6;5044:13;:22;:::i;:::-;-1:-1:-1;;;;;5024:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5077:20;;;;;;;;:30;;5101:6;;5024:9;5077:30;;5101:6;;5077:30;:::i;:::-;;;;;;;;5142:9;-1:-1:-1;;;;;5125:35:0;5134:6;-1:-1:-1;;;;;5125:35:0;;5153:6;5125:35;;;;1869:25:1;;1857:2;1842:18;;1723:177;5125:35:0;;;;;;;;4651:517;4530:638;;;:::o;15538:526::-;15680:16;;;15694:1;15680:16;;;;;;;;15656:21;;15680:16;;;;;;;;;;-1:-1:-1;15680:16:0;15656:40;;15725:4;15707;15712:1;15707:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15707:23:0;;;:7;;;;;;;;;;:23;;;;15751:6;;:13;;;-1:-1:-1;;;15751:13:0;;;;:6;;;;;:11;;:13;;;;;15707:7;;15751:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15741:4;15746:1;15741:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15741:23:0;;;:7;;;;;;;;;:23;15809:6;;15777:53;;15794:4;;15809:6;15818:11;15777:8;:53::i;:::-;15869:6;;:187;;-1:-1:-1;;;15869:187:0;;-1:-1:-1;;;;;15869:6:0;;;;:57;;:187;;15941:11;;15869:6;;15983:4;;16010;;16030:15;;15869:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15593:471;15538:526;:::o;16072:500::-;16252:6;;16220:53;;16237:4;;-1:-1:-1;;;;;16252:6:0;16261:11;16220:8;:53::i;:::-;16316:6;;:248;;-1:-1:-1;;;16316:248:0;;16381:4;16316:248;;;17372:34:1;17422:18;;;17415:34;;;16316:6:0;17465:18:1;;;17458:34;;;17508:18;;;17501:34;8839:42:0;17551:19:1;;;17544:44;16538:15:0;17604:19:1;;;17597:35;-1:-1:-1;;;;;16316:6:0;;;;:22;;16347:9;;17306:19:1;;16316:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16072:500;;:::o;6098:319::-;6213:6;6188:21;:31;;6180:73;;;;-1:-1:-1;;;6180:73:0;;18156:2:1;6180:73:0;;;18138:21:1;18195:2;18175:18;;;18168:30;18234:31;18214:18;;;18207:59;18283:18;;6180:73:0;17954:353:1;6180:73:0;6267:12;6285:9;-1:-1:-1;;;;;6285:14:0;6308:6;6285:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:54;;;6339:7;6331:78;;;;-1:-1:-1;;;6331:78:0;;18724:2:1;6331:78:0;;;18706:21:1;18763:2;18743:18;;;18736:30;18802:34;18782:18;;;18775:62;18873:28;18853:18;;;18846:56;18919:19;;6331:78:0;18522: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:127::-;1966:10;1961:3;1957:20;1954:1;1947:31;1997:4;1994:1;1987:15;2021:4;2018:1;2011:15;2037:908;2091:5;2144:3;2137:4;2129:6;2125:17;2121:27;2111:55;;2162:1;2159;2152:12;2111:55;2198:6;2185:20;2224:4;2247:18;2284:2;2280;2277:10;2274:36;;;2290:18;;:::i;:::-;2336:2;2333:1;2329:10;2368:2;2362:9;2431:2;2427:7;2422:2;2418;2414:11;2410:25;2402:6;2398:38;2486:6;2474:10;2471:22;2466:2;2454:10;2451:18;2448:46;2445:72;;;2497:18;;:::i;:::-;2533:2;2526:22;2583:18;;;2659:15;;;2655:24;;;2617:15;;;;-1:-1:-1;2691:15:1;;;2688:35;;;2719:1;2716;2709:12;2688:35;2755:2;2747:6;2743:15;2732:26;;2767:148;2783:6;2778:3;2775:15;2767:148;;;2849:23;2868:3;2849:23;:::i;:::-;2837:36;;2893:12;;;;2800;;;;2767:148;;;2933:6;2037:908;-1:-1:-1;;;;;;;2037:908:1:o;2950:477::-;3040:6;3048;3101:2;3089:9;3080:7;3076:23;3072:32;3069:52;;;3117:1;3114;3107:12;3069:52;3157:9;3144:23;3190:18;3182:6;3179:30;3176:50;;;3222:1;3219;3212:12;3176:50;3245:61;3298:7;3289:6;3278:9;3274:22;3245:61;:::i;:::-;3235:71;;;3356:2;3345:9;3341:18;3328:32;3369:28;3391:5;3369:28;:::i;:::-;3416:5;3406:15;;;2950:477;;;;;:::o;3432:456::-;3509:6;3517;3525;3578:2;3566:9;3557:7;3553:23;3549:32;3546:52;;;3594:1;3591;3584:12;3546:52;3633:9;3620:23;3652:31;3677:5;3652:31;:::i;:::-;3702:5;-1:-1:-1;3759:2:1;3744:18;;3731:32;3772:33;3731:32;3772:33;:::i;:::-;3432:456;;3824:7;;-1:-1:-1;;;3878:2:1;3863:18;;;;3850:32;;3432:456::o;3893:348::-;3977:6;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4086:9;4073:23;4119:18;4111:6;4108:30;4105:50;;;4151:1;4148;4141:12;4105:50;4174:61;4227:7;4218:6;4207:9;4203:22;4174:61;:::i;:::-;4164:71;3893:348;-1:-1:-1;;;;3893:348:1:o;4435:180::-;4494:6;4547:2;4535:9;4526:7;4522:23;4518:32;4515:52;;;4563:1;4560;4553:12;4515:52;-1:-1:-1;4586:23:1;;4435:180;-1:-1:-1;4435:180:1:o;4620:247::-;4679:6;4732:2;4720:9;4711:7;4707:23;4703:32;4700:52;;;4748:1;4745;4738:12;4700:52;4787:9;4774:23;4806:31;4831:5;4806:31;:::i;5125:382::-;5190:6;5198;5251:2;5239:9;5230:7;5226:23;5222:32;5219:52;;;5267:1;5264;5257:12;5219:52;5306:9;5293:23;5325:31;5350:5;5325:31;:::i;:::-;5375:5;-1:-1:-1;5432:2:1;5417:18;;5404:32;5445:30;5404:32;5445:30;:::i;5720:248::-;5788:6;5796;5849:2;5837:9;5828:7;5824:23;5820:32;5817:52;;;5865:1;5862;5855:12;5817:52;-1:-1:-1;;5888:23:1;;;5958:2;5943:18;;;5930:32;;-1:-1:-1;5720:248:1:o;5973:388::-;6041:6;6049;6102:2;6090:9;6081:7;6077:23;6073:32;6070:52;;;6118:1;6115;6108:12;6070:52;6157:9;6144:23;6176:31;6201:5;6176:31;:::i;:::-;6226:5;-1:-1:-1;6283:2:1;6268:18;;6255:32;6296:33;6255:32;6296:33;:::i;6589:380::-;6668:1;6664:12;;;;6711;;;6732:61;;6786:4;6778:6;6774:17;6764:27;;6732:61;6839:2;6831:6;6828:14;6808:18;6805:38;6802:161;;6885:10;6880:3;6876:20;6873:1;6866:31;6920:4;6917:1;6910:15;6948:4;6945:1;6938:15;6802:161;;6589:380;;;:::o;6974:356::-;7176:2;7158:21;;;7195:18;;;7188:30;7254:34;7249:2;7234:18;;7227:62;7321:2;7306:18;;6974:356::o;7335:127::-;7396:10;7391:3;7387:20;7384:1;7377:31;7427:4;7424:1;7417:15;7451:4;7448:1;7441:15;7467:127;7528:10;7523:3;7519:20;7516:1;7509:31;7559:4;7556:1;7549:15;7583:4;7580:1;7573:15;7599:135;7638:3;7659:17;;;7656:43;;7679:18;;:::i;:::-;-1:-1:-1;7726:1:1;7715:13;;7599:135::o;8148:128::-;8215:9;;;8236:11;;;8233:37;;;8250:18;;:::i;8281:125::-;8346:9;;;8367:10;;;8364:36;;;8380:18;;:::i;8411:422::-;8500:1;8543:5;8500:1;8557:270;8578:7;8568:8;8565:21;8557:270;;;8637:4;8633:1;8629:6;8625:17;8619:4;8616:27;8613:53;;;8646:18;;:::i;:::-;8696:7;8686:8;8682:22;8679:55;;;8716:16;;;;8679:55;8795:22;;;;8755:15;;;;8557:270;;;8561:3;8411:422;;;;;:::o;8838:806::-;8887:5;8917:8;8907:80;;-1:-1:-1;8958:1:1;8972:5;;8907:80;9006:4;8996:76;;-1:-1:-1;9043:1:1;9057:5;;8996:76;9088:4;9106:1;9101:59;;;;9174:1;9169:130;;;;9081:218;;9101:59;9131:1;9122:10;;9145:5;;;9169:130;9206:3;9196:8;9193:17;9190:43;;;9213:18;;:::i;:::-;-1:-1:-1;;9269:1:1;9255:16;;9284:5;;9081:218;;9383:2;9373:8;9370:16;9364:3;9358:4;9355:13;9351:36;9345:2;9335:8;9332:16;9327:2;9321:4;9318:12;9314:35;9311:77;9308:159;;;-1:-1:-1;9420:19:1;;;9452:5;;9308:159;9499:34;9524:8;9518:4;9499:34;:::i;:::-;9569:6;9565:1;9561:6;9557:19;9548:7;9545:32;9542:58;;;9580:18;;:::i;:::-;9618:20;;8838:806;-1:-1:-1;;;8838:806:1:o;9649:140::-;9707:5;9736:47;9777:4;9767:8;9763:19;9757:4;9736:47;:::i;9794:168::-;9867:9;;;9898;;9915:15;;;9909:22;;9895:37;9885:71;;9936:18;;:::i;10601:245::-;10668:6;10721:2;10709:9;10700:7;10696:23;10692:32;10689:52;;;10737:1;10734;10727:12;10689:52;10769:9;10763:16;10788:28;10810:5;10788:28;:::i;14351:217::-;14391:1;14417;14407:132;;14461:10;14456:3;14452:20;14449:1;14442:31;14496:4;14493:1;14486:15;14524:4;14521:1;14514:15;14407:132;-1:-1:-1;14553:9:1;;14351:217::o;15790:251::-;15860:6;15913:2;15901:9;15892:7;15888:23;15884:32;15881:52;;;15929:1;15926;15919:12;15881:52;15961:9;15955:16;15980:31;16005:5;15980:31;:::i;16046:980::-;16308:4;16356:3;16345:9;16341:19;16387:6;16376:9;16369:25;16413:2;16451:6;16446:2;16435:9;16431:18;16424:34;16494:3;16489:2;16478:9;16474:18;16467:31;16518:6;16553;16547:13;16584:6;16576;16569:22;16622:3;16611:9;16607:19;16600:26;;16661:2;16653:6;16649:15;16635:29;;16682:1;16692:195;16706:6;16703:1;16700:13;16692:195;;;16771:13;;-1:-1:-1;;;;;16767:39:1;16755:52;;16862:15;;;;16827:12;;;;16803:1;16721:9;16692:195;;;-1:-1:-1;;;;;;;16943:32:1;;;;16938:2;16923:18;;16916:60;-1:-1:-1;;;17007:3:1;16992:19;16985:35;16904:3;16046:980;-1:-1:-1;;;16046:980:1:o;17643:306::-;17731:6;17739;17747;17800:2;17788:9;17779:7;17775:23;17771:32;17768:52;;;17816:1;17813;17806:12;17768:52;17845:9;17839:16;17829:26;;17895:2;17884:9;17880:18;17874:25;17864:35;;17939:2;17928:9;17924:18;17918:25;17908:35;;17643:306;;;;;:::o
Swarm Source
ipfs://9cc61b425382d04031e0493a4c3726fa724cc672cb902adbdb98cbba8f6904c5
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.