ERC-20
Overview
Max Total Supply
1,000,000 CLANFI
Holders
92
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0 CLANFIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
clanFi
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-12-08 */ //SPDX-License-Identifier: MIT /* ******************* Clan-Fi ******************** Choose your clan, choose your leaders. Clan leaders go head to head. To determine who is the best trader. Clan members recieve a 20% share of the profits. ** Web: www.ClanFi.net ** X: https://x.com/clanfiprotocol ** Telegram: https://t.me/ClanFiProtocol ******************* Clan-Fi ******************** */ pragma solidity 0.8.26; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract clanFi is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; address payable private _taxWallet; uint256 private _initialBuyTax = 15; uint256 private _initialSellTax = 20; uint256 private _finalBuyTax = 5; uint256 private _finalSellTax = 5; uint256 private _reduceBuyTaxAt = 30; uint256 private _reduceSellTaxAt = 50; uint256 private _preventSwapBefore = 30; uint256 private _transferTax = 0; uint256 private _buyCount = 0; uint8 private constant _decimals = 9; uint256 private constant _tTotal = 1_000_000 * 10**_decimals; string private constant _name = unicode"Clan-Fi"; string private constant _symbol = unicode"CLANFI"; uint256 public _maxTxAmount= (_tTotal * 2) / 100; uint256 public _maxWalletSize= (_tTotal * 2) / 100; uint256 public _taxSwapThreshold= (_tTotal * 35) / 10000; uint256 public _maxTaxSwap= (_tTotal * 6) / 1000; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; uint256 private sellCount = 0; uint256 private lastSellBlock = 0; uint256 private firstBlock = 0; event MaxTxAmountUpdated(uint _maxTxAmount); event TransferTaxUpdated(uint _tax); event ClearToken(address TokenAddressCleared, uint256 Amount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () payable { _taxWallet = payable(_msgSender()); _balances[address(this)] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); emit Transfer(address(0), address(this), _balances[address(this)]); } 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 _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); 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 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"); uint256 taxAmount = 0; if (from != owner() && to != owner()) { if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ require(tradingOpen, "Trading not opened"); } if(_buyCount == 0){ taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100); } if(_buyCount > 0){ taxAmount = amount.mul(_transferTax).div(100); } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100); _buyCount++; if(block.number == firstBlock){ require(_buyCount <= 27, "Exceeds buys on the first block."); } } if(to == uniswapV2Pair && from != address(this) ){ taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) { if (block.number > lastSellBlock) { sellCount = 0; } require(sellCount < 5, "Only 5 sells per block!"); swapTokensForEth(min(amount,min(contractTokenBalance, _maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } sellCount++; lastSellBlock =block.number; } } if(taxAmount > 0){ _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(from, address(this), taxAmount); } _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeALLLimit() external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; firstBlock = block.number; } receive() external payable {} function reduceInitialFee(uint256 _newFee) external{ require(_msgSender() == _taxWallet); require(_newFee <= _initialBuyTax && _newFee <= _initialSellTax); _initialBuyTax = _newFee; _initialSellTax = _newFee; } function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) { require(_msgSender() == _taxWallet); if(tokens == 0){ tokens = IERC20(tokenAddress).balanceOf(address(this)); } emit ClearToken(tokenAddress,tokens); return IERC20(tokenAddress).transfer(_taxWallet, tokens); } function manualSend() external { require(_msgSender() == _taxWallet); uint256 ethBalance= address(this).balance; require(ethBalance > 0, "Contract balance must be greater than zero"); sendETHToFee(ethBalance); } function manualSwap() external { require(_msgSender() == _taxWallet); uint256 tokenBalance = balanceOf(address(this)); if(tokenBalance > 0){ swapTokensForEth(tokenBalance); } uint256 ethBalance = address(this).balance; if(ethBalance > 0){ sendETHToFee(ethBalance); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceInitialFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeALLLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600f600555601460065560056007556005600855601e6009556032600a55601e600b555f600c555f600d55606460026009600a6100419190610a4d565b620f424061004f9190610a97565b6100599190610a97565b6100639190610b05565b600e55606460026009600a6100789190610a4d565b620f42406100869190610a97565b6100909190610a97565b61009a9190610b05565b600f5561271060236009600a6100b09190610a4d565b620f42406100be9190610a97565b6100c89190610a97565b6100d29190610b05565b6010556103e860066009600a6100e89190610a4d565b620f42406100f69190610a97565b6101009190610a97565b61010a9190610b05565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055505f6014555f6015555f6016555f61015c6106eb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506102066106eb60201b60201c565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6102539190610a4d565b620f42406102619190610a97565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102b56106f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104703060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6104579190610a4d565b620f42406104659190610a97565b61071960201b60201c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fe9190610b93565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610584573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a89190610b93565b6040518363ffffffff1660e01b81526004016105c5929190610bcd565b6020604051808303815f875af11580156105e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106059190610b93565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516106de9190610c03565b60405180910390a3610d48565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077e90610c9c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90610d2a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108cf9190610c03565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561095e5780860481111561093a576109396108dc565b5b60018516156109495780820291505b808102905061095785610909565b945061091e565b94509492505050565b5f826109765760019050610a31565b81610983575f9050610a31565b816001811461099957600281146109a3576109d2565b6001915050610a31565b60ff8411156109b5576109b46108dc565b5b8360020a9150848211156109cc576109cb6108dc565b5b50610a31565b5060208310610133831016604e8410600b8410161715610a075782820a905083811115610a0257610a016108dc565b5b610a31565b610a148484846001610915565b92509050818404811115610a2b57610a2a6108dc565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610a5782610a38565b9150610a6283610a41565b9250610a8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610967565b905092915050565b5f610aa182610a38565b9150610aac83610a38565b9250828202610aba81610a38565b91508282048414831517610ad157610ad06108dc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610b0f82610a38565b9150610b1a83610a38565b925082610b2a57610b29610ad8565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b6282610b39565b9050919050565b610b7281610b58565b8114610b7c575f80fd5b50565b5f81519050610b8d81610b69565b92915050565b5f60208284031215610ba857610ba7610b35565b5b5f610bb584828501610b7f565b91505092915050565b610bc781610b58565b82525050565b5f604082019050610be05f830185610bbe565b610bed6020830184610bbe565b9392505050565b610bfd81610a38565b82525050565b5f602082019050610c165f830184610bf4565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610c86602483610c1c565b9150610c9182610c2c565b604082019050919050565b5f6020820190508181035f830152610cb381610c7a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610d14602283610c1c565b9150610d1f82610cba565b604082019050919050565b5f6020820190508181035f830152610d4181610d08565b9050919050565b61310280610d555f395ff3fe60806040526004361061012d575f3560e01c806377b54bad116100aa578063a9059cbb1161006e578063a9059cbb146103cc578063bf474bed14610408578063c9567bf914610432578063dd62ed3e14610448578063f429389014610484578063faf3eea91461049a57610134565b806377b54bad146102e85780637d1db4a5146103245780638da5cb5b1461034e5780638f9a55c01461037857806395d89b41146103a257610134565b8063313ce567116100f1578063313ce5671461022e5780635034c4041461025857806351bc3c851461028057806370a0823114610296578063715018a6146102d257610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104b0565b60405161015991906120e9565b60405180910390f35b34801561016d575f80fd5b506101886004803603810190610183919061219a565b6104ed565b60405161019591906121f2565b60405180910390f35b3480156101a9575f80fd5b506101b261050a565b6040516101bf919061221a565b60405180910390f35b3480156101d3575f80fd5b506101dc610510565b6040516101e9919061221a565b60405180910390f35b3480156101fd575f80fd5b5061021860048036038101906102139190612233565b610532565b60405161022591906121f2565b60405180910390f35b348015610239575f80fd5b50610242610606565b60405161024f919061229e565b60405180910390f35b348015610263575f80fd5b5061027e600480360381019061027991906122b7565b61060e565b005b34801561028b575f80fd5b5061029461069a565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906122e2565b610731565b6040516102c9919061221a565b60405180910390f35b3480156102dd575f80fd5b506102e6610777565b005b3480156102f3575f80fd5b5061030e6004803603810190610309919061219a565b6108c5565b60405161031b91906121f2565b60405180910390f35b34801561032f575f80fd5b50610338610a84565b604051610345919061221a565b60405180910390f35b348015610359575f80fd5b50610362610a8a565b60405161036f919061231c565b60405180910390f35b348015610383575f80fd5b5061038c610ab1565b604051610399919061221a565b60405180910390f35b3480156103ad575f80fd5b506103b6610ab7565b6040516103c391906120e9565b60405180910390f35b3480156103d7575f80fd5b506103f260048036038101906103ed919061219a565b610af4565b6040516103ff91906121f2565b60405180910390f35b348015610413575f80fd5b5061041c610b11565b604051610429919061221a565b60405180910390f35b34801561043d575f80fd5b50610446610b17565b005b348015610453575f80fd5b5061046e60048036038101906104699190612335565b610d18565b60405161047b919061221a565b60405180910390f35b34801561048f575f80fd5b50610498610d9a565b005b3480156104a5575f80fd5b506104ae610e4b565b005b60606040518060400160405280600781526020017f436c616e2d466900000000000000000000000000000000000000000000000000815250905090565b5f6105006104f9610f77565b8484610f7e565b6001905092915050565b60115481565b5f6009600a61051f91906124cf565b620f424061052d9190612519565b905090565b5f61053e848484611141565b6105fb8461054a610f77565b6105f6856040518060600160405280602881526020016130a56028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ad610f77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b659092919063ffffffff16565b610f7e565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661064e610f77565b73ffffffffffffffffffffffffffffffffffffffff161461066d575f80fd5b600554811115801561068157506006548111155b610689575f80fd5b806005819055508060068190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106da610f77565b73ffffffffffffffffffffffffffffffffffffffff16146106f9575f80fd5b5f61070330610731565b90505f8111156107175761071681611bc7565b5b5f4790505f81111561072d5761072c81611e32565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61077f610f77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461080b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610802906125a4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610906610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610925575f80fd5b5f82036109a7578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610965919061231c565b602060405180830381865afa158015610980573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a491906125d6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516109d8929190612601565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610a3c929190612683565b6020604051808303815f875af1158015610a58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7c91906126d4565b905092915050565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600681526020017f434c414e46490000000000000000000000000000000000000000000000000000815250905090565b5f610b07610b00610f77565b8484611141565b6001905092915050565b60105481565b610b1f610f77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba2906125a4565b60405180910390fd5b601360149054906101000a900460ff1615610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf290612749565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610c98929190612601565b6020604051808303815f875af1158015610cb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd891906126d4565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555043601681905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dda610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610df9575f80fd5b5f4790505f8111610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e36906127d7565b60405180910390fd5b610e4881611e32565b50565b610e53610f77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed6906125a4565b60405180910390fd5b6009600a610eed91906124cf565b620f4240610efb9190612519565b600e819055506009600a610f0f91906124cf565b620f4240610f1d9190612519565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610f5291906124cf565b620f4240610f609190612519565b604051610f6d919061221a565b60405180910390a1565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390612865565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611051906128f3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611134919061221a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690612981565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490612a0f565b60405180910390fd5b5f811161125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125690612a9d565b60405180910390fd5b5f611268610a8a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156112d657506112a6610a8a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118b55760035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611379575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156113ce57601360149054906101000a900460ff166113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490612b05565b60405180910390fd5b5b5f600d5403611416576114136064611405600954600d54116113f2576005546113f6565b6007545b85611e9a90919063ffffffff16565b611f1190919063ffffffff16565b90505b5f600d54111561144b57611448606461143a600c5485611e9a90919063ffffffff16565b611f1190919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114f4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611547575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561168f57600e54821115611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890612b6d565b60405180910390fd5b600f548261159e85610731565b6115a89190612b8b565b11156115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090612c08565b60405180910390fd5b6116256064611617600954600d541161160457600554611608565b6007545b85611e9a90919063ffffffff16565b611f1190919063ffffffff16565b9050600d5f81548092919061163990612c26565b9190505550601654430361168e57601b600d54111561168d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168490612cb7565b60405180910390fd5b5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561171757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561175b57611758606461174a600a54600d54116117375760065461173b565b6008545b85611e9a90919063ffffffff16565b611f1190919063ffffffff16565b90505b5f61176530610731565b9050601360159054906101000a900460ff161580156117d0575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156117e85750601360169054906101000a900460ff165b80156117f5575060105481115b80156118045750600b54600d54115b156118b35760155443111561181b575f6014819055505b600560145410611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185790612d1f565b60405180910390fd5b61187d6118788461187384601154611f5a565b611f5a565b611bc7565b5f4790505f8111156118935761189247611e32565b5b60145f8154809291906118a590612c26565b919050555043601581905550505b505b5f8111156119b45761190d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f7290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119ab919061221a565b60405180910390a35b611a048260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fcf90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611aa7611a5b8284611fcf90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f7290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b4a8486611fcf90919063ffffffff16565b604051611b57919061221a565b60405180910390a350505050565b5f838311158290611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba391906120e9565b60405180910390fd5b505f8385611bba9190612d3d565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611bfe57611bfd612d70565b5b604051908082528060200260200182016040528015611c2c5781602001602082028036833780820191505090505b50905030815f81518110611c4357611c42612d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190612dde565b81600181518110611d1f57611d1e612d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d853060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f7e565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611de7959493929190612ef9565b5f604051808303815f87803b158015611dfe575f80fd5b505af1158015611e10573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e96573d5f803e3d5ffd5b5050565b5f808303611eaa575f9050611f0b565b5f8284611eb79190612519565b9050828482611ec69190612f7e565b14611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd9061301e565b60405180910390fd5b809150505b92915050565b5f611f5283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612018565b905092915050565b5f818311611f685782611f6a565b815b905092915050565b5f808284611f809190612b8b565b905083811015611fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbc90613086565b60405180910390fd5b8091505092915050565b5f61201083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b65565b905092915050565b5f808311829061205e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205591906120e9565b60405180910390fd5b505f838561206c9190612f7e565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120bb82612079565b6120c58185612083565b93506120d5818560208601612093565b6120de816120a1565b840191505092915050565b5f6020820190508181035f83015261210181846120b1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121368261210d565b9050919050565b6121468161212c565b8114612150575f80fd5b50565b5f813590506121618161213d565b92915050565b5f819050919050565b61217981612167565b8114612183575f80fd5b50565b5f8135905061219481612170565b92915050565b5f80604083850312156121b0576121af612109565b5b5f6121bd85828601612153565b92505060206121ce85828601612186565b9150509250929050565b5f8115159050919050565b6121ec816121d8565b82525050565b5f6020820190506122055f8301846121e3565b92915050565b61221481612167565b82525050565b5f60208201905061222d5f83018461220b565b92915050565b5f805f6060848603121561224a57612249612109565b5b5f61225786828701612153565b935050602061226886828701612153565b925050604061227986828701612186565b9150509250925092565b5f60ff82169050919050565b61229881612283565b82525050565b5f6020820190506122b15f83018461228f565b92915050565b5f602082840312156122cc576122cb612109565b5b5f6122d984828501612186565b91505092915050565b5f602082840312156122f7576122f6612109565b5b5f61230484828501612153565b91505092915050565b6123168161212c565b82525050565b5f60208201905061232f5f83018461230d565b92915050565b5f806040838503121561234b5761234a612109565b5b5f61235885828601612153565b925050602061236985828601612153565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156123f5578086048111156123d1576123d0612373565b5b60018516156123e05780820291505b80810290506123ee856123a0565b94506123b5565b94509492505050565b5f8261240d57600190506124c8565b8161241a575f90506124c8565b8160018114612430576002811461243a57612469565b60019150506124c8565b60ff84111561244c5761244b612373565b5b8360020a91508482111561246357612462612373565b5b506124c8565b5060208310610133831016604e8410600b841016171561249e5782820a90508381111561249957612498612373565b5b6124c8565b6124ab84848460016123ac565b925090508184048111156124c2576124c1612373565b5b81810290505b9392505050565b5f6124d982612167565b91506124e483612283565b92506125117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123fe565b905092915050565b5f61252382612167565b915061252e83612167565b925082820261253c81612167565b9150828204841483151761255357612552612373565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61258e602083612083565b91506125998261255a565b602082019050919050565b5f6020820190508181035f8301526125bb81612582565b9050919050565b5f815190506125d081612170565b92915050565b5f602082840312156125eb576125ea612109565b5b5f6125f8848285016125c2565b91505092915050565b5f6040820190506126145f83018561230d565b612621602083018461220b565b9392505050565b5f819050919050565b5f61264b6126466126418461210d565b612628565b61210d565b9050919050565b5f61265c82612631565b9050919050565b5f61266d82612652565b9050919050565b61267d81612663565b82525050565b5f6040820190506126965f830185612674565b6126a3602083018461220b565b9392505050565b6126b3816121d8565b81146126bd575f80fd5b50565b5f815190506126ce816126aa565b92915050565b5f602082840312156126e9576126e8612109565b5b5f6126f6848285016126c0565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612733601783612083565b915061273e826126ff565b602082019050919050565b5f6020820190508181035f83015261276081612727565b9050919050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f6127c1602a83612083565b91506127cc82612767565b604082019050919050565b5f6020820190508181035f8301526127ee816127b5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61284f602483612083565b915061285a826127f5565b604082019050919050565b5f6020820190508181035f83015261287c81612843565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6128dd602283612083565b91506128e882612883565b604082019050919050565b5f6020820190508181035f83015261290a816128d1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61296b602583612083565b915061297682612911565b604082019050919050565b5f6020820190508181035f8301526129988161295f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6129f9602383612083565b9150612a048261299f565b604082019050919050565b5f6020820190508181035f830152612a26816129ed565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612a87602983612083565b9150612a9282612a2d565b604082019050919050565b5f6020820190508181035f830152612ab481612a7b565b9050919050565b7f54726164696e67206e6f74206f70656e656400000000000000000000000000005f82015250565b5f612aef601283612083565b9150612afa82612abb565b602082019050919050565b5f6020820190508181035f830152612b1c81612ae3565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612b57601983612083565b9150612b6282612b23565b602082019050919050565b5f6020820190508181035f830152612b8481612b4b565b9050919050565b5f612b9582612167565b9150612ba083612167565b9250828201905080821115612bb857612bb7612373565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612bf2601a83612083565b9150612bfd82612bbe565b602082019050919050565b5f6020820190508181035f830152612c1f81612be6565b9050919050565b5f612c3082612167565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6257612c61612373565b5b600182019050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f612ca1602083612083565b9150612cac82612c6d565b602082019050919050565b5f6020820190508181035f830152612cce81612c95565b9050919050565b7f4f6e6c7920352073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f612d09601783612083565b9150612d1482612cd5565b602082019050919050565b5f6020820190508181035f830152612d3681612cfd565b9050919050565b5f612d4782612167565b9150612d5283612167565b9250828203905081811115612d6a57612d69612373565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612dd88161213d565b92915050565b5f60208284031215612df357612df2612109565b5b5f612e0084828501612dca565b91505092915050565b5f819050919050565b5f612e2c612e27612e2284612e09565b612628565b612167565b9050919050565b612e3c81612e12565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e748161212c565b82525050565b5f612e858383612e6b565b60208301905092915050565b5f602082019050919050565b5f612ea782612e42565b612eb18185612e4c565b9350612ebc83612e5c565b805f5b83811015612eec578151612ed38882612e7a565b9750612ede83612e91565b925050600181019050612ebf565b5085935050505092915050565b5f60a082019050612f0c5f83018861220b565b612f196020830187612e33565b8181036040830152612f2b8186612e9d565b9050612f3a606083018561230d565b612f47608083018461220b565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f8882612167565b9150612f9383612167565b925082612fa357612fa2612f51565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613008602183612083565b915061301382612fae565b604082019050919050565b5f6020820190508181035f83015261303581612ffc565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613070601b83612083565b915061307b8261303c565b602082019050919050565b5f6020820190508181035f83015261309d81613064565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122059d7a124a0fc042ec00b87df1a82ca67e39920fa73fd852ced5194a69d1a8a3564736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061012d575f3560e01c806377b54bad116100aa578063a9059cbb1161006e578063a9059cbb146103cc578063bf474bed14610408578063c9567bf914610432578063dd62ed3e14610448578063f429389014610484578063faf3eea91461049a57610134565b806377b54bad146102e85780637d1db4a5146103245780638da5cb5b1461034e5780638f9a55c01461037857806395d89b41146103a257610134565b8063313ce567116100f1578063313ce5671461022e5780635034c4041461025857806351bc3c851461028057806370a0823114610296578063715018a6146102d257610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104b0565b60405161015991906120e9565b60405180910390f35b34801561016d575f80fd5b506101886004803603810190610183919061219a565b6104ed565b60405161019591906121f2565b60405180910390f35b3480156101a9575f80fd5b506101b261050a565b6040516101bf919061221a565b60405180910390f35b3480156101d3575f80fd5b506101dc610510565b6040516101e9919061221a565b60405180910390f35b3480156101fd575f80fd5b5061021860048036038101906102139190612233565b610532565b60405161022591906121f2565b60405180910390f35b348015610239575f80fd5b50610242610606565b60405161024f919061229e565b60405180910390f35b348015610263575f80fd5b5061027e600480360381019061027991906122b7565b61060e565b005b34801561028b575f80fd5b5061029461069a565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906122e2565b610731565b6040516102c9919061221a565b60405180910390f35b3480156102dd575f80fd5b506102e6610777565b005b3480156102f3575f80fd5b5061030e6004803603810190610309919061219a565b6108c5565b60405161031b91906121f2565b60405180910390f35b34801561032f575f80fd5b50610338610a84565b604051610345919061221a565b60405180910390f35b348015610359575f80fd5b50610362610a8a565b60405161036f919061231c565b60405180910390f35b348015610383575f80fd5b5061038c610ab1565b604051610399919061221a565b60405180910390f35b3480156103ad575f80fd5b506103b6610ab7565b6040516103c391906120e9565b60405180910390f35b3480156103d7575f80fd5b506103f260048036038101906103ed919061219a565b610af4565b6040516103ff91906121f2565b60405180910390f35b348015610413575f80fd5b5061041c610b11565b604051610429919061221a565b60405180910390f35b34801561043d575f80fd5b50610446610b17565b005b348015610453575f80fd5b5061046e60048036038101906104699190612335565b610d18565b60405161047b919061221a565b60405180910390f35b34801561048f575f80fd5b50610498610d9a565b005b3480156104a5575f80fd5b506104ae610e4b565b005b60606040518060400160405280600781526020017f436c616e2d466900000000000000000000000000000000000000000000000000815250905090565b5f6105006104f9610f77565b8484610f7e565b6001905092915050565b60115481565b5f6009600a61051f91906124cf565b620f424061052d9190612519565b905090565b5f61053e848484611141565b6105fb8461054a610f77565b6105f6856040518060600160405280602881526020016130a56028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ad610f77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b659092919063ffffffff16565b610f7e565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661064e610f77565b73ffffffffffffffffffffffffffffffffffffffff161461066d575f80fd5b600554811115801561068157506006548111155b610689575f80fd5b806005819055508060068190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106da610f77565b73ffffffffffffffffffffffffffffffffffffffff16146106f9575f80fd5b5f61070330610731565b90505f8111156107175761071681611bc7565b5b5f4790505f81111561072d5761072c81611e32565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61077f610f77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461080b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610802906125a4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610906610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610925575f80fd5b5f82036109a7578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610965919061231c565b602060405180830381865afa158015610980573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a491906125d6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516109d8929190612601565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610a3c929190612683565b6020604051808303815f875af1158015610a58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7c91906126d4565b905092915050565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600681526020017f434c414e46490000000000000000000000000000000000000000000000000000815250905090565b5f610b07610b00610f77565b8484611141565b6001905092915050565b60105481565b610b1f610f77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba2906125a4565b60405180910390fd5b601360149054906101000a900460ff1615610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf290612749565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610c98929190612601565b6020604051808303815f875af1158015610cb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd891906126d4565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555043601681905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dda610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610df9575f80fd5b5f4790505f8111610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e36906127d7565b60405180910390fd5b610e4881611e32565b50565b610e53610f77565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed6906125a4565b60405180910390fd5b6009600a610eed91906124cf565b620f4240610efb9190612519565b600e819055506009600a610f0f91906124cf565b620f4240610f1d9190612519565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610f5291906124cf565b620f4240610f609190612519565b604051610f6d919061221a565b60405180910390a1565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390612865565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611051906128f3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611134919061221a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690612981565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490612a0f565b60405180910390fd5b5f811161125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125690612a9d565b60405180910390fd5b5f611268610a8a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156112d657506112a6610a8a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118b55760035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611379575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156113ce57601360149054906101000a900460ff166113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490612b05565b60405180910390fd5b5b5f600d5403611416576114136064611405600954600d54116113f2576005546113f6565b6007545b85611e9a90919063ffffffff16565b611f1190919063ffffffff16565b90505b5f600d54111561144b57611448606461143a600c5485611e9a90919063ffffffff16565b611f1190919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114f4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611547575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561168f57600e54821115611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890612b6d565b60405180910390fd5b600f548261159e85610731565b6115a89190612b8b565b11156115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090612c08565b60405180910390fd5b6116256064611617600954600d541161160457600554611608565b6007545b85611e9a90919063ffffffff16565b611f1190919063ffffffff16565b9050600d5f81548092919061163990612c26565b9190505550601654430361168e57601b600d54111561168d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168490612cb7565b60405180910390fd5b5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561171757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561175b57611758606461174a600a54600d54116117375760065461173b565b6008545b85611e9a90919063ffffffff16565b611f1190919063ffffffff16565b90505b5f61176530610731565b9050601360159054906101000a900460ff161580156117d0575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156117e85750601360169054906101000a900460ff165b80156117f5575060105481115b80156118045750600b54600d54115b156118b35760155443111561181b575f6014819055505b600560145410611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185790612d1f565b60405180910390fd5b61187d6118788461187384601154611f5a565b611f5a565b611bc7565b5f4790505f8111156118935761189247611e32565b5b60145f8154809291906118a590612c26565b919050555043601581905550505b505b5f8111156119b45761190d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f7290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119ab919061221a565b60405180910390a35b611a048260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fcf90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611aa7611a5b8284611fcf90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f7290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b4a8486611fcf90919063ffffffff16565b604051611b57919061221a565b60405180910390a350505050565b5f838311158290611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba391906120e9565b60405180910390fd5b505f8385611bba9190612d3d565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611bfe57611bfd612d70565b5b604051908082528060200260200182016040528015611c2c5781602001602082028036833780820191505090505b50905030815f81518110611c4357611c42612d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190612dde565b81600181518110611d1f57611d1e612d9d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d853060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f7e565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611de7959493929190612ef9565b5f604051808303815f87803b158015611dfe575f80fd5b505af1158015611e10573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e96573d5f803e3d5ffd5b5050565b5f808303611eaa575f9050611f0b565b5f8284611eb79190612519565b9050828482611ec69190612f7e565b14611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd9061301e565b60405180910390fd5b809150505b92915050565b5f611f5283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612018565b905092915050565b5f818311611f685782611f6a565b815b905092915050565b5f808284611f809190612b8b565b905083811015611fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbc90613086565b60405180910390fd5b8091505092915050565b5f61201083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b65565b905092915050565b5f808311829061205e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205591906120e9565b60405180910390fd5b505f838561206c9190612f7e565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120bb82612079565b6120c58185612083565b93506120d5818560208601612093565b6120de816120a1565b840191505092915050565b5f6020820190508181035f83015261210181846120b1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121368261210d565b9050919050565b6121468161212c565b8114612150575f80fd5b50565b5f813590506121618161213d565b92915050565b5f819050919050565b61217981612167565b8114612183575f80fd5b50565b5f8135905061219481612170565b92915050565b5f80604083850312156121b0576121af612109565b5b5f6121bd85828601612153565b92505060206121ce85828601612186565b9150509250929050565b5f8115159050919050565b6121ec816121d8565b82525050565b5f6020820190506122055f8301846121e3565b92915050565b61221481612167565b82525050565b5f60208201905061222d5f83018461220b565b92915050565b5f805f6060848603121561224a57612249612109565b5b5f61225786828701612153565b935050602061226886828701612153565b925050604061227986828701612186565b9150509250925092565b5f60ff82169050919050565b61229881612283565b82525050565b5f6020820190506122b15f83018461228f565b92915050565b5f602082840312156122cc576122cb612109565b5b5f6122d984828501612186565b91505092915050565b5f602082840312156122f7576122f6612109565b5b5f61230484828501612153565b91505092915050565b6123168161212c565b82525050565b5f60208201905061232f5f83018461230d565b92915050565b5f806040838503121561234b5761234a612109565b5b5f61235885828601612153565b925050602061236985828601612153565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156123f5578086048111156123d1576123d0612373565b5b60018516156123e05780820291505b80810290506123ee856123a0565b94506123b5565b94509492505050565b5f8261240d57600190506124c8565b8161241a575f90506124c8565b8160018114612430576002811461243a57612469565b60019150506124c8565b60ff84111561244c5761244b612373565b5b8360020a91508482111561246357612462612373565b5b506124c8565b5060208310610133831016604e8410600b841016171561249e5782820a90508381111561249957612498612373565b5b6124c8565b6124ab84848460016123ac565b925090508184048111156124c2576124c1612373565b5b81810290505b9392505050565b5f6124d982612167565b91506124e483612283565b92506125117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123fe565b905092915050565b5f61252382612167565b915061252e83612167565b925082820261253c81612167565b9150828204841483151761255357612552612373565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61258e602083612083565b91506125998261255a565b602082019050919050565b5f6020820190508181035f8301526125bb81612582565b9050919050565b5f815190506125d081612170565b92915050565b5f602082840312156125eb576125ea612109565b5b5f6125f8848285016125c2565b91505092915050565b5f6040820190506126145f83018561230d565b612621602083018461220b565b9392505050565b5f819050919050565b5f61264b6126466126418461210d565b612628565b61210d565b9050919050565b5f61265c82612631565b9050919050565b5f61266d82612652565b9050919050565b61267d81612663565b82525050565b5f6040820190506126965f830185612674565b6126a3602083018461220b565b9392505050565b6126b3816121d8565b81146126bd575f80fd5b50565b5f815190506126ce816126aa565b92915050565b5f602082840312156126e9576126e8612109565b5b5f6126f6848285016126c0565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612733601783612083565b915061273e826126ff565b602082019050919050565b5f6020820190508181035f83015261276081612727565b9050919050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f6127c1602a83612083565b91506127cc82612767565b604082019050919050565b5f6020820190508181035f8301526127ee816127b5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61284f602483612083565b915061285a826127f5565b604082019050919050565b5f6020820190508181035f83015261287c81612843565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6128dd602283612083565b91506128e882612883565b604082019050919050565b5f6020820190508181035f83015261290a816128d1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61296b602583612083565b915061297682612911565b604082019050919050565b5f6020820190508181035f8301526129988161295f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6129f9602383612083565b9150612a048261299f565b604082019050919050565b5f6020820190508181035f830152612a26816129ed565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612a87602983612083565b9150612a9282612a2d565b604082019050919050565b5f6020820190508181035f830152612ab481612a7b565b9050919050565b7f54726164696e67206e6f74206f70656e656400000000000000000000000000005f82015250565b5f612aef601283612083565b9150612afa82612abb565b602082019050919050565b5f6020820190508181035f830152612b1c81612ae3565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612b57601983612083565b9150612b6282612b23565b602082019050919050565b5f6020820190508181035f830152612b8481612b4b565b9050919050565b5f612b9582612167565b9150612ba083612167565b9250828201905080821115612bb857612bb7612373565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612bf2601a83612083565b9150612bfd82612bbe565b602082019050919050565b5f6020820190508181035f830152612c1f81612be6565b9050919050565b5f612c3082612167565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6257612c61612373565b5b600182019050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f612ca1602083612083565b9150612cac82612c6d565b602082019050919050565b5f6020820190508181035f830152612cce81612c95565b9050919050565b7f4f6e6c7920352073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f612d09601783612083565b9150612d1482612cd5565b602082019050919050565b5f6020820190508181035f830152612d3681612cfd565b9050919050565b5f612d4782612167565b9150612d5283612167565b9250828203905081811115612d6a57612d69612373565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612dd88161213d565b92915050565b5f60208284031215612df357612df2612109565b5b5f612e0084828501612dca565b91505092915050565b5f819050919050565b5f612e2c612e27612e2284612e09565b612628565b612167565b9050919050565b612e3c81612e12565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e748161212c565b82525050565b5f612e858383612e6b565b60208301905092915050565b5f602082019050919050565b5f612ea782612e42565b612eb18185612e4c565b9350612ebc83612e5c565b805f5b83811015612eec578151612ed38882612e7a565b9750612ede83612e91565b925050600181019050612ebf565b5085935050505092915050565b5f60a082019050612f0c5f83018861220b565b612f196020830187612e33565b8181036040830152612f2b8186612e9d565b9050612f3a606083018561230d565b612f47608083018461220b565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f8882612167565b9150612f9383612167565b925082612fa357612fa2612f51565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613008602183612083565b915061301382612fae565b604082019050919050565b5f6020820190508181035f83015261303581612ffc565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613070601b83612083565b915061307b8261303c565b602082019050919050565b5f6020820190508181035f83015261309d81613064565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122059d7a124a0fc042ec00b87df1a82ca67e39920fa73fd852ced5194a69d1a8a3564736f6c634300081a0033
Deployed Bytecode Sourcemap
3865:9226:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6217:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7050:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4950:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6494:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7219:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6403:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11842:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12746:342;;;;;;;;;;;;;:::i;:::-;;6597:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2946:148;;;;;;;;;;;;;:::i;:::-;;12103:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2732:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4830:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6308:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6724:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4887:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11507:286;;;;;;;;;;;;;:::i;:::-;;6899:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12484:254;;;;;;;;;;;;;:::i;:::-;;11236:163;;;;;;;;;;;;;:::i;:::-;;6217:83;6254:13;6287:5;;;;;;;;;;;;;;;;;6280:12;;6217:83;:::o;7050:161::-;7125:4;7142:39;7151:12;:10;:12::i;:::-;7165:7;7174:6;7142:8;:39::i;:::-;7199:4;7192:11;;7050:161;;;;:::o;4950:48::-;;;;:::o;6494:95::-;6547:7;4589:1;4644:2;:13;;;;:::i;:::-;4632:9;:25;;;;:::i;:::-;6567:14;;6494:95;:::o;7219:313::-;7317:4;7334:36;7344:6;7352:9;7363:6;7334:9;:36::i;:::-;7381:121;7390:6;7398:12;:10;:12::i;:::-;7412:89;7450:6;7412:89;;;;;;;;;;;;;;;;;:11;:19;7424:6;7412:19;;;;;;;;;;;;;;;:33;7432:12;:10;:12::i;:::-;7412:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7381:8;:121::i;:::-;7520:4;7513:11;;7219:313;;;;;:::o;6403:83::-;6444:5;4589:1;6462:16;;6403:83;:::o;11842:253::-;11928:10;;;;;;;;;;;11912:26;;:12;:10;:12::i;:::-;:26;;;11904:35;;;;;;11969:14;;11958:7;:25;;:55;;;;;11998:15;;11987:7;:26;;11958:55;11950:64;;;;;;12044:7;12027:14;:24;;;;12080:7;12062:15;:25;;;;11842:253;:::o;12746:342::-;12812:10;;;;;;;;;;;12796:26;;:12;:10;:12::i;:::-;:26;;;12788:35;;;;;;12836:20;12859:24;12877:4;12859:9;:24::i;:::-;12836:47;;12912:1;12897:12;:16;12894:75;;;12927:30;12944:12;12927:16;:30::i;:::-;12894:75;12981:18;13002:21;12981:42;;13050:1;13037:10;:14;13034:47;;;13054:24;13067:10;13054:12;:24::i;:::-;13034:47;12777:311;;12746:342::o;6597:119::-;6663:7;6690:9;:18;6700:7;6690:18;;;;;;;;;;;;;;;;6683:25;;6597:119;;;:::o;2946:148::-;2869:12;:10;:12::i;:::-;2859:22;;:6;;;;;;;;;;:22;;;2851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3053:1:::1;3016:40;;3037:6;::::0;::::1;;;;;;;;3016:40;;;;;;;;;;;;3084:1;3067:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2946:148::o:0;12103:373::-;12184:12;12233:10;;;;;;;;;;;12217:26;;:12;:10;:12::i;:::-;:26;;;12209:35;;;;;;12270:1;12260:6;:11;12257:96;;12303:12;12296:30;;;12335:4;12296:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12287:54;;12257:96;12370:31;12381:12;12394:6;12370:31;;;;;;;:::i;:::-;;;;;;;;12426:12;12419:29;;;12449:10;;;;;;;;;;;12461:6;12419:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12412:56;;12103:373;;;;:::o;4775:48::-;;;;:::o;2732:79::-;2770:7;2797:6;;;;;;;;;;;2790:13;;2732:79;:::o;4830:50::-;;;;:::o;6308:87::-;6347:13;6380:7;;;;;;;;;;;;;;;;;6373:14;;6308:87;:::o;6724:167::-;6802:4;6819:42;6829:12;:10;:12::i;:::-;6843:9;6854:6;6819:9;:42::i;:::-;6879:4;6872:11;;6724:167;;;;:::o;4887:56::-;;;;:::o;11507:286::-;2869:12;:10;:12::i;:::-;2859:22;;:6;;;;;;;;;;:22;;;2851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11571:11:::1;;;;;;;;;;;11570:12;11562:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11627:13;;;;;;;;;;;11620:29;;;11658:15;;;;;;;;;;;11676:14;11620:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11716:4;11702:11;;:18;;;;;;;;;;;;;;;;;;11745:4;11731:11;;:18;;;;;;;;;;;;;;;;;;11773:12;11760:10;:25;;;;11507:286::o:0;6899:143::-;6980:7;7007:11;:18;7019:5;7007:18;;;;;;;;;;;;;;;:27;7026:7;7007:27;;;;;;;;;;;;;;;;7000:34;;6899:143;;;;:::o;12484:254::-;12550:10;;;;;;;;;;;12534:26;;:12;:10;:12::i;:::-;:26;;;12526:35;;;;;;12574:18;12594:21;12574:41;;12647:1;12634:10;:14;12626:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12706:24;12719:10;12706:12;:24::i;:::-;12515:223;12484:254::o;11236:163::-;2869:12;:10;:12::i;:::-;2859:22;;:6;;;;;;;;;;:22;;;2851:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4589:1:::1;4644:2;:13;;;;:::i;:::-;4632:9;:25;;;;:::i;:::-;11291:12;:22;;;;4589:1;4644:2;:13;;;;:::i;:::-;4632:9;:25;;;;:::i;:::-;11324:14;:24;;;;11364:27;4589:1;4644:2;:13;;;;:::i;:::-;4632:9;:25;;;;:::i;:::-;11364:27;;;;;;:::i;:::-;;;;;;;;11236:163::o:0;487:98::-;540:7;567:10;560:17;;487:98;:::o;7540:335::-;7650:1;7633:19;;:5;:19;;;7625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7731:1;7712:21;;:7;:21;;;7704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7813:6;7783:11;:18;7795:5;7783:18;;;;;;;;;;;;;;;:27;7802:7;7783:27;;;;;;;;;;;;;;;:36;;;;7851:7;7835:32;;7844:5;7835:32;;;7860:6;7835:32;;;;;;:::i;:::-;;;;;;;;7540:335;;;:::o;7883:2740::-;7987:1;7971:18;;:4;:18;;;7963:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8064:1;8050:16;;:2;:16;;;8042:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8134:1;8125:6;:10;8117:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8192:17;8236:7;:5;:7::i;:::-;8228:15;;:4;:15;;;;:32;;;;;8253:7;:5;:7::i;:::-;8247:13;;:2;:13;;;;8228:32;8224:2032;;;8283:18;:24;8302:4;8283:24;;;;;;;;;;;;;;;;;;;;;;;;;8282:25;:52;;;;;8312:18;:22;8331:2;8312:22;;;;;;;;;;;;;;;;;;;;;;;;;8311:23;8282:52;8279:133;;;8362:11;;;;;;;;;;;8354:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8279:133;8444:1;8431:9;;:14;8428:147;;8477:82;8555:3;8477:73;8501:15;;8489:9;;:27;8488:61;;8535:14;;8488:61;;;8520:12;;8488:61;8477:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8465:94;;8428:147;8606:1;8594:9;;:13;8591:97;;;8639:33;8668:3;8639:24;8650:12;;8639:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8627:45;;8591:97;8716:13;;;;;;;;;;;8708:21;;:4;:21;;;:55;;;;;8747:15;;;;;;;;;;;8733:30;;:2;:30;;;;8708:55;:83;;;;;8769:18;:22;8788:2;8769:22;;;;;;;;;;;;;;;;;;;;;;;;;8767:24;8708:83;8704:577;;;8831:12;;8821:6;:22;;8813:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8926:14;;8916:6;8900:13;8910:2;8900:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8892:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9002:82;9080:3;9002:73;9026:15;;9014:9;;:27;9013:61;;9060:14;;9013:61;;;9045:12;;9013:61;9002:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8990:94;;9103:9;;:11;;;;;;;;;:::i;:::-;;;;;;9152:10;;9136:12;:26;9133:133;;9207:2;9194:9;;:15;;9186:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9133:133;8704:577;9306:13;;;;;;;;;;;9300:19;;:2;:19;;;:44;;;;;9339:4;9323:21;;:4;:21;;;;9300:44;9297:181;;;9377:85;9458:3;9377:76;9401:16;;9389:9;;:28;9388:64;;9437:15;;9388:64;;;9421:13;;9388:64;9377:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9365:97;;9297:181;9494:28;9525:24;9543:4;9525:9;:24::i;:::-;9494:55;;9569:6;;;;;;;;;;;9568:7;:30;;;;;9585:13;;;;;;;;;;;9579:19;;:2;:19;;;9568:30;:45;;;;;9602:11;;;;;;;;;;;9568:45;:89;;;;;9640:17;;9617:20;:40;9568:89;:123;;;;;9673:18;;9661:9;;:30;9568:123;9564:681;;;9731:13;;9716:12;:28;9712:90;;;9781:1;9769:9;:13;;;;9712:90;9840:1;9828:9;;:13;9820:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9890:68;9907:50;9911:6;9918:38;9922:20;9944:11;;9918:3;:38::i;:::-;9907:3;:50::i;:::-;9890:16;:68::i;:::-;9977:26;10006:21;9977:50;;10071:1;10050:18;:22;10046:106;;;10097:35;10110:21;10097:12;:35::i;:::-;10046:106;10172:9;;:11;;;;;;;;;:::i;:::-;;;;;;10217:12;10202:13;:27;;;;9693:552;9564:681;8262:1994;8224:2032;10283:1;10271:9;:13;10268:166;;;10325:39;10354:9;10325;:24;10343:4;10325:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10298:9;:24;10316:4;10298:24;;;;;;;;;;;;;;;:66;;;;10405:4;10382:40;;10391:4;10382:40;;;10412:9;10382:40;;;;;;:::i;:::-;;;;;;;;10268:166;10464:27;10484:6;10464:9;:15;10474:4;10464:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10446:9;:15;10456:4;10446:15;;;;;;;;;;;;;;;:45;;;;10518:40;10536:21;10547:9;10536:6;:10;;:21;;;;:::i;:::-;10518:9;:13;10528:2;10518:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10502:9;:13;10512:2;10502:13;;;;;;;;;;;;;;;:56;;;;10589:2;10574:41;;10583:4;10574:41;;;10593:21;10604:9;10593:6;:10;;:21;;;;:::i;:::-;10574:41;;;;;;:::i;:::-;;;;;;;;7952:2671;7883:2740;;;:::o;1624:190::-;1710:7;1743:1;1738;:6;;1746:12;1730:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1770:9;1786:1;1782;:5;;;;:::i;:::-;1770:17;;1805:1;1798:8;;;1624:190;;;;;:::o;10745:483::-;5514:4;5505:6;;:13;;;;;;;;;;;;;;;;;;10823:21:::1;10861:1;10847:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10823:40;;10892:4;10874;10879:1;10874:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10918:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10908:4;10913:1;10908:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10951:62;10968:4;10983:15;;;;;;;;;;;11001:11;10951:8;:62::i;:::-;11024:15;;;;;;;;;;;:66;;;11105:11;11131:1;11147:4;11174;11194:15;11024:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10812:416;5550:5:::0;5541:6;;:14;;;;;;;;;;;;;;;;;;10745:483;:::o;11407:92::-;11464:10;;;;;;;;;;;:19;;:27;11484:6;11464:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11407:92;:::o;1822:246::-;1880:7;1909:1;1904;:6;1900:47;;1934:1;1927:8;;;;1900:47;1957:9;1973:1;1969;:5;;;;:::i;:::-;1957:17;;2002:1;1997;1993;:5;;;;:::i;:::-;:10;1985:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2059:1;2052:8;;;1822:246;;;;;:::o;2076:132::-;2134:7;2161:39;2165:1;2168;2161:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2154:46;;2076:132;;;;:::o;10633:104::-;10690:7;10719:1;10715;:5;10714:15;;10728:1;10714:15;;;10724:1;10714:15;10707:22;;10633:104;;;;:::o;1293:179::-;1351:7;1371:9;1387:1;1383;:5;;;;:::i;:::-;1371:17;;1412:1;1407;:6;;1399:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1463:1;1456:8;;;1293:179;;;;:::o;1480:136::-;1538:7;1565:43;1569:1;1572;1565:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1558:50;;1480:136;;;;:::o;2216:189::-;2302:7;2334:1;2330;:5;2337:12;2322:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2361:9;2377:1;2373;:5;;;;:::i;:::-;2361:17;;2396:1;2389:8;;;2216:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:118::-;5503:24;5521:5;5503:24;:::i;:::-;5498:3;5491:37;5416:118;;:::o;5540:222::-;5633:4;5671:2;5660:9;5656:18;5648:26;;5684:71;5752:1;5741:9;5737:17;5728:6;5684:71;:::i;:::-;5540:222;;;;:::o;5768:474::-;5836:6;5844;5893:2;5881:9;5872:7;5868:23;5864:32;5861:119;;;5899:79;;:::i;:::-;5861:119;6019:1;6044:53;6089:7;6080:6;6069:9;6065:22;6044:53;:::i;:::-;6034:63;;5990:117;6146:2;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6117:118;5768:474;;;;;:::o;6248:180::-;6296:77;6293:1;6286:88;6393:4;6390:1;6383:15;6417:4;6414:1;6407:15;6434:102;6476:8;6523:5;6520:1;6516:13;6495:34;;6434:102;;;:::o;6542:848::-;6603:5;6610:4;6634:6;6625:15;;6658:5;6649:14;;6672:712;6693:1;6683:8;6680:15;6672:712;;;6788:4;6783:3;6779:14;6773:4;6770:24;6767:50;;;6797:18;;:::i;:::-;6767:50;6847:1;6837:8;6833:16;6830:451;;;7262:4;7255:5;7251:16;7242:25;;6830:451;7312:4;7306;7302:15;7294:23;;7342:32;7365:8;7342:32;:::i;:::-;7330:44;;6672:712;;;6542:848;;;;;;;:::o;7396:1073::-;7450:5;7641:8;7631:40;;7662:1;7653:10;;7664:5;;7631:40;7690:4;7680:36;;7707:1;7698:10;;7709:5;;7680:36;7776:4;7824:1;7819:27;;;;7860:1;7855:191;;;;7769:277;;7819:27;7837:1;7828:10;;7839:5;;;7855:191;7900:3;7890:8;7887:17;7884:43;;;7907:18;;:::i;:::-;7884:43;7956:8;7953:1;7949:16;7940:25;;7991:3;7984:5;7981:14;7978:40;;;7998:18;;:::i;:::-;7978:40;8031:5;;;7769:277;;8155:2;8145:8;8142:16;8136:3;8130:4;8127:13;8123:36;8105:2;8095:8;8092:16;8087:2;8081:4;8078:12;8074:35;8058:111;8055:246;;;8211:8;8205:4;8201:19;8192:28;;8246:3;8239:5;8236:14;8233:40;;;8253:18;;:::i;:::-;8233:40;8286:5;;8055:246;8326:42;8364:3;8354:8;8348:4;8345:1;8326:42;:::i;:::-;8311:57;;;;8400:4;8395:3;8391:14;8384:5;8381:25;8378:51;;;8409:18;;:::i;:::-;8378:51;8458:4;8451:5;8447:16;8438:25;;7396:1073;;;;;;:::o;8475:281::-;8533:5;8557:23;8575:4;8557:23;:::i;:::-;8549:31;;8601:25;8617:8;8601:25;:::i;:::-;8589:37;;8645:104;8682:66;8672:8;8666:4;8645:104;:::i;:::-;8636:113;;8475:281;;;;:::o;8762:410::-;8802:7;8825:20;8843:1;8825:20;:::i;:::-;8820:25;;8859:20;8877:1;8859:20;:::i;:::-;8854:25;;8914:1;8911;8907:9;8936:30;8954:11;8936:30;:::i;:::-;8925:41;;9115:1;9106:7;9102:15;9099:1;9096:22;9076:1;9069:9;9049:83;9026:139;;9145:18;;:::i;:::-;9026:139;8810:362;8762:410;;;;:::o;9178:182::-;9318:34;9314:1;9306:6;9302:14;9295:58;9178:182;:::o;9366:366::-;9508:3;9529:67;9593:2;9588:3;9529:67;:::i;:::-;9522:74;;9605:93;9694:3;9605:93;:::i;:::-;9723:2;9718:3;9714:12;9707:19;;9366:366;;;:::o;9738:419::-;9904:4;9942:2;9931:9;9927:18;9919:26;;9991:9;9985:4;9981:20;9977:1;9966:9;9962:17;9955:47;10019:131;10145:4;10019:131;:::i;:::-;10011:139;;9738:419;;;:::o;10163:143::-;10220:5;10251:6;10245:13;10236:22;;10267:33;10294:5;10267:33;:::i;:::-;10163:143;;;;:::o;10312:351::-;10382:6;10431:2;10419:9;10410:7;10406:23;10402:32;10399:119;;;10437:79;;:::i;:::-;10399:119;10557:1;10582:64;10638:7;10629:6;10618:9;10614:22;10582:64;:::i;:::-;10572:74;;10528:128;10312:351;;;;:::o;10669:332::-;10790:4;10828:2;10817:9;10813:18;10805:26;;10841:71;10909:1;10898:9;10894:17;10885:6;10841:71;:::i;:::-;10922:72;10990:2;10979:9;10975:18;10966:6;10922:72;:::i;:::-;10669:332;;;;;:::o;11007:60::-;11035:3;11056:5;11049:12;;11007:60;;;:::o;11073:142::-;11123:9;11156:53;11174:34;11183:24;11201:5;11183:24;:::i;:::-;11174:34;:::i;:::-;11156:53;:::i;:::-;11143:66;;11073:142;;;:::o;11221:126::-;11271:9;11304:37;11335:5;11304:37;:::i;:::-;11291:50;;11221:126;;;:::o;11353:134::-;11411:9;11444:37;11475:5;11444:37;:::i;:::-;11431:50;;11353:134;;;:::o;11493:147::-;11588:45;11627:5;11588:45;:::i;:::-;11583:3;11576:58;11493:147;;:::o;11646:348::-;11775:4;11813:2;11802:9;11798:18;11790:26;;11826:79;11902:1;11891:9;11887:17;11878:6;11826:79;:::i;:::-;11915:72;11983:2;11972:9;11968:18;11959:6;11915:72;:::i;:::-;11646:348;;;;;:::o;12000:116::-;12070:21;12085:5;12070:21;:::i;:::-;12063:5;12060:32;12050:60;;12106:1;12103;12096:12;12050:60;12000:116;:::o;12122:137::-;12176:5;12207:6;12201:13;12192:22;;12223:30;12247:5;12223:30;:::i;:::-;12122:137;;;;:::o;12265:345::-;12332:6;12381:2;12369:9;12360:7;12356:23;12352:32;12349:119;;;12387:79;;:::i;:::-;12349:119;12507:1;12532:61;12585:7;12576:6;12565:9;12561:22;12532:61;:::i;:::-;12522:71;;12478:125;12265:345;;;;:::o;12616:173::-;12756:25;12752:1;12744:6;12740:14;12733:49;12616:173;:::o;12795:366::-;12937:3;12958:67;13022:2;13017:3;12958:67;:::i;:::-;12951:74;;13034:93;13123:3;13034:93;:::i;:::-;13152:2;13147:3;13143:12;13136:19;;12795:366;;;:::o;13167:419::-;13333:4;13371:2;13360:9;13356:18;13348:26;;13420:9;13414:4;13410:20;13406:1;13395:9;13391:17;13384:47;13448:131;13574:4;13448:131;:::i;:::-;13440:139;;13167:419;;;:::o;13592:229::-;13732:34;13728:1;13720:6;13716:14;13709:58;13801:12;13796:2;13788:6;13784:15;13777:37;13592:229;:::o;13827:366::-;13969:3;13990:67;14054:2;14049:3;13990:67;:::i;:::-;13983:74;;14066:93;14155:3;14066:93;:::i;:::-;14184:2;14179:3;14175:12;14168:19;;13827:366;;;:::o;14199:419::-;14365:4;14403:2;14392:9;14388:18;14380:26;;14452:9;14446:4;14442:20;14438:1;14427:9;14423:17;14416:47;14480:131;14606:4;14480:131;:::i;:::-;14472:139;;14199:419;;;:::o;14624:223::-;14764:34;14760:1;14752:6;14748:14;14741:58;14833:6;14828:2;14820:6;14816:15;14809:31;14624:223;:::o;14853:366::-;14995:3;15016:67;15080:2;15075:3;15016:67;:::i;:::-;15009:74;;15092:93;15181:3;15092:93;:::i;:::-;15210:2;15205:3;15201:12;15194:19;;14853:366;;;:::o;15225:419::-;15391:4;15429:2;15418:9;15414:18;15406:26;;15478:9;15472:4;15468:20;15464:1;15453:9;15449:17;15442:47;15506:131;15632:4;15506:131;:::i;:::-;15498:139;;15225:419;;;:::o;15650:221::-;15790:34;15786:1;15778:6;15774:14;15767:58;15859:4;15854:2;15846:6;15842:15;15835:29;15650:221;:::o;15877:366::-;16019:3;16040:67;16104:2;16099:3;16040:67;:::i;:::-;16033:74;;16116:93;16205:3;16116:93;:::i;:::-;16234:2;16229:3;16225:12;16218:19;;15877:366;;;:::o;16249:419::-;16415:4;16453:2;16442:9;16438:18;16430:26;;16502:9;16496:4;16492:20;16488:1;16477:9;16473:17;16466:47;16530:131;16656:4;16530:131;:::i;:::-;16522:139;;16249:419;;;:::o;16674:224::-;16814:34;16810:1;16802:6;16798:14;16791:58;16883:7;16878:2;16870:6;16866:15;16859:32;16674:224;:::o;16904:366::-;17046:3;17067:67;17131:2;17126:3;17067:67;:::i;:::-;17060:74;;17143:93;17232:3;17143:93;:::i;:::-;17261:2;17256:3;17252:12;17245:19;;16904:366;;;:::o;17276:419::-;17442:4;17480:2;17469:9;17465:18;17457:26;;17529:9;17523:4;17519:20;17515:1;17504:9;17500:17;17493:47;17557:131;17683:4;17557:131;:::i;:::-;17549:139;;17276:419;;;:::o;17701:222::-;17841:34;17837:1;17829:6;17825:14;17818:58;17910:5;17905:2;17897:6;17893:15;17886:30;17701:222;:::o;17929:366::-;18071:3;18092:67;18156:2;18151:3;18092:67;:::i;:::-;18085:74;;18168:93;18257:3;18168:93;:::i;:::-;18286:2;18281:3;18277:12;18270:19;;17929:366;;;:::o;18301:419::-;18467:4;18505:2;18494:9;18490:18;18482:26;;18554:9;18548:4;18544:20;18540:1;18529:9;18525:17;18518:47;18582:131;18708:4;18582:131;:::i;:::-;18574:139;;18301:419;;;:::o;18726:228::-;18866:34;18862:1;18854:6;18850:14;18843:58;18935:11;18930:2;18922:6;18918:15;18911:36;18726:228;:::o;18960:366::-;19102:3;19123:67;19187:2;19182:3;19123:67;:::i;:::-;19116:74;;19199:93;19288:3;19199:93;:::i;:::-;19317:2;19312:3;19308:12;19301:19;;18960:366;;;:::o;19332:419::-;19498:4;19536:2;19525:9;19521:18;19513:26;;19585:9;19579:4;19575:20;19571:1;19560:9;19556:17;19549:47;19613:131;19739:4;19613:131;:::i;:::-;19605:139;;19332:419;;;:::o;19757:168::-;19897:20;19893:1;19885:6;19881:14;19874:44;19757:168;:::o;19931:366::-;20073:3;20094:67;20158:2;20153:3;20094:67;:::i;:::-;20087:74;;20170:93;20259:3;20170:93;:::i;:::-;20288:2;20283:3;20279:12;20272:19;;19931:366;;;:::o;20303:419::-;20469:4;20507:2;20496:9;20492:18;20484:26;;20556:9;20550:4;20546:20;20542:1;20531:9;20527:17;20520:47;20584:131;20710:4;20584:131;:::i;:::-;20576:139;;20303:419;;;:::o;20728:175::-;20868:27;20864:1;20856:6;20852:14;20845:51;20728:175;:::o;20909:366::-;21051:3;21072:67;21136:2;21131:3;21072:67;:::i;:::-;21065:74;;21148:93;21237:3;21148:93;:::i;:::-;21266:2;21261:3;21257:12;21250:19;;20909:366;;;:::o;21281:419::-;21447:4;21485:2;21474:9;21470:18;21462:26;;21534:9;21528:4;21524:20;21520:1;21509:9;21505:17;21498:47;21562:131;21688:4;21562:131;:::i;:::-;21554:139;;21281:419;;;:::o;21706:191::-;21746:3;21765:20;21783:1;21765:20;:::i;:::-;21760:25;;21799:20;21817:1;21799:20;:::i;:::-;21794:25;;21842:1;21839;21835:9;21828:16;;21863:3;21860:1;21857:10;21854:36;;;21870:18;;:::i;:::-;21854:36;21706:191;;;;:::o;21903:176::-;22043:28;22039:1;22031:6;22027:14;22020:52;21903:176;:::o;22085:366::-;22227:3;22248:67;22312:2;22307:3;22248:67;:::i;:::-;22241:74;;22324:93;22413:3;22324:93;:::i;:::-;22442:2;22437:3;22433:12;22426:19;;22085:366;;;:::o;22457:419::-;22623:4;22661:2;22650:9;22646:18;22638:26;;22710:9;22704:4;22700:20;22696:1;22685:9;22681:17;22674:47;22738:131;22864:4;22738:131;:::i;:::-;22730:139;;22457:419;;;:::o;22882:233::-;22921:3;22944:24;22962:5;22944:24;:::i;:::-;22935:33;;22990:66;22983:5;22980:77;22977:103;;23060:18;;:::i;:::-;22977:103;23107:1;23100:5;23096:13;23089:20;;22882:233;;;:::o;23121:182::-;23261:34;23257:1;23249:6;23245:14;23238:58;23121:182;:::o;23309:366::-;23451:3;23472:67;23536:2;23531:3;23472:67;:::i;:::-;23465:74;;23548:93;23637:3;23548:93;:::i;:::-;23666:2;23661:3;23657:12;23650:19;;23309:366;;;:::o;23681:419::-;23847:4;23885:2;23874:9;23870:18;23862:26;;23934:9;23928:4;23924:20;23920:1;23909:9;23905:17;23898:47;23962:131;24088:4;23962:131;:::i;:::-;23954:139;;23681:419;;;:::o;24106:173::-;24246:25;24242:1;24234:6;24230:14;24223:49;24106:173;:::o;24285:366::-;24427:3;24448:67;24512:2;24507:3;24448:67;:::i;:::-;24441:74;;24524:93;24613:3;24524:93;:::i;:::-;24642:2;24637:3;24633:12;24626:19;;24285:366;;;:::o;24657:419::-;24823:4;24861:2;24850:9;24846:18;24838:26;;24910:9;24904:4;24900:20;24896:1;24885:9;24881:17;24874:47;24938:131;25064:4;24938:131;:::i;:::-;24930:139;;24657:419;;;:::o;25082:194::-;25122:4;25142:20;25160:1;25142:20;:::i;:::-;25137:25;;25176:20;25194:1;25176:20;:::i;:::-;25171:25;;25220:1;25217;25213:9;25205:17;;25244:1;25238:4;25235:11;25232:37;;;25249:18;;:::i;:::-;25232:37;25082:194;;;;:::o;25282:180::-;25330:77;25327:1;25320:88;25427:4;25424:1;25417:15;25451:4;25448:1;25441:15;25468:180;25516:77;25513:1;25506:88;25613:4;25610:1;25603:15;25637:4;25634:1;25627:15;25654:143;25711:5;25742:6;25736:13;25727:22;;25758:33;25785:5;25758:33;:::i;:::-;25654:143;;;;:::o;25803:351::-;25873:6;25922:2;25910:9;25901:7;25897:23;25893:32;25890:119;;;25928:79;;:::i;:::-;25890:119;26048:1;26073:64;26129:7;26120:6;26109:9;26105:22;26073:64;:::i;:::-;26063:74;;26019:128;25803:351;;;;:::o;26160:85::-;26205:7;26234:5;26223:16;;26160:85;;;:::o;26251:158::-;26309:9;26342:61;26360:42;26369:32;26395:5;26369:32;:::i;:::-;26360:42;:::i;:::-;26342:61;:::i;:::-;26329:74;;26251:158;;;:::o;26415:147::-;26510:45;26549:5;26510:45;:::i;:::-;26505:3;26498:58;26415:147;;:::o;26568:114::-;26635:6;26669:5;26663:12;26653:22;;26568:114;;;:::o;26688:184::-;26787:11;26821:6;26816:3;26809:19;26861:4;26856:3;26852:14;26837:29;;26688:184;;;;:::o;26878:132::-;26945:4;26968:3;26960:11;;26998:4;26993:3;26989:14;26981:22;;26878:132;;;:::o;27016:108::-;27093:24;27111:5;27093:24;:::i;:::-;27088:3;27081:37;27016:108;;:::o;27130:179::-;27199:10;27220:46;27262:3;27254:6;27220:46;:::i;:::-;27298:4;27293:3;27289:14;27275:28;;27130:179;;;;:::o;27315:113::-;27385:4;27417;27412:3;27408:14;27400:22;;27315:113;;;:::o;27464:732::-;27583:3;27612:54;27660:5;27612:54;:::i;:::-;27682:86;27761:6;27756:3;27682:86;:::i;:::-;27675:93;;27792:56;27842:5;27792:56;:::i;:::-;27871:7;27902:1;27887:284;27912:6;27909:1;27906:13;27887:284;;;27988:6;27982:13;28015:63;28074:3;28059:13;28015:63;:::i;:::-;28008:70;;28101:60;28154:6;28101:60;:::i;:::-;28091:70;;27947:224;27934:1;27931;27927:9;27922:14;;27887:284;;;27891:14;28187:3;28180:10;;27588:608;;;27464:732;;;;:::o;28202:831::-;28465:4;28503:3;28492:9;28488:19;28480:27;;28517:71;28585:1;28574:9;28570:17;28561:6;28517:71;:::i;:::-;28598:80;28674:2;28663:9;28659:18;28650:6;28598:80;:::i;:::-;28725:9;28719:4;28715:20;28710:2;28699:9;28695:18;28688:48;28753:108;28856:4;28847:6;28753:108;:::i;:::-;28745:116;;28871:72;28939:2;28928:9;28924:18;28915:6;28871:72;:::i;:::-;28953:73;29021:3;29010:9;29006:19;28997:6;28953:73;:::i;:::-;28202:831;;;;;;;;:::o;29039:180::-;29087:77;29084:1;29077:88;29184:4;29181:1;29174:15;29208:4;29205:1;29198:15;29225:185;29265:1;29282:20;29300:1;29282:20;:::i;:::-;29277:25;;29316:20;29334:1;29316:20;:::i;:::-;29311:25;;29355:1;29345:35;;29360:18;;:::i;:::-;29345:35;29402:1;29399;29395:9;29390:14;;29225:185;;;;:::o;29416:220::-;29556:34;29552:1;29544:6;29540:14;29533:58;29625:3;29620:2;29612:6;29608:15;29601:28;29416:220;:::o;29642:366::-;29784:3;29805:67;29869:2;29864:3;29805:67;:::i;:::-;29798:74;;29881:93;29970:3;29881:93;:::i;:::-;29999:2;29994:3;29990:12;29983:19;;29642:366;;;:::o;30014:419::-;30180:4;30218:2;30207:9;30203:18;30195:26;;30267:9;30261:4;30257:20;30253:1;30242:9;30238:17;30231:47;30295:131;30421:4;30295:131;:::i;:::-;30287:139;;30014:419;;;:::o;30439:177::-;30579:29;30575:1;30567:6;30563:14;30556:53;30439:177;:::o;30622:366::-;30764:3;30785:67;30849:2;30844:3;30785:67;:::i;:::-;30778:74;;30861:93;30950:3;30861:93;:::i;:::-;30979:2;30974:3;30970:12;30963:19;;30622:366;;;:::o;30994:419::-;31160:4;31198:2;31187:9;31183:18;31175:26;;31247:9;31241:4;31237:20;31233:1;31222:9;31218:17;31211:47;31275:131;31401:4;31275:131;:::i;:::-;31267:139;;30994:419;;;:::o
Swarm Source
ipfs://59d7a124a0fc042ec00b87df1a82ca67e39920fa73fd852ced5194a69d1a8a35
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.