ERC-20
Overview
Max Total Supply
1,000,000,000 RINGS
Holders
78
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
17,571,892.120364765 RINGSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Rings
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-27 */ /** $RINGS - Rings Earn $S for holding $RINGS - 5/5 Automated Sonic Rewards Taxes. https://x.com/rings_memecoin https://t.me/rings_memecoin https://sonicrings.meme/ */ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function totalSupply() external view returns (uint256); function circulatingSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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 ); } abstract contract Ownable { address internal owner; constructor(address _owner) { owner = _owner; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } function isOwner(address account) public view returns (bool) { return account == owner; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IFactory { function createPair(address tokenA, address tokenB, bool stable) external returns (address pair); function getPair(address tokenA, address tokenB, bool stable) external view returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Rings is IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Rings"; string private constant _symbol = "RINGS"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000000 * (10**_decimals); uint256 private _maxTxAmount = (_totalSupply * 200) / 10000; uint256 private _maxSellAmount = (_totalSupply * 200) / 10000; uint256 private _maxWalletToken = (_totalSupply * 200) / 10000; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isDividendExempt; mapping(address => bool) private isBot; IRouter router; address public pair; bool private tradingAllowed = false; uint256 private liquidityFee = 0; uint256 private marketingFee = 0; uint256 private rewardsFee = 400; uint256 private developmentFee = 1600; uint256 private burnFee = 0; uint256 private totalFee = 2000; uint256 private sellFee = 3000; uint256 private transferFee = 2000; uint256 private denominator = 10000; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; uint256 private swapThreshold = (_totalSupply * 500) / 100000; uint256 private _minTokenAmount = (_totalSupply * 10) / 100000; modifier lockTheSwap() { swapping = true; _; swapping = false; } address public reward = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 internal dividendsPerShare; uint256 internal dividendsPerShareAccuracyFactor = 10**36; address[] shareholders; mapping(address => uint256) shareholderIndexes; mapping(address => uint256) shareholderClaims; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } mapping(address => Share) public shares; uint256 internal currentIndex; uint256 public minPeriod = 5 minutes; uint256 public minDistribution = 1 * (10**16); uint256 public distributorGas = 350000; function _claimDividend() external { distributeDividend(msg.sender); } address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal constant development_receiver = 0xECC11730630150e117E67f71b97D014A4911F059; address internal constant marketing_receiver = 0xECC11730630150e117E67f71b97D014A4911F059; address internal constant liquidity_receiver = 0xECC11730630150e117E67f71b97D014A4911F059; constructor() Ownable(msg.sender) { IRouter _router = IRouter(0x1D368773735ee1E678950B7A97bcA2CafB330CDc); router = _router; isFeeExempt[address(this)] = true; isFeeExempt[liquidity_receiver] = true; isFeeExempt[marketing_receiver] = true; isFeeExempt[msg.sender] = true; //isDividendExempt[address(pair)] = true; isDividendExempt[address(msg.sender)] = true; isDividendExempt[address(this)] = true; isDividendExempt[address(DEAD)] = true; isDividendExempt[address(0)] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function getOwner() external view override returns (address) { return owner; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function isCont(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function setisExempt(address _address, bool _enabled) external onlyOwner { isFeeExempt[_address] = _enabled; } function setPair(address _address) external onlyOwner { pair = _address; } function setRouter(address _address) external onlyOwner { IRouter _router = IRouter(_address); router = _router; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function circulatingSupply() public view override returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0))); } function startTrading() external onlyOwner { require(!tradingAllowed, "trading is already open"); tradingAllowed = true; } function preTxCheck( address sender, address recipient, uint256 amount ) internal view { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require( amount > uint256(0), "Transfer amount must be greater than zero" ); require( amount <= balanceOf(sender), "You are trying to transfer more than your balance" ); } function _transfer( address sender, address recipient, uint256 amount ) private { preTxCheck(sender, recipient, amount); checkTradingAllowed(sender, recipient); checkMaxWallet(sender, recipient, amount); swapbackCounters(sender, recipient); checkTxLimit(sender, recipient, amount); swapBack(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); if (!isDividendExempt[sender]) { setShare(sender, balanceOf(sender)); } if (!isDividendExempt[recipient]) { setShare(recipient, balanceOf(recipient)); } if (shares[recipient].amount > 0) { distributeDividend(recipient); } process(distributorGas); } function setStructure( uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans ) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; rewardsFee = _rewards; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans; require( totalFee <= denominator.div(5) && sellFee <= denominator.div(5) && transferFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%" ); } function setisBot(address _address, bool _enabled) external onlyOwner { require( _address != address(pair) && _address != address(router) && _address != address(this), "Ineligible Address" ); isBot[_address] = _enabled; } function setParameters( uint256 _buy, uint256 _trans, uint256 _wallet ) external onlyOwner { uint256 newTx = (totalSupply() * _buy) / 10000; uint256 newTransfer = (totalSupply() * _trans) / 10000; uint256 newWallet = (totalSupply() * _wallet) / 10000; _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet; uint256 limit = totalSupply().mul(5).div(1000); require( newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%" ); } function checkTradingAllowed(address sender, address recipient) internal view { if (!isFeeExempt[sender] && !isFeeExempt[recipient]) { require(tradingAllowed, "tradingAllowed"); } } function checkMaxWallet( address sender, address recipient, uint256 amount ) internal view { if ( !isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD) ) { require( (_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount." ); } } function swapbackCounters(address sender, address recipient) internal { if (recipient == pair && !isFeeExempt[sender]) { swapTimes += uint256(1); } } function checkTxLimit( address sender, address recipient, uint256 amount ) internal view { if (sender != pair) { require( amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded" ); } require( amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded" ); } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = ( liquidityFee.add(1).add(marketingFee).add(developmentFee).add( rewardsFee ) ).mul(2); uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div( _denominator ); uint256 toSwap = tokens.sub(tokensToAddLiquidityWith); uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee)); uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee); if (ETHToAddLiquidityWith > uint256(0)) { addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); } uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee); if (marketingAmount > 0) { payable(marketing_receiver).transfer(marketingAmount); } uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee); if (rewardsAmount > 0) { deposit(rewardsAmount); } if (address(this).balance > uint256(0)) { payable(development_receiver).transfer(address(this).balance); } } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, liquidity_receiver, block.timestamp ); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function shouldSwapBack( address sender, address recipient, uint256 amount ) internal view returns (bool) { bool aboveMin = amount >= _minTokenAmount; bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(2) && aboveThreshold; } function swapBack( address sender, address recipient, uint256 amount ) internal { if (shouldSwapBack(sender, recipient, amount)) { swapAndLiquify(swapThreshold); swapTimes = uint256(0); } } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender] && !isFeeExempt[recipient]; } function getTotalFee(address sender, address recipient) internal view returns (uint256) { if (isBot[sender] || isBot[recipient]) { return denominator.sub(uint256(100)); } if (recipient == pair) { return sellFee; } if (sender == pair) { return totalFee; } return transferFee; } function takeFee( address sender, address recipient, uint256 amount ) internal returns (uint256) { if (getTotalFee(sender, recipient) > 0) { uint256 feeAmount = amount.div(denominator).mul( getTotalFee(sender, recipient) ); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if (burnFee > uint256(0)) { _transfer( address(this), address(DEAD), amount.div(denominator).mul(burnFee) ); } return amount.sub(feeAmount); } return amount; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, msg.sender, _allowances[sender][msg.sender].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 setisDividendExempt(address holder, bool exempt) external onlyOwner { isDividendExempt[holder] = exempt; if (exempt) { setShare(holder, 0); } else { setShare(holder, balanceOf(holder)); } } function setShare(address shareholder, uint256 amount) internal { if (amount > 0 && shares[shareholder].amount == 0) { addShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } function deposit(uint256 amountETH) internal { uint256 balanceBefore = IERC20(reward).balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(reward); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amountETH }(0, path, address(this), block.timestamp); uint256 amount = IERC20(reward).balanceOf(address(this)).sub( balanceBefore ); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add( dividendsPerShareAccuracyFactor.mul(amount).div(totalShares) ); } function process(uint256 gas) internal { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (shouldDistribute(shareholders[currentIndex])) { distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function rescueERC20(address _address, uint256 _amount) external { IERC20(_address).transfer(marketing_receiver, _amount); } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function totalRewardsDistributed(address _wallet) external view returns (uint256) { address shareholder = _wallet; return uint256(shares[shareholder].totalRealised); } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed.add(amount); IERC20(reward).transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder] .totalRealised .add(amount); shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends( shares[shareholder].amount ); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[ shareholders.length - 1 ]; shareholderIndexes[ shareholders[shareholders.length - 1] ] = shareholderIndexes[shareholder]; shareholders.pop(); } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas ) external onlyOwner { minPeriod = _minPeriod; minDistribution = _minDistribution; distributorGas = _distributorGas; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009600a610012919061073e565b633b9aca006100219190610788565b60015561271060c86001546100369190610788565b61004091906107f6565b60025561271060c86001546100559190610788565b61005f91906107f6565b60035561271060c86001546100749190610788565b61007e91906107f6565b6004555f600b60146101000a81548160ff0219169083151502179055505f600c555f600d55610190600e55610640600f555f6010556107d0601155610bb86012556107d0601355612710601455600160155f6101000a81548160ff021916908315150217905550620186a06101f46001546100f99190610788565b61010391906107f6565b601855620186a0600a6001546101199190610788565b61012391906107f6565b60195573039e2fb66102314ce7b64ce5ce3e5183bc94ad38601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000601f5561012c602555662386f26fc10000602655620557306027553480156101b0575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505f731d368773735ee1e678950b7a97bca2cafb330cdc905080600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f73ecc11730630150e117e67f71b97d014a4911f05973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f73ecc11730630150e117e67f71b97d014a4911f05973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516105bf9190610835565b60405180910390a35061084e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561064f5780860481111561062b5761062a6105cd565b5b600185161561063a5780820291505b8081029050610648856105fa565b945061060f565b94509492505050565b5f826106675760019050610722565b81610674575f9050610722565b816001811461068a5760028114610694576106c3565b6001915050610722565b60ff8411156106a6576106a56105cd565b5b8360020a9150848211156106bd576106bc6105cd565b5b50610722565b5060208310610133831016604e8410600b84101617156106f85782820a9050838111156106f3576106f26105cd565b5b610722565b6107058484846001610606565b9250905081840481111561071c5761071b6105cd565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61074882610729565b915061075383610732565b92506107807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610658565b905092915050565b5f61079282610729565b915061079d83610729565b92508282026107ab81610729565b915082820484148315176107c2576107c16105cd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61080082610729565b915061080b83610729565b92508261081b5761081a6107c9565b5b828204905092915050565b61082f81610729565b82525050565b5f6020820190506108485f830184610826565b92915050565b614d028061085b5f395ff3fe60806040526004361061021d575f3560e01c80638187f51611610122578063c0d78655116100aa578063e2d6f94c1161006e578063e2d6f94c146107fa578063ef43b02b14610822578063efca2eed1461084a578063f2fde38b14610874578063ffd49c841461089c57610224565b8063c0d7865514610706578063c942435d1461072e578063ca89b89914610744578063ce7c2ac214610780578063dd62ed3e146107be57610224565b80639358928b116100f15780639358928b1461062257806395d89b411461064c578063997664d714610676578063a8aa1b31146106a0578063a9059cbb146106ca57610224565b80638187f51614610580578063893d20e8146105a85780638c41180e146105d25780638cd4426d146105fa57610224565b8063313ce567116101a55780634355855a116101745780634355855a1461048c57806348ff2b8b146104c85780634fab0ae8146104f057806360e719621461051a57806370a082311461054457610224565b8063313ce567146103d457806334c5d2ce146103fe5780633a98ef39146104265780633f4218e01461045057610224565b8063228cb733116101ec578063228cb733146102e057806323b872dd1461030a57806328fd319814610346578063293230b8146103825780632f54bf6e1461039857610224565b806306fdde0314610228578063095ea7b3146102525780630ca61cb11461028e57806318160ddd146102b657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108c6565b6040516102499190613bc9565b60405180910390f35b34801561025d575f80fd5b5061027860048036038101906102739190613c7a565b610903565b6040516102859190613cd2565b60405180910390f35b348015610299575f80fd5b506102b460048036038101906102af9190613ceb565b610919565b005b3480156102c1575f80fd5b506102ca61097b565b6040516102d79190613d4a565b60405180910390f35b3480156102eb575f80fd5b506102f4610984565b6040516103019190613d72565b60405180910390f35b348015610315575f80fd5b50610330600480360381019061032b9190613d8b565b6109a9565b60405161033d9190613cd2565b60405180910390f35b348015610351575f80fd5b5061036c60048036038101906103679190613ddb565b610a6f565b6040516103799190613d4a565b60405180910390f35b34801561038d575f80fd5b50610396610b7b565b005b3480156103a3575f80fd5b506103be60048036038101906103b99190613ddb565b610c30565b6040516103cb9190613cd2565b60405180910390f35b3480156103df575f80fd5b506103e8610c87565b6040516103f59190613e21565b60405180910390f35b348015610409575f80fd5b50610424600480360381019061041f9190613ceb565b610c8f565b005b348015610431575f80fd5b5061043a610deb565b6040516104479190613d4a565b60405180910390f35b34801561045b575f80fd5b5061047660048036038101906104719190613ddb565b610df1565b6040516104839190613cd2565b60405180910390f35b348015610497575f80fd5b506104b260048036038101906104ad9190613ddb565b610e0e565b6040516104bf9190613cd2565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190613e64565b610e2b565b005b3480156104fb575f80fd5b50610504610ecb565b6040516105119190613d4a565b60405180910390f35b348015610525575f80fd5b5061052e610ed1565b60405161053b9190613d4a565b60405180910390f35b34801561054f575f80fd5b5061056a60048036038101906105659190613ddb565b610ed7565b6040516105779190613d4a565b60405180910390f35b34801561058b575f80fd5b506105a660048036038101906105a19190613ddb565b610f1d565b005b3480156105b3575f80fd5b506105bc610fa8565b6040516105c99190613d72565b60405180910390f35b3480156105dd575f80fd5b506105f860048036038101906105f39190613e64565b610fcf565b005b348015610605575f80fd5b50610620600480360381019061061b9190613c7a565b611190565b005b34801561062d575f80fd5b50610636611224565b6040516106439190613d4a565b60405180910390f35b348015610657575f80fd5b50610660611263565b60405161066d9190613bc9565b60405180910390f35b348015610681575f80fd5b5061068a6112a0565b6040516106979190613d4a565b60405180910390f35b3480156106ab575f80fd5b506106b46112a6565b6040516106c19190613d72565b60405180910390f35b3480156106d5575f80fd5b506106f060048036038101906106eb9190613c7a565b6112cb565b6040516106fd9190613cd2565b60405180910390f35b348015610711575f80fd5b5061072c60048036038101906107279190613ddb565b6112e1565b005b348015610739575f80fd5b50610742611371565b005b34801561074f575f80fd5b5061076a60048036038101906107659190613ddb565b61137c565b6040516107779190613d4a565b60405180910390f35b34801561078b575f80fd5b506107a660048036038101906107a19190613ddb565b6113ca565b6040516107b593929190613ea2565b60405180910390f35b3480156107c9575f80fd5b506107e460048036038101906107df9190613ed7565b6113f0565b6040516107f19190613d4a565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190613f15565b611472565b005b34801561082d575f80fd5b5061084860048036038101906108439190613e64565b61159c565b005b348015610855575f80fd5b5061085e611664565b60405161086b9190613d4a565b60405180910390f35b34801561087f575f80fd5b5061089a60048036038101906108959190614001565b61166a565b005b3480156108a7575f80fd5b506108b061172b565b6040516108bd9190613d4a565b60405180910390f35b60606040518060400160405280600581526020017f52696e6773000000000000000000000000000000000000000000000000000000815250905090565b5f61090f338484611731565b6001905092915050565b61092233610c30565b610961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095890614076565b60405180910390fd5b826025819055508160268190555080602781905550505050565b5f600154905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6109b58484846118f4565b610a648433610a5f85604051806060016040528060288152602001614ca56028913960065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c029092919063ffffffff16565b611731565b600190509392505050565b5f8060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403610abe575f9050610b76565b5f610b0760235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611c56565b90505f60235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101549050808211610b5e575f92505050610b76565b610b718183611c8790919063ffffffff16565b925050505b919050565b610b8433610c30565b610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90614076565b60405180910390fd5b600b60149054906101000a900460ff1615610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a906140de565b60405180910390fd5b6001600b60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b610c9833610c30565b610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90614076565b60405180910390fd5b5f61271084610ce461097b565b610cee9190614129565b610cf89190614197565b90505f61271084610d0761097b565b610d119190614129565b610d1b9190614197565b90505f61271084610d2a61097b565b610d349190614129565b610d3e9190614197565b90508260028190555081600381905550806004819055505f610d856103e8610d776005610d6961097b565b611c9c90919063ffffffff16565b611cb190919063ffffffff16565b9050808410158015610d975750808310155b8015610da35750808210155b610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990614237565b60405180910390fd5b50505050505050565b601b5481565b6007602052805f5260405f205f915054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b610e3433610c30565b610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90614076565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60265481565b60275481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f2633610c30565b610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c90614076565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fd833610c30565b611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e90614076565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156110c15750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110f957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f9061429f565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73ecc11730630150e117e67f71b97d014a4911f059836040518363ffffffff1660e01b81526004016111df9291906142bd565b6020604051808303815f875af11580156111fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121f91906142f8565b505050565b5f61125e6112315f610ed7565b61125061123f61dead610ed7565b600154611c8790919063ffffffff16565b611c8790919063ffffffff16565b905090565b60606040518060400160405280600581526020017f52494e4753000000000000000000000000000000000000000000000000000000815250905090565b601c5481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6112d73384846118f4565b6001905092915050565b6112ea33610c30565b611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090614076565b60405180910390fd5b5f81905080600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61137a33611cc6565b565b5f8082905060235f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020154915050919050565b6023602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61147b33610c30565b6114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b190614076565b60405180910390fd5b87600c8190555086600d819055508560108190555084600e8190555083600f819055508260118190555081601281905550806013819055506115086005601454611cb190919063ffffffff16565b60115411158015611530575061152a6005601454611cb190919063ffffffff16565b60125411155b8015611553575061154d6005601454611cb190919063ffffffff16565b60135411155b611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990614393565b60405180910390fd5b5050505050505050565b6115a533610c30565b6115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614076565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550801561164d57611648825f611f44565b611660565b61165f8261165a84610ed7565b611f44565b5b5050565b601d5481565b61167333610c30565b6116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990614076565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611720919061440c565b60405180910390a150565b60255481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690614495565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180490614523565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118e79190613d4a565b60405180910390a3505050565b6118ff838383612141565b61190983836122af565b6119148383836123a6565b61191e8383612576565b61192983838361263c565b611934838383612864565b6119848160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c8790919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6119d0848461288c565b6119da57816119e6565b6119e5848484612933565b5b9050611a388160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ad490919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ad69190613d4a565b60405180910390a360085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b3f57611b3e84611b3986610ed7565b611f44565b5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ba057611b9f83611b9a85610ed7565b611f44565b5b5f60235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01541115611bf157611bf083611cc6565b5b611bfc602754612ae9565b50505050565b5f838311158290611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c409190613bc9565b60405180910390fd5b5082840390509392505050565b5f611c80601f54611c72601e5485611c9c90919063ffffffff16565b611cb190919063ffffffff16565b9050919050565b5f8183611c949190614541565b905092915050565b5f8183611ca99190614129565b905092915050565b5f8183611cbe9190614197565b905092915050565b5f60235f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01540315611f41575f611d1782610a6f565b90505f811115611f3f57611d3681601d54612ad490919063ffffffff16565b601d81905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611d989291906142bd565b6020604051808303815f875af1158015611db4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd891906142f8565b504260225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e6e8160235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020154612ad490919063ffffffff16565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020181905550611efa60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611c56565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505b50565b5f81118015611f9157505f60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154145b15611fa457611f9f82612c18565b612001565b5f81148015611ff157505f60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154115b1561200057611fff82612cc2565b5b5b6120678161205960235f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154601b54611c8790919063ffffffff16565b612ad490919063ffffffff16565b601b819055508060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01819055506120f960235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611c56565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a6906145e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221490614672565b60405180910390fd5b5f811161225f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225690614700565b60405180910390fd5b61226883610ed7565b8111156122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a19061478e565b60405180910390fd5b505050565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561234d575060075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156123a257600b60149054906101000a900460ff166123a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612398906147f6565b60405180910390fd5b5b5050565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612444575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561249d5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125715760045461252f8260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ad490919063ffffffff16565b1115612570576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125679061485e565b60405180910390fd5b5b505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015612619575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561263857600160165f828254612630919061487c565b925050819055505b5050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461277857600354811115806126e7575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612738575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e906148f9565b60405180910390fd5b5b600254811115806127cf575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612820575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61285f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612856906148f9565b60405180910390fd5b505050565b61286f838383612eb7565b156128875761287f601854612fe8565b5f6016819055505b505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561292b575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f8061293f8585613271565b1115612ac9575f6129766129538686613271565b61296860145486611cb190919063ffffffff16565b611c9c90919063ffffffff16565b90506129c88160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ad490919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a669190613d4a565b60405180910390a35f6010541115612aae57612aad3061dead612aa8601054612a9a60145489611cb190919063ffffffff16565b611c9c90919063ffffffff16565b6118f4565b5b612ac18184611c8790919063ffffffff16565b915050612acd565b8190505b9392505050565b5f8183612ae1919061487c565b905092915050565b5f60208054905090505f8103612aff5750612c15565b5f805a90505f5b8483108015612b1457508381105b15612c10578360245410612b2a575f6024819055505b612b70602060245481548110612b4357612b42614917565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166133f7565b15612bbc57612bbb602060245481548110612b8e57612b8d614917565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611cc6565b5b612be1612bd25a84611c8790919063ffffffff16565b84612ad490919063ffffffff16565b92505a915060245f815480929190612bf890614944565b91905055508080612c0890614944565b915050612b06565b505050505b50565b60208054905060215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550602081908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60206001602080549050612cd69190614541565b81548110612ce757612ce6614917565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481548110612d6057612d5f614917565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060215f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460215f60206001602080549050612dfa9190614541565b81548110612e0b57612e0a614917565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506020805480612e8257612e8161498b565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b5f8060195483101590505f601854612ece30610ed7565b1015905060175f9054906101000a900460ff16158015612ef9575060155f9054906101000a900460ff165b8015612f115750600b60149054906101000a900460ff165b8015612f1a5750815b8015612f6d575060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fc55750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612fd45750600260165410155b8015612fdd5750805b925050509392505050565b600160175f6101000a81548160ff0219169083151502179055505f613068600261305a600e5461304c600f5461303e600d546130306001600c54612ad490919063ffffffff16565b612ad490919063ffffffff16565b612ad490919063ffffffff16565b612ad490919063ffffffff16565b611c9c90919063ffffffff16565b90505f61309282613084600c5486611c9c90919063ffffffff16565b611cb190919063ffffffff16565b90505f6130a88285611c8790919063ffffffff16565b90505f4790506130b782613461565b5f6130cb8247611c8790919063ffffffff16565b90505f6130f56130e6600c5488611c8790919063ffffffff16565b83611cb190919063ffffffff16565b90505f61310d600c5483611c9c90919063ffffffff16565b90505f811115613122576131218682613697565b5b5f61314b600d5461313d600286611c9c90919063ffffffff16565b611c9c90919063ffffffff16565b90505f8111156131ae5773ecc11730630150e117e67f71b97d014a4911f05973ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156131ac573d5f803e3d5ffd5b505b5f6131d7600e546131c9600287611c9c90919063ffffffff16565b611c9c90919063ffffffff16565b90505f8111156131eb576131ea81613784565b5b5f47111561324c5773ecc11730630150e117e67f71b97d014a4911f05973ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561324a573d5f803e3d5ffd5b505b5050505050505050505f60175f6101000a81548160ff02191690831515021790555050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061330d575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561332f576133286064601454611c8790919063ffffffff16565b90506133f1565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361338d5760125490506133f1565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133eb5760115490506133f1565b60135490505b92915050565b5f4260255460225f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613444919061487c565b10801561345a575060265461345883610a6f565b115b9050919050565b5f600267ffffffffffffffff81111561347d5761347c6149b8565b5b6040519080825280602002602001820160405280156134ab5781602001602082028036833780820191505090505b50905030815f815181106134c2576134c1614917565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613566573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061358a91906149f9565b8160018151811061359e5761359d614917565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061360430600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611731565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613666959493929190614b14565b5f604051808303815f87803b15801561367d575f80fd5b505af115801561368f573d5f803e3d5ffd5b505050505050565b6136c330600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611731565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8073ecc11730630150e117e67f71b97d014a4911f059426040518863ffffffff1660e01b815260040161373c96959493929190614b6c565b60606040518083038185885af1158015613758573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061377d9190614bdf565b5050505050565b5f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137df9190613d72565b602060405180830381865afa1580156137fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061381e9190614c2f565b90505f600267ffffffffffffffff81111561383c5761383b6149b8565b5b60405190808252806020026020018201604052801561386a5781602001602082028036833780820191505090505b509050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138fb91906149f9565b815f8151811061390e5761390d614917565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061397e5761397d614917565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95845f8430426040518663ffffffff1660e01b8152600401613a199493929190614c5a565b5f604051808303818588803b158015613a30575f80fd5b505af1158015613a42573d5f803e3d5ffd5b50505050505f613af383601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613aa69190613d72565b602060405180830381865afa158015613ac1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ae59190614c2f565b611c8790919063ffffffff16565b9050613b0a81601c54612ad490919063ffffffff16565b601c81905550613b4d613b3c601b54613b2e84601f54611c9c90919063ffffffff16565b611cb190919063ffffffff16565b601e54612ad490919063ffffffff16565b601e8190555050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613b9b82613b59565b613ba58185613b63565b9350613bb5818560208601613b73565b613bbe81613b81565b840191505092915050565b5f6020820190508181035f830152613be18184613b91565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613c1682613bed565b9050919050565b613c2681613c0c565b8114613c30575f80fd5b50565b5f81359050613c4181613c1d565b92915050565b5f819050919050565b613c5981613c47565b8114613c63575f80fd5b50565b5f81359050613c7481613c50565b92915050565b5f8060408385031215613c9057613c8f613be9565b5b5f613c9d85828601613c33565b9250506020613cae85828601613c66565b9150509250929050565b5f8115159050919050565b613ccc81613cb8565b82525050565b5f602082019050613ce55f830184613cc3565b92915050565b5f805f60608486031215613d0257613d01613be9565b5b5f613d0f86828701613c66565b9350506020613d2086828701613c66565b9250506040613d3186828701613c66565b9150509250925092565b613d4481613c47565b82525050565b5f602082019050613d5d5f830184613d3b565b92915050565b613d6c81613c0c565b82525050565b5f602082019050613d855f830184613d63565b92915050565b5f805f60608486031215613da257613da1613be9565b5b5f613daf86828701613c33565b9350506020613dc086828701613c33565b9250506040613dd186828701613c66565b9150509250925092565b5f60208284031215613df057613def613be9565b5b5f613dfd84828501613c33565b91505092915050565b5f60ff82169050919050565b613e1b81613e06565b82525050565b5f602082019050613e345f830184613e12565b92915050565b613e4381613cb8565b8114613e4d575f80fd5b50565b5f81359050613e5e81613e3a565b92915050565b5f8060408385031215613e7a57613e79613be9565b5b5f613e8785828601613c33565b9250506020613e9885828601613e50565b9150509250929050565b5f606082019050613eb55f830186613d3b565b613ec26020830185613d3b565b613ecf6040830184613d3b565b949350505050565b5f8060408385031215613eed57613eec613be9565b5b5f613efa85828601613c33565b9250506020613f0b85828601613c33565b9150509250929050565b5f805f805f805f80610100898b031215613f3257613f31613be9565b5b5f613f3f8b828c01613c66565b9850506020613f508b828c01613c66565b9750506040613f618b828c01613c66565b9650506060613f728b828c01613c66565b9550506080613f838b828c01613c66565b94505060a0613f948b828c01613c66565b93505060c0613fa58b828c01613c66565b92505060e0613fb68b828c01613c66565b9150509295985092959890939650565b5f613fd082613bed565b9050919050565b613fe081613fc6565b8114613fea575f80fd5b50565b5f81359050613ffb81613fd7565b92915050565b5f6020828403121561401657614015613be9565b5b5f61402384828501613fed565b91505092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f614060600683613b63565b915061406b8261402c565b602082019050919050565b5f6020820190508181035f83015261408d81614054565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6140c8601783613b63565b91506140d382614094565b602082019050919050565b5f6020820190508181035f8301526140f5816140bc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61413382613c47565b915061413e83613c47565b925082820261414c81613c47565b91508282048414831517614163576141626140fc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141a182613c47565b91506141ac83613c47565b9250826141bc576141bb61416a565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f614221602e83613b63565b915061422c826141c7565b604082019050919050565b5f6020820190508181035f83015261424e81614215565b9050919050565b7f496e656c696769626c65204164647265737300000000000000000000000000005f82015250565b5f614289601283613b63565b915061429482614255565b602082019050919050565b5f6020820190508181035f8301526142b68161427d565b9050919050565b5f6040820190506142d05f830185613d63565b6142dd6020830184613d3b565b9392505050565b5f815190506142f281613e3a565b92915050565b5f6020828403121561430d5761430c613be9565b5b5f61431a848285016142e4565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f61437d602c83613b63565b915061438882614323565b604082019050919050565b5f6020820190508181035f8301526143aa81614371565b9050919050565b5f819050919050565b5f6143d46143cf6143ca84613bed565b6143b1565b613bed565b9050919050565b5f6143e5826143ba565b9050919050565b5f6143f6826143db565b9050919050565b614406816143ec565b82525050565b5f60208201905061441f5f8301846143fd565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61447f602483613b63565b915061448a82614425565b604082019050919050565b5f6020820190508181035f8301526144ac81614473565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61450d602283613b63565b9150614518826144b3565b604082019050919050565b5f6020820190508181035f83015261453a81614501565b9050919050565b5f61454b82613c47565b915061455683613c47565b925082820390508181111561456e5761456d6140fc565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6145ce602583613b63565b91506145d982614574565b604082019050919050565b5f6020820190508181035f8301526145fb816145c2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61465c602383613b63565b915061466782614602565b604082019050919050565b5f6020820190508181035f83015261468981614650565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6146ea602983613b63565b91506146f582614690565b604082019050919050565b5f6020820190508181035f830152614717816146de565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f614778603183613b63565b91506147838261471e565b604082019050919050565b5f6020820190508181035f8301526147a58161476c565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f6147e0600e83613b63565b91506147eb826147ac565b602082019050919050565b5f6020820190508181035f83015261480d816147d4565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f614848601e83613b63565b915061485382614814565b602082019050919050565b5f6020820190508181035f8301526148758161483c565b9050919050565b5f61488682613c47565b915061489183613c47565b92508282019050808211156148a9576148a86140fc565b5b92915050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f6148e3601183613b63565b91506148ee826148af565b602082019050919050565b5f6020820190508181035f830152614910816148d7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61494e82613c47565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149805761497f6140fc565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506149f381613c1d565b92915050565b5f60208284031215614a0e57614a0d613be9565b5b5f614a1b848285016149e5565b91505092915050565b5f819050919050565b5f614a47614a42614a3d84614a24565b6143b1565b613c47565b9050919050565b614a5781614a2d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614a8f81613c0c565b82525050565b5f614aa08383614a86565b60208301905092915050565b5f602082019050919050565b5f614ac282614a5d565b614acc8185614a67565b9350614ad783614a77565b805f5b83811015614b07578151614aee8882614a95565b9750614af983614aac565b925050600181019050614ada565b5085935050505092915050565b5f60a082019050614b275f830188613d3b565b614b346020830187614a4e565b8181036040830152614b468186614ab8565b9050614b556060830185613d63565b614b626080830184613d3b565b9695505050505050565b5f60c082019050614b7f5f830189613d63565b614b8c6020830188613d3b565b614b996040830187614a4e565b614ba66060830186614a4e565b614bb36080830185613d63565b614bc060a0830184613d3b565b979650505050505050565b5f81519050614bd981613c50565b92915050565b5f805f60608486031215614bf657614bf5613be9565b5b5f614c0386828701614bcb565b9350506020614c1486828701614bcb565b9250506040614c2586828701614bcb565b9150509250925092565b5f60208284031215614c4457614c43613be9565b5b5f614c5184828501614bcb565b91505092915050565b5f608082019050614c6d5f830187614a4e565b8181036020830152614c7f8186614ab8565b9050614c8e6040830185613d63565b614c9b6060830184613d3b565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209312c7bc73f6ddf8aedeb96dedab511b19158791bb8fd9ba44d47fee31649a4d64736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061021d575f3560e01c80638187f51611610122578063c0d78655116100aa578063e2d6f94c1161006e578063e2d6f94c146107fa578063ef43b02b14610822578063efca2eed1461084a578063f2fde38b14610874578063ffd49c841461089c57610224565b8063c0d7865514610706578063c942435d1461072e578063ca89b89914610744578063ce7c2ac214610780578063dd62ed3e146107be57610224565b80639358928b116100f15780639358928b1461062257806395d89b411461064c578063997664d714610676578063a8aa1b31146106a0578063a9059cbb146106ca57610224565b80638187f51614610580578063893d20e8146105a85780638c41180e146105d25780638cd4426d146105fa57610224565b8063313ce567116101a55780634355855a116101745780634355855a1461048c57806348ff2b8b146104c85780634fab0ae8146104f057806360e719621461051a57806370a082311461054457610224565b8063313ce567146103d457806334c5d2ce146103fe5780633a98ef39146104265780633f4218e01461045057610224565b8063228cb733116101ec578063228cb733146102e057806323b872dd1461030a57806328fd319814610346578063293230b8146103825780632f54bf6e1461039857610224565b806306fdde0314610228578063095ea7b3146102525780630ca61cb11461028e57806318160ddd146102b657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108c6565b6040516102499190613bc9565b60405180910390f35b34801561025d575f80fd5b5061027860048036038101906102739190613c7a565b610903565b6040516102859190613cd2565b60405180910390f35b348015610299575f80fd5b506102b460048036038101906102af9190613ceb565b610919565b005b3480156102c1575f80fd5b506102ca61097b565b6040516102d79190613d4a565b60405180910390f35b3480156102eb575f80fd5b506102f4610984565b6040516103019190613d72565b60405180910390f35b348015610315575f80fd5b50610330600480360381019061032b9190613d8b565b6109a9565b60405161033d9190613cd2565b60405180910390f35b348015610351575f80fd5b5061036c60048036038101906103679190613ddb565b610a6f565b6040516103799190613d4a565b60405180910390f35b34801561038d575f80fd5b50610396610b7b565b005b3480156103a3575f80fd5b506103be60048036038101906103b99190613ddb565b610c30565b6040516103cb9190613cd2565b60405180910390f35b3480156103df575f80fd5b506103e8610c87565b6040516103f59190613e21565b60405180910390f35b348015610409575f80fd5b50610424600480360381019061041f9190613ceb565b610c8f565b005b348015610431575f80fd5b5061043a610deb565b6040516104479190613d4a565b60405180910390f35b34801561045b575f80fd5b5061047660048036038101906104719190613ddb565b610df1565b6040516104839190613cd2565b60405180910390f35b348015610497575f80fd5b506104b260048036038101906104ad9190613ddb565b610e0e565b6040516104bf9190613cd2565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190613e64565b610e2b565b005b3480156104fb575f80fd5b50610504610ecb565b6040516105119190613d4a565b60405180910390f35b348015610525575f80fd5b5061052e610ed1565b60405161053b9190613d4a565b60405180910390f35b34801561054f575f80fd5b5061056a60048036038101906105659190613ddb565b610ed7565b6040516105779190613d4a565b60405180910390f35b34801561058b575f80fd5b506105a660048036038101906105a19190613ddb565b610f1d565b005b3480156105b3575f80fd5b506105bc610fa8565b6040516105c99190613d72565b60405180910390f35b3480156105dd575f80fd5b506105f860048036038101906105f39190613e64565b610fcf565b005b348015610605575f80fd5b50610620600480360381019061061b9190613c7a565b611190565b005b34801561062d575f80fd5b50610636611224565b6040516106439190613d4a565b60405180910390f35b348015610657575f80fd5b50610660611263565b60405161066d9190613bc9565b60405180910390f35b348015610681575f80fd5b5061068a6112a0565b6040516106979190613d4a565b60405180910390f35b3480156106ab575f80fd5b506106b46112a6565b6040516106c19190613d72565b60405180910390f35b3480156106d5575f80fd5b506106f060048036038101906106eb9190613c7a565b6112cb565b6040516106fd9190613cd2565b60405180910390f35b348015610711575f80fd5b5061072c60048036038101906107279190613ddb565b6112e1565b005b348015610739575f80fd5b50610742611371565b005b34801561074f575f80fd5b5061076a60048036038101906107659190613ddb565b61137c565b6040516107779190613d4a565b60405180910390f35b34801561078b575f80fd5b506107a660048036038101906107a19190613ddb565b6113ca565b6040516107b593929190613ea2565b60405180910390f35b3480156107c9575f80fd5b506107e460048036038101906107df9190613ed7565b6113f0565b6040516107f19190613d4a565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190613f15565b611472565b005b34801561082d575f80fd5b5061084860048036038101906108439190613e64565b61159c565b005b348015610855575f80fd5b5061085e611664565b60405161086b9190613d4a565b60405180910390f35b34801561087f575f80fd5b5061089a60048036038101906108959190614001565b61166a565b005b3480156108a7575f80fd5b506108b061172b565b6040516108bd9190613d4a565b60405180910390f35b60606040518060400160405280600581526020017f52696e6773000000000000000000000000000000000000000000000000000000815250905090565b5f61090f338484611731565b6001905092915050565b61092233610c30565b610961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095890614076565b60405180910390fd5b826025819055508160268190555080602781905550505050565b5f600154905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6109b58484846118f4565b610a648433610a5f85604051806060016040528060288152602001614ca56028913960065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c029092919063ffffffff16565b611731565b600190509392505050565b5f8060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403610abe575f9050610b76565b5f610b0760235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611c56565b90505f60235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101549050808211610b5e575f92505050610b76565b610b718183611c8790919063ffffffff16565b925050505b919050565b610b8433610c30565b610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90614076565b60405180910390fd5b600b60149054906101000a900460ff1615610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a906140de565b60405180910390fd5b6001600b60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b610c9833610c30565b610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90614076565b60405180910390fd5b5f61271084610ce461097b565b610cee9190614129565b610cf89190614197565b90505f61271084610d0761097b565b610d119190614129565b610d1b9190614197565b90505f61271084610d2a61097b565b610d349190614129565b610d3e9190614197565b90508260028190555081600381905550806004819055505f610d856103e8610d776005610d6961097b565b611c9c90919063ffffffff16565b611cb190919063ffffffff16565b9050808410158015610d975750808310155b8015610da35750808210155b610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990614237565b60405180910390fd5b50505050505050565b601b5481565b6007602052805f5260405f205f915054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b610e3433610c30565b610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90614076565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60265481565b60275481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f2633610c30565b610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c90614076565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fd833610c30565b611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e90614076565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156110c15750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110f957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f9061429f565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73ecc11730630150e117e67f71b97d014a4911f059836040518363ffffffff1660e01b81526004016111df9291906142bd565b6020604051808303815f875af11580156111fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121f91906142f8565b505050565b5f61125e6112315f610ed7565b61125061123f61dead610ed7565b600154611c8790919063ffffffff16565b611c8790919063ffffffff16565b905090565b60606040518060400160405280600581526020017f52494e4753000000000000000000000000000000000000000000000000000000815250905090565b601c5481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6112d73384846118f4565b6001905092915050565b6112ea33610c30565b611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090614076565b60405180910390fd5b5f81905080600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61137a33611cc6565b565b5f8082905060235f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020154915050919050565b6023602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61147b33610c30565b6114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b190614076565b60405180910390fd5b87600c8190555086600d819055508560108190555084600e8190555083600f819055508260118190555081601281905550806013819055506115086005601454611cb190919063ffffffff16565b60115411158015611530575061152a6005601454611cb190919063ffffffff16565b60125411155b8015611553575061154d6005601454611cb190919063ffffffff16565b60135411155b611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990614393565b60405180910390fd5b5050505050505050565b6115a533610c30565b6115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614076565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550801561164d57611648825f611f44565b611660565b61165f8261165a84610ed7565b611f44565b5b5050565b601d5481565b61167333610c30565b6116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990614076565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611720919061440c565b60405180910390a150565b60255481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690614495565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180490614523565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118e79190613d4a565b60405180910390a3505050565b6118ff838383612141565b61190983836122af565b6119148383836123a6565b61191e8383612576565b61192983838361263c565b611934838383612864565b6119848160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c8790919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6119d0848461288c565b6119da57816119e6565b6119e5848484612933565b5b9050611a388160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ad490919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ad69190613d4a565b60405180910390a360085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b3f57611b3e84611b3986610ed7565b611f44565b5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ba057611b9f83611b9a85610ed7565b611f44565b5b5f60235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01541115611bf157611bf083611cc6565b5b611bfc602754612ae9565b50505050565b5f838311158290611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c409190613bc9565b60405180910390fd5b5082840390509392505050565b5f611c80601f54611c72601e5485611c9c90919063ffffffff16565b611cb190919063ffffffff16565b9050919050565b5f8183611c949190614541565b905092915050565b5f8183611ca99190614129565b905092915050565b5f8183611cbe9190614197565b905092915050565b5f60235f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01540315611f41575f611d1782610a6f565b90505f811115611f3f57611d3681601d54612ad490919063ffffffff16565b601d81905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611d989291906142bd565b6020604051808303815f875af1158015611db4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd891906142f8565b504260225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e6e8160235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020154612ad490919063ffffffff16565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020181905550611efa60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611c56565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505b50565b5f81118015611f9157505f60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154145b15611fa457611f9f82612c18565b612001565b5f81148015611ff157505f60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154115b1561200057611fff82612cc2565b5b5b6120678161205960235f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154601b54611c8790919063ffffffff16565b612ad490919063ffffffff16565b601b819055508060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01819055506120f960235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611c56565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a6906145e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221490614672565b60405180910390fd5b5f811161225f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225690614700565b60405180910390fd5b61226883610ed7565b8111156122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a19061478e565b60405180910390fd5b505050565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561234d575060075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156123a257600b60149054906101000a900460ff166123a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612398906147f6565b60405180910390fd5b5b5050565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612444575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561249d5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125715760045461252f8260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ad490919063ffffffff16565b1115612570576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125679061485e565b60405180910390fd5b5b505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015612619575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561263857600160165f828254612630919061487c565b925050819055505b5050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461277857600354811115806126e7575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612738575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e906148f9565b60405180910390fd5b5b600254811115806127cf575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612820575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61285f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612856906148f9565b60405180910390fd5b505050565b61286f838383612eb7565b156128875761287f601854612fe8565b5f6016819055505b505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561292b575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f8061293f8585613271565b1115612ac9575f6129766129538686613271565b61296860145486611cb190919063ffffffff16565b611c9c90919063ffffffff16565b90506129c88160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ad490919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a669190613d4a565b60405180910390a35f6010541115612aae57612aad3061dead612aa8601054612a9a60145489611cb190919063ffffffff16565b611c9c90919063ffffffff16565b6118f4565b5b612ac18184611c8790919063ffffffff16565b915050612acd565b8190505b9392505050565b5f8183612ae1919061487c565b905092915050565b5f60208054905090505f8103612aff5750612c15565b5f805a90505f5b8483108015612b1457508381105b15612c10578360245410612b2a575f6024819055505b612b70602060245481548110612b4357612b42614917565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166133f7565b15612bbc57612bbb602060245481548110612b8e57612b8d614917565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611cc6565b5b612be1612bd25a84611c8790919063ffffffff16565b84612ad490919063ffffffff16565b92505a915060245f815480929190612bf890614944565b91905055508080612c0890614944565b915050612b06565b505050505b50565b60208054905060215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550602081908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60206001602080549050612cd69190614541565b81548110612ce757612ce6614917565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481548110612d6057612d5f614917565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060215f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460215f60206001602080549050612dfa9190614541565b81548110612e0b57612e0a614917565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506020805480612e8257612e8161498b565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b5f8060195483101590505f601854612ece30610ed7565b1015905060175f9054906101000a900460ff16158015612ef9575060155f9054906101000a900460ff165b8015612f115750600b60149054906101000a900460ff165b8015612f1a5750815b8015612f6d575060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fc55750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612fd45750600260165410155b8015612fdd5750805b925050509392505050565b600160175f6101000a81548160ff0219169083151502179055505f613068600261305a600e5461304c600f5461303e600d546130306001600c54612ad490919063ffffffff16565b612ad490919063ffffffff16565b612ad490919063ffffffff16565b612ad490919063ffffffff16565b611c9c90919063ffffffff16565b90505f61309282613084600c5486611c9c90919063ffffffff16565b611cb190919063ffffffff16565b90505f6130a88285611c8790919063ffffffff16565b90505f4790506130b782613461565b5f6130cb8247611c8790919063ffffffff16565b90505f6130f56130e6600c5488611c8790919063ffffffff16565b83611cb190919063ffffffff16565b90505f61310d600c5483611c9c90919063ffffffff16565b90505f811115613122576131218682613697565b5b5f61314b600d5461313d600286611c9c90919063ffffffff16565b611c9c90919063ffffffff16565b90505f8111156131ae5773ecc11730630150e117e67f71b97d014a4911f05973ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156131ac573d5f803e3d5ffd5b505b5f6131d7600e546131c9600287611c9c90919063ffffffff16565b611c9c90919063ffffffff16565b90505f8111156131eb576131ea81613784565b5b5f47111561324c5773ecc11730630150e117e67f71b97d014a4911f05973ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561324a573d5f803e3d5ffd5b505b5050505050505050505f60175f6101000a81548160ff02191690831515021790555050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061330d575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561332f576133286064601454611c8790919063ffffffff16565b90506133f1565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361338d5760125490506133f1565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133eb5760115490506133f1565b60135490505b92915050565b5f4260255460225f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613444919061487c565b10801561345a575060265461345883610a6f565b115b9050919050565b5f600267ffffffffffffffff81111561347d5761347c6149b8565b5b6040519080825280602002602001820160405280156134ab5781602001602082028036833780820191505090505b50905030815f815181106134c2576134c1614917565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613566573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061358a91906149f9565b8160018151811061359e5761359d614917565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061360430600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611731565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613666959493929190614b14565b5f604051808303815f87803b15801561367d575f80fd5b505af115801561368f573d5f803e3d5ffd5b505050505050565b6136c330600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611731565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8073ecc11730630150e117e67f71b97d014a4911f059426040518863ffffffff1660e01b815260040161373c96959493929190614b6c565b60606040518083038185885af1158015613758573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061377d9190614bdf565b5050505050565b5f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137df9190613d72565b602060405180830381865afa1580156137fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061381e9190614c2f565b90505f600267ffffffffffffffff81111561383c5761383b6149b8565b5b60405190808252806020026020018201604052801561386a5781602001602082028036833780820191505090505b509050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138fb91906149f9565b815f8151811061390e5761390d614917565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061397e5761397d614917565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95845f8430426040518663ffffffff1660e01b8152600401613a199493929190614c5a565b5f604051808303818588803b158015613a30575f80fd5b505af1158015613a42573d5f803e3d5ffd5b50505050505f613af383601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613aa69190613d72565b602060405180830381865afa158015613ac1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ae59190614c2f565b611c8790919063ffffffff16565b9050613b0a81601c54612ad490919063ffffffff16565b601c81905550613b4d613b3c601b54613b2e84601f54611c9c90919063ffffffff16565b611cb190919063ffffffff16565b601e54612ad490919063ffffffff16565b601e8190555050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613b9b82613b59565b613ba58185613b63565b9350613bb5818560208601613b73565b613bbe81613b81565b840191505092915050565b5f6020820190508181035f830152613be18184613b91565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613c1682613bed565b9050919050565b613c2681613c0c565b8114613c30575f80fd5b50565b5f81359050613c4181613c1d565b92915050565b5f819050919050565b613c5981613c47565b8114613c63575f80fd5b50565b5f81359050613c7481613c50565b92915050565b5f8060408385031215613c9057613c8f613be9565b5b5f613c9d85828601613c33565b9250506020613cae85828601613c66565b9150509250929050565b5f8115159050919050565b613ccc81613cb8565b82525050565b5f602082019050613ce55f830184613cc3565b92915050565b5f805f60608486031215613d0257613d01613be9565b5b5f613d0f86828701613c66565b9350506020613d2086828701613c66565b9250506040613d3186828701613c66565b9150509250925092565b613d4481613c47565b82525050565b5f602082019050613d5d5f830184613d3b565b92915050565b613d6c81613c0c565b82525050565b5f602082019050613d855f830184613d63565b92915050565b5f805f60608486031215613da257613da1613be9565b5b5f613daf86828701613c33565b9350506020613dc086828701613c33565b9250506040613dd186828701613c66565b9150509250925092565b5f60208284031215613df057613def613be9565b5b5f613dfd84828501613c33565b91505092915050565b5f60ff82169050919050565b613e1b81613e06565b82525050565b5f602082019050613e345f830184613e12565b92915050565b613e4381613cb8565b8114613e4d575f80fd5b50565b5f81359050613e5e81613e3a565b92915050565b5f8060408385031215613e7a57613e79613be9565b5b5f613e8785828601613c33565b9250506020613e9885828601613e50565b9150509250929050565b5f606082019050613eb55f830186613d3b565b613ec26020830185613d3b565b613ecf6040830184613d3b565b949350505050565b5f8060408385031215613eed57613eec613be9565b5b5f613efa85828601613c33565b9250506020613f0b85828601613c33565b9150509250929050565b5f805f805f805f80610100898b031215613f3257613f31613be9565b5b5f613f3f8b828c01613c66565b9850506020613f508b828c01613c66565b9750506040613f618b828c01613c66565b9650506060613f728b828c01613c66565b9550506080613f838b828c01613c66565b94505060a0613f948b828c01613c66565b93505060c0613fa58b828c01613c66565b92505060e0613fb68b828c01613c66565b9150509295985092959890939650565b5f613fd082613bed565b9050919050565b613fe081613fc6565b8114613fea575f80fd5b50565b5f81359050613ffb81613fd7565b92915050565b5f6020828403121561401657614015613be9565b5b5f61402384828501613fed565b91505092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f614060600683613b63565b915061406b8261402c565b602082019050919050565b5f6020820190508181035f83015261408d81614054565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6140c8601783613b63565b91506140d382614094565b602082019050919050565b5f6020820190508181035f8301526140f5816140bc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61413382613c47565b915061413e83613c47565b925082820261414c81613c47565b91508282048414831517614163576141626140fc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141a182613c47565b91506141ac83613c47565b9250826141bc576141bb61416a565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f614221602e83613b63565b915061422c826141c7565b604082019050919050565b5f6020820190508181035f83015261424e81614215565b9050919050565b7f496e656c696769626c65204164647265737300000000000000000000000000005f82015250565b5f614289601283613b63565b915061429482614255565b602082019050919050565b5f6020820190508181035f8301526142b68161427d565b9050919050565b5f6040820190506142d05f830185613d63565b6142dd6020830184613d3b565b9392505050565b5f815190506142f281613e3a565b92915050565b5f6020828403121561430d5761430c613be9565b5b5f61431a848285016142e4565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f61437d602c83613b63565b915061438882614323565b604082019050919050565b5f6020820190508181035f8301526143aa81614371565b9050919050565b5f819050919050565b5f6143d46143cf6143ca84613bed565b6143b1565b613bed565b9050919050565b5f6143e5826143ba565b9050919050565b5f6143f6826143db565b9050919050565b614406816143ec565b82525050565b5f60208201905061441f5f8301846143fd565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61447f602483613b63565b915061448a82614425565b604082019050919050565b5f6020820190508181035f8301526144ac81614473565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61450d602283613b63565b9150614518826144b3565b604082019050919050565b5f6020820190508181035f83015261453a81614501565b9050919050565b5f61454b82613c47565b915061455683613c47565b925082820390508181111561456e5761456d6140fc565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6145ce602583613b63565b91506145d982614574565b604082019050919050565b5f6020820190508181035f8301526145fb816145c2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61465c602383613b63565b915061466782614602565b604082019050919050565b5f6020820190508181035f83015261468981614650565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6146ea602983613b63565b91506146f582614690565b604082019050919050565b5f6020820190508181035f830152614717816146de565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f614778603183613b63565b91506147838261471e565b604082019050919050565b5f6020820190508181035f8301526147a58161476c565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f6147e0600e83613b63565b91506147eb826147ac565b602082019050919050565b5f6020820190508181035f83015261480d816147d4565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f614848601e83613b63565b915061485382614814565b602082019050919050565b5f6020820190508181035f8301526148758161483c565b9050919050565b5f61488682613c47565b915061489183613c47565b92508282019050808211156148a9576148a86140fc565b5b92915050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f6148e3601183613b63565b91506148ee826148af565b602082019050919050565b5f6020820190508181035f830152614910816148d7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61494e82613c47565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149805761497f6140fc565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506149f381613c1d565b92915050565b5f60208284031215614a0e57614a0d613be9565b5b5f614a1b848285016149e5565b91505092915050565b5f819050919050565b5f614a47614a42614a3d84614a24565b6143b1565b613c47565b9050919050565b614a5781614a2d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614a8f81613c0c565b82525050565b5f614aa08383614a86565b60208301905092915050565b5f602082019050919050565b5f614ac282614a5d565b614acc8185614a67565b9350614ad783614a77565b805f5b83811015614b07578151614aee8882614a95565b9750614af983614aac565b925050600181019050614ada565b5085935050505092915050565b5f60a082019050614b275f830188613d3b565b614b346020830187614a4e565b8181036040830152614b468186614ab8565b9050614b556060830185613d63565b614b626080830184613d3b565b9695505050505050565b5f60c082019050614b7f5f830189613d63565b614b8c6020830188613d3b565b614b996040830187614a4e565b614ba66060830186614a4e565b614bb36080830185613d63565b614bc060a0830184613d3b565b979650505050505050565b5f81519050614bd981613c50565b92915050565b5f805f60608486031215614bf657614bf5613be9565b5b5f614c0386828701614bcb565b9350506020614c1486828701614bcb565b9250506040614c2586828701614bcb565b9150509250925092565b5f60208284031215614c4457614c43613be9565b5b5f614c5184828501614bcb565b91505092915050565b5f608082019050614c6d5f830187614a4e565b8181036020830152614c7f8186614ab8565b9050614c8e6040830185613d63565b614c9b6060830184613d3b565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209312c7bc73f6ddf8aedeb96dedab511b19158791bb8fd9ba44d47fee31649a4d64736f6c634300081a0033
Deployed Bytecode Sourcemap
5694:21038:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9209:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10785:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26443:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9586:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7221:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20611:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25112:577;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11146:145;;;;;;;;;;;;;:::i;:::-;;4165:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9395:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14049:649;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7294:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6292:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6342:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10412:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7881:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7933:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9694:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10544:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9486:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13728:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23757:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10984:154;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9300:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7327:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6463:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9821:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10640:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7980:84;;;;;;;;;;;;;:::i;:::-;;24183:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7756:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;10026:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12956:764;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21438:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7363:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4276:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7838:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9209:83;9246:13;9279:5;;;;;;;;;;;;;;;;;9272:12;;9209:83;:::o;10785:191::-;10887:4;10909:37;10918:10;10930:7;10939:6;10909:8;:37::i;:::-;10964:4;10957:11;;10785:191;;;;:::o;26443:286::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;26623:10:::1;26611:9;:22;;;;26662:16;26644:15;:34;;;;26706:15;26689:14;:32;;;;26443:286:::0;;;:::o;9586:100::-;9639:7;9666:12;;9659:19;;9586:100;:::o;7221:66::-;;;;;;;;;;;;;:::o;20611:442::-;20743:4;20760:36;20770:6;20778:9;20789:6;20760:9;:36::i;:::-;20807:216;20830:6;20851:10;20876:136;20930:6;20876:136;;;;;;;;;;;;;;;;;:11;:19;20888:6;20876:19;;;;;;;;;;;;;;;:31;20896:10;20876:31;;;;;;;;;;;;;;;;:35;;:136;;;;;:::i;:::-;20807:8;:216::i;:::-;21041:4;21034:11;;20611:442;;;;;:::o;25112:577::-;25208:7;25267:1;25237:6;:19;25244:11;25237:19;;;;;;;;;;;;;;;:26;;;:31;25233:72;;25292:1;25285:8;;;;25233:72;25315:33;25351:74;25388:6;:19;25395:11;25388:19;;;;;;;;;;;;;;;:26;;;25351:22;:74::i;:::-;25315:110;;25436:32;25471:6;:19;25478:11;25471:19;;;;;;;;;;;;;;;:33;;;25436:68;;25548:24;25519:25;:53;25515:94;;25596:1;25589:8;;;;;;25515:94;25626:55;25656:24;25626:25;:29;;:55;;;;:::i;:::-;25619:62;;;;25112:577;;;;:::o;11146:145::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11209:14:::1;;;;;;;;;;;11208:15;11200:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;11279:4;11262:14;;:21;;;;;;;;;;;;;;;;;;11146:145::o:0;4165:103::-;4220:4;4255:5;;;;;;;;;;;4244:16;;:7;:16;;;4237:23;;4165:103;;;:::o;9395:83::-;9436:5;5897:1;9454:16;;9395:83;:::o;14049:649::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14183:13:::1;14224:5;14216:4;14200:13;:11;:13::i;:::-;:20;;;;:::i;:::-;14199:30;;;;:::i;:::-;14183:46;;14240:19;14289:5;14279:6;14263:13;:11;:13::i;:::-;:22;;;;:::i;:::-;14262:32;;;;:::i;:::-;14240:54;;14305:17;14353:5;14342:7;14326:13;:11;:13::i;:::-;:23;;;;:::i;:::-;14325:33;;;;:::i;:::-;14305:53;;14384:5;14369:12;:20;;;;14417:11;14400:14;:28;;;;14457:9;14439:15;:27;;;;14477:13;14493:30;14518:4;14493:20;14511:1;14493:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;14477:46;;14565:5;14556;:14;;:38;;;;;14589:5;14574:11;:20;;14556:38;:60;;;;;14611:5;14598:9;:18;;14556:60;14534:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;14172:526;;;;14049:649:::0;;;:::o;7294:26::-;;;;:::o;6292:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;6342:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;10412:124::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10520:8:::1;10496:11;:21;10508:8;10496:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10412:124:::0;;:::o;7881:45::-;;;;:::o;7933:38::-;;;;:::o;9694:119::-;9760:7;9787:9;:18;9797:7;9787:18;;;;;;;;;;;;;;;;9780:25;;9694:119;;;:::o;10544:88::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10616:8:::1;10609:4;;:15;;;;;;;;;;;;;;;;;;10544:88:::0;:::o;9486:92::-;9538:7;9565:5;;;;;;;;;;;9558:12;;9486:92;:::o;13728:313::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13851:4:::1;;;;;;;;;;;13831:25;;:8;:25;;;;:73;;;;;13897:6;;;;;;;;;;;13877:27;;:8;:27;;;;13831:73;:119;;;;;13945:4;13925:25;;:8;:25;;;;13831:119;13809:187;;;;;;;;;;;;:::i;:::-;;;;;;;;;14025:8;14007:5;:15;14013:8;14007:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;13728:313:::0;;:::o;23757:138::-;23840:8;23833:25;;;8317:42;23879:7;23833:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23757:138;;:::o;10984:154::-;11043:7;11070:60;11108:21;11126:1;11108:9;:21::i;:::-;11070:33;11087:15;8105:42;11087:9;:15::i;:::-;11070:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;11063:67;;10984:154;:::o;9300:87::-;9339:13;9372:7;;;;;;;;;;;;;;;;;9365:14;;9300:87;:::o;7327:29::-;;;;:::o;6463:19::-;;;;;;;;;;;;;:::o;9821:197::-;9926:4;9948:40;9958:10;9970:9;9981:6;9948:9;:40::i;:::-;10006:4;9999:11;;9821:197;;;;:::o;10640:137::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10707:15:::1;10733:8;10707:35;;10762:7;10753:6;;:16;;;;;;;;;;;;;;;;;;10696:81;10640:137:::0;:::o;7980:84::-;8026:30;8045:10;8026:18;:30::i;:::-;7980:84::o;24183:222::-;24283:7;24308:19;24330:7;24308:29;;24363:6;:19;24370:11;24363:19;;;;;;;;;;;;;;;:33;;;24348:49;;;24183:222;;;:::o;7756:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10026:184::-;10143:7;10175:11;:18;10187:5;10175:18;;;;;;;;;;;;;;;:27;10194:7;10175:27;;;;;;;;;;;;;;;;10168:34;;10026:184;;;;:::o;12956:764::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13244:10:::1;13229:12;:25;;;;13280:10;13265:12;:25;;;;13311:5;13301:7;:15;;;;13340:8;13327:10;:21;;;;13376:12;13359:14;:29;;;;13410:6;13399:8;:17;;;;13437:5;13427:7;:15;;;;13467:6;13453:11;:20;;;;13518:18;13534:1;13518:11;;:15;;:18;;;;:::i;:::-;13506:8;;:30;;:80;;;;;13568:18;13584:1;13568:11;;:15;;:18;;;;:::i;:::-;13557:7;;:29;;13506:80;:134;;;;;13622:18;13638:1;13622:11;;:15;;:18;;;;:::i;:::-;13607:11;;:33;;13506:134;13484:228;;;;;;;;;;;;:::i;:::-;;;;;;;;;12956:764:::0;;;;;;;;:::o;21438:288::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21576:6:::1;21549:16;:24;21566:6;21549:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21597:6;21593:126;;;21620:19;21629:6;21637:1;21620:8;:19::i;:::-;21593:126;;;21672:35;21681:6;21689:17;21699:6;21689:9;:17::i;:::-;21672:8;:35::i;:::-;21593:126;21438:288:::0;;:::o;7363:31::-;;;;:::o;4276:136::-;4107:19;4115:10;4107:7;:19::i;:::-;4099:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4360:3:::1;4352:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4379:25;4400:3;4379:25;;;;;;:::i;:::-;;;;;;;;4276:136:::0;:::o;7838:36::-;;;;:::o;21061:369::-;21205:1;21188:19;;:5;:19;;;21180:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21286:1;21267:21;;:7;:21;;;21259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21368:6;21338:11;:18;21350:5;21338:18;;;;;;;;;;;;;;;:27;21357:7;21338:27;;;;;;;;;;;;;;;:36;;;;21406:7;21390:32;;21399:5;21390:32;;;21415:6;21390:32;;;;;;:::i;:::-;;;;;;;;21061:369;;;:::o;11855:1093::-;11978:37;11989:6;11997:9;12008:6;11978:10;:37::i;:::-;12026:38;12046:6;12054:9;12026:19;:38::i;:::-;12075:41;12090:6;12098:9;12109:6;12075:14;:41::i;:::-;12127:35;12144:6;12152:9;12127:16;:35::i;:::-;12173:39;12186:6;12194:9;12205:6;12173:12;:39::i;:::-;12223:35;12232:6;12240:9;12251:6;12223:8;:35::i;:::-;12289:29;12311:6;12289:9;:17;12299:6;12289:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12269:9;:17;12279:6;12269:17;;;;;;;;;;;;;;;:49;;;;12329:22;12354:32;12368:6;12376:9;12354:13;:32::i;:::-;:104;;12452:6;12354:104;;;12402:34;12410:6;12418:9;12429:6;12402:7;:34::i;:::-;12354:104;12329:129;;12492:40;12517:14;12492:9;:20;12502:9;12492:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;12469:9;:20;12479:9;12469:20;;;;;;;;;;;;;;;:63;;;;12565:9;12548:43;;12557:6;12548:43;;;12576:14;12548:43;;;;;;:::i;:::-;;;;;;;;12607:16;:24;12624:6;12607:24;;;;;;;;;;;;;;;;;;;;;;;;;12602:93;;12648:35;12657:6;12665:17;12675:6;12665:9;:17::i;:::-;12648:8;:35::i;:::-;12602:93;12710:16;:27;12727:9;12710:27;;;;;;;;;;;;;;;;;;;;;;;;;12705:102;;12754:41;12763:9;12774:20;12784:9;12774;:20::i;:::-;12754:8;:41::i;:::-;12705:102;12848:1;12821:6;:17;12828:9;12821:17;;;;;;;;;;;;;;;:24;;;:28;12817:90;;;12866:29;12885:9;12866:18;:29::i;:::-;12817:90;12917:23;12925:14;;12917:7;:23::i;:::-;11967:981;11855:1093;;;:::o;2077:240::-;2197:7;2255:1;2250;:6;;2258:12;2242:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2297:1;2293;:5;2286:12;;2077:240;;;;;:::o;25697:215::-;25794:7;25839:65;25872:31;;25839:28;25849:17;;25839:5;:9;;:28;;;;:::i;:::-;:32;;:65;;;;:::i;:::-;25819:85;;25697:215;;;:::o;377:98::-;435:7;466:1;462;:5;;;;:::i;:::-;455:12;;377:98;;;;:::o;483:::-;541:7;572:1;568;:5;;;;:::i;:::-;561:12;;483:98;;;;:::o;589:::-;647:7;678:1;674;:5;;;;:::i;:::-;667:12;;589:98;;;;:::o;24413:691::-;24516:1;24486:6;:19;24493:11;24486:19;;;;;;;;;;;;;;;:26;;;:31;24482:70;24534:7;24482:70;24562:14;24579:30;24597:11;24579:17;:30::i;:::-;24562:47;;24633:1;24624:6;:10;24620:477;;;24670:28;24691:6;24670:16;;:20;;:28;;;;:::i;:::-;24651:16;:47;;;;24720:6;;;;;;;;;;;24713:23;;;24737:11;24750:6;24713:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24805:15;24772:17;:30;24790:11;24772:30;;;;;;;;;;;;;;;:48;;;;24871:81;24945:6;24871;:19;24878:11;24871:19;;;;;;;;;;;;;;;:51;;;:73;;:81;;;;:::i;:::-;24835:6;:19;24842:11;24835:19;;;;;;;;;;;;;;;:33;;:117;;;;25003:82;25044:6;:19;25051:11;25044:19;;;;;;;;;;;;;;;:26;;;25003:22;:82::i;:::-;24967:6;:19;24974:11;24967:19;;;;;;;;;;;;;;;:33;;:118;;;;24620:477;24471:633;24413:691;;:::o;21734:548::-;21822:1;21813:6;:10;:45;;;;;21857:1;21827:6;:19;21834:11;21827:19;;;;;;;;;;;;;;;:26;;;:31;21813:45;21809:219;;;21875:27;21890:11;21875:14;:27::i;:::-;21809:219;;;21934:1;21924:6;:11;:45;;;;;21968:1;21939:6;:19;21946:11;21939:19;;;;;;;;;;;;;;;:26;;;:30;21924:45;21920:108;;;21986:30;22004:11;21986:17;:30::i;:::-;21920:108;21809:219;22052:55;22100:6;22052:43;22068:6;:19;22075:11;22068:19;;;;;;;;;;;;;;;:26;;;22052:11;;:15;;:43;;;;:::i;:::-;:47;;:55;;;;:::i;:::-;22038:11;:69;;;;22147:6;22118;:19;22125:11;22118:19;;;;;;;;;;;;;;;:26;;:35;;;;22200:74;22237:6;:19;22244:11;22237:19;;;;;;;;;;;;;;;:26;;;22200:22;:74::i;:::-;22164:6;:19;22171:11;22164:19;;;;;;;;;;;;;;;:33;;:110;;;;21734:548;;:::o;11299:::-;11455:1;11437:20;;:6;:20;;;11429:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11539:1;11518:23;;:9;:23;;;11510:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11631:1;11614:6;:19;11592:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;11745:17;11755:6;11745:9;:17::i;:::-;11735:6;:27;;11713:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11299:548;;;:::o;14706:240::-;14823:11;:19;14835:6;14823:19;;;;;;;;;;;;;;;;;;;;;;;;;14822:20;:47;;;;;14847:11;:22;14859:9;14847:22;;;;;;;;;;;;;;;;;;;;;;;;;14846:23;14822:47;14818:121;;;14894:14;;;;;;;;;;;14886:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14818:121;14706:240;;:::o;14954:489::-;15107:11;:19;15119:6;15107:19;;;;;;;;;;;;;;;;;;;;;;;;;15106:20;:60;;;;;15144:11;:22;15156:9;15144:22;;;;;;;;;;;;;;;;;;;;;;;;;15143:23;15106:60;:103;;;;;15204:4;;;;;;;;;;;15183:26;;:9;:26;;;;15106:103;:146;;;;;8105:42;15226:26;;:9;:26;;;;15106:146;15088:348;;;15343:15;;15306:32;15331:6;15306:9;:20;15316:9;15306:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15305:53;;15279:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;15088:348;14954:489;;;:::o;15451:185::-;15549:4;;;;;;;;;;;15536:17;;:9;:17;;;:41;;;;;15558:11;:19;15570:6;15558:19;;;;;;;;;;;;;;;;;;;;;;;;;15557:20;15536:41;15532:97;;;15615:1;15594:9;;:23;;;;;;;:::i;:::-;;;;;;;;15532:97;15451:185;;:::o;15644:563::-;15790:4;;;;;;;;;;;15780:14;;:6;:14;;;15776:241;;15847:14;;15837:6;:24;;:68;;;;15886:11;:19;15898:6;15886:19;;;;;;;;;;;;;;;;;;;;;;;;;15837:68;:115;;;;15930:11;:22;15942:9;15930:22;;;;;;;;;;;;;;;;;;;;;;;;;15837:115;15811:194;;;;;;;;;;;;:::i;:::-;;;;;;;;;15776:241;16059:12;;16049:6;:22;;:62;;;;16092:11;:19;16104:6;16092:19;;;;;;;;;;;;;;;;;;;;;;;;;16049:62;:105;;;;16132:11;:22;16144:9;16132:22;;;;;;;;;;;;;;;;;;;;;;;;;16049:105;16027:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;15644:563;;;:::o;18933:270::-;19060:41;19075:6;19083:9;19094:6;19060:14;:41::i;:::-;19056:140;;;19118:29;19133:13;;19118:14;:29::i;:::-;19182:1;19162:9;:22;;;;19056:140;18933:270;;;:::o;19211:192::-;19319:4;19349:11;:19;19361:6;19349:19;;;;;;;;;;;;;;;;;;;;;;;;;19348:20;:47;;;;;19373:11;:22;19385:9;19373:22;;;;;;;;;;;;;;;;;;;;;;;;;19372:23;19348:47;19341:54;;19211:192;;;;:::o;19834:769::-;19954:7;20011:1;19978:30;19990:6;19998:9;19978:11;:30::i;:::-;:34;19974:598;;;20029:17;20049:91;20095:30;20107:6;20115:9;20095:11;:30::i;:::-;20049:23;20060:11;;20049:6;:10;;:23;;;;:::i;:::-;:27;;:91;;;;:::i;:::-;20029:111;;20182:39;20211:9;20182;:24;20200:4;20182:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20155:9;:24;20173:4;20155:24;;;;;;;;;;;;;;;:66;;;;20266:4;20241:42;;20250:6;20241:42;;;20273:9;20241:42;;;;;;:::i;:::-;;;;;;;;20320:1;20302:7;;:20;20298:220;;;20343:159;20383:4;8105:42;20447:36;20475:7;;20447:23;20458:11;;20447:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;20343:9;:159::i;:::-;20298:220;20539:21;20550:9;20539:6;:10;;:21;;;;:::i;:::-;20532:28;;;;;19974:598;20589:6;20582:13;;19834:769;;;;;;:::o;271:98::-;329:7;360:1;356;:5;;;;:::i;:::-;349:12;;271:98;;;;:::o;22999:750::-;23049:24;23076:12;:19;;;;23049:46;;23130:1;23110:16;:21;23106:60;;23148:7;;;23106:60;23176:15;23206;23224:9;23206:27;;23244:18;23277:465;23294:3;23284:7;:13;:46;;;;;23314:16;23301:10;:29;23284:46;23277:465;;;23367:16;23351:12;;:32;23347:89;;23419:1;23404:12;:16;;;;23347:89;23454:44;23471:12;23484;;23471:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23454:16;:44::i;:::-;23450:131;;;23519:46;23538:12;23551;;23538:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23519:18;:46::i;:::-;23450:131;23605:35;23617:22;23629:9;23617:7;:11;;:22;;;;:::i;:::-;23605:7;:11;;:35;;;;:::i;:::-;23595:45;;23665:9;23655:19;;23689:12;;:14;;;;;;;;;:::i;:::-;;;;;;23718:12;;;;;:::i;:::-;;;;23277:465;;;23038:711;;;;22999:750;;:::o;25920:167::-;26019:12;:19;;;;25985:18;:31;26004:11;25985:31;;;;;;;;;;;;;;;:53;;;;26049:12;26067:11;26049:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25920:167;:::o;26095:340::-;26211:12;26260:1;26238:12;:19;;;;:23;;;;:::i;:::-;26211:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26163:12;26176:18;:31;26195:11;26176:31;;;;;;;;;;;;;;;;26163:45;;;;;;;;:::i;:::-;;;;;;;;;;:109;;;;;;;;;;;;;;;;;;26367:18;:31;26386:11;26367:31;;;;;;;;;;;;;;;;26283:18;:81;26316:12;26351:1;26329:12;:19;;;;:23;;;;:::i;:::-;26316:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26283:81;;;;;;;;;;;;;;;:115;;;;26409:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;26095:340;:::o;18387:538::-;18519:4;18536:13;18562:15;;18552:6;:25;;18536:41;;18588:19;18638:13;;18610:24;18628:4;18610:9;:24::i;:::-;:41;;18588:63;;18683:8;;;;;;;;;;;18682:9;:37;;;;;18708:11;;;;;;;;;;;18682:37;:68;;;;;18736:14;;;;;;;;;;;18682:68;:93;;;;;18767:8;18682:93;:130;;;;;18793:11;:19;18805:6;18793:19;;;;;;;;;;;;;;;;;;;;;;;;;18792:20;18682:130;:164;;;;;18842:4;;;;;;;;;;;18829:17;;:9;:17;;;18682:164;:204;;;;;18884:1;18863:9;;:23;;18682:204;:235;;;;;18903:14;18682:235;18662:255;;;;18387:538;;;;;:::o;16215:1351::-;7164:4;7153:8;;:15;;;;;;;;;;;;;;;;;;16286:20:::1;16309:138;16445:1;16324:105;16404:10;;16324:57;16366:14;;16324:37;16348:12;;16324:19;16341:1;16324:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;:61;;:105;;;;:::i;:::-;16309:135;;:138;;;;:::i;:::-;16286:161;;16458:32;16493:66;16536:12;16493:24;16504:12;;16493:6;:10;;:24;;;;:::i;:::-;:28;;:66;;;;:::i;:::-;16458:101;;16570:14;16587:36;16598:24;16587:6;:10;;:36;;;;:::i;:::-;16570:53;;16634:22;16659:21;16634:46;;16691:24;16708:6;16691:16;:24::i;:::-;16726:20;16749:41;16775:14;16749:21;:25;;:41;;;;:::i;:::-;16726:64;;16801:19;16823:48;16840:30;16857:12;;16840;:16;;:30;;;;:::i;:::-;16823:12;:16;;:48;;;;:::i;:::-;16801:70;;16882:29;16914;16930:12;;16914:11;:15;;:29;;;;:::i;:::-;16882:61;;16990:1;16958:21;:34;16954:128;;;17009:61;17022:24;17048:21;17009:12;:61::i;:::-;16954:128;17092:23;17118:36;17141:12;;17118:18;17134:1;17118:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;17092:62;;17187:1;17169:15;:19;17165:105;;;8317:42;17205:36;;:53;17242:15;17205:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17165:105;17280:21;17304:34;17327:10;;17304:18;17320:1;17304:11;:15;;:18;;;;:::i;:::-;:22;;:34;;;;:::i;:::-;17280:58;;17369:1;17353:13;:17;17349:72;;;17387:22;17395:13;17387:7;:22::i;:::-;17349:72;17467:1;17435:21;:34;17431:128;;;8212:42;17486:38;;:61;17525:21;17486:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17431:128;16275:1291;;;;;;;;;7202:5:::0;7191:8;;:16;;;;;;;;;;;;;;;;;;16215:1351;:::o;19411:415::-;19517:7;19546:5;:13;19552:6;19546:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;19563:5;:16;19569:9;19563:16;;;;;;;;;;;;;;;;;;;;;;;;;19546:33;19542:102;;;19603:29;19627:3;19603:11;;:15;;:29;;;;:::i;:::-;19596:36;;;;19542:102;19671:4;;;;;;;;;;;19658:17;;:9;:17;;;19654:64;;19699:7;;19692:14;;;;19654:64;19742:4;;;;;;;;;;;19732:14;;:6;:14;;;19728:62;;19770:8;;19763:15;;;;19728:62;19807:11;;19800:18;;19411:415;;;;;:::o;23903:272::-;24000:4;24087:15;24075:9;;24042:17;:30;24060:11;24042:30;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;:60;:125;;;;;24152:15;;24119:30;24137:11;24119:17;:30::i;:::-;:48;24042:125;24022:145;;23903:272;;;:::o;17935:444::-;18001:21;18039:1;18025:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18001:40;;18070:4;18052;18057:1;18052:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18096:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18086:4;18091:1;18086:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18120:53;18137:4;18152:6;;;;;;;;;;;18161:11;18120:8;:53::i;:::-;18184:6;;;;;;;;;;;:57;;;18256:11;18282:1;18298:4;18325;18345:15;18184:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17990:389;17935:444;:::o;17574:353::-;17655:53;17672:4;17687:6;;;;;;;;;;;17696:11;17655:8;:53::i;:::-;17719:6;;;;;;;;;;;:22;;;17749:9;17782:4;17802:11;17828:1;17844;8422:42;17893:15;17719:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17574:353;;:::o;22290:701::-;22346:21;22377:6;;;;;;;;;;;22370:24;;;22403:4;22370:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22346:63;;22420:21;22458:1;22444:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22420:40;;22481:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22471:4;22476:1;22471:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22523:6;;;;;;;;;;;22505:4;22510:1;22505:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;22541:6;;;;;;;;;;;:57;;;22620:9;22641:1;22644:4;22658;22665:15;22541:140;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22692:14;22709:82;22767:13;22716:6;;;;;;;;;;;22709:24;;;22742:4;22709:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;:82;;;;:::i;:::-;22692:99;;22819:26;22838:6;22819:14;;:18;;:26;;;;:::i;:::-;22802:14;:43;;;;22876:107;22912:60;22960:11;;22912:43;22948:6;22912:31;;:35;;:43;;;;:::i;:::-;:47;;:60;;;;:::i;:::-;22876:17;;:21;;:107;;;;:::i;:::-;22856:17;:127;;;;22335:656;;;22290:701;:::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:619::-;3416:6;3424;3432;3481:2;3469:9;3460:7;3456:23;3452:32;3449:119;;;3487:79;;:::i;:::-;3449:119;3607:1;3632:53;3677:7;3668:6;3657:9;3653:22;3632:53;:::i;:::-;3622:63;;3578:117;3734:2;3760:53;3805:7;3796:6;3785:9;3781:22;3760:53;:::i;:::-;3750:63;;3705:118;3862:2;3888:53;3933:7;3924:6;3913:9;3909:22;3888:53;:::i;:::-;3878:63;;3833:118;3339:619;;;;;:::o;3964:118::-;4051:24;4069:5;4051:24;:::i;:::-;4046:3;4039:37;3964:118;;:::o;4088:222::-;4181:4;4219:2;4208:9;4204:18;4196:26;;4232:71;4300:1;4289:9;4285:17;4276:6;4232:71;:::i;:::-;4088:222;;;;:::o;4316:118::-;4403:24;4421:5;4403:24;:::i;:::-;4398:3;4391:37;4316:118;;:::o;4440:222::-;4533:4;4571:2;4560:9;4556:18;4548:26;;4584:71;4652:1;4641:9;4637:17;4628:6;4584:71;:::i;:::-;4440:222;;;;:::o;4668:619::-;4745:6;4753;4761;4810:2;4798:9;4789:7;4785:23;4781:32;4778:119;;;4816:79;;:::i;:::-;4778:119;4936:1;4961:53;5006:7;4997:6;4986:9;4982:22;4961:53;:::i;:::-;4951:63;;4907:117;5063:2;5089:53;5134:7;5125:6;5114:9;5110:22;5089:53;:::i;:::-;5079:63;;5034:118;5191:2;5217:53;5262:7;5253:6;5242:9;5238:22;5217:53;:::i;:::-;5207:63;;5162:118;4668:619;;;;;:::o;5293:329::-;5352:6;5401:2;5389:9;5380:7;5376:23;5372:32;5369:119;;;5407:79;;:::i;:::-;5369:119;5527:1;5552:53;5597:7;5588:6;5577:9;5573:22;5552:53;:::i;:::-;5542:63;;5498:117;5293:329;;;;:::o;5628:86::-;5663:7;5703:4;5696:5;5692:16;5681:27;;5628:86;;;:::o;5720:112::-;5803:22;5819:5;5803:22;:::i;:::-;5798:3;5791:35;5720:112;;:::o;5838:214::-;5927:4;5965:2;5954:9;5950:18;5942:26;;5978:67;6042:1;6031:9;6027:17;6018:6;5978:67;:::i;:::-;5838:214;;;;:::o;6058:116::-;6128:21;6143:5;6128:21;:::i;:::-;6121:5;6118:32;6108:60;;6164:1;6161;6154:12;6108:60;6058:116;:::o;6180:133::-;6223:5;6261:6;6248:20;6239:29;;6277:30;6301:5;6277:30;:::i;:::-;6180:133;;;;:::o;6319:468::-;6384:6;6392;6441:2;6429:9;6420:7;6416:23;6412:32;6409:119;;;6447:79;;:::i;:::-;6409:119;6567:1;6592:53;6637:7;6628:6;6617:9;6613:22;6592:53;:::i;:::-;6582:63;;6538:117;6694:2;6720:50;6762:7;6753:6;6742:9;6738:22;6720:50;:::i;:::-;6710:60;;6665:115;6319:468;;;;;:::o;6793:442::-;6942:4;6980:2;6969:9;6965:18;6957:26;;6993:71;7061:1;7050:9;7046:17;7037:6;6993:71;:::i;:::-;7074:72;7142:2;7131:9;7127:18;7118:6;7074:72;:::i;:::-;7156;7224:2;7213:9;7209:18;7200:6;7156:72;:::i;:::-;6793:442;;;;;;:::o;7241:474::-;7309:6;7317;7366:2;7354:9;7345:7;7341:23;7337:32;7334:119;;;7372:79;;:::i;:::-;7334:119;7492:1;7517:53;7562:7;7553:6;7542:9;7538:22;7517:53;:::i;:::-;7507:63;;7463:117;7619:2;7645:53;7690:7;7681:6;7670:9;7666:22;7645:53;:::i;:::-;7635:63;;7590:118;7241:474;;;;;:::o;7721:1349::-;7843:6;7851;7859;7867;7875;7883;7891;7899;7948:3;7936:9;7927:7;7923:23;7919:33;7916:120;;;7955:79;;:::i;:::-;7916:120;8075:1;8100:53;8145:7;8136:6;8125:9;8121:22;8100:53;:::i;:::-;8090:63;;8046:117;8202:2;8228:53;8273:7;8264:6;8253:9;8249:22;8228:53;:::i;:::-;8218:63;;8173:118;8330:2;8356:53;8401:7;8392:6;8381:9;8377:22;8356:53;:::i;:::-;8346:63;;8301:118;8458:2;8484:53;8529:7;8520:6;8509:9;8505:22;8484:53;:::i;:::-;8474:63;;8429:118;8586:3;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8557:119;8715:3;8742:53;8787:7;8778:6;8767:9;8763:22;8742:53;:::i;:::-;8732:63;;8686:119;8844:3;8871:53;8916:7;8907:6;8896:9;8892:22;8871:53;:::i;:::-;8861:63;;8815:119;8973:3;9000:53;9045:7;9036:6;9025:9;9021:22;9000:53;:::i;:::-;8990:63;;8944:119;7721:1349;;;;;;;;;;;:::o;9076:104::-;9121:7;9150:24;9168:5;9150:24;:::i;:::-;9139:35;;9076:104;;;:::o;9186:138::-;9267:32;9293:5;9267:32;:::i;:::-;9260:5;9257:43;9247:71;;9314:1;9311;9304:12;9247:71;9186:138;:::o;9330:155::-;9384:5;9422:6;9409:20;9400:29;;9438:41;9473:5;9438:41;:::i;:::-;9330:155;;;;:::o;9491:345::-;9558:6;9607:2;9595:9;9586:7;9582:23;9578:32;9575:119;;;9613:79;;:::i;:::-;9575:119;9733:1;9758:61;9811:7;9802:6;9791:9;9787:22;9758:61;:::i;:::-;9748:71;;9704:125;9491:345;;;;:::o;9842:156::-;9982:8;9978:1;9970:6;9966:14;9959:32;9842:156;:::o;10004:365::-;10146:3;10167:66;10231:1;10226:3;10167:66;:::i;:::-;10160:73;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10004:365;;;:::o;10375:419::-;10541:4;10579:2;10568:9;10564:18;10556:26;;10628:9;10622:4;10618:20;10614:1;10603:9;10599:17;10592:47;10656:131;10782:4;10656:131;:::i;:::-;10648:139;;10375:419;;;:::o;10800:173::-;10940:25;10936:1;10928:6;10924:14;10917:49;10800:173;:::o;10979:366::-;11121:3;11142:67;11206:2;11201:3;11142:67;:::i;:::-;11135:74;;11218:93;11307:3;11218:93;:::i;:::-;11336:2;11331:3;11327:12;11320:19;;10979:366;;;:::o;11351:419::-;11517:4;11555:2;11544:9;11540:18;11532:26;;11604:9;11598:4;11594:20;11590:1;11579:9;11575:17;11568:47;11632:131;11758:4;11632:131;:::i;:::-;11624:139;;11351:419;;;:::o;11776:180::-;11824:77;11821:1;11814:88;11921:4;11918:1;11911:15;11945:4;11942:1;11935:15;11962:410;12002:7;12025:20;12043:1;12025:20;:::i;:::-;12020:25;;12059:20;12077:1;12059:20;:::i;:::-;12054:25;;12114:1;12111;12107:9;12136:30;12154:11;12136:30;:::i;:::-;12125:41;;12315:1;12306:7;12302:15;12299:1;12296:22;12276:1;12269:9;12249:83;12226:139;;12345:18;;:::i;:::-;12226:139;12010:362;11962:410;;;;:::o;12378:180::-;12426:77;12423:1;12416:88;12523:4;12520:1;12513:15;12547:4;12544:1;12537:15;12564:185;12604:1;12621:20;12639:1;12621:20;:::i;:::-;12616:25;;12655:20;12673:1;12655:20;:::i;:::-;12650:25;;12694:1;12684:35;;12699:18;;:::i;:::-;12684:35;12741:1;12738;12734:9;12729:14;;12564:185;;;;:::o;12755:233::-;12895:34;12891:1;12883:6;12879:14;12872:58;12964:16;12959:2;12951:6;12947:15;12940:41;12755:233;:::o;12994:366::-;13136:3;13157:67;13221:2;13216:3;13157:67;:::i;:::-;13150:74;;13233:93;13322:3;13233:93;:::i;:::-;13351:2;13346:3;13342:12;13335:19;;12994:366;;;:::o;13366:419::-;13532:4;13570:2;13559:9;13555:18;13547:26;;13619:9;13613:4;13609:20;13605:1;13594:9;13590:17;13583:47;13647:131;13773:4;13647:131;:::i;:::-;13639:139;;13366:419;;;:::o;13791:168::-;13931:20;13927:1;13919:6;13915:14;13908:44;13791:168;:::o;13965:366::-;14107:3;14128:67;14192:2;14187:3;14128:67;:::i;:::-;14121:74;;14204:93;14293:3;14204:93;:::i;:::-;14322:2;14317:3;14313:12;14306:19;;13965:366;;;:::o;14337:419::-;14503:4;14541:2;14530:9;14526:18;14518:26;;14590:9;14584:4;14580:20;14576:1;14565:9;14561:17;14554:47;14618:131;14744:4;14618:131;:::i;:::-;14610:139;;14337:419;;;:::o;14762:332::-;14883:4;14921:2;14910:9;14906:18;14898:26;;14934:71;15002:1;14991:9;14987:17;14978:6;14934:71;:::i;:::-;15015:72;15083:2;15072:9;15068:18;15059:6;15015:72;:::i;:::-;14762:332;;;;;:::o;15100:137::-;15154:5;15185:6;15179:13;15170:22;;15201:30;15225:5;15201:30;:::i;:::-;15100:137;;;;:::o;15243:345::-;15310:6;15359:2;15347:9;15338:7;15334:23;15330:32;15327:119;;;15365:79;;:::i;:::-;15327:119;15485:1;15510:61;15563:7;15554:6;15543:9;15539:22;15510:61;:::i;:::-;15500:71;;15456:125;15243:345;;;;:::o;15594:231::-;15734:34;15730:1;15722:6;15718:14;15711:58;15803:14;15798:2;15790:6;15786:15;15779:39;15594:231;:::o;15831:366::-;15973:3;15994:67;16058:2;16053:3;15994:67;:::i;:::-;15987:74;;16070:93;16159:3;16070:93;:::i;:::-;16188:2;16183:3;16179:12;16172:19;;15831:366;;;:::o;16203:419::-;16369:4;16407:2;16396:9;16392:18;16384:26;;16456:9;16450:4;16446:20;16442:1;16431:9;16427:17;16420:47;16484:131;16610:4;16484:131;:::i;:::-;16476:139;;16203:419;;;:::o;16628:60::-;16656:3;16677:5;16670:12;;16628:60;;;:::o;16694:142::-;16744:9;16777:53;16795:34;16804:24;16822:5;16804:24;:::i;:::-;16795:34;:::i;:::-;16777:53;:::i;:::-;16764:66;;16694:142;;;:::o;16842:126::-;16892:9;16925:37;16956:5;16925:37;:::i;:::-;16912:50;;16842:126;;;:::o;16974:134::-;17032:9;17065:37;17096:5;17065:37;:::i;:::-;17052:50;;16974:134;;;:::o;17114:147::-;17209:45;17248:5;17209:45;:::i;:::-;17204:3;17197:58;17114:147;;:::o;17267:238::-;17368:4;17406:2;17395:9;17391:18;17383:26;;17419:79;17495:1;17484:9;17480:17;17471:6;17419:79;:::i;:::-;17267:238;;;;:::o;17511:223::-;17651:34;17647:1;17639:6;17635:14;17628:58;17720:6;17715:2;17707:6;17703:15;17696:31;17511:223;:::o;17740:366::-;17882:3;17903:67;17967:2;17962:3;17903:67;:::i;:::-;17896:74;;17979:93;18068:3;17979:93;:::i;:::-;18097:2;18092:3;18088:12;18081:19;;17740:366;;;:::o;18112:419::-;18278:4;18316:2;18305:9;18301:18;18293:26;;18365:9;18359:4;18355:20;18351:1;18340:9;18336:17;18329:47;18393:131;18519:4;18393:131;:::i;:::-;18385:139;;18112:419;;;:::o;18537:221::-;18677:34;18673:1;18665:6;18661:14;18654:58;18746:4;18741:2;18733:6;18729:15;18722:29;18537:221;:::o;18764:366::-;18906:3;18927:67;18991:2;18986:3;18927:67;:::i;:::-;18920:74;;19003:93;19092:3;19003:93;:::i;:::-;19121:2;19116:3;19112:12;19105:19;;18764:366;;;:::o;19136:419::-;19302:4;19340:2;19329:9;19325:18;19317:26;;19389:9;19383:4;19379:20;19375:1;19364:9;19360:17;19353:47;19417:131;19543:4;19417:131;:::i;:::-;19409:139;;19136:419;;;:::o;19561:194::-;19601:4;19621:20;19639:1;19621:20;:::i;:::-;19616:25;;19655:20;19673:1;19655:20;:::i;:::-;19650:25;;19699:1;19696;19692:9;19684:17;;19723:1;19717:4;19714:11;19711:37;;;19728:18;;:::i;:::-;19711:37;19561:194;;;;:::o;19761:224::-;19901:34;19897:1;19889:6;19885:14;19878:58;19970:7;19965:2;19957:6;19953:15;19946:32;19761:224;:::o;19991:366::-;20133:3;20154:67;20218:2;20213:3;20154:67;:::i;:::-;20147:74;;20230:93;20319:3;20230:93;:::i;:::-;20348:2;20343:3;20339:12;20332:19;;19991:366;;;:::o;20363:419::-;20529:4;20567:2;20556:9;20552:18;20544:26;;20616:9;20610:4;20606:20;20602:1;20591:9;20587:17;20580:47;20644:131;20770:4;20644:131;:::i;:::-;20636:139;;20363:419;;;:::o;20788:222::-;20928:34;20924:1;20916:6;20912:14;20905:58;20997:5;20992:2;20984:6;20980:15;20973:30;20788:222;:::o;21016:366::-;21158:3;21179:67;21243:2;21238:3;21179:67;:::i;:::-;21172:74;;21255:93;21344:3;21255:93;:::i;:::-;21373:2;21368:3;21364:12;21357:19;;21016:366;;;:::o;21388:419::-;21554:4;21592:2;21581:9;21577:18;21569:26;;21641:9;21635:4;21631:20;21627:1;21616:9;21612:17;21605:47;21669:131;21795:4;21669:131;:::i;:::-;21661:139;;21388:419;;;:::o;21813:228::-;21953:34;21949:1;21941:6;21937:14;21930:58;22022:11;22017:2;22009:6;22005:15;21998:36;21813:228;:::o;22047:366::-;22189:3;22210:67;22274:2;22269:3;22210:67;:::i;:::-;22203:74;;22286:93;22375:3;22286:93;:::i;:::-;22404:2;22399:3;22395:12;22388:19;;22047:366;;;:::o;22419:419::-;22585:4;22623:2;22612:9;22608:18;22600:26;;22672:9;22666:4;22662:20;22658:1;22647:9;22643:17;22636:47;22700:131;22826:4;22700:131;:::i;:::-;22692:139;;22419:419;;;:::o;22844:236::-;22984:34;22980:1;22972:6;22968:14;22961:58;23053:19;23048:2;23040:6;23036:15;23029:44;22844:236;:::o;23086:366::-;23228:3;23249:67;23313:2;23308:3;23249:67;:::i;:::-;23242:74;;23325:93;23414:3;23325:93;:::i;:::-;23443:2;23438:3;23434:12;23427:19;;23086:366;;;:::o;23458:419::-;23624:4;23662:2;23651:9;23647:18;23639:26;;23711:9;23705:4;23701:20;23697:1;23686:9;23682:17;23675:47;23739:131;23865:4;23739:131;:::i;:::-;23731:139;;23458:419;;;:::o;23883:164::-;24023:16;24019:1;24011:6;24007:14;24000:40;23883:164;:::o;24053:366::-;24195:3;24216:67;24280:2;24275:3;24216:67;:::i;:::-;24209:74;;24292:93;24381:3;24292:93;:::i;:::-;24410:2;24405:3;24401:12;24394:19;;24053:366;;;:::o;24425:419::-;24591:4;24629:2;24618:9;24614:18;24606:26;;24678:9;24672:4;24668:20;24664:1;24653:9;24649:17;24642:47;24706:131;24832:4;24706:131;:::i;:::-;24698:139;;24425:419;;;:::o;24850:180::-;24990:32;24986:1;24978:6;24974:14;24967:56;24850:180;:::o;25036:366::-;25178:3;25199:67;25263:2;25258:3;25199:67;:::i;:::-;25192:74;;25275:93;25364:3;25275:93;:::i;:::-;25393:2;25388:3;25384:12;25377:19;;25036:366;;;:::o;25408:419::-;25574:4;25612:2;25601:9;25597:18;25589:26;;25661:9;25655:4;25651:20;25647:1;25636:9;25632:17;25625:47;25689:131;25815:4;25689:131;:::i;:::-;25681:139;;25408:419;;;:::o;25833:191::-;25873:3;25892:20;25910:1;25892:20;:::i;:::-;25887:25;;25926:20;25944:1;25926:20;:::i;:::-;25921:25;;25969:1;25966;25962:9;25955:16;;25990:3;25987:1;25984:10;25981:36;;;25997:18;;:::i;:::-;25981:36;25833:191;;;;:::o;26030:167::-;26170:19;26166:1;26158:6;26154:14;26147:43;26030:167;:::o;26203:366::-;26345:3;26366:67;26430:2;26425:3;26366:67;:::i;:::-;26359:74;;26442:93;26531:3;26442:93;:::i;:::-;26560:2;26555:3;26551:12;26544:19;;26203:366;;;:::o;26575:419::-;26741:4;26779:2;26768:9;26764:18;26756:26;;26828:9;26822:4;26818:20;26814:1;26803:9;26799:17;26792:47;26856:131;26982:4;26856:131;:::i;:::-;26848:139;;26575:419;;;:::o;27000:180::-;27048:77;27045:1;27038:88;27145:4;27142:1;27135:15;27169:4;27166:1;27159:15;27186:233;27225:3;27248:24;27266:5;27248:24;:::i;:::-;27239:33;;27294:66;27287:5;27284:77;27281:103;;27364:18;;:::i;:::-;27281:103;27411:1;27404:5;27400:13;27393:20;;27186:233;;;:::o;27425:180::-;27473:77;27470:1;27463:88;27570:4;27567:1;27560:15;27594:4;27591:1;27584:15;27611:180;27659:77;27656:1;27649:88;27756:4;27753:1;27746:15;27780:4;27777:1;27770:15;27797:143;27854:5;27885:6;27879:13;27870:22;;27901:33;27928:5;27901:33;:::i;:::-;27797:143;;;;:::o;27946:351::-;28016:6;28065:2;28053:9;28044:7;28040:23;28036:32;28033:119;;;28071:79;;:::i;:::-;28033:119;28191:1;28216:64;28272:7;28263:6;28252:9;28248:22;28216:64;:::i;:::-;28206:74;;28162:128;27946:351;;;;:::o;28303:85::-;28348:7;28377:5;28366:16;;28303:85;;;:::o;28394:158::-;28452:9;28485:61;28503:42;28512:32;28538:5;28512:32;:::i;:::-;28503:42;:::i;:::-;28485:61;:::i;:::-;28472:74;;28394:158;;;:::o;28558:147::-;28653:45;28692:5;28653:45;:::i;:::-;28648:3;28641:58;28558:147;;:::o;28711:114::-;28778:6;28812:5;28806:12;28796:22;;28711:114;;;:::o;28831:184::-;28930:11;28964:6;28959:3;28952:19;29004:4;28999:3;28995:14;28980:29;;28831:184;;;;:::o;29021:132::-;29088:4;29111:3;29103:11;;29141:4;29136:3;29132:14;29124:22;;29021:132;;;:::o;29159:108::-;29236:24;29254:5;29236:24;:::i;:::-;29231:3;29224:37;29159:108;;:::o;29273:179::-;29342:10;29363:46;29405:3;29397:6;29363:46;:::i;:::-;29441:4;29436:3;29432:14;29418:28;;29273:179;;;;:::o;29458:113::-;29528:4;29560;29555:3;29551:14;29543:22;;29458:113;;;:::o;29607:732::-;29726:3;29755:54;29803:5;29755:54;:::i;:::-;29825:86;29904:6;29899:3;29825:86;:::i;:::-;29818:93;;29935:56;29985:5;29935:56;:::i;:::-;30014:7;30045:1;30030:284;30055:6;30052:1;30049:13;30030:284;;;30131:6;30125:13;30158:63;30217:3;30202:13;30158:63;:::i;:::-;30151:70;;30244:60;30297:6;30244:60;:::i;:::-;30234:70;;30090:224;30077:1;30074;30070:9;30065:14;;30030:284;;;30034:14;30330:3;30323:10;;29731:608;;;29607:732;;;;:::o;30345:831::-;30608:4;30646:3;30635:9;30631:19;30623:27;;30660:71;30728:1;30717:9;30713:17;30704:6;30660:71;:::i;:::-;30741:80;30817:2;30806:9;30802:18;30793:6;30741:80;:::i;:::-;30868:9;30862:4;30858:20;30853:2;30842:9;30838:18;30831:48;30896:108;30999:4;30990:6;30896:108;:::i;:::-;30888:116;;31014:72;31082:2;31071:9;31067:18;31058:6;31014:72;:::i;:::-;31096:73;31164:3;31153:9;31149:19;31140:6;31096:73;:::i;:::-;30345:831;;;;;;;;:::o;31182:807::-;31431:4;31469:3;31458:9;31454:19;31446:27;;31483:71;31551:1;31540:9;31536:17;31527:6;31483:71;:::i;:::-;31564:72;31632:2;31621:9;31617:18;31608:6;31564:72;:::i;:::-;31646:80;31722:2;31711:9;31707:18;31698:6;31646:80;:::i;:::-;31736;31812:2;31801:9;31797:18;31788:6;31736:80;:::i;:::-;31826:73;31894:3;31883:9;31879:19;31870:6;31826:73;:::i;:::-;31909;31977:3;31966:9;31962:19;31953:6;31909:73;:::i;:::-;31182:807;;;;;;;;;:::o;31995:143::-;32052:5;32083:6;32077:13;32068:22;;32099:33;32126:5;32099:33;:::i;:::-;31995:143;;;;:::o;32144:663::-;32232:6;32240;32248;32297:2;32285:9;32276:7;32272:23;32268:32;32265:119;;;32303:79;;:::i;:::-;32265:119;32423:1;32448:64;32504:7;32495:6;32484:9;32480:22;32448:64;:::i;:::-;32438:74;;32394:128;32561:2;32587:64;32643:7;32634:6;32623:9;32619:22;32587:64;:::i;:::-;32577:74;;32532:129;32700:2;32726:64;32782:7;32773:6;32762:9;32758:22;32726:64;:::i;:::-;32716:74;;32671:129;32144:663;;;;;:::o;32813:351::-;32883:6;32932:2;32920:9;32911:7;32907:23;32903:32;32900:119;;;32938:79;;:::i;:::-;32900:119;33058:1;33083:64;33139:7;33130:6;33119:9;33115:22;33083:64;:::i;:::-;33073:74;;33029:128;32813:351;;;;:::o;33170:720::-;33405:4;33443:3;33432:9;33428:19;33420:27;;33457:79;33533:1;33522:9;33518:17;33509:6;33457:79;:::i;:::-;33583:9;33577:4;33573:20;33568:2;33557:9;33553:18;33546:48;33611:108;33714:4;33705:6;33611:108;:::i;:::-;33603:116;;33729:72;33797:2;33786:9;33782:18;33773:6;33729:72;:::i;:::-;33811;33879:2;33868:9;33864:18;33855:6;33811:72;:::i;:::-;33170:720;;;;;;;:::o
Swarm Source
ipfs://9312c7bc73f6ddf8aedeb96dedab511b19158791bb8fd9ba44d47fee31649a4d
[ 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.