ERC-20
Overview
Max Total Supply
10,000,000 BUNDLE
Holders
6
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
99.341091443051983325 BUNDLEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Bundle
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-30 */ // SPDX-License-Identifier: MIT /* Description: ... Website: ... Twitter: ... Telegram: ... */ /* ascii ... */ /*** Solidity version declaration ***/ pragma solidity 0.8.20; /*** Default ERC20 functions and events ***/ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /*** Uniswap pair creation ***/ interface IUniswapV2Factory { /* Creates a new liquidity pool (pair) for the two specified ERC-20 tokens `tokenA` and `tokenB` */ function createPair(address tokenA, address tokenB) external returns (address pair); } /*** Uniswap pair swap ***/ interface IUniswapV2Router02 { /* Swaps an exact amount of input tokens for as much ETH as possible */ function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; /* Returns the address of the Uniswap factory contract */ function factory() external pure returns (address); /* Returns the address of the Wrapped Ether (WETH) contract */ function WETH() external pure returns (address); } /*** Math operations with checks ***/ library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 result = a + b; require(result >= a, "SafeMath: addition overflow"); return result; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { uint256 result = a - b; require(b <= a, "SafeMath: subtraction underflow"); return result; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 result = a * b; require(result / a == b, "SafeMath: multiplication overflow"); return result; } function div(uint256 a, uint256 b) internal pure returns (uint256) { uint result = a / b; require(b > 0, "SafeMath: modulus by zero"); return result; } } /*** Processes blockchain data ***/ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } /*** Processes contract ownership ***/ contract Ownable is Context { /** Variables **/ address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** Constructor **/ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** Modifiers **/ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** Getters **/ function owner() public view returns (address) { return _owner; } /** Main **/ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } /*** Processes main contract logic ***/ contract Bundle is Context, IERC20, Ownable { /** Variables **/ using SafeMath for uint256; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; address payable private _taxWallet; uint256 private _transferTax = 0; uint256 private _initialBuyTax = 15; uint256 private _initialSellTax = 30; uint256 private _finalBuyTax = 0; uint256 private _finalSellTax = 0; uint256 private _reduceBuyTaxAt = 300; // refers to '_buyCount' uint256 private _reduceSellTaxAt = 300; // refers to '_buyCount' uint256 private _preventSwapBefore = 5; // refers to '_buyCount' uint256 private _buyCount = 0; // increases with every purchase from not whitelisted addresses bool private inSwap = false; bool private swapEnabled = false; string private constant _name = unicode"Bundle"; string private constant _symbol = unicode"BUNDLE"; uint8 private constant _decimals = 18; uint256 private constant _totalSupply = 10_000_000 * 10**_decimals; // 10m (all) uint256 public _maxTxAmount = 100_000 * 10**_decimals; // 100k (1%) uint256 public _maxWalletSize = 200_000 * 10**_decimals; // 200k (2%) uint256 public _taxSwapThreshold = 50_000 * 10**_decimals; // 50k (0.5%) uint256 public _maxTaxSwap = 100_000 * 10**_decimals; // 100k (1%) event MaxTxAmountUpdated(uint _maxTxAmount); /** Constructor **/ constructor () { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _totalSupply; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[_taxWallet] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _totalSupply); } /** Modifiers **/ /* When added to function, handles tax swap flag 'inSwap' */ modifier lockTheSwap { inSwap = true; _; inSwap = false; } /** Getters **/ function totalSupply() public pure override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } 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; } /* ### TEMP (remove on release) */ function buyCount() public view returns (uint256) { return _buyCount; } function transferTax() public view returns (uint256) { return _transferTax; } function initialBuyTax() public view returns (uint256) { return _initialBuyTax; } function initialSellTax() public view returns (uint256) { return _initialSellTax; } function getBalances(address[] memory wallets) public view returns (uint256[] memory) { uint256[] memory balancesLocal = new uint256[](wallets.length); for (uint index = 0; index < wallets.length; index++) { balancesLocal[index] = _balances[wallets[index]]; } return balancesLocal; } function checkIsAddressWhitelistedSingle(address checkAddress) public view returns (bool) { return _isExcludedFromFee[checkAddress]; } function checkIsAddressWhitelistedGroup(address[] memory checkAddresses) public view returns (bool[] memory) { bool[] memory result = new bool[](checkAddresses.length); for (uint index = 0; index < checkAddresses.length; index++) { result[index] = _isExcludedFromFee[checkAddresses[index]]; } return result; } /** Setters **/ function setTransferTax(uint256 newTransferTax) public onlyOwner returns (bool) { _transferTax = newTransferTax; return true; } function setInitialBuyTax(uint256 newInitialBuyTax) public onlyOwner returns (bool) { _initialBuyTax = newInitialBuyTax; return true; } function setInitialSellTax(uint256 newInitialSellTax) public onlyOwner returns (bool) { _initialSellTax = newInitialSellTax; return true; } function addToWhitelistSingle(address newAddress) public onlyOwner { _isExcludedFromFee[newAddress] = true; } function addToWhitelistGroup(address[] calldata newAddresses) public onlyOwner { for (uint256 i = 0; i < newAddresses.length; i++) { _isExcludedFromFee[newAddresses[i]] = true; } } /** Helper (Additional) **/ function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } /* Note: 'lockSwap' handles tax swap flag 'inSwap' */ function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } /* Manual swap token-tax to ETH. Note: in this case, tax swap limits do not apply */ function manualSwap() external { require(_msgSender() == _taxWallet); // instead of 'onlyOwner' modifier (will still work after renounce) uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance > 0) { swapTokensForEth(tokenBalance); // swap token-tax for ETH } uint256 ethBalance = address(this).balance; if (ethBalance > 0) { sendETHToFee(ethBalance); // send ETH to '_taxWallet' } } /* Create a pair Main-net v2 router address: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D Base-net v2 router address: 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24 */ function openTrading() external onlyOwner() { uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), _totalSupply); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; } function removeLimits() external onlyOwner { _maxTxAmount = _totalSupply; _maxWalletSize = _totalSupply; emit MaxTxAmountUpdated(_totalSupply); } /** Main (Transfer) **/ function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount)); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; // from == uniswapV2Pair: Buy | to == uniswapV2Pair: Sell if (from != owner() && to != owner()) { taxAmount = amount.mul(_transferTax).div(100); // transfer tax // buy if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100); // buy tax _buyCount++; } // sell if (to == uniswapV2Pair && from != address(this)) { taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100); // sell tax } // tax swap on sell uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore ) { swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap))); // swap token-tax for ETH (max: '_maxTaxSwap') uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); // send tax ETH to '_taxWallet' } } } if (taxAmount > 0) { _balances[address(this)] = _balances[address(this)].add(taxAmount); // add token-tax to contract balance emit Transfer(from, address(this), taxAmount); } _balances[from] = _balances[from].sub(amount); // remove 'amount' from sender balance _balances[to] = _balances[to].add(amount.sub(taxAmount)); // add 'amount' minus 'tax' to recipient balance emit Transfer(from, to, amount.sub(taxAmount)); } // contract can receive ETH receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"newAddresses","type":"address[]"}],"name":"addToWhitelistGroup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addToWhitelistSingle","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":"buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"checkAddresses","type":"address[]"}],"name":"checkIsAddressWhitelistedGroup","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"checkAddress","type":"address"}],"name":"checkIsAddressWhitelistedSingle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"getBalances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newInitialBuyTax","type":"uint256"}],"name":"setInitialBuyTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newInitialSellTax","type":"uint256"}],"name":"setInitialSellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTransferTax","type":"uint256"}],"name":"setTransferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f600755600f600855601e6009555f600a555f600b5561012c600c5561012c600d556005600e555f600f555f60105f6101000a81548160ff0219169083151502179055505f601060016101000a81548160ff0219169083151502179055506012600a620000729190620005f0565b620186a062000082919062000640565b6011556012600a620000959190620005f0565b62030d40620000a5919062000640565b6012556012600a620000b89190620005f0565b61c350620000c7919062000640565b6013556012600a620000da9190620005f0565b620186a0620000ea919062000640565b601455348015620000f9575f80fd5b505f6200010b6200043060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001b76200043060201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620002069190620005f0565b6298968062000216919062000640565b60035f620002296200043060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f6200027b6200043760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003a56200043060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620004039190620005f0565b6298968062000413919062000640565b6040516200042291906200069b565b60405180910390a3620006b6565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004e857808604811115620004c057620004bf6200045e565b5b6001851615620004d05780820291505b8081029050620004e0856200048b565b9450620004a0565b94509492505050565b5f82620005025760019050620005d4565b8162000511575f9050620005d4565b81600181146200052a576002811462000535576200056b565b6001915050620005d4565b60ff8411156200054a57620005496200045e565b5b8360020a9150848211156200056457620005636200045e565b5b50620005d4565b5060208310610133831016604e8410600b8410161715620005a55782820a9050838111156200059f576200059e6200045e565b5b620005d4565b620005b4848484600162000497565b92509050818404811115620005ce57620005cd6200045e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620005fc82620005db565b91506200060983620005e4565b9250620006387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004f1565b905092915050565b5f6200064c82620005db565b91506200065983620005db565b92508282026200066981620005db565b915082820484148315176200068357620006826200045e565b5b5092915050565b6200069581620005db565b82525050565b5f602082019050620006b05f8301846200068a565b92915050565b6137f880620006c45f395ff3fe6080604052600436106101d0575f3560e01c80637d1db4a5116100f6578063a9059cbb11610094578063d97e74b111610063578063d97e74b11461065b578063db05944c14610697578063dd62ed3e146106c1578063eeb0a857146106fd576101d7565b8063a9059cbb146105b5578063bf474bed146105f1578063c9567bf91461061b578063ca70307514610631576101d7565b80638da5cb5b116100d05780638da5cb5b146104fb5780638f9a55c01461052557806395d89b411461054f578063a6042a4614610579576101d7565b80637d1db4a51461046b5780638124f7ac146104955780638b525903146104bf576101d7565b80633912ff971161016e57806370a082311161013d57806370a08231146103db578063715018a614610417578063751039fc1461042d5780637646ba1014610443576101d7565b80633912ff971461033757806351bc3c85146103615780635bd17bb3146103775780636f9f3bfc146103b3576101d7565b806318160ddd116101aa57806318160ddd1461026b57806323b872dd146102955780632d2ae1c1146102d1578063313ce5671461030d576101d7565b806306fdde03146101db578063095ea7b3146102055780630faee56f14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef610739565b6040516101fc919061263d565b60405180910390f35b348015610210575f80fd5b5061022b600480360381019061022691906126fb565b610776565b6040516102389190612753565b60405180910390f35b34801561024c575f80fd5b50610255610793565b604051610262919061277b565b60405180910390f35b348015610276575f80fd5b5061027f610799565b60405161028c919061277b565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612794565b6107bb565b6040516102c89190612753565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612924565b610875565b6040516103049190612a22565b60405180910390f35b348015610318575f80fd5b50610321610963565b60405161032e9190612a5d565b60405180910390f35b348015610342575f80fd5b5061034b61096b565b604051610358919061277b565b60405180910390f35b34801561036c575f80fd5b50610375610974565b005b348015610382575f80fd5b5061039d60048036038101906103989190612a76565b610a0b565b6040516103aa9190612753565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d49190612aa1565b610ab0565b005b3480156103e6575f80fd5b5061040160048036038101906103fc9190612aa1565b610b9c565b60405161040e919061277b565b60405180910390f35b348015610422575f80fd5b5061042b610be2565b005b348015610438575f80fd5b50610441610d30565b005b34801561044e575f80fd5b5061046960048036038101906104649190612b25565b610e5c565b005b348015610476575f80fd5b5061047f610f91565b60405161048c919061277b565b60405180910390f35b3480156104a0575f80fd5b506104a9610f97565b6040516104b6919061277b565b60405180910390f35b3480156104ca575f80fd5b506104e560048036038101906104e09190612a76565b610fa0565b6040516104f29190612753565b60405180910390f35b348015610506575f80fd5b5061050f611045565b60405161051c9190612b7f565b60405180910390f35b348015610530575f80fd5b5061053961106c565b604051610546919061277b565b60405180910390f35b34801561055a575f80fd5b50610563611072565b604051610570919061263d565b60405180910390f35b348015610584575f80fd5b5061059f600480360381019061059a9190612a76565b6110af565b6040516105ac9190612753565b60405180910390f35b3480156105c0575f80fd5b506105db60048036038101906105d691906126fb565b611154565b6040516105e89190612753565b60405180910390f35b3480156105fc575f80fd5b50610605611171565b604051610612919061277b565b60405180910390f35b348015610626575f80fd5b5061062f611177565b005b34801561063c575f80fd5b50610645611575565b604051610652919061277b565b60405180910390f35b348015610666575f80fd5b50610681600480360381019061067c9190612aa1565b61157e565b60405161068e9190612753565b60405180910390f35b3480156106a2575f80fd5b506106ab6115d0565b6040516106b8919061277b565b60405180910390f35b3480156106cc575f80fd5b506106e760048036038101906106e29190612b98565b6115d9565b6040516106f4919061277b565b60405180910390f35b348015610708575f80fd5b50610723600480360381019061071e9190612924565b61165b565b6040516107309190612c8d565b60405180910390f35b60606040518060400160405280600681526020017f42756e646c650000000000000000000000000000000000000000000000000000815250905090565b5f61078961078261175b565b8484611762565b6001905092915050565b60145481565b5f6012600a6107a89190612e09565b629896806107b69190612e53565b905090565b5f6107c7848484611925565b61086a846107d361175b565b6108658560045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61081d61175b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213d90919063ffffffff16565b611762565b600190509392505050565b60605f825167ffffffffffffffff811115610893576108926127e8565b5b6040519080825280602002602001820160405280156108c15781602001602082028036833780820191505090505b5090505f5b83518110156109595760035f8583815181106108e5576108e4612e94565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482828151811061093a57610939612e94565b5b602002602001018181525050808061095190612ec1565b9150506108c6565b5080915050919050565b5f6012905090565b5f600854905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b461175b565b73ffffffffffffffffffffffffffffffffffffffff16146109d3575f80fd5b5f6109dd30610b9c565b90505f8111156109f1576109f08161219a565b5b5f4790505f811115610a0757610a0681612403565b5b5050565b5f610a1461175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790612f52565b60405180910390fd5b8160098190555060019050919050565b610ab861175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90612f52565b60405180910390fd5b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bea61175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d90612f52565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d3861175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90612f52565b60405180910390fd5b6012600a610dd29190612e09565b62989680610de09190612e53565b6011819055506012600a610df49190612e09565b62989680610e029190612e53565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610e379190612e09565b62989680610e459190612e53565b604051610e52919061277b565b60405180910390a1565b610e6461175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee790612f52565b60405180910390fd5b5f5b82829050811015610f8c57600160055f858585818110610f1557610f14612e94565b5b9050602002016020810190610f2a9190612aa1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610f8490612ec1565b915050610ef2565b505050565b60115481565b5f600754905090565b5f610fa961175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90612f52565b60405180910390fd5b8160078190555060019050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f42554e444c450000000000000000000000000000000000000000000000000000815250905090565b5f6110b861175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b90612f52565b60405180910390fd5b8160088190555060019050919050565b5f61116761116061175b565b8484611925565b6001905092915050565b60135481565b61117f61175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290612f52565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112a63060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6112939190612e09565b629896806112a19190612e53565b611762565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611310573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113349190612f84565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113de9190612f84565b6040518363ffffffff1660e01b81526004016113fb929190612faf565b6020604051808303815f875af1158015611417573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143b9190612f84565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611517929190612fd6565b6020604051808303815f875af1158015611533573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115579190613027565b506001601060016101000a81548160ff021916908315150217905550565b5f600f54905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f600954905090565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60605f825167ffffffffffffffff811115611679576116786127e8565b5b6040519080825280602002602001820160405280156116a75781602001602082028036833780820191505090505b5090505f5b83518110156117515760055f8583815181106116cb576116ca612e94565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1682828151811061172c5761172b612e94565b5b602002602001019015159081151581525050808061174990612ec1565b9150506116ac565b5080915050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c7906130c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613150565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611918919061277b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906131de565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f89061326c565b60405180910390fd5b5f8111611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906132fa565b60405180910390fd5b5f611a4c611045565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611aba5750611a8a611045565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8d57611ae76064611ad96007548561246b90919063ffffffff16565b6124e290919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b92575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611be5575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cdd57601154821115611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690613362565b60405180910390fd5b60125482611c3c85610b9c565b611c469190613380565b1115611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e906133fd565b60405180910390fd5b611cc36064611cb5600c54600f5411611ca257600854611ca6565b600a545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b9050600f5f815480929190611cd790612ec1565b91905055505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d6557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611da957611da66064611d98600d54600f5411611d8557600954611d89565b600b545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f611db330610b9c565b905060105f9054906101000a900460ff16158015611e1d575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e355750601060019054906101000a900460ff165b8015611e42575060135481115b8015611e515750600e54600f54115b15611e8b57611e73611e6e84611e698460145461253e565b61253e565b61219a565b5f4790505f811115611e8957611e8847612403565b5b505b505b5f811115611f8c57611ee58160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461255690919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f83919061277b565b60405180910390a35b611fdc8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213d90919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061207f612033828461213d90919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461255690919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612122848661213d90919063ffffffff16565b60405161212f919061277b565b60405180910390a350505050565b5f80828461214b919061341b565b905083831115612190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218790613498565b60405180910390fd5b8091505092915050565b600160105f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121d0576121cf6127e8565b5b6040519080825280602002602001820160405280156121fe5781602001602082028036833780820191505090505b50905030815f8151811061221557612214612e94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122dd9190612f84565b816001815181106122f1576122f0612e94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123573060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611762565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123b99594939291906135af565b5f604051808303815f87803b1580156123d0575f80fd5b505af11580156123e2573d5f803e3d5ffd5b50505050505f60105f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612467573d5f803e3d5ffd5b5050565b5f80830361247b575f90506124dc565b5f82846124889190612e53565b90508284826124979190613634565b146124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce906136d4565b60405180910390fd5b809150505b92915050565b5f8082846124f09190613634565b90505f8311612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b9061373c565b60405180910390fd5b8091505092915050565b5f81831161254c578261254e565b815b905092915050565b5f8082846125649190613380565b9050838110156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a0906137a4565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125ea5780820151818401526020810190506125cf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61260f826125b3565b61261981856125bd565b93506126298185602086016125cd565b612632816125f5565b840191505092915050565b5f6020820190508181035f8301526126558184612605565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126978261266e565b9050919050565b6126a78161268d565b81146126b1575f80fd5b50565b5f813590506126c28161269e565b92915050565b5f819050919050565b6126da816126c8565b81146126e4575f80fd5b50565b5f813590506126f5816126d1565b92915050565b5f806040838503121561271157612710612666565b5b5f61271e858286016126b4565b925050602061272f858286016126e7565b9150509250929050565b5f8115159050919050565b61274d81612739565b82525050565b5f6020820190506127665f830184612744565b92915050565b612775816126c8565b82525050565b5f60208201905061278e5f83018461276c565b92915050565b5f805f606084860312156127ab576127aa612666565b5b5f6127b8868287016126b4565b93505060206127c9868287016126b4565b92505060406127da868287016126e7565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61281e826125f5565b810181811067ffffffffffffffff8211171561283d5761283c6127e8565b5b80604052505050565b5f61284f61265d565b905061285b8282612815565b919050565b5f67ffffffffffffffff82111561287a576128796127e8565b5b602082029050602081019050919050565b5f80fd5b5f6128a161289c84612860565b612846565b905080838252602082019050602084028301858111156128c4576128c361288b565b5b835b818110156128ed57806128d988826126b4565b8452602084019350506020810190506128c6565b5050509392505050565b5f82601f83011261290b5761290a6127e4565b5b813561291b84826020860161288f565b91505092915050565b5f6020828403121561293957612938612666565b5b5f82013567ffffffffffffffff8111156129565761295561266a565b5b612962848285016128f7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61299d816126c8565b82525050565b5f6129ae8383612994565b60208301905092915050565b5f602082019050919050565b5f6129d08261296b565b6129da8185612975565b93506129e583612985565b805f5b83811015612a155781516129fc88826129a3565b9750612a07836129ba565b9250506001810190506129e8565b5085935050505092915050565b5f6020820190508181035f830152612a3a81846129c6565b905092915050565b5f60ff82169050919050565b612a5781612a42565b82525050565b5f602082019050612a705f830184612a4e565b92915050565b5f60208284031215612a8b57612a8a612666565b5b5f612a98848285016126e7565b91505092915050565b5f60208284031215612ab657612ab5612666565b5b5f612ac3848285016126b4565b91505092915050565b5f80fd5b5f8083601f840112612ae557612ae46127e4565b5b8235905067ffffffffffffffff811115612b0257612b01612acc565b5b602083019150836020820283011115612b1e57612b1d61288b565b5b9250929050565b5f8060208385031215612b3b57612b3a612666565b5b5f83013567ffffffffffffffff811115612b5857612b5761266a565b5b612b6485828601612ad0565b92509250509250929050565b612b798161268d565b82525050565b5f602082019050612b925f830184612b70565b92915050565b5f8060408385031215612bae57612bad612666565b5b5f612bbb858286016126b4565b9250506020612bcc858286016126b4565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c0881612739565b82525050565b5f612c198383612bff565b60208301905092915050565b5f602082019050919050565b5f612c3b82612bd6565b612c458185612be0565b9350612c5083612bf0565b805f5b83811015612c80578151612c678882612c0e565b9750612c7283612c25565b925050600181019050612c53565b5085935050505092915050565b5f6020820190508181035f830152612ca58184612c31565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d2f57808604811115612d0b57612d0a612cad565b5b6001851615612d1a5780820291505b8081029050612d2885612cda565b9450612cef565b94509492505050565b5f82612d475760019050612e02565b81612d54575f9050612e02565b8160018114612d6a5760028114612d7457612da3565b6001915050612e02565b60ff841115612d8657612d85612cad565b5b8360020a915084821115612d9d57612d9c612cad565b5b50612e02565b5060208310610133831016604e8410600b8410161715612dd85782820a905083811115612dd357612dd2612cad565b5b612e02565b612de58484846001612ce6565b92509050818404811115612dfc57612dfb612cad565b5b81810290505b9392505050565b5f612e13826126c8565b9150612e1e83612a42565b9250612e4b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d38565b905092915050565b5f612e5d826126c8565b9150612e68836126c8565b9250828202612e76816126c8565b91508282048414831517612e8d57612e8c612cad565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612ecb826126c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612efd57612efc612cad565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f3c6020836125bd565b9150612f4782612f08565b602082019050919050565b5f6020820190508181035f830152612f6981612f30565b9050919050565b5f81519050612f7e8161269e565b92915050565b5f60208284031215612f9957612f98612666565b5b5f612fa684828501612f70565b91505092915050565b5f604082019050612fc25f830185612b70565b612fcf6020830184612b70565b9392505050565b5f604082019050612fe95f830185612b70565b612ff6602083018461276c565b9392505050565b61300681612739565b8114613010575f80fd5b50565b5f8151905061302181612ffd565b92915050565b5f6020828403121561303c5761303b612666565b5b5f61304984828501613013565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130ac6024836125bd565b91506130b782613052565b604082019050919050565b5f6020820190508181035f8301526130d9816130a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61313a6022836125bd565b9150613145826130e0565b604082019050919050565b5f6020820190508181035f8301526131678161312e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131c86025836125bd565b91506131d38261316e565b604082019050919050565b5f6020820190508181035f8301526131f5816131bc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132566023836125bd565b9150613261826131fc565b604082019050919050565b5f6020820190508181035f8301526132838161324a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132e46029836125bd565b91506132ef8261328a565b604082019050919050565b5f6020820190508181035f830152613311816132d8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61334c6019836125bd565b915061335782613318565b602082019050919050565b5f6020820190508181035f83015261337981613340565b9050919050565b5f61338a826126c8565b9150613395836126c8565b92508282019050808211156133ad576133ac612cad565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133e7601a836125bd565b91506133f2826133b3565b602082019050919050565b5f6020820190508181035f830152613414816133db565b9050919050565b5f613425826126c8565b9150613430836126c8565b925082820390508181111561344857613447612cad565b5b92915050565b7f536166654d6174683a207375627472616374696f6e20756e646572666c6f77005f82015250565b5f613482601f836125bd565b915061348d8261344e565b602082019050919050565b5f6020820190508181035f8301526134af81613476565b9050919050565b5f819050919050565b5f819050919050565b5f6134e26134dd6134d8846134b6565b6134bf565b6126c8565b9050919050565b6134f2816134c8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61352a8161268d565b82525050565b5f61353b8383613521565b60208301905092915050565b5f602082019050919050565b5f61355d826134f8565b6135678185613502565b935061357283613512565b805f5b838110156135a25781516135898882613530565b975061359483613547565b925050600181019050613575565b5085935050505092915050565b5f60a0820190506135c25f83018861276c565b6135cf60208301876134e9565b81810360408301526135e18186613553565b90506135f06060830185612b70565b6135fd608083018461276c565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61363e826126c8565b9150613649836126c8565b92508261365957613658613607565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136be6021836125bd565b91506136c982613664565b604082019050919050565b5f6020820190508181035f8301526136eb816136b2565b9050919050565b7f536166654d6174683a206d6f64756c7573206279207a65726f000000000000005f82015250565b5f6137266019836125bd565b9150613731826136f2565b602082019050919050565b5f6020820190508181035f8301526137538161371a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61378e601b836125bd565b91506137998261375a565b602082019050919050565b5f6020820190508181035f8301526137bb81613782565b905091905056fea26469706673582212205132483b9365d0c21d261ad0425aba185ad876d191f083993b6f2f141f5b030964736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101d0575f3560e01c80637d1db4a5116100f6578063a9059cbb11610094578063d97e74b111610063578063d97e74b11461065b578063db05944c14610697578063dd62ed3e146106c1578063eeb0a857146106fd576101d7565b8063a9059cbb146105b5578063bf474bed146105f1578063c9567bf91461061b578063ca70307514610631576101d7565b80638da5cb5b116100d05780638da5cb5b146104fb5780638f9a55c01461052557806395d89b411461054f578063a6042a4614610579576101d7565b80637d1db4a51461046b5780638124f7ac146104955780638b525903146104bf576101d7565b80633912ff971161016e57806370a082311161013d57806370a08231146103db578063715018a614610417578063751039fc1461042d5780637646ba1014610443576101d7565b80633912ff971461033757806351bc3c85146103615780635bd17bb3146103775780636f9f3bfc146103b3576101d7565b806318160ddd116101aa57806318160ddd1461026b57806323b872dd146102955780632d2ae1c1146102d1578063313ce5671461030d576101d7565b806306fdde03146101db578063095ea7b3146102055780630faee56f14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef610739565b6040516101fc919061263d565b60405180910390f35b348015610210575f80fd5b5061022b600480360381019061022691906126fb565b610776565b6040516102389190612753565b60405180910390f35b34801561024c575f80fd5b50610255610793565b604051610262919061277b565b60405180910390f35b348015610276575f80fd5b5061027f610799565b60405161028c919061277b565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612794565b6107bb565b6040516102c89190612753565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612924565b610875565b6040516103049190612a22565b60405180910390f35b348015610318575f80fd5b50610321610963565b60405161032e9190612a5d565b60405180910390f35b348015610342575f80fd5b5061034b61096b565b604051610358919061277b565b60405180910390f35b34801561036c575f80fd5b50610375610974565b005b348015610382575f80fd5b5061039d60048036038101906103989190612a76565b610a0b565b6040516103aa9190612753565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d49190612aa1565b610ab0565b005b3480156103e6575f80fd5b5061040160048036038101906103fc9190612aa1565b610b9c565b60405161040e919061277b565b60405180910390f35b348015610422575f80fd5b5061042b610be2565b005b348015610438575f80fd5b50610441610d30565b005b34801561044e575f80fd5b5061046960048036038101906104649190612b25565b610e5c565b005b348015610476575f80fd5b5061047f610f91565b60405161048c919061277b565b60405180910390f35b3480156104a0575f80fd5b506104a9610f97565b6040516104b6919061277b565b60405180910390f35b3480156104ca575f80fd5b506104e560048036038101906104e09190612a76565b610fa0565b6040516104f29190612753565b60405180910390f35b348015610506575f80fd5b5061050f611045565b60405161051c9190612b7f565b60405180910390f35b348015610530575f80fd5b5061053961106c565b604051610546919061277b565b60405180910390f35b34801561055a575f80fd5b50610563611072565b604051610570919061263d565b60405180910390f35b348015610584575f80fd5b5061059f600480360381019061059a9190612a76565b6110af565b6040516105ac9190612753565b60405180910390f35b3480156105c0575f80fd5b506105db60048036038101906105d691906126fb565b611154565b6040516105e89190612753565b60405180910390f35b3480156105fc575f80fd5b50610605611171565b604051610612919061277b565b60405180910390f35b348015610626575f80fd5b5061062f611177565b005b34801561063c575f80fd5b50610645611575565b604051610652919061277b565b60405180910390f35b348015610666575f80fd5b50610681600480360381019061067c9190612aa1565b61157e565b60405161068e9190612753565b60405180910390f35b3480156106a2575f80fd5b506106ab6115d0565b6040516106b8919061277b565b60405180910390f35b3480156106cc575f80fd5b506106e760048036038101906106e29190612b98565b6115d9565b6040516106f4919061277b565b60405180910390f35b348015610708575f80fd5b50610723600480360381019061071e9190612924565b61165b565b6040516107309190612c8d565b60405180910390f35b60606040518060400160405280600681526020017f42756e646c650000000000000000000000000000000000000000000000000000815250905090565b5f61078961078261175b565b8484611762565b6001905092915050565b60145481565b5f6012600a6107a89190612e09565b629896806107b69190612e53565b905090565b5f6107c7848484611925565b61086a846107d361175b565b6108658560045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61081d61175b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213d90919063ffffffff16565b611762565b600190509392505050565b60605f825167ffffffffffffffff811115610893576108926127e8565b5b6040519080825280602002602001820160405280156108c15781602001602082028036833780820191505090505b5090505f5b83518110156109595760035f8583815181106108e5576108e4612e94565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482828151811061093a57610939612e94565b5b602002602001018181525050808061095190612ec1565b9150506108c6565b5080915050919050565b5f6012905090565b5f600854905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b461175b565b73ffffffffffffffffffffffffffffffffffffffff16146109d3575f80fd5b5f6109dd30610b9c565b90505f8111156109f1576109f08161219a565b5b5f4790505f811115610a0757610a0681612403565b5b5050565b5f610a1461175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790612f52565b60405180910390fd5b8160098190555060019050919050565b610ab861175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90612f52565b60405180910390fd5b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bea61175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d90612f52565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d3861175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90612f52565b60405180910390fd5b6012600a610dd29190612e09565b62989680610de09190612e53565b6011819055506012600a610df49190612e09565b62989680610e029190612e53565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610e379190612e09565b62989680610e459190612e53565b604051610e52919061277b565b60405180910390a1565b610e6461175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee790612f52565b60405180910390fd5b5f5b82829050811015610f8c57600160055f858585818110610f1557610f14612e94565b5b9050602002016020810190610f2a9190612aa1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610f8490612ec1565b915050610ef2565b505050565b60115481565b5f600754905090565b5f610fa961175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90612f52565b60405180910390fd5b8160078190555060019050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f42554e444c450000000000000000000000000000000000000000000000000000815250905090565b5f6110b861175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b90612f52565b60405180910390fd5b8160088190555060019050919050565b5f61116761116061175b565b8484611925565b6001905092915050565b60135481565b61117f61175b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290612f52565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112a63060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6112939190612e09565b629896806112a19190612e53565b611762565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611310573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113349190612f84565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113de9190612f84565b6040518363ffffffff1660e01b81526004016113fb929190612faf565b6020604051808303815f875af1158015611417573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143b9190612f84565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611517929190612fd6565b6020604051808303815f875af1158015611533573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115579190613027565b506001601060016101000a81548160ff021916908315150217905550565b5f600f54905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f600954905090565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60605f825167ffffffffffffffff811115611679576116786127e8565b5b6040519080825280602002602001820160405280156116a75781602001602082028036833780820191505090505b5090505f5b83518110156117515760055f8583815181106116cb576116ca612e94565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1682828151811061172c5761172b612e94565b5b602002602001019015159081151581525050808061174990612ec1565b9150506116ac565b5080915050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c7906130c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613150565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611918919061277b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906131de565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f89061326c565b60405180910390fd5b5f8111611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906132fa565b60405180910390fd5b5f611a4c611045565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611aba5750611a8a611045565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8d57611ae76064611ad96007548561246b90919063ffffffff16565b6124e290919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b92575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611be5575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cdd57601154821115611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2690613362565b60405180910390fd5b60125482611c3c85610b9c565b611c469190613380565b1115611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e906133fd565b60405180910390fd5b611cc36064611cb5600c54600f5411611ca257600854611ca6565b600a545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b9050600f5f815480929190611cd790612ec1565b91905055505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d6557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611da957611da66064611d98600d54600f5411611d8557600954611d89565b600b545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f611db330610b9c565b905060105f9054906101000a900460ff16158015611e1d575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e355750601060019054906101000a900460ff165b8015611e42575060135481115b8015611e515750600e54600f54115b15611e8b57611e73611e6e84611e698460145461253e565b61253e565b61219a565b5f4790505f811115611e8957611e8847612403565b5b505b505b5f811115611f8c57611ee58160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461255690919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f83919061277b565b60405180910390a35b611fdc8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213d90919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061207f612033828461213d90919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461255690919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612122848661213d90919063ffffffff16565b60405161212f919061277b565b60405180910390a350505050565b5f80828461214b919061341b565b905083831115612190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218790613498565b60405180910390fd5b8091505092915050565b600160105f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121d0576121cf6127e8565b5b6040519080825280602002602001820160405280156121fe5781602001602082028036833780820191505090505b50905030815f8151811061221557612214612e94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122dd9190612f84565b816001815181106122f1576122f0612e94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123573060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611762565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123b99594939291906135af565b5f604051808303815f87803b1580156123d0575f80fd5b505af11580156123e2573d5f803e3d5ffd5b50505050505f60105f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612467573d5f803e3d5ffd5b5050565b5f80830361247b575f90506124dc565b5f82846124889190612e53565b90508284826124979190613634565b146124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce906136d4565b60405180910390fd5b809150505b92915050565b5f8082846124f09190613634565b90505f8311612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b9061373c565b60405180910390fd5b8091505092915050565b5f81831161254c578261254e565b815b905092915050565b5f8082846125649190613380565b9050838110156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a0906137a4565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125ea5780820151818401526020810190506125cf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61260f826125b3565b61261981856125bd565b93506126298185602086016125cd565b612632816125f5565b840191505092915050565b5f6020820190508181035f8301526126558184612605565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126978261266e565b9050919050565b6126a78161268d565b81146126b1575f80fd5b50565b5f813590506126c28161269e565b92915050565b5f819050919050565b6126da816126c8565b81146126e4575f80fd5b50565b5f813590506126f5816126d1565b92915050565b5f806040838503121561271157612710612666565b5b5f61271e858286016126b4565b925050602061272f858286016126e7565b9150509250929050565b5f8115159050919050565b61274d81612739565b82525050565b5f6020820190506127665f830184612744565b92915050565b612775816126c8565b82525050565b5f60208201905061278e5f83018461276c565b92915050565b5f805f606084860312156127ab576127aa612666565b5b5f6127b8868287016126b4565b93505060206127c9868287016126b4565b92505060406127da868287016126e7565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61281e826125f5565b810181811067ffffffffffffffff8211171561283d5761283c6127e8565b5b80604052505050565b5f61284f61265d565b905061285b8282612815565b919050565b5f67ffffffffffffffff82111561287a576128796127e8565b5b602082029050602081019050919050565b5f80fd5b5f6128a161289c84612860565b612846565b905080838252602082019050602084028301858111156128c4576128c361288b565b5b835b818110156128ed57806128d988826126b4565b8452602084019350506020810190506128c6565b5050509392505050565b5f82601f83011261290b5761290a6127e4565b5b813561291b84826020860161288f565b91505092915050565b5f6020828403121561293957612938612666565b5b5f82013567ffffffffffffffff8111156129565761295561266a565b5b612962848285016128f7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61299d816126c8565b82525050565b5f6129ae8383612994565b60208301905092915050565b5f602082019050919050565b5f6129d08261296b565b6129da8185612975565b93506129e583612985565b805f5b83811015612a155781516129fc88826129a3565b9750612a07836129ba565b9250506001810190506129e8565b5085935050505092915050565b5f6020820190508181035f830152612a3a81846129c6565b905092915050565b5f60ff82169050919050565b612a5781612a42565b82525050565b5f602082019050612a705f830184612a4e565b92915050565b5f60208284031215612a8b57612a8a612666565b5b5f612a98848285016126e7565b91505092915050565b5f60208284031215612ab657612ab5612666565b5b5f612ac3848285016126b4565b91505092915050565b5f80fd5b5f8083601f840112612ae557612ae46127e4565b5b8235905067ffffffffffffffff811115612b0257612b01612acc565b5b602083019150836020820283011115612b1e57612b1d61288b565b5b9250929050565b5f8060208385031215612b3b57612b3a612666565b5b5f83013567ffffffffffffffff811115612b5857612b5761266a565b5b612b6485828601612ad0565b92509250509250929050565b612b798161268d565b82525050565b5f602082019050612b925f830184612b70565b92915050565b5f8060408385031215612bae57612bad612666565b5b5f612bbb858286016126b4565b9250506020612bcc858286016126b4565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c0881612739565b82525050565b5f612c198383612bff565b60208301905092915050565b5f602082019050919050565b5f612c3b82612bd6565b612c458185612be0565b9350612c5083612bf0565b805f5b83811015612c80578151612c678882612c0e565b9750612c7283612c25565b925050600181019050612c53565b5085935050505092915050565b5f6020820190508181035f830152612ca58184612c31565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d2f57808604811115612d0b57612d0a612cad565b5b6001851615612d1a5780820291505b8081029050612d2885612cda565b9450612cef565b94509492505050565b5f82612d475760019050612e02565b81612d54575f9050612e02565b8160018114612d6a5760028114612d7457612da3565b6001915050612e02565b60ff841115612d8657612d85612cad565b5b8360020a915084821115612d9d57612d9c612cad565b5b50612e02565b5060208310610133831016604e8410600b8410161715612dd85782820a905083811115612dd357612dd2612cad565b5b612e02565b612de58484846001612ce6565b92509050818404811115612dfc57612dfb612cad565b5b81810290505b9392505050565b5f612e13826126c8565b9150612e1e83612a42565b9250612e4b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d38565b905092915050565b5f612e5d826126c8565b9150612e68836126c8565b9250828202612e76816126c8565b91508282048414831517612e8d57612e8c612cad565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612ecb826126c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612efd57612efc612cad565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f3c6020836125bd565b9150612f4782612f08565b602082019050919050565b5f6020820190508181035f830152612f6981612f30565b9050919050565b5f81519050612f7e8161269e565b92915050565b5f60208284031215612f9957612f98612666565b5b5f612fa684828501612f70565b91505092915050565b5f604082019050612fc25f830185612b70565b612fcf6020830184612b70565b9392505050565b5f604082019050612fe95f830185612b70565b612ff6602083018461276c565b9392505050565b61300681612739565b8114613010575f80fd5b50565b5f8151905061302181612ffd565b92915050565b5f6020828403121561303c5761303b612666565b5b5f61304984828501613013565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130ac6024836125bd565b91506130b782613052565b604082019050919050565b5f6020820190508181035f8301526130d9816130a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61313a6022836125bd565b9150613145826130e0565b604082019050919050565b5f6020820190508181035f8301526131678161312e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131c86025836125bd565b91506131d38261316e565b604082019050919050565b5f6020820190508181035f8301526131f5816131bc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132566023836125bd565b9150613261826131fc565b604082019050919050565b5f6020820190508181035f8301526132838161324a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132e46029836125bd565b91506132ef8261328a565b604082019050919050565b5f6020820190508181035f830152613311816132d8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61334c6019836125bd565b915061335782613318565b602082019050919050565b5f6020820190508181035f83015261337981613340565b9050919050565b5f61338a826126c8565b9150613395836126c8565b92508282019050808211156133ad576133ac612cad565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133e7601a836125bd565b91506133f2826133b3565b602082019050919050565b5f6020820190508181035f830152613414816133db565b9050919050565b5f613425826126c8565b9150613430836126c8565b925082820390508181111561344857613447612cad565b5b92915050565b7f536166654d6174683a207375627472616374696f6e20756e646572666c6f77005f82015250565b5f613482601f836125bd565b915061348d8261344e565b602082019050919050565b5f6020820190508181035f8301526134af81613476565b9050919050565b5f819050919050565b5f819050919050565b5f6134e26134dd6134d8846134b6565b6134bf565b6126c8565b9050919050565b6134f2816134c8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61352a8161268d565b82525050565b5f61353b8383613521565b60208301905092915050565b5f602082019050919050565b5f61355d826134f8565b6135678185613502565b935061357283613512565b805f5b838110156135a25781516135898882613530565b975061359483613547565b925050600181019050613575565b5085935050505092915050565b5f60a0820190506135c25f83018861276c565b6135cf60208301876134e9565b81810360408301526135e18186613553565b90506135f06060830185612b70565b6135fd608083018461276c565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61363e826126c8565b9150613649836126c8565b92508261365957613658613607565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136be6021836125bd565b91506136c982613664565b604082019050919050565b5f6020820190508181035f8301526136eb816136b2565b9050919050565b7f536166654d6174683a206d6f64756c7573206279207a65726f000000000000005f82015250565b5f6137266019836125bd565b9150613731826136f2565b602082019050919050565b5f6020820190508181035f8301526137538161371a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61378e601b836125bd565b91506137998261375a565b602082019050919050565b5f6020820190508181035f8301526137bb81613782565b905091905056fea26469706673582212205132483b9365d0c21d261ad0425aba185ad876d191f083993b6f2f141f5b030964736f6c63430008140033
Deployed Bytecode Sourcemap
3769:10790:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6341:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11060:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5253:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5955:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11404:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7060:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6527:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6851:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9698:492;;;;;;;;;;;;;:::i;:::-;;8283:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8453:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6063:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3573:148;;;;;;;;;;;;;:::i;:::-;;10844:177;;;;;;;;;;;;;:::i;:::-;;8584:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5027:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6751:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7959:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3466:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5100:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6432:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8117:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11229:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5175:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10387:449;;;;;;;;;;;;;:::i;:::-;;6658:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7409:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6954:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6190:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7565:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6341:83;6378:13;6411:5;;;;;;;;;;;;;;;;;6404:12;;6341:83;:::o;11060:161::-;11135:4;11152:39;11161:12;:10;:12::i;:::-;11175:7;11184:6;11152:8;:39::i;:::-;11209:4;11202:11;;11060:161;;;;:::o;5253:52::-;;;;:::o;5955:100::-;6008:7;4932:2;4994;:13;;;;:::i;:::-;4981:10;:26;;;;:::i;:::-;6028:19;;5955:100;:::o;11404:269::-;11502:4;11519:36;11529:6;11537:9;11548:6;11519:9;:36::i;:::-;11566:77;11575:6;11583:12;:10;:12::i;:::-;11597:45;11635:6;11597:11;:19;11609:6;11597:19;;;;;;;;;;;;;;;:33;11617:12;:10;:12::i;:::-;11597:33;;;;;;;;;;;;;;;;:37;;:45;;;;:::i;:::-;11566:8;:77::i;:::-;11661:4;11654:11;;11404:269;;;;;:::o;7060:341::-;7128:16;7157:30;7204:7;:14;7190:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7157:62;;7237:10;7232:129;7261:7;:14;7253:5;:22;7232:129;;;7324:9;:25;7334:7;7342:5;7334:14;;;;;;;;:::i;:::-;;;;;;;;7324:25;;;;;;;;;;;;;;;;7301:13;7315:5;7301:20;;;;;;;;:::i;:::-;;;;;;;:48;;;;;7277:7;;;;;:::i;:::-;;;;7232:129;;;;7380:13;7373:20;;;7060:341;;;:::o;6527:83::-;6568:5;4932:2;6586:16;;6527:83;:::o;6851:95::-;6897:7;6924:14;;6917:21;;6851:95;:::o;9698:492::-;9764:10;;;;;;;;;;;9748:26;;:12;:10;:12::i;:::-;:26;;;9740:35;;;;;;9856:20;9879:24;9897:4;9879:9;:24::i;:::-;9856:47;;9933:1;9918:12;:16;9914:105;;;9951:30;9968:12;9951:16;:30::i;:::-;9914:105;10031:18;10052:21;10031:42;;10101:1;10088:10;:14;10084:99;;;10119:24;10132:10;10119:12;:24::i;:::-;10084:99;9729:461;;9698:492::o;8283:162::-;8363:4;3366:12;:10;:12::i;:::-;3356:22;;:6;;;;;;;;;;:22;;;3348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8398:17:::1;8380:15;:35;;;;8433:4;8426:11;;8283:162:::0;;;:::o;8453:123::-;3366:12;:10;:12::i;:::-;3356:22;;:6;;;;;;;;;;:22;;;3348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8564:4:::1;8531:18;:30;8550:10;8531:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8453:123:::0;:::o;6063:119::-;6129:7;6156:9;:18;6166:7;6156:18;;;;;;;;;;;;;;;;6149:25;;6063:119;;;:::o;3573:148::-;3366:12;:10;:12::i;:::-;3356:22;;:6;;;;;;;;;;:22;;;3348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3680:1:::1;3643:40;;3664:6;::::0;::::1;;;;;;;;3643:40;;;;;;;;;;;;3711:1;3694:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3573:148::o:0;10844:177::-;3366:12;:10;:12::i;:::-;3356:22;;:6;;;;;;;;;;:22;;;3348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4932:2:::1;4994;:13;;;;:::i;:::-;4981:10;:26;;;;:::i;:::-;10898:12;:27;;;;4932:2;4994;:13;;;;:::i;:::-;4981:10;:26;;;;:::i;:::-;10936:14;:29;;;;10981:32;4932:2;4994;:13;;;;:::i;:::-;4981:10;:26;;;;:::i;:::-;10981:32;;;;;;:::i;:::-;;;;;;;;10844:177::o:0;8584:216::-;3366:12;:10;:12::i;:::-;3356:22;;:6;;;;;;;;;;:22;;;3348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8679:9:::1;8674:119;8698:12;;:19;;8694:1;:23;8674:119;;;8777:4;8739:18;:35;8758:12;;8771:1;8758:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8739:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;8719:3;;;;;:::i;:::-;;;;8674:119;;;;8584:216:::0;;:::o;5027:53::-;;;;:::o;6751:92::-;6796:7;6823:12;;6816:19;;6751:92;:::o;7959:150::-;8033:4;3366:12;:10;:12::i;:::-;3356:22;;:6;;;;;;;;;;:22;;;3348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8065:14:::1;8050:12;:29;;;;8097:4;8090:11;;7959:150:::0;;;:::o;3466:79::-;3504:7;3531:6;;;;;;;;;;;3524:13;;3466:79;:::o;5100:55::-;;;;:::o;6432:87::-;6471:13;6504:7;;;;;;;;;;;;;;;;;6497:14;;6432:87;:::o;8117:158::-;8195:4;3366:12;:10;:12::i;:::-;3356:22;;:6;;;;;;;;;;:22;;;3348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8229:16:::1;8212:14;:33;;;;8263:4;8256:11;;8117:158:::0;;;:::o;11229:167::-;11307:4;11324:42;11334:12;:10;:12::i;:::-;11348:9;11359:6;11324:9;:42::i;:::-;11384:4;11377:11;;11229:167;;;;:::o;5175:57::-;;;;:::o;10387:449::-;3366:12;:10;:12::i;:::-;3356:22;;:6;;;;;;;;;;:22;;;3348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10479:42:::1;10442:15;;:80;;;;;;;;;;;;;;;;;;10533:63;10550:4;10565:15;;;;;;;;;;;4932:2;4994;:13;;;;:::i;:::-;4981:10;:26;;;;:::i;:::-;10533:8;:63::i;:::-;10641:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10623:55;;;10687:4;10694:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10623:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10607:13;;:110;;;;;;;;;;;;;;;;;;10735:13;;;;;;;;;;;10728:29;;;10766:15;;;;;;;;;;;10784:14;10728:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10824:4;10810:11;;:18;;;;;;;;;;;;;;;;;;10387:449::o:0;6658:85::-;6699:7;6726:9;;6719:16;;6658:85;:::o;7409:148::-;7493:4;7517:18;:32;7536:12;7517:32;;;;;;;;;;;;;;;;;;;;;;;;;7510:39;;7409:148;;;:::o;6954:98::-;7002:7;7029:15;;7022:22;;6954:98;:::o;6190:143::-;6271:7;6298:11;:18;6310:5;6298:18;;;;;;;;;;;;;;;:27;6317:7;6298:27;;;;;;;;;;;;;;;;6291:34;;6190:143;;;;:::o;7565:363::-;7659:13;7685:20;7719:14;:21;7708:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7685:56;;7757:10;7752:145;7781:14;:21;7773:5;:29;7752:145;;;7844:18;:41;7863:14;7878:5;7863:21;;;;;;;;:::i;:::-;;;;;;;;7844:41;;;;;;;;;;;;;;;;;;;;;;;;;7828:6;7835:5;7828:13;;;;;;;;:::i;:::-;;;;;;;:57;;;;;;;;;;;7804:7;;;;;:::i;:::-;;;;7752:145;;;;7914:6;7907:13;;;7565:363;;;:::o;2776:98::-;2829:7;2856:10;2849:17;;2776:98;:::o;11681:335::-;11791:1;11774:19;;:5;:19;;;11766:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11872:1;11853:21;;:7;:21;;;11845:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11954:6;11924:11;:18;11936:5;11924:18;;;;;;;;;;;;;;;:27;11943:7;11924:27;;;;;;;;;;;;;;;:36;;;;11992:7;11976:32;;11985:5;11976:32;;;12001:6;11976:32;;;;;;:::i;:::-;;;;;;;;11681:335;;;:::o;12024:2462::-;12128:1;12112:18;;:4;:18;;;12104:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12205:1;12191:16;;:2;:16;;;12183:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12275:1;12266:6;:10;12258:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12335:17;12448:7;:5;:7::i;:::-;12440:15;;:4;:15;;;;:32;;;;;12465:7;:5;:7::i;:::-;12459:13;;:2;:13;;;;12440:32;12436:1552;;;12501:33;12530:3;12501:24;12512:12;;12501:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12489:45;;12599:13;;;;;;;;;;;12591:21;;:4;:21;;;:55;;;;;12630:15;;;;;;;;;;;12616:30;;:2;:30;;;;12591:55;:82;;;;;12651:18;:22;12670:2;12651:22;;;;;;;;;;;;;;;;;;;;;;;;;12650:23;12591:82;12587:435;;;12712:12;;12702:6;:22;;12694:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12807:14;;12797:6;12781:13;12791:2;12781:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;12773:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12883:82;12961:3;12883:73;12907:15;;12895:9;;:27;12894:61;;12941:14;;12894:61;;;12926:12;;12894:61;12883:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;12871:94;;12995:9;;:11;;;;;;;;;:::i;:::-;;;;;;12587:435;13069:13;;;;;;;;;;;13063:19;;:2;:19;;;:44;;;;;13102:4;13086:21;;:4;:21;;;;13063:44;13059:194;;;13140:85;13221:3;13140:76;13164:16;;13152:9;;:28;13151:64;;13200:15;;13151:64;;;13184:13;;13151:64;13140:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;13128:97;;13059:194;13302:28;13333:24;13351:4;13333:9;:24::i;:::-;13302:55;;13395:6;;;;;;;;;;;13394:7;:47;;;;;13428:13;;;;;;;;;;;13422:19;;:2;:19;;;13394:47;:79;;;;;13462:11;;;;;;;;;;;13394:79;:140;;;;;13517:17;;13494:20;:40;13394:140;:191;;;;;13567:18;;13555:9;;:30;13394:191;13372:605;;;13620:69;13637:51;13641:6;13649:38;13653:20;13675:11;;13649:3;:38::i;:::-;13637:3;:51::i;:::-;13620:16;:69::i;:::-;13755:26;13784:21;13755:50;;13849:1;13828:18;:22;13824:138;;;13875:35;13888:21;13875:12;:35::i;:::-;13824:138;13601:376;13372:605;12474:1514;12436:1552;14016:1;14004:9;:13;14000:209;;;14061:39;14090:9;14061;:24;14079:4;14061:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;14034:9;:24;14052:4;14034:24;;;;;;;;;;;;;;;:66;;;;14180:4;14157:40;;14166:4;14157:40;;;14187:9;14157:40;;;;;;:::i;:::-;;;;;;;;14000:209;14239:27;14259:6;14239:9;:15;14249:4;14239:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;14221:9;:15;14231:4;14221:15;;;;;;;;;;;;;;;:45;;;;14332:40;14350:21;14361:9;14350:6;:10;;:21;;;;:::i;:::-;14332:9;:13;14342:2;14332:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;14316:9;:13;14326:2;14316:13;;;;;;;;;;;;;;;:56;;;;14452:2;14437:41;;14446:4;14437:41;;;14456:21;14467:9;14456:6;:10;;:21;;;;:::i;:::-;14437:41;;;;;;:::i;:::-;;;;;;;;12093:2393;12024:2462;;;:::o;2046:193::-;2104:7;2124:14;2145:1;2141;:5;;;;:::i;:::-;2124:22;;2170:1;2165;:6;;2157:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2225:6;2218:13;;;2046:193;;;;:::o;9017:483::-;5875:4;5866:6;;:13;;;;;;;;;;;;;;;;;;9095:21:::1;9133:1;9119:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9095:40;;9164:4;9146;9151:1;9146:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9190:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9180:4;9185:1;9180:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9223:62;9240:4;9255:15;;;;;;;;;;;9273:11;9223:8;:62::i;:::-;9296:15;;;;;;;;;;;:66;;;9377:11;9403:1;9419:4;9446;9466:15;9296:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9084:416;5911:5:::0;5902:6;;:14;;;;;;;;;;;;;;;;;;9017:483;:::o;9508:92::-;9565:10;;;;;;;;;;;:19;;:27;9585:6;9565:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9508:92;:::o;2247:261::-;2305:7;2334:1;2329;:6;2325:47;;2359:1;2352:8;;;;2325:47;2382:14;2403:1;2399;:5;;;;:::i;:::-;2382:22;;2437:1;2432;2423:6;:10;;;;:::i;:::-;:15;2415:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;2494:6;2487:13;;;2247:261;;;;;:::o;2516:183::-;2574:7;2594:11;2612:1;2608;:5;;;;:::i;:::-;2594:19;;2636:1;2632;:5;2624:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;2685:6;2678:13;;;2516:183;;;;:::o;8843:107::-;8900:7;8932:1;8928;:5;8927:15;;8941:1;8927:15;;;8937:1;8927:15;8920:22;;8843:107;;;;:::o;1844:194::-;1902:7;1922:14;1943:1;1939;:5;;;;:::i;:::-;1922:22;;1973:1;1963:6;:11;;1955:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;2024:6;2017:13;;;1844:194;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:117::-;4532:1;4529;4522:12;4546:180;4594:77;4591:1;4584:88;4691:4;4688:1;4681:15;4715:4;4712:1;4705:15;4732:281;4815:27;4837:4;4815:27;:::i;:::-;4807:6;4803:40;4945:6;4933:10;4930:22;4909:18;4897:10;4894:34;4891:62;4888:88;;;4956:18;;:::i;:::-;4888:88;4996:10;4992:2;4985:22;4775:238;4732:281;;:::o;5019:129::-;5053:6;5080:20;;:::i;:::-;5070:30;;5109:33;5137:4;5129:6;5109:33;:::i;:::-;5019:129;;;:::o;5154:311::-;5231:4;5321:18;5313:6;5310:30;5307:56;;;5343:18;;:::i;:::-;5307:56;5393:4;5385:6;5381:17;5373:25;;5453:4;5447;5443:15;5435:23;;5154:311;;;:::o;5471:117::-;5580:1;5577;5570:12;5611:710;5707:5;5732:81;5748:64;5805:6;5748:64;:::i;:::-;5732:81;:::i;:::-;5723:90;;5833:5;5862:6;5855:5;5848:21;5896:4;5889:5;5885:16;5878:23;;5949:4;5941:6;5937:17;5929:6;5925:30;5978:3;5970:6;5967:15;5964:122;;;5997:79;;:::i;:::-;5964:122;6112:6;6095:220;6129:6;6124:3;6121:15;6095:220;;;6204:3;6233:37;6266:3;6254:10;6233:37;:::i;:::-;6228:3;6221:50;6300:4;6295:3;6291:14;6284:21;;6171:144;6155:4;6150:3;6146:14;6139:21;;6095:220;;;6099:21;5713:608;;5611:710;;;;;:::o;6344:370::-;6415:5;6464:3;6457:4;6449:6;6445:17;6441:27;6431:122;;6472:79;;:::i;:::-;6431:122;6589:6;6576:20;6614:94;6704:3;6696:6;6689:4;6681:6;6677:17;6614:94;:::i;:::-;6605:103;;6421:293;6344:370;;;;:::o;6720:539::-;6804:6;6853:2;6841:9;6832:7;6828:23;6824:32;6821:119;;;6859:79;;:::i;:::-;6821:119;7007:1;6996:9;6992:17;6979:31;7037:18;7029:6;7026:30;7023:117;;;7059:79;;:::i;:::-;7023:117;7164:78;7234:7;7225:6;7214:9;7210:22;7164:78;:::i;:::-;7154:88;;6950:302;6720:539;;;;:::o;7265:114::-;7332:6;7366:5;7360:12;7350:22;;7265:114;;;:::o;7385:184::-;7484:11;7518:6;7513:3;7506:19;7558:4;7553:3;7549:14;7534:29;;7385:184;;;;:::o;7575:132::-;7642:4;7665:3;7657:11;;7695:4;7690:3;7686:14;7678:22;;7575:132;;;:::o;7713:108::-;7790:24;7808:5;7790:24;:::i;:::-;7785:3;7778:37;7713:108;;:::o;7827:179::-;7896:10;7917:46;7959:3;7951:6;7917:46;:::i;:::-;7995:4;7990:3;7986:14;7972:28;;7827:179;;;;:::o;8012:113::-;8082:4;8114;8109:3;8105:14;8097:22;;8012:113;;;:::o;8161:732::-;8280:3;8309:54;8357:5;8309:54;:::i;:::-;8379:86;8458:6;8453:3;8379:86;:::i;:::-;8372:93;;8489:56;8539:5;8489:56;:::i;:::-;8568:7;8599:1;8584:284;8609:6;8606:1;8603:13;8584:284;;;8685:6;8679:13;8712:63;8771:3;8756:13;8712:63;:::i;:::-;8705:70;;8798:60;8851:6;8798:60;:::i;:::-;8788:70;;8644:224;8631:1;8628;8624:9;8619:14;;8584:284;;;8588:14;8884:3;8877:10;;8285:608;;;8161:732;;;;:::o;8899:373::-;9042:4;9080:2;9069:9;9065:18;9057:26;;9129:9;9123:4;9119:20;9115:1;9104:9;9100:17;9093:47;9157:108;9260:4;9251:6;9157:108;:::i;:::-;9149:116;;8899:373;;;;:::o;9278:86::-;9313:7;9353:4;9346:5;9342:16;9331:27;;9278:86;;;:::o;9370:112::-;9453:22;9469:5;9453:22;:::i;:::-;9448:3;9441:35;9370:112;;:::o;9488:214::-;9577:4;9615:2;9604:9;9600:18;9592:26;;9628:67;9692:1;9681:9;9677:17;9668:6;9628:67;:::i;:::-;9488:214;;;;:::o;9708:329::-;9767:6;9816:2;9804:9;9795:7;9791:23;9787:32;9784:119;;;9822:79;;:::i;:::-;9784:119;9942:1;9967:53;10012:7;10003:6;9992:9;9988:22;9967:53;:::i;:::-;9957:63;;9913:117;9708:329;;;;:::o;10043:::-;10102:6;10151:2;10139:9;10130:7;10126:23;10122:32;10119:119;;;10157:79;;:::i;:::-;10119:119;10277:1;10302:53;10347:7;10338:6;10327:9;10323:22;10302:53;:::i;:::-;10292:63;;10248:117;10043:329;;;;:::o;10378:117::-;10487:1;10484;10477:12;10518:568;10591:8;10601:6;10651:3;10644:4;10636:6;10632:17;10628:27;10618:122;;10659:79;;:::i;:::-;10618:122;10772:6;10759:20;10749:30;;10802:18;10794:6;10791:30;10788:117;;;10824:79;;:::i;:::-;10788:117;10938:4;10930:6;10926:17;10914:29;;10992:3;10984:4;10976:6;10972:17;10962:8;10958:32;10955:41;10952:128;;;10999:79;;:::i;:::-;10952:128;10518:568;;;;;:::o;11092:559::-;11178:6;11186;11235:2;11223:9;11214:7;11210:23;11206:32;11203:119;;;11241:79;;:::i;:::-;11203:119;11389:1;11378:9;11374:17;11361:31;11419:18;11411:6;11408:30;11405:117;;;11441:79;;:::i;:::-;11405:117;11554:80;11626:7;11617:6;11606:9;11602:22;11554:80;:::i;:::-;11536:98;;;;11332:312;11092:559;;;;;:::o;11657:118::-;11744:24;11762:5;11744:24;:::i;:::-;11739:3;11732:37;11657:118;;:::o;11781:222::-;11874:4;11912:2;11901:9;11897:18;11889:26;;11925:71;11993:1;11982:9;11978:17;11969:6;11925:71;:::i;:::-;11781:222;;;;:::o;12009:474::-;12077:6;12085;12134:2;12122:9;12113:7;12109:23;12105:32;12102:119;;;12140:79;;:::i;:::-;12102:119;12260:1;12285:53;12330:7;12321:6;12310:9;12306:22;12285:53;:::i;:::-;12275:63;;12231:117;12387:2;12413:53;12458:7;12449:6;12438:9;12434:22;12413:53;:::i;:::-;12403:63;;12358:118;12009:474;;;;;:::o;12489:111::-;12553:6;12587:5;12581:12;12571:22;;12489:111;;;:::o;12606:181::-;12702:11;12736:6;12731:3;12724:19;12776:4;12771:3;12767:14;12752:29;;12606:181;;;;:::o;12793:129::-;12857:4;12880:3;12872:11;;12910:4;12905:3;12901:14;12893:22;;12793:129;;;:::o;12928:99::-;12999:21;13014:5;12999:21;:::i;:::-;12994:3;12987:34;12928:99;;:::o;13033:167::-;13096:10;13117:40;13153:3;13145:6;13117:40;:::i;:::-;13189:4;13184:3;13180:14;13166:28;;13033:167;;;;:::o;13206:110::-;13273:4;13305;13300:3;13296:14;13288:22;;13206:110;;;:::o;13346:708::-;13459:3;13488:51;13533:5;13488:51;:::i;:::-;13555:83;13631:6;13626:3;13555:83;:::i;:::-;13548:90;;13662:53;13709:5;13662:53;:::i;:::-;13738:7;13769:1;13754:275;13779:6;13776:1;13773:13;13754:275;;;13855:6;13849:13;13882:57;13935:3;13920:13;13882:57;:::i;:::-;13875:64;;13962:57;14012:6;13962:57;:::i;:::-;13952:67;;13814:215;13801:1;13798;13794:9;13789:14;;13754:275;;;13758:14;14045:3;14038:10;;13464:590;;;13346:708;;;;:::o;14060:361::-;14197:4;14235:2;14224:9;14220:18;14212:26;;14284:9;14278:4;14274:20;14270:1;14259:9;14255:17;14248:47;14312:102;14409:4;14400:6;14312:102;:::i;:::-;14304:110;;14060:361;;;;:::o;14427:180::-;14475:77;14472:1;14465:88;14572:4;14569:1;14562:15;14596:4;14593:1;14586:15;14613:102;14655:8;14702:5;14699:1;14695:13;14674:34;;14613:102;;;:::o;14721:848::-;14782:5;14789:4;14813:6;14804:15;;14837:5;14828:14;;14851:712;14872:1;14862:8;14859:15;14851:712;;;14967:4;14962:3;14958:14;14952:4;14949:24;14946:50;;;14976:18;;:::i;:::-;14946:50;15026:1;15016:8;15012:16;15009:451;;;15441:4;15434:5;15430:16;15421:25;;15009:451;15491:4;15485;15481:15;15473:23;;15521:32;15544:8;15521:32;:::i;:::-;15509:44;;14851:712;;;14721:848;;;;;;;:::o;15575:1073::-;15629:5;15820:8;15810:40;;15841:1;15832:10;;15843:5;;15810:40;15869:4;15859:36;;15886:1;15877:10;;15888:5;;15859:36;15955:4;16003:1;15998:27;;;;16039:1;16034:191;;;;15948:277;;15998:27;16016:1;16007:10;;16018:5;;;16034:191;16079:3;16069:8;16066:17;16063:43;;;16086:18;;:::i;:::-;16063:43;16135:8;16132:1;16128:16;16119:25;;16170:3;16163:5;16160:14;16157:40;;;16177:18;;:::i;:::-;16157:40;16210:5;;;15948:277;;16334:2;16324:8;16321:16;16315:3;16309:4;16306:13;16302:36;16284:2;16274:8;16271:16;16266:2;16260:4;16257:12;16253:35;16237:111;16234:246;;;16390:8;16384:4;16380:19;16371:28;;16425:3;16418:5;16415:14;16412:40;;;16432:18;;:::i;:::-;16412:40;16465:5;;16234:246;16505:42;16543:3;16533:8;16527:4;16524:1;16505:42;:::i;:::-;16490:57;;;;16579:4;16574:3;16570:14;16563:5;16560:25;16557:51;;;16588:18;;:::i;:::-;16557:51;16637:4;16630:5;16626:16;16617:25;;15575:1073;;;;;;:::o;16654:281::-;16712:5;16736:23;16754:4;16736:23;:::i;:::-;16728:31;;16780:25;16796:8;16780:25;:::i;:::-;16768:37;;16824:104;16861:66;16851:8;16845:4;16824:104;:::i;:::-;16815:113;;16654:281;;;;:::o;16941:410::-;16981:7;17004:20;17022:1;17004:20;:::i;:::-;16999:25;;17038:20;17056:1;17038:20;:::i;:::-;17033:25;;17093:1;17090;17086:9;17115:30;17133:11;17115:30;:::i;:::-;17104:41;;17294:1;17285:7;17281:15;17278:1;17275:22;17255:1;17248:9;17228:83;17205:139;;17324:18;;:::i;:::-;17205:139;16989:362;16941:410;;;;:::o;17357:180::-;17405:77;17402:1;17395:88;17502:4;17499:1;17492:15;17526:4;17523:1;17516:15;17543:233;17582:3;17605:24;17623:5;17605:24;:::i;:::-;17596:33;;17651:66;17644:5;17641:77;17638:103;;17721:18;;:::i;:::-;17638:103;17768:1;17761:5;17757:13;17750:20;;17543:233;;;:::o;17782:182::-;17922:34;17918:1;17910:6;17906:14;17899:58;17782:182;:::o;17970:366::-;18112:3;18133:67;18197:2;18192:3;18133:67;:::i;:::-;18126:74;;18209:93;18298:3;18209:93;:::i;:::-;18327:2;18322:3;18318:12;18311:19;;17970:366;;;:::o;18342:419::-;18508:4;18546:2;18535:9;18531:18;18523:26;;18595:9;18589:4;18585:20;18581:1;18570:9;18566:17;18559:47;18623:131;18749:4;18623:131;:::i;:::-;18615:139;;18342:419;;;:::o;18767:143::-;18824:5;18855:6;18849:13;18840:22;;18871:33;18898:5;18871:33;:::i;:::-;18767:143;;;;:::o;18916:351::-;18986:6;19035:2;19023:9;19014:7;19010:23;19006:32;19003:119;;;19041:79;;:::i;:::-;19003:119;19161:1;19186:64;19242:7;19233:6;19222:9;19218:22;19186:64;:::i;:::-;19176:74;;19132:128;18916:351;;;;:::o;19273:332::-;19394:4;19432:2;19421:9;19417:18;19409:26;;19445:71;19513:1;19502:9;19498:17;19489:6;19445:71;:::i;:::-;19526:72;19594:2;19583:9;19579:18;19570:6;19526:72;:::i;:::-;19273:332;;;;;:::o;19611:::-;19732:4;19770:2;19759:9;19755:18;19747:26;;19783:71;19851:1;19840:9;19836:17;19827:6;19783:71;:::i;:::-;19864:72;19932:2;19921:9;19917:18;19908:6;19864:72;:::i;:::-;19611:332;;;;;:::o;19949:116::-;20019:21;20034:5;20019:21;:::i;:::-;20012:5;20009:32;19999:60;;20055:1;20052;20045:12;19999:60;19949:116;:::o;20071:137::-;20125:5;20156:6;20150:13;20141:22;;20172:30;20196:5;20172:30;:::i;:::-;20071:137;;;;:::o;20214:345::-;20281:6;20330:2;20318:9;20309:7;20305:23;20301:32;20298:119;;;20336:79;;:::i;:::-;20298:119;20456:1;20481:61;20534:7;20525:6;20514:9;20510:22;20481:61;:::i;:::-;20471:71;;20427:125;20214:345;;;;:::o;20565:223::-;20705:34;20701:1;20693:6;20689:14;20682:58;20774:6;20769:2;20761:6;20757:15;20750:31;20565:223;:::o;20794:366::-;20936:3;20957:67;21021:2;21016:3;20957:67;:::i;:::-;20950:74;;21033:93;21122:3;21033:93;:::i;:::-;21151:2;21146:3;21142:12;21135:19;;20794:366;;;:::o;21166:419::-;21332:4;21370:2;21359:9;21355:18;21347:26;;21419:9;21413:4;21409:20;21405:1;21394:9;21390:17;21383:47;21447:131;21573:4;21447:131;:::i;:::-;21439:139;;21166:419;;;:::o;21591:221::-;21731:34;21727:1;21719:6;21715:14;21708:58;21800:4;21795:2;21787:6;21783:15;21776:29;21591:221;:::o;21818:366::-;21960:3;21981:67;22045:2;22040:3;21981:67;:::i;:::-;21974:74;;22057:93;22146:3;22057:93;:::i;:::-;22175:2;22170:3;22166:12;22159:19;;21818:366;;;:::o;22190:419::-;22356:4;22394:2;22383:9;22379:18;22371:26;;22443:9;22437:4;22433:20;22429:1;22418:9;22414:17;22407:47;22471:131;22597:4;22471:131;:::i;:::-;22463:139;;22190:419;;;:::o;22615:224::-;22755:34;22751:1;22743:6;22739:14;22732:58;22824:7;22819:2;22811:6;22807:15;22800:32;22615:224;:::o;22845:366::-;22987:3;23008:67;23072:2;23067:3;23008:67;:::i;:::-;23001:74;;23084:93;23173:3;23084:93;:::i;:::-;23202:2;23197:3;23193:12;23186:19;;22845:366;;;:::o;23217:419::-;23383:4;23421:2;23410:9;23406:18;23398:26;;23470:9;23464:4;23460:20;23456:1;23445:9;23441:17;23434:47;23498:131;23624:4;23498:131;:::i;:::-;23490:139;;23217:419;;;:::o;23642:222::-;23782:34;23778:1;23770:6;23766:14;23759:58;23851:5;23846:2;23838:6;23834:15;23827:30;23642:222;:::o;23870:366::-;24012:3;24033:67;24097:2;24092:3;24033:67;:::i;:::-;24026:74;;24109:93;24198:3;24109:93;:::i;:::-;24227:2;24222:3;24218:12;24211:19;;23870:366;;;:::o;24242:419::-;24408:4;24446:2;24435:9;24431:18;24423:26;;24495:9;24489:4;24485:20;24481:1;24470:9;24466:17;24459:47;24523:131;24649:4;24523:131;:::i;:::-;24515:139;;24242:419;;;:::o;24667:228::-;24807:34;24803:1;24795:6;24791:14;24784:58;24876:11;24871:2;24863:6;24859:15;24852:36;24667:228;:::o;24901:366::-;25043:3;25064:67;25128:2;25123:3;25064:67;:::i;:::-;25057:74;;25140:93;25229:3;25140:93;:::i;:::-;25258:2;25253:3;25249:12;25242:19;;24901:366;;;:::o;25273:419::-;25439:4;25477:2;25466:9;25462:18;25454:26;;25526:9;25520:4;25516:20;25512:1;25501:9;25497:17;25490:47;25554:131;25680:4;25554:131;:::i;:::-;25546:139;;25273:419;;;:::o;25698:175::-;25838:27;25834:1;25826:6;25822:14;25815:51;25698:175;:::o;25879:366::-;26021:3;26042:67;26106:2;26101:3;26042:67;:::i;:::-;26035:74;;26118:93;26207:3;26118:93;:::i;:::-;26236:2;26231:3;26227:12;26220:19;;25879:366;;;:::o;26251:419::-;26417:4;26455:2;26444:9;26440:18;26432:26;;26504:9;26498:4;26494:20;26490:1;26479:9;26475:17;26468:47;26532:131;26658:4;26532:131;:::i;:::-;26524:139;;26251:419;;;:::o;26676:191::-;26716:3;26735:20;26753:1;26735:20;:::i;:::-;26730:25;;26769:20;26787:1;26769:20;:::i;:::-;26764:25;;26812:1;26809;26805:9;26798:16;;26833:3;26830:1;26827:10;26824:36;;;26840:18;;:::i;:::-;26824:36;26676:191;;;;:::o;26873:176::-;27013:28;27009:1;27001:6;26997:14;26990:52;26873:176;:::o;27055:366::-;27197:3;27218:67;27282:2;27277:3;27218:67;:::i;:::-;27211:74;;27294:93;27383:3;27294:93;:::i;:::-;27412:2;27407:3;27403:12;27396:19;;27055:366;;;:::o;27427:419::-;27593:4;27631:2;27620:9;27616:18;27608:26;;27680:9;27674:4;27670:20;27666:1;27655:9;27651:17;27644:47;27708:131;27834:4;27708:131;:::i;:::-;27700:139;;27427:419;;;:::o;27852:194::-;27892:4;27912:20;27930:1;27912:20;:::i;:::-;27907:25;;27946:20;27964:1;27946:20;:::i;:::-;27941:25;;27990:1;27987;27983:9;27975:17;;28014:1;28008:4;28005:11;28002:37;;;28019:18;;:::i;:::-;28002:37;27852:194;;;;:::o;28052:181::-;28192:33;28188:1;28180:6;28176:14;28169:57;28052:181;:::o;28239:366::-;28381:3;28402:67;28466:2;28461:3;28402:67;:::i;:::-;28395:74;;28478:93;28567:3;28478:93;:::i;:::-;28596:2;28591:3;28587:12;28580:19;;28239:366;;;:::o;28611:419::-;28777:4;28815:2;28804:9;28800:18;28792:26;;28864:9;28858:4;28854:20;28850:1;28839:9;28835:17;28828:47;28892:131;29018:4;28892:131;:::i;:::-;28884:139;;28611:419;;;:::o;29036:85::-;29081:7;29110:5;29099:16;;29036:85;;;:::o;29127:60::-;29155:3;29176:5;29169:12;;29127:60;;;:::o;29193:158::-;29251:9;29284:61;29302:42;29311:32;29337:5;29311:32;:::i;:::-;29302:42;:::i;:::-;29284:61;:::i;:::-;29271:74;;29193:158;;;:::o;29357:147::-;29452:45;29491:5;29452:45;:::i;:::-;29447:3;29440:58;29357:147;;:::o;29510:114::-;29577:6;29611:5;29605:12;29595:22;;29510:114;;;:::o;29630:184::-;29729:11;29763:6;29758:3;29751:19;29803:4;29798:3;29794:14;29779:29;;29630:184;;;;:::o;29820:132::-;29887:4;29910:3;29902:11;;29940:4;29935:3;29931:14;29923:22;;29820:132;;;:::o;29958:108::-;30035:24;30053:5;30035:24;:::i;:::-;30030:3;30023:37;29958:108;;:::o;30072:179::-;30141:10;30162:46;30204:3;30196:6;30162:46;:::i;:::-;30240:4;30235:3;30231:14;30217:28;;30072:179;;;;:::o;30257:113::-;30327:4;30359;30354:3;30350:14;30342:22;;30257:113;;;:::o;30406:732::-;30525:3;30554:54;30602:5;30554:54;:::i;:::-;30624:86;30703:6;30698:3;30624:86;:::i;:::-;30617:93;;30734:56;30784:5;30734:56;:::i;:::-;30813:7;30844:1;30829:284;30854:6;30851:1;30848:13;30829:284;;;30930:6;30924:13;30957:63;31016:3;31001:13;30957:63;:::i;:::-;30950:70;;31043:60;31096:6;31043:60;:::i;:::-;31033:70;;30889:224;30876:1;30873;30869:9;30864:14;;30829:284;;;30833:14;31129:3;31122:10;;30530:608;;;30406:732;;;;:::o;31144:831::-;31407:4;31445:3;31434:9;31430:19;31422:27;;31459:71;31527:1;31516:9;31512:17;31503:6;31459:71;:::i;:::-;31540:80;31616:2;31605:9;31601:18;31592:6;31540:80;:::i;:::-;31667:9;31661:4;31657:20;31652:2;31641:9;31637:18;31630:48;31695:108;31798:4;31789:6;31695:108;:::i;:::-;31687:116;;31813:72;31881:2;31870:9;31866:18;31857:6;31813:72;:::i;:::-;31895:73;31963:3;31952:9;31948:19;31939:6;31895:73;:::i;:::-;31144:831;;;;;;;;:::o;31981:180::-;32029:77;32026:1;32019:88;32126:4;32123:1;32116:15;32150:4;32147:1;32140:15;32167:185;32207:1;32224:20;32242:1;32224:20;:::i;:::-;32219:25;;32258:20;32276:1;32258:20;:::i;:::-;32253:25;;32297:1;32287:35;;32302:18;;:::i;:::-;32287:35;32344:1;32341;32337:9;32332:14;;32167:185;;;;:::o;32358:220::-;32498:34;32494:1;32486:6;32482:14;32475:58;32567:3;32562:2;32554:6;32550:15;32543:28;32358:220;:::o;32584:366::-;32726:3;32747:67;32811:2;32806:3;32747:67;:::i;:::-;32740:74;;32823:93;32912:3;32823:93;:::i;:::-;32941:2;32936:3;32932:12;32925:19;;32584:366;;;:::o;32956:419::-;33122:4;33160:2;33149:9;33145:18;33137:26;;33209:9;33203:4;33199:20;33195:1;33184:9;33180:17;33173:47;33237:131;33363:4;33237:131;:::i;:::-;33229:139;;32956:419;;;:::o;33381:175::-;33521:27;33517:1;33509:6;33505:14;33498:51;33381:175;:::o;33562:366::-;33704:3;33725:67;33789:2;33784:3;33725:67;:::i;:::-;33718:74;;33801:93;33890:3;33801:93;:::i;:::-;33919:2;33914:3;33910:12;33903:19;;33562:366;;;:::o;33934:419::-;34100:4;34138:2;34127:9;34123:18;34115:26;;34187:9;34181:4;34177:20;34173:1;34162:9;34158:17;34151:47;34215:131;34341:4;34215:131;:::i;:::-;34207:139;;33934:419;;;:::o;34359:177::-;34499:29;34495:1;34487:6;34483:14;34476:53;34359:177;:::o;34542:366::-;34684:3;34705:67;34769:2;34764:3;34705:67;:::i;:::-;34698:74;;34781:93;34870:3;34781:93;:::i;:::-;34899:2;34894:3;34890:12;34883:19;;34542:366;;;:::o;34914:419::-;35080:4;35118:2;35107:9;35103:18;35095:26;;35167:9;35161:4;35157:20;35153:1;35142:9;35138:17;35131:47;35195:131;35321:4;35195:131;:::i;:::-;35187:139;;34914:419;;;:::o
Swarm Source
ipfs://5132483b9365d0c21d261ad0425aba185ad876d191f083993b6f2f141f5b0309
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.