ERC-20
Overview
Max Total Supply
240,000,000 ZKGUN
Holders
16
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,180,000 ZKGUNValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
zkGUN
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-05 */ /** Website: https://zkgun.org X: https://twitter.com/zkgunproject Telegram: https://t.me/zkgunproject Medium: https://medium.com/@zkgun Bot: https://t.me/zkgunbot **/ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; pragma experimental ABIEncoderV2; abstract contract Ownable { address private _owner; constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _owner = address(0); } } library SafeERC20 { function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED'); } } interface IERC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } contract zkGUN is Ownable { string private constant _name = unicode"zkGUN"; string private constant _symbol = unicode"ZKGUN"; uint256 private constant _totalSupply = 240_000_000 * 1e18; uint256 public maxTransactionAmount = 3_600_000 * 1e18; uint256 public maxWallet = 3_600_000 * 1e18; uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000; address private revenueWallet = 0x9b7836aF905dee35d36Ab457b7cF32580C561463; address private marketingWallet = 0x91A4012c934f9C3b9a29E86bCA77d91572Ec9a3d; address private teamWallet = 0xF4e6cA762E53De38Ec646744ec8b0F8436C4C365; address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; uint8 public buyTotalFees = 5; uint8 public sellTotalFees = 5; uint8 public revenueFee = 50; uint8 public buybackburnFee = 50; uint8 public teamFee = 0; bool private swapping; bool public limitsInEffect = true; bool private launched; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; event SwapAndLiquify(uint256 tokensSwapped, uint256 teamETH, uint256 revenueETH, uint256 buybackburnETH); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public immutable uniswapV2Pair; constructor() { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH); automatedMarketMakerPairs[uniswapV2Pair] = true; address airdropWallet = 0x48A31085aB4DC35906292f8Fa0a2B66e476B1d46; setExcludedFromFees(owner(), true); setExcludedFromFees(address(this), true); setExcludedFromFees(address(0xdead), true); setExcludedFromFees(teamWallet, true); setExcludedFromFees(revenueWallet, true); setExcludedFromFees(marketingWallet, true); setExcludedFromMaxTransaction(owner(), true); setExcludedFromMaxTransaction(address(uniswapV2Router), true); setExcludedFromMaxTransaction(address(this), true); setExcludedFromMaxTransaction(address(0xdead), true); setExcludedFromMaxTransaction(address(uniswapV2Pair), true); setExcludedFromMaxTransaction(teamWallet, true); setExcludedFromMaxTransaction(revenueWallet, true); setExcludedFromMaxTransaction(marketingWallet, true); _balances[msg.sender] = 12_000_000 * 1e18; emit Transfer(address(0), msg.sender, _balances[msg.sender]); _balances[marketingWallet] = 12_000_000 * 1e18; emit Transfer(address(0), marketingWallet, _balances[marketingWallet]); _balances[revenueWallet] = 6_000_000 * 1e18; emit Transfer(address(0), revenueWallet, _balances[revenueWallet]); _balances[airdropWallet] = 54_000_000 * 1e18; emit Transfer(address(0), airdropWallet, _balances[airdropWallet]); _balances[address(this)] = 156_000_000 * 1e18; emit Transfer(address(0), address(this), _balances[address(this)]); _approve(address(this), address(uniswapV2Router), type(uint256).max); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return 18; } function totalSupply() public pure returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transfer(address recipient, uint256 amount) external returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (!launched && (from != owner() && from != address(this) && to != owner())) { revert("Trading not enabled"); } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx"); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTx"); } else if (!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 100; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 100; } if (fees > 0) { unchecked { amount = amount - fees; _balances[from] -= fees; _balances[address(this)] += fees; } emit Transfer(from, address(this), fees); } } unchecked { _balances[from] -= amount; _balances[to] += amount; } emit Transfer(from, to, amount); } function removeLimits() external onlyOwner { limitsInEffect = false; } function setDistributionFees(uint8 _RevenueFee, uint8 _BuybackBurnFee, uint8 _teamFee) external onlyOwner { revenueFee = _RevenueFee; buybackburnFee = _BuybackBurnFee; teamFee = _teamFee; require((revenueFee + buybackburnFee + teamFee) == 100, "Distribution have to be equal to 100%"); } function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees) external onlyOwner { require(_buyTotalFees <= 5, "Buy fees must be less than or equal to 5%"); require(_sellTotalFees <= 5, "Sell fees must be less than or equal to 5%"); buyTotalFees = _buyTotalFees; sellTotalFees = _sellTotalFees; } function setExcludedFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function setExcludedFromMaxTransaction(address account, bool excluded) public onlyOwner { _isExcludedMaxTransactionAmount[account] = excluded; } function airdropWallets(address[] memory addresses, uint256[] memory amounts) external onlyOwner { require(!launched, "Already launched"); for (uint256 i = 0; i < addresses.length; i++) { require(_balances[msg.sender] >= amounts[i], "ERC20: transfer amount exceeds balance"); _balances[addresses[i]] += amounts[i]; _balances[msg.sender] -= amounts[i]; emit Transfer(msg.sender, addresses[i], amounts[i]); } } function openTrade() external onlyOwner { require(!launched, "Already launched"); launched = true; } function LaunchzkGUNProject() external payable onlyOwner { require(!launched, "Already launched"); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), _balances[address(this)], 0, 0, teamWallet, block.timestamp ); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed"); automatedMarketMakerPairs[pair] = value; } function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner { require(newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply"); require(newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply"); swapTokensAtAmount = newSwapAmount; } function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner { require(newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%"); maxTransactionAmount = newMaxTx * (10**18); } function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner { require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%"); maxWallet = newMaxWallet * (10**18); } function updateRevenueWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); revenueWallet = newAddress; } function updateMarketingWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); marketingWallet = newAddress; } function updateTeamWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); teamWallet = newAddress; } function excludedFromFee(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function withdrawStuckToken(address token, address to) external onlyOwner { uint256 _contractBalance = IERC20(token).balanceOf(address(this)); SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer } function withdrawStuckETH(address addr) external onlyOwner { require(addr != address(0), "Invalid address"); (bool success, ) = addr.call{value: address(this).balance}(""); require(success, "Withdrawal failed"); } function swapBack() private { uint256 swapThreshold = swapTokensAtAmount; bool success; if (balanceOf(address(this)) > swapTokensAtAmount * 20) { swapThreshold = swapTokensAtAmount * 20; } address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, 0, path, address(this), block.timestamp); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { uint256 ethForRevenue = (ethBalance * revenueFee) / 100; uint256 ethForTeam = (ethBalance * teamFee) / 100; uint256 ethForBuybackBurn = ethBalance - ethForRevenue - ethForTeam; (success, ) = address(teamWallet).call{value: ethForTeam}(""); (success, ) = address(marketingWallet).call{value: ethForBuybackBurn}(""); (success, ) = address(revenueWallet).call{value: ethForRevenue}(""); emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRevenue, ethForBuybackBurn); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revenueETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buybackburnETH","type":"uint256"}],"name":"SwapAndLiquify","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":[],"name":"LaunchzkGUNProject","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropWallets","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":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackburnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevenueFee","type":"uint8"},{"internalType":"uint8","name":"_BuybackBurnFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526a02fa54641bae8aaa0000006001556a02fa54641bae8aaa0000006002556127106ac685fa11e01ec6f000000060026200003f919062000735565b6200004b91906200075f565b600355600480546001600160a01b0319908116739b7836af905dee35d36ab457b7cf32580c56146317909155600580549091167391a4012c934f9c3b9a29e86bca77d91572ec9a3d179055600680547a01000032320505f4e6ca762e53de38ec646744ec8b0f8436c4c365600161ff0160c81b0319909116179055348015620000d2575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000133573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015991906200077f565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001b9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001df91906200077f565b6001600160a01b031660808190525f908152600b60205260409020805460ff191660011790557348a31085ab4dc35906292f8fa0a2b66e476b1d4662000238620002305f546001600160a01b031690565b600162000504565b6200024530600162000504565b6200025461dead600162000504565b6006546200026d906001600160a01b0316600162000504565b60045462000286906001600160a01b0316600162000504565b6005546200029f906001600160a01b0316600162000504565b620002bd620002b55f546001600160a01b031690565b60016200058b565b620002de737a250d5630b4cf539739df2c5dacb4c659f2488d60016200058b565b620002eb3060016200058b565b620002fa61dead60016200058b565b6080516200030a9060016200058b565b60065462000323906001600160a01b031660016200058b565b6004546200033c906001600160a01b031660016200058b565b60055462000355906001600160a01b031660016200058b565b335f8181526007602090815260408083206a09ed194db19b238c0000009081905590519081525f80516020620031b9833981519152910160405180910390a3600580546001600160a01b039081165f908152600760205260408082206a09ed194db19b238c0000009055925490911680825282822054925190925f80516020620031b983398151915291620003ec91815260200190565b60405180910390a3600480546001600160a01b039081165f908152600760205260408082206a04f68ca6d8cd91c60000009055925490911680825282822054925190925f80516020620031b9833981519152916200044c91815260200190565b60405180910390a36001600160a01b0381165f8181526007602090815260408083206a2caaf1dd9f3a1ff60000009081905590519081525f80516020620031b9833981519152910160405180910390a3305f8181526007602090815260408083206a810a48f204e0ce1c0000009081905590519081525f80516020620031b9833981519152910160405180910390a3620004fd30737a250d5630b4cf539739df2c5dacb4c659f2488d5f196200060e565b50620007ae565b33620005175f546001600160a01b031690565b6001600160a01b031614620005615760405162461bcd60e51b815260206004820181905260248201525f805160206200319983398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b336200059e5f546001600160a01b031690565b6001600160a01b031614620005e45760405162461bcd60e51b815260206004820181905260248201525f8051602062003199833981519152604482015260640162000558565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b038316620006725760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000558565b6001600160a01b038216620006d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000558565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b80820281158282048414176200075957634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200077a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000790575f80fd5b81516001600160a01b0381168114620007a7575f80fd5b9392505050565b6080516129cb620007ce5f395f81816103e5015261105b01526129cb5ff3fe608060405260043610610236575f3560e01c8063751039fc11610129578063bc205ad3116100a8578063dd62ed3e1161006d578063dd62ed3e146106f5578063e2f4560514610739578063e71079471461074e578063f8b45b051461076d578063fb201b1d14610782575f80fd5b8063bc205ad314610662578063c8c8ebe414610681578063d201b01e14610696578063d7c94efd146106b5578063d85ba063146106d5575f80fd5b80639a7a23d6116100ee5780639a7a23d6146105dd578063a9059cbb146105fc578063aacebbe31461061b578063b1b4b1031461063a578063bb6271911461065a575f80fd5b8063751039fc1461052a5780637cb332bb1461053e57806385ecafd71461055d5780638da5cb5b1461059457806395d89b41146105b0575f80fd5b806349bd5a5e116101b557806366650dae1161017a57806366650dae146104845780636a486a8e146104a357806370a08231146104c3578063715018a6146104f757806374010ece1461050b575f80fd5b806349bd5a5e146103d45780634a62bb65146104075780634fcd244614610427578063590ffdce146104465780636402511e14610465575f80fd5b806323b872dd116101fb57806323b872dd1461033657806327a14fc214610355578063313ce5671461037457806336e4ec64146103955780633c090c46146103b5575f80fd5b8063052c8f7e1461024157806306fdde0314610262578063095ea7b3146102a15780631694505e146102d057806318160ddd1461030f575f80fd5b3661023d57005b5f80fd5b34801561024c575f80fd5b5061026061025b3660046123c0565b610796565b005b34801561026d575f80fd5b506040805180820190915260058152643d35a3aaa760d91b60208201525b6040516102989190612402565b60405180910390f35b3480156102ac575f80fd5b506102c06102bb366004612434565b61081f565b6040519015158152602001610298565b3480156102db575f80fd5b506102f7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610298565b34801561031a575f80fd5b506ac685fa11e01ec6f00000005b604051908152602001610298565b348015610341575f80fd5b506102c061035036600461245c565b610835565b348015610360575f80fd5b5061026061036f366004612495565b6108e4565b34801561037f575f80fd5b5060125b60405160ff9091168152602001610298565b3480156103a0575f80fd5b5060065461038390600160b01b900460ff1681565b3480156103c0575f80fd5b506102606103cf3660046124bc565b6109c7565b3480156103df575f80fd5b506102f77f000000000000000000000000000000000000000000000000000000000000000081565b348015610412575f80fd5b506006546102c090600160d01b900460ff1681565b348015610432575f80fd5b506102606104413660046124fc565b610acf565b348015610451575f80fd5b5061026061046036600461253d565b610c08565b348015610470575f80fd5b5061026061047f366004612495565b610c6a565b34801561048f575f80fd5b5061026061049e36600461253d565b610dc7565b3480156104ae575f80fd5b5060065461038390600160a81b900460ff1681565b3480156104ce575f80fd5b506103286104dd3660046123c0565b6001600160a01b03165f9081526007602052604090205490565b348015610502575f80fd5b50610260610e29565b348015610516575f80fd5b50610260610525366004612495565b610e72565b348015610535575f80fd5b50610260610f5a565b348015610549575f80fd5b506102606105583660046123c0565b610fa1565b348015610568575f80fd5b506102c06105773660046123c0565b6001600160a01b03165f9081526009602052604090205460ff1690565b34801561059f575f80fd5b505f546001600160a01b03166102f7565b3480156105bb575f80fd5b506040805180820190915260058152642d25a3aaa760d91b602082015261028b565b3480156105e8575f80fd5b506102606105f736600461253d565b611021565b348015610607575f80fd5b506102c0610616366004612434565b611104565b348015610626575f80fd5b506102606106353660046123c0565b611110565b348015610645575f80fd5b5060065461038390600160b81b900460ff1681565b610260611190565b34801561066d575f80fd5b5061026061067c366004612572565b6112a3565b34801561068c575f80fd5b5061032860015481565b3480156106a1575f80fd5b506102606106b03660046123c0565b611350565b3480156106c0575f80fd5b5060065461038390600160c01b900460ff1681565b3480156106e0575f80fd5b5060065461038390600160a01b900460ff1681565b348015610700575f80fd5b5061032861070f366004612572565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610744575f80fd5b5061032860035481565b348015610759575f80fd5b5061026061076836600461266a565b611467565b348015610778575f80fd5b5061032860025481565b34801561078d575f80fd5b5061026061167e565b336107a85f546001600160a01b031690565b6001600160a01b0316146107d75760405162461bcd60e51b81526004016107ce90612724565b60405180910390fd5b6001600160a01b0381166107fd5760405162461bcd60e51b81526004016107ce90612759565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f61082b3384846116f5565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146108ce57828110156108c15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ce565b6108ce85338584036116f5565b6108d9858585611818565b506001949350505050565b336108f65f546001600160a01b031690565b6001600160a01b03161461091c5760405162461bcd60e51b81526004016107ce90612724565b670de0b6b3a76400006103e861093e6ac685fa11e01ec6f0000000600161279d565b61094891906127b4565b61095291906127b4565b8110156109af5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b60648201526084016107ce565b6109c181670de0b6b3a764000061279d565b60025550565b336109d95f546001600160a01b031690565b6001600160a01b0316146109ff5760405162461bcd60e51b81526004016107ce90612724565b6006805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b868516810291909117948590558404831693610a60939181048216929004166127d3565b610a6a91906127d3565b60ff16606414610aca5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107ce565b505050565b33610ae15f546001600160a01b031690565b6001600160a01b031614610b075760405162461bcd60e51b81526004016107ce90612724565b60058260ff161115610b6d5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20352560b81b60648201526084016107ce565b60058160ff161115610bd45760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20352560b01b60648201526084016107ce565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610c1a5f546001600160a01b031690565b6001600160a01b031614610c405760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610c7c5f546001600160a01b031690565b6001600160a01b031614610ca25760405162461bcd60e51b81526004016107ce90612724565b620186a0610cbc6ac685fa11e01ec6f0000000600161279d565b610cc691906127b4565b811015610d335760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107ce565b6103e8610d4c6ac685fa11e01ec6f0000000600561279d565b610d5691906127b4565b811115610dc25760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107ce565b600355565b33610dd95f546001600160a01b031690565b6001600160a01b031614610dff5760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610e3b5f546001600160a01b031690565b6001600160a01b031614610e615760405162461bcd60e51b81526004016107ce90612724565b5f80546001600160a01b0319169055565b33610e845f546001600160a01b031690565b6001600160a01b031614610eaa5760405162461bcd60e51b81526004016107ce90612724565b670de0b6b3a76400006103e8610ecc6ac685fa11e01ec6f0000000600161279d565b610ed691906127b4565b610ee091906127b4565b811015610f425760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107ce565b610f5481670de0b6b3a764000061279d565b60015550565b33610f6c5f546001600160a01b031690565b6001600160a01b031614610f925760405162461bcd60e51b81526004016107ce90612724565b6006805460ff60d01b19169055565b33610fb35f546001600160a01b031690565b6001600160a01b031614610fd95760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b038116610fff5760405162461bcd60e51b81526004016107ce90612759565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336110335f546001600160a01b031690565b6001600160a01b0316146110595760405162461bcd60e51b81526004016107ce90612724565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110da5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107ce565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f61082b338484611818565b336111225f546001600160a01b031690565b6001600160a01b0316146111485760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b03811661116e5760405162461bcd60e51b81526004016107ce90612759565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336111a25f546001600160a01b031690565b6001600160a01b0316146111c85760405162461bcd60e51b81526004016107ce90612724565b600654600160d81b900460ff16156111f25760405162461bcd60e51b81526004016107ce906127ec565b305f8181526007602052604080822054600654915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561127e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610aca9190612816565b336112b55f546001600160a01b031690565b6001600160a01b0316146112db5760405162461bcd60e51b81526004016107ce90612724565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561131f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113439190612841565b9050610aca838383611f8f565b336113625f546001600160a01b031690565b6001600160a01b0316146113885760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b0381166113d05760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107ce565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611419576040519150601f19603f3d011682016040523d82523d5f602084013e61141e565b606091505b50509050806114635760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107ce565b5050565b336114795f546001600160a01b031690565b6001600160a01b03161461149f5760405162461bcd60e51b81526004016107ce90612724565b600654600160d81b900460ff16156114c95760405162461bcd60e51b81526004016107ce906127ec565b5f5b8251811015610aca578181815181106114e6576114e6612858565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205410156115305760405162461bcd60e51b81526004016107ce9061286c565b81818151811061154257611542612858565b602002602001015160075f85848151811061155f5761155f612858565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f82825461159491906128b2565b925050819055508181815181106115ad576115ad612858565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e691906128c5565b925050819055508281815181106115ff576115ff612858565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84848151811061164d5761164d612858565b602002602001015160405161166491815260200190565b60405180910390a380611676816128d8565b9150506114cb565b336116905f546001600160a01b031690565b6001600160a01b0316146116b65760405162461bcd60e51b81526004016107ce90612724565b600654600160d81b900460ff16156116e05760405162461bcd60e51b81526004016107ce906127ec565b6006805460ff60d81b1916600160d81b179055565b6001600160a01b0383166117575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ce565b6001600160a01b0382166117b85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ce565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661187c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ce565b6001600160a01b0382166118de5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ce565b5f811161193f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ce565b600654600160d81b900460ff1615801561199357505f546001600160a01b0384811691161480159061197a57506001600160a01b0383163014155b801561199357505f546001600160a01b03838116911614155b156119d65760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107ce565b600654600160d01b900460ff1615611c97575f546001600160a01b03848116911614801590611a1257505f546001600160a01b03838116911614155b8015611a2657506001600160a01b03821615155b8015611a3d57506001600160a01b03821661dead14155b8015611a535750600654600160c81b900460ff16155b15611c97576001600160a01b0383165f908152600b602052604090205460ff168015611a9757506001600160a01b0382165f908152600a602052604090205460ff16155b15611b6a57600154811115611afc5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107ce565b6002546001600160a01b0383165f90815260076020526040902054611b2190836128b2565b1115611b655760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ce565b611c97565b6001600160a01b0382165f908152600b602052604090205460ff168015611ba957506001600160a01b0383165f908152600a602052604090205460ff16155b15611c0f57600154811115611b655760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107ce565b6001600160a01b0382165f908152600a602052604090205460ff16611c97576002546001600160a01b0383165f90815260076020526040902054611c5390836128b2565b1115611c975760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ce565b600354305f90815260076020526040902054108015908190611cc35750600654600160c81b900460ff16155b8015611ce757506001600160a01b0384165f908152600b602052604090205460ff16155b8015611d0b57506001600160a01b0384165f9081526009602052604090205460ff16155b8015611d2f57506001600160a01b0383165f9081526009602052604090205460ff16155b15611d5d576006805460ff60c81b1916600160c81b179055611d4f6120b6565b6006805460ff60c81b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c81b909204821615911680611da957506001600160a01b0384165f9081526009602052604090205460ff165b15611db157505f5b6001600160a01b0385165f9081526007602052604090205483811015611de95760405162461bcd60e51b81526004016107ce9061286c565b5f8215611f1d576001600160a01b0386165f908152600b602052604090205460ff168015611e225750600654600160a81b900460ff1615155b15611e5257600654606490611e4190600160a81b900460ff168761279d565b611e4b91906127b4565b9050611eb0565b6001600160a01b0387165f908152600b602052604090205460ff168015611e845750600654600160a01b900460ff1615155b15611eb057600654606490611ea390600160a01b900460ff168761279d565b611ead91906127b4565b90505b8015611f1d576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f7e9089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611fea91906128f0565b5f604051808303815f865af19150503d805f8114612023576040519150601f19603f3d011682016040523d82523d5f602084013e612028565b606091505b5091509150818015612052575080511580612052575080806020019051810190612052919061290b565b6120af5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107ce565b5050505050565b6003545f6120c582601461279d565b305f9081526007602052604090205411156120eb576003546120e890601461279d565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061211e5761211e612858565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061216657612166612858565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906121bd9086905f90869030904290600401612926565b5f604051808303815f87803b1580156121d4575f80fd5b505af11580156121e6573d5f803e3d5ffd5b50479250508115905061239f576006545f9060649061220f90600160b01b900460ff168461279d565b61221991906127b4565b6006549091505f9060649061223890600160c01b900460ff168561279d565b61224291906127b4565b90505f8161225084866128c5565b61225a91906128c5565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146122a5576040519150601f19603f3d011682016040523d82523d5f602084013e6122aa565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f81146122f7576040519150601f19603f3d011682016040523d82523d5f602084013e6122fc565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f8114612349576040519150601f19603f3d011682016040523d82523d5f602084013e61234e565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b80356001600160a01b03811681146123bb575f80fd5b919050565b5f602082840312156123d0575f80fd5b6123d9826123a5565b9392505050565b5f5b838110156123fa5781810151838201526020016123e2565b50505f910152565b602081525f82518060208401526124208160408501602087016123e0565b601f01601f19169190910160400192915050565b5f8060408385031215612445575f80fd5b61244e836123a5565b946020939093013593505050565b5f805f6060848603121561246e575f80fd5b612477846123a5565b9250612485602085016123a5565b9150604084013590509250925092565b5f602082840312156124a5575f80fd5b5035919050565b803560ff811681146123bb575f80fd5b5f805f606084860312156124ce575f80fd5b6124d7846124ac565b92506124e5602085016124ac565b91506124f3604085016124ac565b90509250925092565b5f806040838503121561250d575f80fd5b612516836124ac565b9150612524602084016124ac565b90509250929050565b801515811461253a575f80fd5b50565b5f806040838503121561254e575f80fd5b612557836123a5565b915060208301356125678161252d565b809150509250929050565b5f8060408385031215612583575f80fd5b61258c836123a5565b9150612524602084016123a5565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125d7576125d761259a565b604052919050565b5f67ffffffffffffffff8211156125f8576125f861259a565b5060051b60200190565b5f82601f830112612611575f80fd5b81356020612626612621836125df565b6125ae565b82815260059290921b84018101918181019086841115612644575f80fd5b8286015b8481101561265f5780358352918301918301612648565b509695505050505050565b5f806040838503121561267b575f80fd5b823567ffffffffffffffff80821115612692575f80fd5b818501915085601f8301126126a5575f80fd5b813560206126b5612621836125df565b82815260059290921b840181019181810190898411156126d3575f80fd5b948201945b838610156126f8576126e9866123a5565b825294820194908201906126d8565b9650508601359250508082111561270d575f80fd5b5061271a85828601612602565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761082f5761082f612789565b5f826127ce57634e487b7160e01b5f52601260045260245ffd5b500490565b60ff818116838216019081111561082f5761082f612789565b60208082526010908201526f105b1c9958591e481b185d5b98da195960821b604082015260600190565b5f805f60608486031215612828575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612851575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8082018082111561082f5761082f612789565b8181038181111561082f5761082f612789565b5f600182016128e9576128e9612789565b5060010190565b5f82516129018184602087016123e0565b9190910192915050565b5f6020828403121561291b575f80fd5b81516123d98161252d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156129745784516001600160a01b03168352938301939183019160010161294f565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220edec8fb048a7fed973dc06e5f23115ad2e0db85f0439e1d1154c6167f22e986b64736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x608060405260043610610236575f3560e01c8063751039fc11610129578063bc205ad3116100a8578063dd62ed3e1161006d578063dd62ed3e146106f5578063e2f4560514610739578063e71079471461074e578063f8b45b051461076d578063fb201b1d14610782575f80fd5b8063bc205ad314610662578063c8c8ebe414610681578063d201b01e14610696578063d7c94efd146106b5578063d85ba063146106d5575f80fd5b80639a7a23d6116100ee5780639a7a23d6146105dd578063a9059cbb146105fc578063aacebbe31461061b578063b1b4b1031461063a578063bb6271911461065a575f80fd5b8063751039fc1461052a5780637cb332bb1461053e57806385ecafd71461055d5780638da5cb5b1461059457806395d89b41146105b0575f80fd5b806349bd5a5e116101b557806366650dae1161017a57806366650dae146104845780636a486a8e146104a357806370a08231146104c3578063715018a6146104f757806374010ece1461050b575f80fd5b806349bd5a5e146103d45780634a62bb65146104075780634fcd244614610427578063590ffdce146104465780636402511e14610465575f80fd5b806323b872dd116101fb57806323b872dd1461033657806327a14fc214610355578063313ce5671461037457806336e4ec64146103955780633c090c46146103b5575f80fd5b8063052c8f7e1461024157806306fdde0314610262578063095ea7b3146102a15780631694505e146102d057806318160ddd1461030f575f80fd5b3661023d57005b5f80fd5b34801561024c575f80fd5b5061026061025b3660046123c0565b610796565b005b34801561026d575f80fd5b506040805180820190915260058152643d35a3aaa760d91b60208201525b6040516102989190612402565b60405180910390f35b3480156102ac575f80fd5b506102c06102bb366004612434565b61081f565b6040519015158152602001610298565b3480156102db575f80fd5b506102f7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610298565b34801561031a575f80fd5b506ac685fa11e01ec6f00000005b604051908152602001610298565b348015610341575f80fd5b506102c061035036600461245c565b610835565b348015610360575f80fd5b5061026061036f366004612495565b6108e4565b34801561037f575f80fd5b5060125b60405160ff9091168152602001610298565b3480156103a0575f80fd5b5060065461038390600160b01b900460ff1681565b3480156103c0575f80fd5b506102606103cf3660046124bc565b6109c7565b3480156103df575f80fd5b506102f77f000000000000000000000000728f38c066816efca6f4f7ff04af865b111af45681565b348015610412575f80fd5b506006546102c090600160d01b900460ff1681565b348015610432575f80fd5b506102606104413660046124fc565b610acf565b348015610451575f80fd5b5061026061046036600461253d565b610c08565b348015610470575f80fd5b5061026061047f366004612495565b610c6a565b34801561048f575f80fd5b5061026061049e36600461253d565b610dc7565b3480156104ae575f80fd5b5060065461038390600160a81b900460ff1681565b3480156104ce575f80fd5b506103286104dd3660046123c0565b6001600160a01b03165f9081526007602052604090205490565b348015610502575f80fd5b50610260610e29565b348015610516575f80fd5b50610260610525366004612495565b610e72565b348015610535575f80fd5b50610260610f5a565b348015610549575f80fd5b506102606105583660046123c0565b610fa1565b348015610568575f80fd5b506102c06105773660046123c0565b6001600160a01b03165f9081526009602052604090205460ff1690565b34801561059f575f80fd5b505f546001600160a01b03166102f7565b3480156105bb575f80fd5b506040805180820190915260058152642d25a3aaa760d91b602082015261028b565b3480156105e8575f80fd5b506102606105f736600461253d565b611021565b348015610607575f80fd5b506102c0610616366004612434565b611104565b348015610626575f80fd5b506102606106353660046123c0565b611110565b348015610645575f80fd5b5060065461038390600160b81b900460ff1681565b610260611190565b34801561066d575f80fd5b5061026061067c366004612572565b6112a3565b34801561068c575f80fd5b5061032860015481565b3480156106a1575f80fd5b506102606106b03660046123c0565b611350565b3480156106c0575f80fd5b5060065461038390600160c01b900460ff1681565b3480156106e0575f80fd5b5060065461038390600160a01b900460ff1681565b348015610700575f80fd5b5061032861070f366004612572565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610744575f80fd5b5061032860035481565b348015610759575f80fd5b5061026061076836600461266a565b611467565b348015610778575f80fd5b5061032860025481565b34801561078d575f80fd5b5061026061167e565b336107a85f546001600160a01b031690565b6001600160a01b0316146107d75760405162461bcd60e51b81526004016107ce90612724565b60405180910390fd5b6001600160a01b0381166107fd5760405162461bcd60e51b81526004016107ce90612759565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f61082b3384846116f5565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146108ce57828110156108c15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ce565b6108ce85338584036116f5565b6108d9858585611818565b506001949350505050565b336108f65f546001600160a01b031690565b6001600160a01b03161461091c5760405162461bcd60e51b81526004016107ce90612724565b670de0b6b3a76400006103e861093e6ac685fa11e01ec6f0000000600161279d565b61094891906127b4565b61095291906127b4565b8110156109af5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b60648201526084016107ce565b6109c181670de0b6b3a764000061279d565b60025550565b336109d95f546001600160a01b031690565b6001600160a01b0316146109ff5760405162461bcd60e51b81526004016107ce90612724565b6006805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b868516810291909117948590558404831693610a60939181048216929004166127d3565b610a6a91906127d3565b60ff16606414610aca5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107ce565b505050565b33610ae15f546001600160a01b031690565b6001600160a01b031614610b075760405162461bcd60e51b81526004016107ce90612724565b60058260ff161115610b6d5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20352560b81b60648201526084016107ce565b60058160ff161115610bd45760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20352560b01b60648201526084016107ce565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610c1a5f546001600160a01b031690565b6001600160a01b031614610c405760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610c7c5f546001600160a01b031690565b6001600160a01b031614610ca25760405162461bcd60e51b81526004016107ce90612724565b620186a0610cbc6ac685fa11e01ec6f0000000600161279d565b610cc691906127b4565b811015610d335760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107ce565b6103e8610d4c6ac685fa11e01ec6f0000000600561279d565b610d5691906127b4565b811115610dc25760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107ce565b600355565b33610dd95f546001600160a01b031690565b6001600160a01b031614610dff5760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610e3b5f546001600160a01b031690565b6001600160a01b031614610e615760405162461bcd60e51b81526004016107ce90612724565b5f80546001600160a01b0319169055565b33610e845f546001600160a01b031690565b6001600160a01b031614610eaa5760405162461bcd60e51b81526004016107ce90612724565b670de0b6b3a76400006103e8610ecc6ac685fa11e01ec6f0000000600161279d565b610ed691906127b4565b610ee091906127b4565b811015610f425760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107ce565b610f5481670de0b6b3a764000061279d565b60015550565b33610f6c5f546001600160a01b031690565b6001600160a01b031614610f925760405162461bcd60e51b81526004016107ce90612724565b6006805460ff60d01b19169055565b33610fb35f546001600160a01b031690565b6001600160a01b031614610fd95760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b038116610fff5760405162461bcd60e51b81526004016107ce90612759565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336110335f546001600160a01b031690565b6001600160a01b0316146110595760405162461bcd60e51b81526004016107ce90612724565b7f000000000000000000000000728f38c066816efca6f4f7ff04af865b111af4566001600160a01b0316826001600160a01b0316036110da5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107ce565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f61082b338484611818565b336111225f546001600160a01b031690565b6001600160a01b0316146111485760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b03811661116e5760405162461bcd60e51b81526004016107ce90612759565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336111a25f546001600160a01b031690565b6001600160a01b0316146111c85760405162461bcd60e51b81526004016107ce90612724565b600654600160d81b900460ff16156111f25760405162461bcd60e51b81526004016107ce906127ec565b305f8181526007602052604080822054600654915163f305d71960e01b8152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561127e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610aca9190612816565b336112b55f546001600160a01b031690565b6001600160a01b0316146112db5760405162461bcd60e51b81526004016107ce90612724565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561131f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113439190612841565b9050610aca838383611f8f565b336113625f546001600160a01b031690565b6001600160a01b0316146113885760405162461bcd60e51b81526004016107ce90612724565b6001600160a01b0381166113d05760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107ce565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611419576040519150601f19603f3d011682016040523d82523d5f602084013e61141e565b606091505b50509050806114635760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107ce565b5050565b336114795f546001600160a01b031690565b6001600160a01b03161461149f5760405162461bcd60e51b81526004016107ce90612724565b600654600160d81b900460ff16156114c95760405162461bcd60e51b81526004016107ce906127ec565b5f5b8251811015610aca578181815181106114e6576114e6612858565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205410156115305760405162461bcd60e51b81526004016107ce9061286c565b81818151811061154257611542612858565b602002602001015160075f85848151811061155f5761155f612858565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f82825461159491906128b2565b925050819055508181815181106115ad576115ad612858565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e691906128c5565b925050819055508281815181106115ff576115ff612858565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84848151811061164d5761164d612858565b602002602001015160405161166491815260200190565b60405180910390a380611676816128d8565b9150506114cb565b336116905f546001600160a01b031690565b6001600160a01b0316146116b65760405162461bcd60e51b81526004016107ce90612724565b600654600160d81b900460ff16156116e05760405162461bcd60e51b81526004016107ce906127ec565b6006805460ff60d81b1916600160d81b179055565b6001600160a01b0383166117575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ce565b6001600160a01b0382166117b85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ce565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661187c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ce565b6001600160a01b0382166118de5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ce565b5f811161193f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ce565b600654600160d81b900460ff1615801561199357505f546001600160a01b0384811691161480159061197a57506001600160a01b0383163014155b801561199357505f546001600160a01b03838116911614155b156119d65760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107ce565b600654600160d01b900460ff1615611c97575f546001600160a01b03848116911614801590611a1257505f546001600160a01b03838116911614155b8015611a2657506001600160a01b03821615155b8015611a3d57506001600160a01b03821661dead14155b8015611a535750600654600160c81b900460ff16155b15611c97576001600160a01b0383165f908152600b602052604090205460ff168015611a9757506001600160a01b0382165f908152600a602052604090205460ff16155b15611b6a57600154811115611afc5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107ce565b6002546001600160a01b0383165f90815260076020526040902054611b2190836128b2565b1115611b655760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ce565b611c97565b6001600160a01b0382165f908152600b602052604090205460ff168015611ba957506001600160a01b0383165f908152600a602052604090205460ff16155b15611c0f57600154811115611b655760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107ce565b6001600160a01b0382165f908152600a602052604090205460ff16611c97576002546001600160a01b0383165f90815260076020526040902054611c5390836128b2565b1115611c975760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ce565b600354305f90815260076020526040902054108015908190611cc35750600654600160c81b900460ff16155b8015611ce757506001600160a01b0384165f908152600b602052604090205460ff16155b8015611d0b57506001600160a01b0384165f9081526009602052604090205460ff16155b8015611d2f57506001600160a01b0383165f9081526009602052604090205460ff16155b15611d5d576006805460ff60c81b1916600160c81b179055611d4f6120b6565b6006805460ff60c81b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c81b909204821615911680611da957506001600160a01b0384165f9081526009602052604090205460ff165b15611db157505f5b6001600160a01b0385165f9081526007602052604090205483811015611de95760405162461bcd60e51b81526004016107ce9061286c565b5f8215611f1d576001600160a01b0386165f908152600b602052604090205460ff168015611e225750600654600160a81b900460ff1615155b15611e5257600654606490611e4190600160a81b900460ff168761279d565b611e4b91906127b4565b9050611eb0565b6001600160a01b0387165f908152600b602052604090205460ff168015611e845750600654600160a01b900460ff1615155b15611eb057600654606490611ea390600160a01b900460ff168761279d565b611ead91906127b4565b90505b8015611f1d576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f7e9089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611fea91906128f0565b5f604051808303815f865af19150503d805f8114612023576040519150601f19603f3d011682016040523d82523d5f602084013e612028565b606091505b5091509150818015612052575080511580612052575080806020019051810190612052919061290b565b6120af5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107ce565b5050505050565b6003545f6120c582601461279d565b305f9081526007602052604090205411156120eb576003546120e890601461279d565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061211e5761211e612858565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061216657612166612858565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906121bd9086905f90869030904290600401612926565b5f604051808303815f87803b1580156121d4575f80fd5b505af11580156121e6573d5f803e3d5ffd5b50479250508115905061239f576006545f9060649061220f90600160b01b900460ff168461279d565b61221991906127b4565b6006549091505f9060649061223890600160c01b900460ff168561279d565b61224291906127b4565b90505f8161225084866128c5565b61225a91906128c5565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146122a5576040519150601f19603f3d011682016040523d82523d5f602084013e6122aa565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f81146122f7576040519150601f19603f3d011682016040523d82523d5f602084013e6122fc565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f8114612349576040519150601f19603f3d011682016040523d82523d5f602084013e61234e565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b80356001600160a01b03811681146123bb575f80fd5b919050565b5f602082840312156123d0575f80fd5b6123d9826123a5565b9392505050565b5f5b838110156123fa5781810151838201526020016123e2565b50505f910152565b602081525f82518060208401526124208160408501602087016123e0565b601f01601f19169190910160400192915050565b5f8060408385031215612445575f80fd5b61244e836123a5565b946020939093013593505050565b5f805f6060848603121561246e575f80fd5b612477846123a5565b9250612485602085016123a5565b9150604084013590509250925092565b5f602082840312156124a5575f80fd5b5035919050565b803560ff811681146123bb575f80fd5b5f805f606084860312156124ce575f80fd5b6124d7846124ac565b92506124e5602085016124ac565b91506124f3604085016124ac565b90509250925092565b5f806040838503121561250d575f80fd5b612516836124ac565b9150612524602084016124ac565b90509250929050565b801515811461253a575f80fd5b50565b5f806040838503121561254e575f80fd5b612557836123a5565b915060208301356125678161252d565b809150509250929050565b5f8060408385031215612583575f80fd5b61258c836123a5565b9150612524602084016123a5565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125d7576125d761259a565b604052919050565b5f67ffffffffffffffff8211156125f8576125f861259a565b5060051b60200190565b5f82601f830112612611575f80fd5b81356020612626612621836125df565b6125ae565b82815260059290921b84018101918181019086841115612644575f80fd5b8286015b8481101561265f5780358352918301918301612648565b509695505050505050565b5f806040838503121561267b575f80fd5b823567ffffffffffffffff80821115612692575f80fd5b818501915085601f8301126126a5575f80fd5b813560206126b5612621836125df565b82815260059290921b840181019181810190898411156126d3575f80fd5b948201945b838610156126f8576126e9866123a5565b825294820194908201906126d8565b9650508601359250508082111561270d575f80fd5b5061271a85828601612602565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761082f5761082f612789565b5f826127ce57634e487b7160e01b5f52601260045260245ffd5b500490565b60ff818116838216019081111561082f5761082f612789565b60208082526010908201526f105b1c9958591e481b185d5b98da195960821b604082015260600190565b5f805f60608486031215612828575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612851575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8082018082111561082f5761082f612789565b8181038181111561082f5761082f612789565b5f600182016128e9576128e9612789565b5060010190565b5f82516129018184602087016123e0565b9190910192915050565b5f6020828403121561291b575f80fd5b81516123d98161252d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156129745784516001600160a01b03168352938301939183019160010161294f565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220edec8fb048a7fed973dc06e5f23115ad2e0db85f0439e1d1154c6167f22e986b64736f6c63430008150033
Deployed Bytecode Sourcemap
1922:13622:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13185:183;;;;;;;;;;-1:-1:-1;13185:183:0;;;;;:::i;:::-;;:::i;:::-;;5540:83;;;;;;;;;;-1:-1:-1;5610:5:0;;;;;;;;;;;;-1:-1:-1;;;5610:5:0;;;;5540:83;;;;;;;:::i;:::-;;;;;;;;6169:152;;;;;;;;;;-1:-1:-1;6169:152:0;;;;;:::i;:::-;;:::i;:::-;;;1463:14:1;;1456:22;1438:41;;1426:2;1411:18;6169:152:0;1298:187:1;3516:115:0;;;;;;;;;;;;3588:42;3516:115;;;;;-1:-1:-1;;;;;1680:32:1;;;1662:51;;1650:2;1635:18;3516:115:0;1490:229:1;5810:91:0;;;;;;;;;;-1:-1:-1;2103:18:0;5810:91;;;1870:25:1;;;1858:2;1843:18;5810:91:0;1724:177:1;6840:520:0;;;;;;;;;;-1:-1:-1;6840:520:0;;;;;:::i;:::-;;:::i;12942:235::-;;;;;;;;;;-1:-1:-1;12942:235:0;;;;;:::i;:::-;;:::i;5726:76::-;;;;;;;;;;-1:-1:-1;5792:2:0;5726:76;;;2596:4:1;2584:17;;;2566:36;;2554:2;2539:18;5726:76:0;2424:184:1;2713:28:0;;;;;;;;;;-1:-1:-1;2713:28:0;;;;-1:-1:-1;;;2713:28:0;;;;;;10143:328;;;;;;;;;;-1:-1:-1;10143:328:0;;;;;:::i;:::-;;:::i;3638:38::-;;;;;;;;;;;;;;;2848:33;;;;;;;;;;-1:-1:-1;2848:33:0;;;;-1:-1:-1;;;2848:33:0;;;;;;10479:335;;;;;;;;;;-1:-1:-1;10479:335:0;;;;;:::i;:::-;;:::i;10822:136::-;;;;;;;;;;-1:-1:-1;10822:136:0;;;;;:::i;:::-;;:::i;12329:361::-;;;;;;;;;;-1:-1:-1;12329:361:0;;;;;:::i;:::-;;:::i;10966:158::-;;;;;;;;;;-1:-1:-1;10966:158:0;;;;;:::i;:::-;;:::i;2674:30::-;;;;;;;;;;-1:-1:-1;2674:30:0;;;;-1:-1:-1;;;2674:30:0;;;;;;5909:110;;;;;;;;;;-1:-1:-1;5909:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5993:18:0;5966:7;5993:18;;;:9;:18;;;;;;;5909:110;619:92;;;;;;;;;;;;;:::i;12698:236::-;;;;;;;;;;-1:-1:-1;12698:236:0;;;;;:::i;:::-;;:::i;10051:84::-;;;;;;;;;;;;;:::i;13571:177::-;;;;;;;;;;-1:-1:-1;13571:177:0;;;;;:::i;:::-;;:::i;13756:123::-;;;;;;;;;;-1:-1:-1;13756:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;13843:28:0;13819:4;13843:28;;;:19;:28;;;;;;;;;13756:123;398:87;;;;;;;;;;-1:-1:-1;444:7:0;471:6;-1:-1:-1;;;;;471:6:0;398:87;;5631;;;;;;;;;;-1:-1:-1;5703:7:0;;;;;;;;;;;;-1:-1:-1;;;5703:7:0;;;;5631:87;;12110:211;;;;;;;;;;-1:-1:-1;12110:211:0;;;;;:::i;:::-;;:::i;6674:158::-;;;;;;;;;;-1:-1:-1;6674:158:0;;;;;:::i;:::-;;:::i;13376:187::-;;;;;;;;;;-1:-1:-1;13376:187:0;;;;;:::i;:::-;;:::i;2748:32::-;;;;;;;;;;-1:-1:-1;2748:32:0;;;;-1:-1:-1;;;2748:32:0;;;;;;11763:339;;;:::i;13887:240::-;;;;;;;;;;-1:-1:-1;13887:240:0;;;;;:::i;:::-;;:::i;2130:54::-;;;;;;;;;;;;;;;;14135:247;;;;;;;;;;-1:-1:-1;14135:247:0;;;;;:::i;:::-;;:::i;2787:24::-;;;;;;;;;;-1:-1:-1;2787:24:0;;;;-1:-1:-1;;;2787:24:0;;;;;;2638:29;;;;;;;;;;-1:-1:-1;2638:29:0;;;;-1:-1:-1;;;2638:29:0;;;;;;6027:134;;;;;;;;;;-1:-1:-1;6027:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;6126:18:0;;;6099:7;6126:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6027:134;2242:62;;;;;;;;;;;;;;;;11132:492;;;;;;;;;;-1:-1:-1;11132:492:0;;;;;:::i;:::-;;:::i;2192:43::-;;;;;;;;;;;;;;;;11632:123;;;;;;;;;;;;;:::i;13185:183::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;13272:24:0;::::1;13264:59;;;;-1:-1:-1::0;;;13264:59:0::1;;;;;;;:::i;:::-;13334:13;:26:::0;;-1:-1:-1;;;;;;13334:26:0::1;-1:-1:-1::0;;;;;13334:26:0;;;::::1;::::0;;;::::1;::::0;;13185:183::o;6169:152::-;6237:4;6254:37;6263:10;6275:7;6284:6;6254:8;:37::i;:::-;-1:-1:-1;6309:4:0;6169:152;;;;;:::o;6840:520::-;-1:-1:-1;;;;;6975:19:0;;6931:4;6975:19;;;:11;:19;;;;;;;;6995:10;6975:31;;;;;;;;-1:-1:-1;;7021:37:0;;7017:263;;7103:6;7083:16;:26;;7075:79;;;;-1:-1:-1;;;7075:79:0;;7606:2:1;7075:79:0;;;7588:21:1;7645:2;7625:18;;;7618:30;7684:34;7664:18;;;7657:62;-1:-1:-1;;;7735:18:1;;;7728:38;7783:19;;7075:79:0;7404:404:1;7075:79:0;7198:55;7207:6;7215:10;7246:6;7227:16;:25;7198:8;:55::i;:::-;7292:36;7302:6;7310:9;7321:6;7292:9;:36::i;:::-;-1:-1:-1;7348:4:0;;6840:520;-1:-1:-1;;;;6840:520:0:o;12942:235::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;13077:4:::1;13069;13048:17;2103:18:::0;13064:1:::1;13048:17;:::i;:::-;13047:26;;;;:::i;:::-;13046:35;;;;:::i;:::-;13030:12;:51;;13022:101;;;::::0;-1:-1:-1;;;13022:101:0;;8542:2:1;13022:101:0::1;::::0;::::1;8524:21:1::0;8581:2;8561:18;;;8554:30;8620:34;8600:18;;;8593:62;-1:-1:-1;;;8671:18:1;;;8664:35;8716:19;;13022:101:0::1;8340:401:1::0;13022:101:0::1;13146:23;:12:::0;13162:6:::1;13146:23;:::i;:::-;13134:9;:35:::0;-1:-1:-1;12942:235:0:o;10143:328::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;10260:10:::1;:24:::0;;-1:-1:-1;;;;10295:32:0;-1:-1:-1;;;10260:24:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;10295:32:0;;;;;-1:-1:-1;;;10295:32:0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;;10338:18:0::1;-1:-1:-1::0;;;10338:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10406:7;::::1;::::0;::::1;::::0;10376:27:::1;::::0;10389:14;;::::1;::::0;::::1;::::0;10376:10;::::1;;:27;:::i;:::-;:37;;;;:::i;:::-;10375:46;;10418:3;10375:46;10367:96;;;::::0;-1:-1:-1;;;10367:96:0;;9101:2:1;10367:96:0::1;::::0;::::1;9083:21:1::0;9140:2;9120:18;;;9113:30;9179:34;9159:18;;;9152:62;-1:-1:-1;;;9230:18:1;;;9223:35;9275:19;;10367:96:0::1;8899:401:1::0;10367:96:0::1;10143:328:::0;;;:::o;10479:335::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;10594:1:::1;10577:13;:18;;;;10569:72;;;::::0;-1:-1:-1;;;10569:72:0;;9507:2:1;10569:72:0::1;::::0;::::1;9489:21:1::0;9546:2;9526:18;;;9519:30;9585:34;9565:18;;;9558:62;-1:-1:-1;;;9636:18:1;;;9629:39;9685:19;;10569:72:0::1;9305:405:1::0;10569:72:0::1;10678:1;10660:14;:19;;;;10652:74;;;::::0;-1:-1:-1;;;10652:74:0;;9917:2:1;10652:74:0::1;::::0;::::1;9899:21:1::0;9956:2;9936:18;;;9929:30;9995:34;9975:18;;;9968:62;-1:-1:-1;;;10046:18:1;;;10039:40;10096:19;;10652:74:0::1;9715:406:1::0;10652:74:0::1;10737:12;:28:::0;;-1:-1:-1;;;;10776:30:0;-1:-1:-1;;;10737:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;10776:30:0;;-1:-1:-1;;;10776:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10479:335::o;10822:136::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10911:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;10911:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10822:136::o;12329:361::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;12454:6:::1;12433:17;2103:18:::0;12449:1:::1;12433:17;:::i;:::-;12432:28;;;;:::i;:::-;12415:13;:45;;12407:111;;;::::0;-1:-1:-1;;;12407:111:0;;10328:2:1;12407:111:0::1;::::0;::::1;10310:21:1::0;10367:2;10347:18;;;10340:30;10406:34;10386:18;;;10379:62;-1:-1:-1;;;10457:18:1;;;10450:51;10518:19;;12407:111:0::1;10126:417:1::0;12407:111:0::1;12576:4;12555:17;2103:18:::0;12571:1:::1;12555:17;:::i;:::-;12554:26;;;;:::i;:::-;12537:13;:43;;12529:108;;;::::0;-1:-1:-1;;;12529:108:0;;10750:2:1;12529:108:0::1;::::0;::::1;10732:21:1::0;10789:2;10769:18;;;10762:30;10828:34;10808:18;;;10801:62;-1:-1:-1;;;10879:18:1;;;10872:50;10939:19;;12529:108:0::1;10548:416:1::0;12529:108:0::1;12648:18;:34:::0;12329:361::o;10966:158::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11065:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;11065:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10966:158::o;619:92::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;701:1:::1;684:19:::0;;-1:-1:-1;;;;;;684:19:0::1;::::0;;619:92::o;12698:236::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;12822:4:::1;12814;12793:17;2103:18:::0;12809:1:::1;12793:17;:::i;:::-;12792:26;;;;:::i;:::-;12791:35;;;;:::i;:::-;12779:8;:47;;12771:102;;;::::0;-1:-1:-1;;;12771:102:0;;11171:2:1;12771:102:0::1;::::0;::::1;11153:21:1::0;11210:2;11190:18;;;11183:30;11249:34;11229:18;;;11222:62;-1:-1:-1;;;11300:18:1;;;11293:40;11350:19;;12771:102:0::1;10969:406:1::0;12771:102:0::1;12907:19;:8:::0;12919:6:::1;12907:19;:::i;:::-;12884:20;:42:::0;-1:-1:-1;12698:236:0:o;10051:84::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;10105:14:::1;:22:::0;;-1:-1:-1;;;;10105:22:0::1;::::0;;10051:84::o;13571:177::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13655:24:0;::::1;13647:59;;;;-1:-1:-1::0;;;13647:59:0::1;;;;;;;:::i;:::-;13717:10;:23:::0;;-1:-1:-1;;;;;;13717:23:0::1;-1:-1:-1::0;;;;;13717:23:0;;;::::1;::::0;;;::::1;::::0;;13571:177::o;12110:211::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;12219:13:::1;-1:-1:-1::0;;;;;12211:21:0::1;:4;-1:-1:-1::0;;;;;12211:21:0::1;::::0;12203:60:::1;;;::::0;-1:-1:-1;;;12203:60:0;;11582:2:1;12203:60:0::1;::::0;::::1;11564:21:1::0;11621:2;11601:18;;;11594:30;11660:28;11640:18;;;11633:56;11706:18;;12203:60:0::1;11380:350:1::0;12203:60:0::1;-1:-1:-1::0;;;;;12274:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;12274:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12110:211::o;6674:158::-;6745:4;6762:40;6772:10;6784:9;6795:6;6762:9;:40::i;13376:187::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13465:24:0;::::1;13457:59;;;;-1:-1:-1::0;;;13457:59:0::1;;;;;;;:::i;:::-;13527:15;:28:::0;;-1:-1:-1;;;;;;13527:28:0::1;-1:-1:-1::0;;;;;13527:28:0;;;::::1;::::0;;;::::1;::::0;;13376:187::o;11763:339::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;11840:8:::1;::::0;-1:-1:-1;;;11840:8:0;::::1;;;11839:9;11831:38;;;;-1:-1:-1::0;;;11831:38:0::1;;;;;;;:::i;:::-;11952:4;11972:24;::::0;;;:9:::1;:24;::::0;;;;;;12043:10:::1;::::0;11880:214;;-1:-1:-1;;;11880:214:0;;::::1;::::0;::::1;12421:34:1::0;;;;12471:18;;;12464:34;12514:18;;;12507:34;;;12557:18;;;12550:34;;;;-1:-1:-1;;;;;12043:10:0::1;12600:19:1::0;;;12593:44;12068:15:0::1;12653:19:1::0;;;12646:35;3588:42:0::1;::::0;11880:31:::1;::::0;11919:9:::1;::::0;12355:19:1;;11880:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13887:240::-:0;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;13999:38:::1;::::0;-1:-1:-1;;;13999:38:0;;14031:4:::1;13999:38;::::0;::::1;1662:51:1::0;13972:24:0::1;::::0;-1:-1:-1;;;;;13999:23:0;::::1;::::0;::::1;::::0;1635:18:1;;13999:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13972:65;;14048:51;14071:5;14078:2;14082:16;14048:22;:51::i;14135:247::-:0;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14213:18:0;::::1;14205:46;;;::::0;-1:-1:-1;;;14205:46:0;;13394:2:1;14205:46:0::1;::::0;::::1;13376:21:1::0;13433:2;13413:18;;;13406:30;-1:-1:-1;;;13452:18:1;;;13445:45;13507:18;;14205:46:0::1;13192:339:1::0;14205:46:0::1;14265:12;14283:4;-1:-1:-1::0;;;;;14283:9:0::1;14300:21;14283:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14264:62;;;14345:7;14337:37;;;::::0;-1:-1:-1;;;14337:37:0;;13948:2:1;14337:37:0::1;::::0;::::1;13930:21:1::0;13987:2;13967:18;;;13960:30;-1:-1:-1;;;14006:18:1;;;13999:47;14063:18;;14337:37:0::1;13746:341:1::0;14337:37:0::1;14194:188;14135:247:::0;:::o;11132:492::-;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;11249:8:::1;::::0;-1:-1:-1;;;11249:8:0;::::1;;;11248:9;11240:38;;;;-1:-1:-1::0;;;11240:38:0::1;;;;;;;:::i;:::-;11294:9;11289:328;11313:9;:16;11309:1;:20;11289:328;;;11384:7;11392:1;11384:10;;;;;;;;:::i;:::-;;;;;;;11359:9;:21;11369:10;-1:-1:-1::0;;;;;11359:21:0::1;-1:-1:-1::0;;;;;11359:21:0::1;;;;;;;;;;;;;:35;;11351:86;;;;-1:-1:-1::0;;;11351:86:0::1;;;;;;;:::i;:::-;11479:7;11487:1;11479:10;;;;;;;;:::i;:::-;;;;;;;11452:9;:23;11462:9;11472:1;11462:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11452:23:0::1;-1:-1:-1::0;;;;;11452:23:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11529:7;11537:1;11529:10;;;;;;;;:::i;:::-;;;;;;;11504:9;:21;11514:10;-1:-1:-1::0;;;;;11504:21:0::1;-1:-1:-1::0;;;;;11504:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11580:9;11590:1;11580:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11559:46:0::1;11568:10;-1:-1:-1::0;;;;;11559:46:0::1;;11594:7;11602:1;11594:10;;;;;;;;:::i;:::-;;;;;;;11559:46;;;;1870:25:1::0;;1858:2;1843:18;;1724:177;11559:46:0::1;;;;;;;;11331:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11289:328;;11632:123:::0;544:10;533:7;444;471:6;-1:-1:-1;;;;;471:6:0;;398:87;533:7;-1:-1:-1;;;;;533:21:0;;525:66;;;;-1:-1:-1;;;525:66:0;;;;;;;:::i;:::-;11692:8:::1;::::0;-1:-1:-1;;;11692:8:0;::::1;;;11691:9;11683:38;;;;-1:-1:-1::0;;;11683:38:0::1;;;;;;;:::i;:::-;11732:8;:15:::0;;-1:-1:-1;;;;11732:15:0::1;-1:-1:-1::0;;;11732:15:0::1;::::0;;11632:123::o;6329:337::-;-1:-1:-1;;;;;6422:19:0;;6414:68;;;;-1:-1:-1;;;6414:68:0;;15236:2:1;6414:68:0;;;15218:21:1;15275:2;15255:18;;;15248:30;15314:34;15294:18;;;15287:62;-1:-1:-1;;;15365:18:1;;;15358:34;15409:19;;6414:68:0;15034:400:1;6414:68:0;-1:-1:-1;;;;;6501:21:0;;6493:68;;;;-1:-1:-1;;;6493:68:0;;15641:2:1;6493:68:0;;;15623:21:1;15680:2;15660:18;;;15653:30;15719:34;15699:18;;;15692:62;-1:-1:-1;;;15770:18:1;;;15763:32;15812:19;;6493:68:0;15439:398:1;6493:68:0;-1:-1:-1;;;;;6574:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6626:32;;1870:25:1;;;6626:32:0;;1843:18:1;6626:32:0;;;;;;;6329:337;;;:::o;7368:2675::-;-1:-1:-1;;;;;7456:18:0;;7448:68;;;;-1:-1:-1;;;7448:68:0;;16044:2:1;7448:68:0;;;16026:21:1;16083:2;16063:18;;;16056:30;16122:34;16102:18;;;16095:62;-1:-1:-1;;;16173:18:1;;;16166:35;16218:19;;7448:68:0;15842:401:1;7448:68:0;-1:-1:-1;;;;;7535:16:0;;7527:64;;;;-1:-1:-1;;;7527:64:0;;16450:2:1;7527:64:0;;;16432:21:1;16489:2;16469:18;;;16462:30;16528:34;16508:18;;;16501:62;-1:-1:-1;;;16579:18:1;;;16572:33;16622:19;;7527:64:0;16248:399:1;7527:64:0;7619:1;7610:6;:10;7602:64;;;;-1:-1:-1;;;7602:64:0;;16854:2:1;7602:64:0;;;16836:21:1;16893:2;16873:18;;;16866:30;16932:34;16912:18;;;16905:62;-1:-1:-1;;;16983:18:1;;;16976:39;17032:19;;7602:64:0;16652:405:1;7602:64:0;7684:8;;-1:-1:-1;;;7684:8:0;;;;7683:9;:72;;;;-1:-1:-1;444:7:0;471:6;-1:-1:-1;;;;;7697:15:0;;;471:6;;7697:15;;;;:40;;-1:-1:-1;;;;;;7716:21:0;;7732:4;7716:21;;7697:40;:57;;;;-1:-1:-1;444:7:0;471:6;-1:-1:-1;;;;;7741:13:0;;;471:6;;7741:13;;7697:57;7679:134;;;7772:29;;-1:-1:-1;;;7772:29:0;;17264:2:1;7772:29:0;;;17246:21:1;17303:2;17283:18;;;17276:30;-1:-1:-1;;;17322:18:1;;;17315:49;17381:18;;7772:29:0;17062:343:1;7679:134:0;7829:14;;-1:-1:-1;;;7829:14:0;;;;7825:830;;;444:7;471:6;-1:-1:-1;;;;;7864:15:0;;;471:6;;7864:15;;;;:32;;-1:-1:-1;444:7:0;471:6;-1:-1:-1;;;;;7883:13:0;;;471:6;;7883:13;;7864:32;:52;;;;-1:-1:-1;;;;;;7900:16:0;;;;7864:52;:77;;;;-1:-1:-1;;;;;;7920:21:0;;7934:6;7920:21;;7864:77;:90;;;;-1:-1:-1;7946:8:0;;-1:-1:-1;;;7946:8:0;;;;7945:9;7864:90;7860:784;;;-1:-1:-1;;;;;7979:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;8015:35:0;;;;;;:31;:35;;;;;;;;8014:36;7979:71;7975:654;;;8093:20;;8083:6;:30;;8075:80;;;;-1:-1:-1;;;8075:80:0;;17612:2:1;8075:80:0;;;17594:21:1;17651:2;17631:18;;;17624:30;17690:34;17670:18;;;17663:62;-1:-1:-1;;;17741:18:1;;;17734:35;17786:19;;8075:80:0;17410:401:1;8075:80:0;8212:9;;-1:-1:-1;;;;;5993:18:0;;5966:7;5993:18;;;:9;:18;;;;;;8186:22;;:6;:22;:::i;:::-;:35;;8178:67;;;;-1:-1:-1;;;8178:67:0;;18018:2:1;8178:67:0;;;18000:21:1;18057:2;18037:18;;;18030:30;-1:-1:-1;;;18076:18:1;;;18069:49;18135:18;;8178:67:0;17816:343:1;8178:67:0;7975:654;;;-1:-1:-1;;;;;8275:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;8309:37:0;;;;;;:31;:37;;;;;;;;8308:38;8275:71;8271:358;;;8389:20;;8379:6;:30;;8371:80;;;;-1:-1:-1;;;8371:80:0;;18366:2:1;8371:80:0;;;18348:21:1;18405:2;18385:18;;;18378:30;18444:34;18424:18;;;18417:62;-1:-1:-1;;;18495:18:1;;;18488:36;18541:19;;8371:80:0;18164:402:1;8271:358:0;-1:-1:-1;;;;;8482:35:0;;;;;;:31;:35;;;;;;;;8477:152;;8576:9;;-1:-1:-1;;;;;5993:18:0;;5966:7;5993:18;;;:9;:18;;;;;;8550:22;;:6;:22;:::i;:::-;:35;;8542:67;;;;-1:-1:-1;;;8542:67:0;;18018:2:1;8542:67:0;;;18000:21:1;18057:2;18037:18;;;18030:30;-1:-1:-1;;;18076:18:1;;;18069:49;18135:18;;8542:67:0;17816:343:1;8542:67:0;8710:18;;8700:4;8667:12;5993:18;;;:9;:18;;;;;;-1:-1:-1;8682:46:0;;;;;8745:20;;-1:-1:-1;8757:8:0;;-1:-1:-1;;;8757:8:0;;;;8756:9;8745:20;:56;;;;-1:-1:-1;;;;;;8770:31:0;;;;;;:25;:31;;;;;;;;8769:32;8745:56;:86;;;;-1:-1:-1;;;;;;8806:25:0;;;;;;:19;:25;;;;;;;;8805:26;8745:86;:114;;;;-1:-1:-1;;;;;;8836:23:0;;;;;;:19;:23;;;;;;;;8835:24;8745:114;8741:218;;;8876:8;:15;;-1:-1:-1;;;;8876:15:0;-1:-1:-1;;;8876:15:0;;;8906:10;:8;:10::i;:::-;8931:8;:16;;-1:-1:-1;;;;8931:16:0;;;8741:218;8987:8;;-1:-1:-1;;;;;9012:25:0;;8971:12;9012:25;;;:19;:25;;;;;;8987:8;-1:-1:-1;;;8987:8:0;;;;;8986:9;;9012:25;;:52;;-1:-1:-1;;;;;;9041:23:0;;;;;;:19;:23;;;;;;;;9012:52;9008:100;;;-1:-1:-1;9091:5:0;9008:100;-1:-1:-1;;;;;9144:15:0;;9120:21;9144:15;;;:9;:15;;;;;;9178:23;;;;9170:74;;;;-1:-1:-1;;;9170:74:0;;;;;;;:::i;:::-;9257:12;9288:7;9284:600;;;-1:-1:-1;;;;;9316:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;9349:13:0;;-1:-1:-1;;;9349:13:0;;;;:17;;9316:50;9312:262;;;9404:13;;9421:3;;9395:22;;-1:-1:-1;;;9404:13:0;;;;9395:6;:22;:::i;:::-;9394:30;;;;:::i;:::-;9387:37;;9312:262;;;-1:-1:-1;;;;;9450:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;9485:12:0;;-1:-1:-1;;;9485:12:0;;;;:16;;9450:51;9446:128;;;9539:12;;9555:3;;9530:21;;-1:-1:-1;;;9539:12:0;;;;9530:6;:21;:::i;:::-;9529:29;;;;:::i;:::-;9522:36;;9446:128;9594:8;;9590:283;;-1:-1:-1;;;;;9701:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;9765:4;9747:24;;;;;;;:32;;;;;;9822:35;1870:25:1;;;9665:13:0;;;;;9765:4;;9701:15;9822:35;;1843:18:1;9822:35:0;;;;;;;9590:283;-1:-1:-1;;;;;9919:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;9959:13;;;;;;;;;;:23;;;;;;10009:26;;;;;;9938:6;1870:25:1;;1858:2;1843:18;;1724:177;10009:26:0;;;;;;;;7437:2606;;;;7368:2675;;;:::o;743:320::-;874:59;;;-1:-1:-1;;;;;18763:32:1;;;874:59:0;;;18745:51:1;18812:18;;;;18805:34;;;874:59:0;;;;;;;;;;18718:18:1;;;;874:59:0;;;;;;;-1:-1:-1;;;;;874:59:0;-1:-1:-1;;;874:59:0;;;863:71;;-1:-1:-1;;;;863:10:0;;;;:71;;874:59;863:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:107;;;;953:7;:57;;;;-1:-1:-1;965:11:0;;:16;;:44;;;996:4;985:24;;;;;;;;;;;;:::i;:::-;945:110;;;;-1:-1:-1;;;945:110:0;;19594:2:1;945:110:0;;;19576:21:1;19633:2;19613:18;;;19606:30;19672:34;19652:18;;;19645:62;-1:-1:-1;;;19723:18:1;;;19716:38;19771:19;;945:110:0;19392:404:1;945:110:0;816:247;;743:320;;;:::o;14390:1151::-;14453:18;;14429:21;14538:23;14453:18;14559:2;14538:23;:::i;:::-;14529:4;5966:7;5993:18;;;:9;:18;;;;;;14511:50;14507:122;;;14594:18;;:23;;14615:2;14594:23;:::i;:::-;14578:39;;14507:122;14665:16;;;14679:1;14665:16;;;;;;;;14641:21;;14665:16;;;;;;;;;;-1:-1:-1;14665:16:0;14641:40;;14710:4;14692;14697:1;14692:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14692:23:0;;;-1:-1:-1;;;;;14692:23:0;;;;;2587:42;14726:4;14731:1;14726:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14726:14:0;;;:7;;;;;;;;;;;:14;14753:122;;-1:-1:-1;;;14753:122:0;;3588:42;;14753:66;;:122;;14820:13;;14835:1;;14838:4;;14852;;14859:15;;14753:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14909:21:0;;-1:-1:-1;;14945:14:0;;;-1:-1:-1;14941:593:0;;15014:10;;14976:21;;15028:3;;15001:23;;-1:-1:-1;;;15014:10:0;;;;15001;:23;:::i;:::-;15000:31;;;;:::i;:::-;15081:7;;14976:55;;-1:-1:-1;15046:18:0;;15092:3;;15068:20;;-1:-1:-1;;;15081:7:0;;;;15068:10;:20;:::i;:::-;15067:28;;;;:::i;:::-;15046:49;-1:-1:-1;15110:25:0;15046:49;15138:26;15151:13;15138:10;:26;:::i;:::-;:39;;;;:::i;:::-;15216:10;;15208:47;;15110:67;;-1:-1:-1;;;;;;15216:10:0;;15240;;15208:47;;;;15240:10;15216;15208:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15292:15:0;;15284:59;;15194:61;;-1:-1:-1;;;;;;15292:15:0;;15321:17;;15284:59;;;;15321:17;15292:15;15284:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15380:13:0;;15372:53;;15270:73;;-1:-1:-1;;;;;;15380:13:0;;15407;;15372:53;;;;15407:13;15380;15372:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15447:75:0;;;21017:25:1;;;21073:2;21058:18;;21051:34;;;21101:18;;;21094:34;;;21159:2;21144:18;;21137:34;;;15358:67:0;;-1:-1:-1;15447:75:0;;21004:3:1;20989:19;15447:75:0;;;;;;;14961:573;;;14941:593;14418:1123;;;;14390:1151::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:250::-;468:1;478:113;492:6;489:1;486:13;478:113;;;568:11;;;562:18;549:11;;;542:39;514:2;507:10;478:113;;;-1:-1:-1;;625:1:1;607:16;;600:27;383:250::o;638:396::-;787:2;776:9;769:21;750:4;819:6;813:13;862:6;857:2;846:9;842:18;835:34;878:79;950:6;945:2;934:9;930:18;925:2;917:6;913:15;878:79;:::i;:::-;1018:2;997:15;-1:-1:-1;;993:29:1;978:45;;;;1025:2;974:54;;638:396;-1:-1:-1;;638:396:1:o;1039:254::-;1107:6;1115;1168:2;1156:9;1147:7;1143:23;1139:32;1136:52;;;1184:1;1181;1174:12;1136:52;1207:29;1226:9;1207:29;:::i;:::-;1197:39;1283:2;1268:18;;;;1255:32;;-1:-1:-1;;;1039:254:1:o;1906:328::-;1983:6;1991;1999;2052:2;2040:9;2031:7;2027:23;2023:32;2020:52;;;2068:1;2065;2058:12;2020:52;2091:29;2110:9;2091:29;:::i;:::-;2081:39;;2139:38;2173:2;2162:9;2158:18;2139:38;:::i;:::-;2129:48;;2224:2;2213:9;2209:18;2196:32;2186:42;;1906:328;;;;;:::o;2239:180::-;2298:6;2351:2;2339:9;2330:7;2326:23;2322:32;2319:52;;;2367:1;2364;2357:12;2319:52;-1:-1:-1;2390:23:1;;2239:180;-1:-1:-1;2239:180:1:o;2613:156::-;2679:20;;2739:4;2728:16;;2718:27;;2708:55;;2759:1;2756;2749:12;2774:322;2845:6;2853;2861;2914:2;2902:9;2893:7;2889:23;2885:32;2882:52;;;2930:1;2927;2920:12;2882:52;2953:27;2970:9;2953:27;:::i;:::-;2943:37;;2999:36;3031:2;3020:9;3016:18;2999:36;:::i;:::-;2989:46;;3054:36;3086:2;3075:9;3071:18;3054:36;:::i;:::-;3044:46;;2774:322;;;;;:::o;3309:252::-;3373:6;3381;3434:2;3422:9;3413:7;3409:23;3405:32;3402:52;;;3450:1;3447;3440:12;3402:52;3473:27;3490:9;3473:27;:::i;:::-;3463:37;;3519:36;3551:2;3540:9;3536:18;3519:36;:::i;:::-;3509:46;;3309:252;;;;;:::o;3566:118::-;3652:5;3645:13;3638:21;3631:5;3628:32;3618:60;;3674:1;3671;3664:12;3618:60;3566:118;:::o;3689:315::-;3754:6;3762;3815:2;3803:9;3794:7;3790:23;3786:32;3783:52;;;3831:1;3828;3821:12;3783:52;3854:29;3873:9;3854:29;:::i;:::-;3844:39;;3933:2;3922:9;3918:18;3905:32;3946:28;3968:5;3946:28;:::i;:::-;3993:5;3983:15;;;3689:315;;;;;:::o;4009:260::-;4077:6;4085;4138:2;4126:9;4117:7;4113:23;4109:32;4106:52;;;4154:1;4151;4144:12;4106:52;4177:29;4196:9;4177:29;:::i;:::-;4167:39;;4225:38;4259:2;4248:9;4244:18;4225:38;:::i;4274:127::-;4335:10;4330:3;4326:20;4323:1;4316:31;4366:4;4363:1;4356:15;4390:4;4387:1;4380:15;4406:275;4477:2;4471:9;4542:2;4523:13;;-1:-1:-1;;4519:27:1;4507:40;;4577:18;4562:34;;4598:22;;;4559:62;4556:88;;;4624:18;;:::i;:::-;4660:2;4653:22;4406:275;;-1:-1:-1;4406:275:1:o;4686:183::-;4746:4;4779:18;4771:6;4768:30;4765:56;;;4801:18;;:::i;:::-;-1:-1:-1;4846:1:1;4842:14;4858:4;4838:25;;4686:183::o;4874:662::-;4928:5;4981:3;4974:4;4966:6;4962:17;4958:27;4948:55;;4999:1;4996;4989:12;4948:55;5035:6;5022:20;5061:4;5085:60;5101:43;5141:2;5101:43;:::i;:::-;5085:60;:::i;:::-;5179:15;;;5265:1;5261:10;;;;5249:23;;5245:32;;;5210:12;;;;5289:15;;;5286:35;;;5317:1;5314;5307:12;5286:35;5353:2;5345:6;5341:15;5365:142;5381:6;5376:3;5373:15;5365:142;;;5447:17;;5435:30;;5485:12;;;;5398;;5365:142;;;-1:-1:-1;5525:5:1;4874:662;-1:-1:-1;;;;;;4874:662:1:o;5541:1146::-;5659:6;5667;5720:2;5708:9;5699:7;5695:23;5691:32;5688:52;;;5736:1;5733;5726:12;5688:52;5776:9;5763:23;5805:18;5846:2;5838:6;5835:14;5832:34;;;5862:1;5859;5852:12;5832:34;5900:6;5889:9;5885:22;5875:32;;5945:7;5938:4;5934:2;5930:13;5926:27;5916:55;;5967:1;5964;5957:12;5916:55;6003:2;5990:16;6025:4;6049:60;6065:43;6105:2;6065:43;:::i;6049:60::-;6143:15;;;6225:1;6221:10;;;;6213:19;;6209:28;;;6174:12;;;;6249:19;;;6246:39;;;6281:1;6278;6271:12;6246:39;6305:11;;;;6325:148;6341:6;6336:3;6333:15;6325:148;;;6407:23;6426:3;6407:23;:::i;:::-;6395:36;;6358:12;;;;6451;;;;6325:148;;;6492:5;-1:-1:-1;;6535:18:1;;6522:32;;-1:-1:-1;;6566:16:1;;;6563:36;;;6595:1;6592;6585:12;6563:36;;6618:63;6673:7;6662:8;6651:9;6647:24;6618:63;:::i;:::-;6608:73;;;5541:1146;;;;;:::o;6692:356::-;6894:2;6876:21;;;6913:18;;;6906:30;6972:34;6967:2;6952:18;;6945:62;7039:2;7024:18;;6692:356::o;7053:346::-;7255:2;7237:21;;;7294:2;7274:18;;;7267:30;-1:-1:-1;;;7328:2:1;7313:18;;7306:52;7390:2;7375:18;;7053:346::o;7813:127::-;7874:10;7869:3;7865:20;7862:1;7855:31;7905:4;7902:1;7895:15;7929:4;7926:1;7919:15;7945:168;8018:9;;;8049;;8066:15;;;8060:22;;8046:37;8036:71;;8087:18;;:::i;8118:217::-;8158:1;8184;8174:132;;8228:10;8223:3;8219:20;8216:1;8209:31;8263:4;8260:1;8253:15;8291:4;8288:1;8281:15;8174:132;-1:-1:-1;8320:9:1;;8118:217::o;8746:148::-;8834:4;8813:12;;;8827;;;8809:31;;8852:13;;8849:39;;;8868:18;;:::i;11735:340::-;11937:2;11919:21;;;11976:2;11956:18;;;11949:30;-1:-1:-1;;;12010:2:1;11995:18;;11988:46;12066:2;12051:18;;11735:340::o;12692:306::-;12780:6;12788;12796;12849:2;12837:9;12828:7;12824:23;12820:32;12817:52;;;12865:1;12862;12855:12;12817:52;12894:9;12888:16;12878:26;;12944:2;12933:9;12929:18;12923:25;12913:35;;12988:2;12977:9;12973:18;12967:25;12957:35;;12692:306;;;;;:::o;13003:184::-;13073:6;13126:2;13114:9;13105:7;13101:23;13097:32;13094:52;;;13142:1;13139;13132:12;13094:52;-1:-1:-1;13165:16:1;;13003:184;-1:-1:-1;13003:184:1:o;14092:127::-;14153:10;14148:3;14144:20;14141:1;14134:31;14184:4;14181:1;14174:15;14208:4;14205:1;14198:15;14224:402;14426:2;14408:21;;;14465:2;14445:18;;;14438:30;14504:34;14499:2;14484:18;;14477:62;-1:-1:-1;;;14570:2:1;14555:18;;14548:36;14616:3;14601:19;;14224:402::o;14631:125::-;14696:9;;;14717:10;;;14714:36;;;14730:18;;:::i;14761:128::-;14828:9;;;14849:11;;;14846:37;;;14863:18;;:::i;14894:135::-;14933:3;14954:17;;;14951:43;;14974:18;;:::i;:::-;-1:-1:-1;15021:1:1;15010:13;;14894:135::o;18850:287::-;18979:3;19017:6;19011:13;19033:66;19092:6;19087:3;19080:4;19072:6;19068:17;19033:66;:::i;:::-;19115:16;;;;;18850:287;-1:-1:-1;;18850:287:1:o;19142:245::-;19209:6;19262:2;19250:9;19241:7;19237:23;19233:32;19230:52;;;19278:1;19275;19268:12;19230:52;19310:9;19304:16;19329:28;19351:5;19329:28;:::i;19801:980::-;20063:4;20111:3;20100:9;20096:19;20142:6;20131:9;20124:25;20168:2;20206:6;20201:2;20190:9;20186:18;20179:34;20249:3;20244:2;20233:9;20229:18;20222:31;20273:6;20308;20302:13;20339:6;20331;20324:22;20377:3;20366:9;20362:19;20355:26;;20416:2;20408:6;20404:15;20390:29;;20437:1;20447:195;20461:6;20458:1;20455:13;20447:195;;;20526:13;;-1:-1:-1;;;;;20522:39:1;20510:52;;20617:15;;;;20582:12;;;;20558:1;20476:9;20447:195;;;-1:-1:-1;;;;;;;20698:32:1;;;;20693:2;20678:18;;20671:60;-1:-1:-1;;;20762:3:1;20747:19;20740:35;20659:3;19801:980;-1:-1:-1;;;19801:980:1:o
Swarm Source
ipfs://edec8fb048a7fed973dc06e5f23115ad2e0db85f0439e1d1154c6167f22e986b
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.