ERC-20
Overview
Max Total Supply
10,000,000 MAGAI
Holders
99
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Magenta
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-08 */ // SPDX-License-Identifier: MIT /* _____ __ _____ .___ / \ _____ ____ ____ _____/ |______ / _ \ | | / \ / \\__ \ / ___\_/ __ \ / \ __\__ \ / /_\ \| | / Y \/ __ \_/ /_/ > ___/| | \ | / __ \_ / | \ | \____|__ (____ /\___ / \___ >___| /__| (____ / \____|__ /___| \/ \//_____/ \/ \/ \/ \/ Twitter: https://twitter.com/MagentaProtocol Website: https://magentai.org/ Docs:https://magentaai.gitbook.io/magenta-protocol/ Telegram: https://t.me/magentaprotocol Bot: https://t.me/MagentaAiBot */ pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = tx.origin; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } /// @title MagentaProtocol - A ERC-20 token with taxces contract Magenta is Context, IERC20, Ownable { using SafeMath for uint256; /// @notice Payable fallback, so contract can receive ETH receive() external payable {} /*-----------------------------------------------------------------*/ /* events */ /*-----------------------------------------------------------------*/ /// @dev Emmited when the tax is updated event TaxUpdated(uint256 _oldTax, uint256 _newTax); /// @dev Emmited when the taxed contract status is updated event TaxedContractUpdated(address _contract, bool _isSwapContract); /*-----------------------------------------------------------------*/ /* constants */ /*-----------------------------------------------------------------*/ /// @dev The number of decimal places used by the token. uint8 private constant _decimals = 18; /// @dev The total amount of the token. uint256 private constant _tTotal = 10_000_000 * 10**_decimals; /// @dev Token name. string private constant _name = unicode"Magenta AI"; /// @dev Token symbol. string private constant _symbol = unicode"MAGAI"; /// @dev The threshold when collected tax will be swapped to ETH. uint256 public _taxTradeThreshold = 5_000 * 10**_decimals; /// @dev Greatest number of tokens to swap to ETH at once. uint256 public _maxTaxSwap = 100_000 * 10**_decimals; /// @dev Greatest amount that can be bought in a single transaction uint256 public _maxTxAmount = 4_000 * 10**_decimals; /// @dev Greatest amount an address can hold uint256 public _maxAddressAmount = 4_000 * 10**_decimals; /*-----------------------------------------------------------------*/ /* mappings */ /*-----------------------------------------------------------------*/ /// @dev Balance of each address. mapping (address => uint256) private _balances; /// @dev Allowances one account has given to another. mapping (address => mapping (address => uint256)) private _allowances; /// @dev Whether an account is excluded from paying fees. mapping (address => bool) public _isExcludedFromFee; /// @dev Whether taxes are charged on transfers to/from an address (used for taxing dex trades). mapping (address => bool) private _isTaxedContract; /*-----------------------------------------------------------------*/ /* variables */ /*-----------------------------------------------------------------*/ /// @dev Addresses that collect taxes. address payable public _taxReceiver; address payable public _taxReceiver2; address payable public _taxReceiver3; /// @dev Custom tax rate (it can be updated), the default tax rate is used if _customTax is 0. uint256 public _customTax = 0; /// @dev The block number when trading was started. uint256 public tradingStartBlock; /// @dev The Uniswap V2 Router used for tax token swaps. IUniswapV2Router02 public uniswapV2Router; /// @dev The Uniswap V2 Pair address for Magenta-ETH liquidity pool. address public uniswapV2Pair; /// @dev If trading is open and transfers are possible. bool private tradingStarted; /// @dev If currently in swap operation (to prevent reentrancy). bool private inSwap; /// @dev If automatic swapping of taxes to ETH is enabled. bool private swapEnabled; /// @dev If the maxTxAmount and maxAddressAmount limits are enabled. bool public limitsEnabled = true; /*-----------------------------------------------------------------*/ /* modifiers and constructor */ /*-----------------------------------------------------------------*/ /// @dev Lock the swap during its execution (to prevent reentrancy). modifier swapLock { inSwap = true; _; inSwap = false; } modifier onlyOwnerOrTax { require(_msgSender() == owner() || _msgSender() == _taxReceiver || _msgSender() == _taxReceiver2 || _msgSender() == _taxReceiver3, "only owner or tax wallets"); _; } /// @notice Initializes contract constructor () { _balances[tx.origin] = _tTotal; _taxReceiver = payable(0x7db9Be14B458D5fFD5770CfF9fA415e818dc23C3); //40% _taxReceiver2 = payable(0xC76be262eF9926273756E828c953373D69486181); //30% _taxReceiver3 = payable(0x6F0C59171C9fABDc4F5291cAF7d9000a85E0a3Be); //30% _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxReceiver] = true; _isExcludedFromFee[_taxReceiver2] = true; _isExcludedFromFee[_taxReceiver3] = true; uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _isTaxedContract[address(uniswapV2Router)] = true; _isTaxedContract[uniswapV2Pair] = true; emit Transfer(address(0), tx.origin, _tTotal); } /*-----------------------------------------------------------------*/ /* ERC-20 view functions */ /*-----------------------------------------------------------------*/ function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } /*-----------------------------------------------------------------*/ /* standard ERC-20 functions */ /*-----------------------------------------------------------------*/ function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 _taxAmt = 0; if (from != owner() && to != owner()) { require(tradingStarted, "ERC20: Trading is not started yet"); if (_isTaxedContract[from] && !_isExcludedFromFee[to] && limitsEnabled){ require(_balances[to].add(amount) <= _maxAddressAmount, "Transfer amount exceeds the maxAddressAmount"); require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount"); } if (_isTaxedContract[to] && from != address(this)){ _taxAmt = amount.mul(_calculateTaxAmount()).div(100); } else if (_isTaxedContract[from]){ _taxAmt = amount.mul(_calculateTaxAmount()).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxTradeThreshold) { swapToEth(_getMin(amount, _getMin(contractTokenBalance, _maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { distributeEthToTaxWallets(address(this).balance); } } } if (_isExcludedFromFee[from] || _isExcludedFromFee[to]){ _taxAmt = 0; } if (_taxAmt > 0){ _balances[address(this)] = _balances[address(this)].add(_taxAmt); emit Transfer(from, address(this), _taxAmt); } _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount.sub(_taxAmt)); emit Transfer(from, to, amount.sub(_taxAmt)); } /*-----------------------------------------------------------------*/ /* helper functions */ /*-----------------------------------------------------------------*/ /// @dev Get the tax rate (using the difference between current block number and trading start block) /// @return The current percentage tax rate function _calculateTaxAmount() internal view returns (uint256) { if (_customTax != 0) return _customTax; if (block.number - tradingStartBlock <= 5) { return 30; } else if (block.number - tradingStartBlock <= 10) { return 20; } return 2; } /// @dev Function to return the smaller of two values /// @param a The first value /// @param b The second value /// @return The smaller of the values function _getMin(uint256 a, uint256 b) private pure returns (uint256){ return (a > b) ? b : a; } /// @dev Swaps tokens to ETH on Uniswap /// @param tokenAmount The token amount to swap for ETH function swapToEth(uint256 tokenAmount) private swapLock { if (!tradingStarted || tokenAmount == 0) return; 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 ); } /// @dev Transfers ETH to the tax receiver addresses /// @param amount The ETH amount to transfer function distributeEthToTaxWallets(uint256 amount) private { _taxReceiver.transfer(amount.mul(40).div(100)); _taxReceiver2.transfer(amount.mul(30).div(100)); _taxReceiver3.transfer(amount.mul(30).div(100)); } /*-----------------------------------------------------------------*/ /* owner functions */ /*-----------------------------------------------------------------*/ /// @notice Swap tokens to ETH and sends the received ETH to the tax addresses function manualSwap() external onlyOwnerOrTax { uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance > 0){ swapToEth(tokenBalance); } uint256 ethBalance = address(this).balance; if (ethBalance > 0){ distributeEthToTaxWallets(ethBalance); } } /// @notice Start trading, enable swaps and transfers function startTrading() external onlyOwner { require(!tradingStarted, "Trading is already open"); swapEnabled = true; tradingStarted = true; tradingStartBlock = block.number; } /// @notice Update custom tax rate for token transfers /// @param tax New tax rate as a percentage function updateCustomTax(uint256 tax) external onlyOwner { require(tax <= 50, "Tax must be less than or equal to 50%"); emit TaxUpdated(_customTax, tax); _customTax = tax; } /// @notice Update address sttaus (if it's excluded from paying taxes on buys and sells) function updateIsExcludedFromFee(address account) external onlyOwner { _isExcludedFromFee[account] = !_isExcludedFromFee[account]; } /// @notice Recovers tokens or ETH that was sent to the contract function recoverTokensOrEth(address token, uint256 amount) external onlyOwnerOrTax { if (token == address(0)){ (bool sent, bytes memory data) = payable(msg.sender).call{value: amount}(""); } else { IERC20(token).transfer(msg.sender, amount); } } /// @notice Updates an address status (if it's recognized as a swap contract) /// @param contractAddress The address to update function updateTaxedContract(address contractAddress) external onlyOwnerOrTax { _isTaxedContract[contractAddress] = !_isTaxedContract[contractAddress]; emit TaxedContractUpdated(contractAddress, _isTaxedContract[contractAddress]); } /// @notice Update status of automatic swaps of taxes to ETH function updateSwapEnabled() external onlyOwnerOrTax { swapEnabled = !swapEnabled; } /// @notice Updates the tax wallet addresses function updateTaxWallet(address payable wallet, uint256 index) external onlyOwnerOrTax { if (index == 1){ require(msg.sender == _taxReceiver, "not valid"); _taxReceiver = wallet; } else if (index == 2){ require(msg.sender == _taxReceiver2, "not valid"); _taxReceiver2 = wallet; } else if (index == 3){ require(msg.sender == _taxReceiver3, "not valid"); _taxReceiver3 = wallet; } } /// @notice Updates the status of maxTxAmount and maxWalletAmount limits function updateLimits() external onlyOwner { limitsEnabled = !limitsEnabled; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_oldTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTax","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_contract","type":"address"},{"indexed":false,"internalType":"bool","name":"_isSwapContract","type":"bool"}],"name":"TaxedContractUpdated","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":"_customTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxAddressAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"_taxReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxReceiver2","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxReceiver3","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxTradeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverTokensOrEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"updateCustomTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"updateIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"updateTaxedContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526012600a62000014919062000a6d565b61138862000023919062000abe565b6001556012600a62000036919062000a6d565b620186a062000046919062000abe565b6002556012600a62000059919062000a6d565b610fa062000068919062000abe565b6003556012600a6200007b919062000a6d565b610fa06200008a919062000abe565b6004556000600c556001600f60176101000a81548160ff021916908315150217905550348015620000ba57600080fd5b506000329050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506012600a6200016c919062000a6d565b629896806200017c919062000abe565b600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737db9be14b458d5ffd5770cff9fa415e818dc23c3600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c76be262ef9926273756e828c953373d69486181600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736f0c59171c9fabdc4f5291caf7d9000a85e0a3be600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000620002d4620008aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d4919062000b73565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200065e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000684919062000b73565b6040518363ffffffff1660e01b8152600401620006a392919062000bb6565b6020604051808303816000875af1158015620006c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006e9919062000b73565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200087d919062000a6d565b629896806200088d919062000abe565b6040516200089c919062000bf4565b60405180910390a362000c11565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200096157808604811115620009395762000938620008d3565b5b6001851615620009495780820291505b8081029050620009598562000902565b945062000919565b94509492505050565b6000826200097c576001905062000a4f565b816200098c576000905062000a4f565b8160018114620009a55760028114620009b057620009e6565b600191505062000a4f565b60ff841115620009c557620009c4620008d3565b5b8360020a915084821115620009df57620009de620008d3565b5b5062000a4f565b5060208310610133831016604e8410600b841016171562000a205782820a90508381111562000a1a5762000a19620008d3565b5b62000a4f565b62000a2f84848460016200090f565b9250905081840481111562000a495762000a48620008d3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a7a8262000a56565b915062000a878362000a60565b925062000ab67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200096a565b905092915050565b600062000acb8262000a56565b915062000ad88362000a56565b925082820262000ae88162000a56565b9150828204841483151762000b025762000b01620008d3565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b3b8262000b0e565b9050919050565b62000b4d8162000b2e565b811462000b5957600080fd5b50565b60008151905062000b6d8162000b42565b92915050565b60006020828403121562000b8c5762000b8b62000b09565b5b600062000b9c8482850162000b5c565b91505092915050565b62000bb08162000b2e565b82525050565b600060408201905062000bcd600083018562000ba5565b62000bdc602083018462000ba5565b9392505050565b62000bee8162000a56565b82525050565b600060208201905062000c0b600083018462000be3565b92915050565b6142558062000c216000396000f3fe6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2e28a511161006f578063d2e28a51146106a2578063d798cbd2146106cb578063dc871a66146106f6578063dd62ed3e14610721578063f81ff81d1461075e576101f9565b8063a9059cbb146105fc578063ad91542014610639578063bd8abd7314610662578063ce1d022f14610679576101f9565b80637d1db4a5116100dc5780637d1db4a514610550578063855677381461057b5780638da5cb5b146105a657806395d89b41146105d1576101f9565b806370a0823114610494578063715018a6146104d157806372be2693146104e8578063768dc71014610513576101f9565b8063242e18d8116101855780633582ad23116101545780633582ad23146103fc57806349bd5a5e1461042757806351bc3c85146104525780636d71c90f14610469576101f9565b8063242e18d814610366578063293230b81461038f5780632e088214146103a6578063313ce567146103d1576101f9565b80630faee56f116101c15780630faee56f146102a85780631694505e146102d357806318160ddd146102fe57806323b872dd14610329576101f9565b8063033583b4146101fe57806306fdde0314610229578063095ea7b3146102545780630c08e25514610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610787565b6040516102209190613021565b60405180910390f35b34801561023557600080fd5b5061023e61078d565b60405161024b91906130cc565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061317d565b6107ca565b60405161028891906131d8565b60405180910390f35b34801561029d57600080fd5b506102a66107e8565b005b3480156102b457600080fd5b506102bd6108a9565b6040516102ca9190613021565b60405180910390f35b3480156102df57600080fd5b506102e86108af565b6040516102f59190613252565b60405180910390f35b34801561030a57600080fd5b506103136108d5565b6040516103209190613021565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b919061326d565b6108f8565b60405161035d91906131d8565b60405180910390f35b34801561037257600080fd5b5061038d600480360381019061038891906132fe565b6109d1565b005b34801561039b57600080fd5b506103a4610e06565b005b3480156103b257600080fd5b506103bb610f2a565b6040516103c89190613021565b60405180910390f35b3480156103dd57600080fd5b506103e6610f30565b6040516103f3919061335a565b60405180910390f35b34801561040857600080fd5b50610411610f39565b60405161041e91906131d8565b60405180910390f35b34801561043357600080fd5b5061043c610f4c565b6040516104499190613384565b60405180910390f35b34801561045e57600080fd5b50610467610f72565b005b34801561047557600080fd5b5061047e611147565b60405161048b91906133ae565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906133c9565b61116d565b6040516104c89190613021565b60405180910390f35b3480156104dd57600080fd5b506104e66111b6565b005b3480156104f457600080fd5b506104fd611309565b60405161050a91906133ae565b60405180910390f35b34801561051f57600080fd5b5061053a600480360381019061053591906133c9565b61132f565b60405161054791906131d8565b60405180910390f35b34801561055c57600080fd5b5061056561134f565b6040516105729190613021565b60405180910390f35b34801561058757600080fd5b50610590611355565b60405161059d9190613021565b60405180910390f35b3480156105b257600080fd5b506105bb61135b565b6040516105c89190613384565b60405180910390f35b3480156105dd57600080fd5b506105e6611384565b6040516105f391906130cc565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061317d565b6113c1565b60405161063091906131d8565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b91906133c9565b6113df565b005b34801561066e57600080fd5b5061067761151b565b005b34801561068557600080fd5b506106a0600480360381019061069b919061317d565b6116e0565b005b3480156106ae57600080fd5b506106c960048036038101906106c491906133c9565b6119a6565b005b3480156106d757600080fd5b506106e0611c6b565b6040516106ed9190613021565b60405180910390f35b34801561070257600080fd5b5061070b611c71565b60405161071891906133ae565b60405180910390f35b34801561072d57600080fd5b50610748600480360381019061074391906133f6565b611c97565b6040516107559190613021565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190613436565b611d1e565b005b60015481565b60606040518060400160405280600a81526020017f4d6167656e746120414900000000000000000000000000000000000000000000815250905090565b60006107de6107d7611e3c565b8484611e44565b6001905092915050565b6107f0611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610874906134af565b60405180910390fd5b600f60179054906101000a900460ff1615600f60176101000a81548160ff021916908315150217905550565b60025481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6108e59190613631565b629896806108f3919061367c565b905090565b600061090584848461200d565b6109c684610911611e3c565b6109c1856040518060600160405280602881526020016141f860289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610977611e3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129199092919063ffffffff16565b611e44565b600190509392505050565b6109d961135b565b73ffffffffffffffffffffffffffffffffffffffff166109f7611e3c565b73ffffffffffffffffffffffffffffffffffffffff161480610a6d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a55611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610acc5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab4611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b2b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b13611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b619061370a565b60405180910390fd5b60018103610c4857600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990613776565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e02565b60028103610d2657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790613776565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e01565b60038103610e0057600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590613776565b60405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5050565b610e0e611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e92906134af565b60405180910390fd5b600f60149054906101000a900460ff1615610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee2906137e2565b60405180910390fd5b6001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff02191690831515021790555043600d81905550565b600c5481565b60006012905090565b600f60179054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f7a61135b565b73ffffffffffffffffffffffffffffffffffffffff16610f98611e3c565b73ffffffffffffffffffffffffffffffffffffffff16148061100e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff6611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061106d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611055611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806110cc5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110b4611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b61110b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111029061370a565b60405180910390fd5b60006111163061116d565b9050600081111561112b5761112a8161297d565b5b600047905060008111156111435761114281612c17565b5b5050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111be611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611242906134af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60035481565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4d41474149000000000000000000000000000000000000000000000000000000815250905090565b60006113d56113ce611e3c565b848461200d565b6001905092915050565b6113e7611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b906134af565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61152361135b565b73ffffffffffffffffffffffffffffffffffffffff16611541611e3c565b73ffffffffffffffffffffffffffffffffffffffff1614806115b75750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661159f611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806116165750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115fe611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806116755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661165d611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b6116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061370a565b60405180910390fd5b600f60169054906101000a900460ff1615600f60166101000a81548160ff021916908315150217905550565b6116e861135b565b73ffffffffffffffffffffffffffffffffffffffff16611706611e3c565b73ffffffffffffffffffffffffffffffffffffffff16148061177c5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611764611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806117db5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c3611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061183a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611822611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b611879576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118709061370a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611922576000803373ffffffffffffffffffffffffffffffffffffffff16836040516118d490613833565b60006040518083038185875af1925050503d8060008114611911576040519150601f19603f3d011682016040523d82523d6000602084013e611916565b606091505b509150915050506119a2565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161195d929190613848565b6020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061389d565b505b5050565b6119ae61135b565b73ffffffffffffffffffffffffffffffffffffffff166119cc611e3c565b73ffffffffffffffffffffffffffffffffffffffff161480611a425750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a2a611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611aa15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a89611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b005750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ae8611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b369061370a565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9093e8bca456e0b9f6cfb394c1878491c2f74c371a40dfb714f275daefc9627881600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16604051611c609291906138ca565b60405180910390a150565b600d5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d26611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906134af565b60405180910390fd5b6032811115611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90613965565b60405180910390fd5b7fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad85605600c5482604051611e2a929190613985565b60405180910390a180600c8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90613a20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1990613ab2565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120009190613021565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390613b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613bd6565b60405180910390fd5b6000811161212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212590613c68565b60405180910390fd5b600061213861135b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121a6575061217661135b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156125b157600f60149054906101000a900460ff166121fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f190613cfa565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561229d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122b55750600f60179054906101000a900460ff165b156123965760045461230f83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b1115612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790613d8c565b60405180910390fd5b600354821115612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90613e1e565b60405180910390fd5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561241b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124545761244d606461243f612430612e25565b85612e7e90919063ffffffff16565b612ef890919063ffffffff16565b90506124d7565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124d6576124d360646124c56124b6612e25565b85612e7e90919063ffffffff16565b612ef890919063ffffffff16565b90505b5b60006124e23061116d565b9050600f60159054906101000a900460ff1615801561254e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156125665750600f60169054906101000a900460ff165b8015612573575060015481115b156125af576125956125908461258b84600254612f42565b612f42565b61297d565b600047905060008111156125ad576125ac47612c17565b5b505b505b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126525750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561265c57600090505b6000811115612760576126b781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127579190613021565b60405180910390a35b6127b282600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5b90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285961280b8284612f5b90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128fe8486612f5b90919063ffffffff16565b60405161290b9190613021565b60405180910390a350505050565b6000838311158290612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295891906130cc565b60405180910390fd5b50600083856129709190613e3e565b9050809150509392505050565b6001600f60156101000a81548160ff021916908315150217905550600f60149054906101000a900460ff1615806129b45750600081145b612bf9576000600267ffffffffffffffff8111156129d5576129d4613e72565b5b604051908082528060200260200182016040528015612a035781602001602082028036833780820191505090505b5090503081600081518110612a1b57612a1a613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae69190613ee5565b81600181518110612afa57612af9613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6130600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e44565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bc595949392919061400b565b600060405180830381600087803b158015612bdf57600080fd5b505af1158015612bf3573d6000803e3d6000fd5b50505050505b6000600f60156101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612c7a6064612c6c602886612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ca5573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d096064612cfb601e86612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612d34573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d986064612d8a601e86612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612dc3573d6000803e3d6000fd5b5050565b6000808284612dd69190614065565b905083811015612e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e12906140e5565b60405180910390fd5b8091505092915050565b600080600c5414612e3a57600c549050612e7b565b6005600d5443612e4a9190613e3e565b11612e5857601e9050612e7b565b600a600d5443612e689190613e3e565b11612e765760149050612e7b565b600290505b90565b6000808303612e905760009050612ef2565b60008284612e9e919061367c565b9050828482612ead9190614134565b14612eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee4906141d7565b60405180910390fd5b809150505b92915050565b6000612f3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fa5565b905092915050565b6000818311612f515782612f53565b815b905092915050565b6000612f9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612919565b905092915050565b60008083118290612fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe391906130cc565b60405180910390fd5b5060008385612ffb9190614134565b9050809150509392505050565b6000819050919050565b61301b81613008565b82525050565b60006020820190506130366000830184613012565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561307657808201518184015260208101905061305b565b60008484015250505050565b6000601f19601f8301169050919050565b600061309e8261303c565b6130a88185613047565b93506130b8818560208601613058565b6130c181613082565b840191505092915050565b600060208201905081810360008301526130e68184613093565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061311e826130f3565b9050919050565b61312e81613113565b811461313957600080fd5b50565b60008135905061314b81613125565b92915050565b61315a81613008565b811461316557600080fd5b50565b60008135905061317781613151565b92915050565b60008060408385031215613194576131936130ee565b5b60006131a28582860161313c565b92505060206131b385828601613168565b9150509250929050565b60008115159050919050565b6131d2816131bd565b82525050565b60006020820190506131ed60008301846131c9565b92915050565b6000819050919050565b600061321861321361320e846130f3565b6131f3565b6130f3565b9050919050565b600061322a826131fd565b9050919050565b600061323c8261321f565b9050919050565b61324c81613231565b82525050565b60006020820190506132676000830184613243565b92915050565b600080600060608486031215613286576132856130ee565b5b60006132948682870161313c565b93505060206132a58682870161313c565b92505060406132b686828701613168565b9150509250925092565b60006132cb826130f3565b9050919050565b6132db816132c0565b81146132e657600080fd5b50565b6000813590506132f8816132d2565b92915050565b60008060408385031215613315576133146130ee565b5b6000613323858286016132e9565b925050602061333485828601613168565b9150509250929050565b600060ff82169050919050565b6133548161333e565b82525050565b600060208201905061336f600083018461334b565b92915050565b61337e81613113565b82525050565b60006020820190506133996000830184613375565b92915050565b6133a8816132c0565b82525050565b60006020820190506133c3600083018461339f565b92915050565b6000602082840312156133df576133de6130ee565b5b60006133ed8482850161313c565b91505092915050565b6000806040838503121561340d5761340c6130ee565b5b600061341b8582860161313c565b925050602061342c8582860161313c565b9150509250929050565b60006020828403121561344c5761344b6130ee565b5b600061345a84828501613168565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613499602083613047565b91506134a482613463565b602082019050919050565b600060208201905081810360008301526134c88161348c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561355557808604811115613531576135306134cf565b5b60018516156135405780820291505b808102905061354e856134fe565b9450613515565b94509492505050565b60008261356e576001905061362a565b8161357c576000905061362a565b8160018114613592576002811461359c576135cb565b600191505061362a565b60ff8411156135ae576135ad6134cf565b5b8360020a9150848211156135c5576135c46134cf565b5b5061362a565b5060208310610133831016604e8410600b84101617156136005782820a9050838111156135fb576135fa6134cf565b5b61362a565b61360d848484600161350b565b92509050818404811115613624576136236134cf565b5b81810290505b9392505050565b600061363c82613008565b91506136478361333e565b92506136747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461355e565b905092915050565b600061368782613008565b915061369283613008565b92508282026136a081613008565b915082820484148315176136b7576136b66134cf565b5b5092915050565b7f6f6e6c79206f776e6572206f72207461782077616c6c65747300000000000000600082015250565b60006136f4601983613047565b91506136ff826136be565b602082019050919050565b60006020820190508181036000830152613723816136e7565b9050919050565b7f6e6f742076616c69640000000000000000000000000000000000000000000000600082015250565b6000613760600983613047565b915061376b8261372a565b602082019050919050565b6000602082019050818103600083015261378f81613753565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006137cc601783613047565b91506137d782613796565b602082019050919050565b600060208201905081810360008301526137fb816137bf565b9050919050565b600081905092915050565b50565b600061381d600083613802565b91506138288261380d565b600082019050919050565b600061383e82613810565b9150819050919050565b600060408201905061385d6000830185613375565b61386a6020830184613012565b9392505050565b61387a816131bd565b811461388557600080fd5b50565b60008151905061389781613871565b92915050565b6000602082840312156138b3576138b26130ee565b5b60006138c184828501613888565b91505092915050565b60006040820190506138df6000830185613375565b6138ec60208301846131c9565b9392505050565b7f546178206d757374206265206c657373207468616e206f7220657175616c207460008201527f6f20353025000000000000000000000000000000000000000000000000000000602082015250565b600061394f602583613047565b915061395a826138f3565b604082019050919050565b6000602082019050818103600083015261397e81613942565b9050919050565b600060408201905061399a6000830185613012565b6139a76020830184613012565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a0a602483613047565b9150613a15826139ae565b604082019050919050565b60006020820190508181036000830152613a39816139fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9c602283613047565b9150613aa782613a40565b604082019050919050565b60006020820190508181036000830152613acb81613a8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b2e602583613047565b9150613b3982613ad2565b604082019050919050565b60006020820190508181036000830152613b5d81613b21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc0602383613047565b9150613bcb82613b64565b604082019050919050565b60006020820190508181036000830152613bef81613bb3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c52602983613047565b9150613c5d82613bf6565b604082019050919050565b60006020820190508181036000830152613c8181613c45565b9050919050565b7f45524332303a2054726164696e67206973206e6f74207374617274656420796560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce4602183613047565b9150613cef82613c88565b604082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784160008201527f646472657373416d6f756e740000000000000000000000000000000000000000602082015250565b6000613d76602c83613047565b9150613d8182613d1a565b604082019050919050565b60006020820190508181036000830152613da581613d69565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e7400000000000000000000000000000000000000000000000000602082015250565b6000613e08602783613047565b9150613e1382613dac565b604082019050919050565b60006020820190508181036000830152613e3781613dfb565b9050919050565b6000613e4982613008565b9150613e5483613008565b9250828203905081811115613e6c57613e6b6134cf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613edf81613125565b92915050565b600060208284031215613efb57613efa6130ee565b5b6000613f0984828501613ed0565b91505092915050565b6000819050919050565b6000613f37613f32613f2d84613f12565b6131f3565b613008565b9050919050565b613f4781613f1c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f8281613113565b82525050565b6000613f948383613f79565b60208301905092915050565b6000602082019050919050565b6000613fb882613f4d565b613fc28185613f58565b9350613fcd83613f69565b8060005b83811015613ffe578151613fe58882613f88565b9750613ff083613fa0565b925050600181019050613fd1565b5085935050505092915050565b600060a0820190506140206000830188613012565b61402d6020830187613f3e565b818103604083015261403f8186613fad565b905061404e6060830185613375565b61405b6080830184613012565b9695505050505050565b600061407082613008565b915061407b83613008565b9250828201905080821115614093576140926134cf565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006140cf601b83613047565b91506140da82614099565b602082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061413f82613008565b915061414a83613008565b92508261415a57614159614105565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141c1602183613047565b91506141cc82614165565b604082019050919050565b600060208201905081810360008301526141f0816141b4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee4a914f1b6db1dead6db52230b25402b8bf51e3ffffb0a0d396d5799e72708864736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2e28a511161006f578063d2e28a51146106a2578063d798cbd2146106cb578063dc871a66146106f6578063dd62ed3e14610721578063f81ff81d1461075e576101f9565b8063a9059cbb146105fc578063ad91542014610639578063bd8abd7314610662578063ce1d022f14610679576101f9565b80637d1db4a5116100dc5780637d1db4a514610550578063855677381461057b5780638da5cb5b146105a657806395d89b41146105d1576101f9565b806370a0823114610494578063715018a6146104d157806372be2693146104e8578063768dc71014610513576101f9565b8063242e18d8116101855780633582ad23116101545780633582ad23146103fc57806349bd5a5e1461042757806351bc3c85146104525780636d71c90f14610469576101f9565b8063242e18d814610366578063293230b81461038f5780632e088214146103a6578063313ce567146103d1576101f9565b80630faee56f116101c15780630faee56f146102a85780631694505e146102d357806318160ddd146102fe57806323b872dd14610329576101f9565b8063033583b4146101fe57806306fdde0314610229578063095ea7b3146102545780630c08e25514610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610787565b6040516102209190613021565b60405180910390f35b34801561023557600080fd5b5061023e61078d565b60405161024b91906130cc565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061317d565b6107ca565b60405161028891906131d8565b60405180910390f35b34801561029d57600080fd5b506102a66107e8565b005b3480156102b457600080fd5b506102bd6108a9565b6040516102ca9190613021565b60405180910390f35b3480156102df57600080fd5b506102e86108af565b6040516102f59190613252565b60405180910390f35b34801561030a57600080fd5b506103136108d5565b6040516103209190613021565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b919061326d565b6108f8565b60405161035d91906131d8565b60405180910390f35b34801561037257600080fd5b5061038d600480360381019061038891906132fe565b6109d1565b005b34801561039b57600080fd5b506103a4610e06565b005b3480156103b257600080fd5b506103bb610f2a565b6040516103c89190613021565b60405180910390f35b3480156103dd57600080fd5b506103e6610f30565b6040516103f3919061335a565b60405180910390f35b34801561040857600080fd5b50610411610f39565b60405161041e91906131d8565b60405180910390f35b34801561043357600080fd5b5061043c610f4c565b6040516104499190613384565b60405180910390f35b34801561045e57600080fd5b50610467610f72565b005b34801561047557600080fd5b5061047e611147565b60405161048b91906133ae565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906133c9565b61116d565b6040516104c89190613021565b60405180910390f35b3480156104dd57600080fd5b506104e66111b6565b005b3480156104f457600080fd5b506104fd611309565b60405161050a91906133ae565b60405180910390f35b34801561051f57600080fd5b5061053a600480360381019061053591906133c9565b61132f565b60405161054791906131d8565b60405180910390f35b34801561055c57600080fd5b5061056561134f565b6040516105729190613021565b60405180910390f35b34801561058757600080fd5b50610590611355565b60405161059d9190613021565b60405180910390f35b3480156105b257600080fd5b506105bb61135b565b6040516105c89190613384565b60405180910390f35b3480156105dd57600080fd5b506105e6611384565b6040516105f391906130cc565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061317d565b6113c1565b60405161063091906131d8565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b91906133c9565b6113df565b005b34801561066e57600080fd5b5061067761151b565b005b34801561068557600080fd5b506106a0600480360381019061069b919061317d565b6116e0565b005b3480156106ae57600080fd5b506106c960048036038101906106c491906133c9565b6119a6565b005b3480156106d757600080fd5b506106e0611c6b565b6040516106ed9190613021565b60405180910390f35b34801561070257600080fd5b5061070b611c71565b60405161071891906133ae565b60405180910390f35b34801561072d57600080fd5b50610748600480360381019061074391906133f6565b611c97565b6040516107559190613021565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190613436565b611d1e565b005b60015481565b60606040518060400160405280600a81526020017f4d6167656e746120414900000000000000000000000000000000000000000000815250905090565b60006107de6107d7611e3c565b8484611e44565b6001905092915050565b6107f0611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610874906134af565b60405180910390fd5b600f60179054906101000a900460ff1615600f60176101000a81548160ff021916908315150217905550565b60025481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6108e59190613631565b629896806108f3919061367c565b905090565b600061090584848461200d565b6109c684610911611e3c565b6109c1856040518060600160405280602881526020016141f860289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610977611e3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129199092919063ffffffff16565b611e44565b600190509392505050565b6109d961135b565b73ffffffffffffffffffffffffffffffffffffffff166109f7611e3c565b73ffffffffffffffffffffffffffffffffffffffff161480610a6d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a55611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610acc5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab4611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b2b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b13611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b619061370a565b60405180910390fd5b60018103610c4857600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990613776565b60405180910390fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e02565b60028103610d2657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790613776565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e01565b60038103610e0057600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590613776565b60405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5050565b610e0e611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e92906134af565b60405180910390fd5b600f60149054906101000a900460ff1615610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee2906137e2565b60405180910390fd5b6001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff02191690831515021790555043600d81905550565b600c5481565b60006012905090565b600f60179054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f7a61135b565b73ffffffffffffffffffffffffffffffffffffffff16610f98611e3c565b73ffffffffffffffffffffffffffffffffffffffff16148061100e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff6611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061106d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611055611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806110cc5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110b4611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b61110b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111029061370a565b60405180910390fd5b60006111163061116d565b9050600081111561112b5761112a8161297d565b5b600047905060008111156111435761114281612c17565b5b5050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111be611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611242906134af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60035481565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4d41474149000000000000000000000000000000000000000000000000000000815250905090565b60006113d56113ce611e3c565b848461200d565b6001905092915050565b6113e7611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b906134af565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61152361135b565b73ffffffffffffffffffffffffffffffffffffffff16611541611e3c565b73ffffffffffffffffffffffffffffffffffffffff1614806115b75750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661159f611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806116165750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115fe611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806116755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661165d611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b6116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9061370a565b60405180910390fd5b600f60169054906101000a900460ff1615600f60166101000a81548160ff021916908315150217905550565b6116e861135b565b73ffffffffffffffffffffffffffffffffffffffff16611706611e3c565b73ffffffffffffffffffffffffffffffffffffffff16148061177c5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611764611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b806117db5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c3611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061183a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611822611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b611879576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118709061370a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611922576000803373ffffffffffffffffffffffffffffffffffffffff16836040516118d490613833565b60006040518083038185875af1925050503d8060008114611911576040519150601f19603f3d011682016040523d82523d6000602084013e611916565b606091505b509150915050506119a2565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161195d929190613848565b6020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061389d565b505b5050565b6119ae61135b565b73ffffffffffffffffffffffffffffffffffffffff166119cc611e3c565b73ffffffffffffffffffffffffffffffffffffffff161480611a425750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a2a611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611aa15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a89611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b005750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ae8611e3c565b73ffffffffffffffffffffffffffffffffffffffff16145b611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b369061370a565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9093e8bca456e0b9f6cfb394c1878491c2f74c371a40dfb714f275daefc9627881600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16604051611c609291906138ca565b60405180910390a150565b600d5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d26611e3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906134af565b60405180910390fd5b6032811115611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90613965565b60405180910390fd5b7fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad85605600c5482604051611e2a929190613985565b60405180910390a180600c8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90613a20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1990613ab2565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120009190613021565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390613b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613bd6565b60405180910390fd5b6000811161212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212590613c68565b60405180910390fd5b600061213861135b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121a6575061217661135b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156125b157600f60149054906101000a900460ff166121fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f190613cfa565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561229d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122b55750600f60179054906101000a900460ff165b156123965760045461230f83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b1115612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790613d8c565b60405180910390fd5b600354821115612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90613e1e565b60405180910390fd5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561241b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124545761244d606461243f612430612e25565b85612e7e90919063ffffffff16565b612ef890919063ffffffff16565b90506124d7565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124d6576124d360646124c56124b6612e25565b85612e7e90919063ffffffff16565b612ef890919063ffffffff16565b90505b5b60006124e23061116d565b9050600f60159054906101000a900460ff1615801561254e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156125665750600f60169054906101000a900460ff165b8015612573575060015481115b156125af576125956125908461258b84600254612f42565b612f42565b61297d565b600047905060008111156125ad576125ac47612c17565b5b505b505b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126525750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561265c57600090505b6000811115612760576126b781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127579190613021565b60405180910390a35b6127b282600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5b90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285961280b8284612f5b90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dc790919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128fe8486612f5b90919063ffffffff16565b60405161290b9190613021565b60405180910390a350505050565b6000838311158290612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295891906130cc565b60405180910390fd5b50600083856129709190613e3e565b9050809150509392505050565b6001600f60156101000a81548160ff021916908315150217905550600f60149054906101000a900460ff1615806129b45750600081145b612bf9576000600267ffffffffffffffff8111156129d5576129d4613e72565b5b604051908082528060200260200182016040528015612a035781602001602082028036833780820191505090505b5090503081600081518110612a1b57612a1a613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae69190613ee5565b81600181518110612afa57612af9613ea1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6130600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e44565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bc595949392919061400b565b600060405180830381600087803b158015612bdf57600080fd5b505af1158015612bf3573d6000803e3d6000fd5b50505050505b6000600f60156101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612c7a6064612c6c602886612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ca5573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d096064612cfb601e86612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612d34573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d986064612d8a601e86612e7e90919063ffffffff16565b612ef890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612dc3573d6000803e3d6000fd5b5050565b6000808284612dd69190614065565b905083811015612e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e12906140e5565b60405180910390fd5b8091505092915050565b600080600c5414612e3a57600c549050612e7b565b6005600d5443612e4a9190613e3e565b11612e5857601e9050612e7b565b600a600d5443612e689190613e3e565b11612e765760149050612e7b565b600290505b90565b6000808303612e905760009050612ef2565b60008284612e9e919061367c565b9050828482612ead9190614134565b14612eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee4906141d7565b60405180910390fd5b809150505b92915050565b6000612f3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fa5565b905092915050565b6000818311612f515782612f53565b815b905092915050565b6000612f9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612919565b905092915050565b60008083118290612fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe391906130cc565b60405180910390fd5b5060008385612ffb9190614134565b9050809150509392505050565b6000819050919050565b61301b81613008565b82525050565b60006020820190506130366000830184613012565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561307657808201518184015260208101905061305b565b60008484015250505050565b6000601f19601f8301169050919050565b600061309e8261303c565b6130a88185613047565b93506130b8818560208601613058565b6130c181613082565b840191505092915050565b600060208201905081810360008301526130e68184613093565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061311e826130f3565b9050919050565b61312e81613113565b811461313957600080fd5b50565b60008135905061314b81613125565b92915050565b61315a81613008565b811461316557600080fd5b50565b60008135905061317781613151565b92915050565b60008060408385031215613194576131936130ee565b5b60006131a28582860161313c565b92505060206131b385828601613168565b9150509250929050565b60008115159050919050565b6131d2816131bd565b82525050565b60006020820190506131ed60008301846131c9565b92915050565b6000819050919050565b600061321861321361320e846130f3565b6131f3565b6130f3565b9050919050565b600061322a826131fd565b9050919050565b600061323c8261321f565b9050919050565b61324c81613231565b82525050565b60006020820190506132676000830184613243565b92915050565b600080600060608486031215613286576132856130ee565b5b60006132948682870161313c565b93505060206132a58682870161313c565b92505060406132b686828701613168565b9150509250925092565b60006132cb826130f3565b9050919050565b6132db816132c0565b81146132e657600080fd5b50565b6000813590506132f8816132d2565b92915050565b60008060408385031215613315576133146130ee565b5b6000613323858286016132e9565b925050602061333485828601613168565b9150509250929050565b600060ff82169050919050565b6133548161333e565b82525050565b600060208201905061336f600083018461334b565b92915050565b61337e81613113565b82525050565b60006020820190506133996000830184613375565b92915050565b6133a8816132c0565b82525050565b60006020820190506133c3600083018461339f565b92915050565b6000602082840312156133df576133de6130ee565b5b60006133ed8482850161313c565b91505092915050565b6000806040838503121561340d5761340c6130ee565b5b600061341b8582860161313c565b925050602061342c8582860161313c565b9150509250929050565b60006020828403121561344c5761344b6130ee565b5b600061345a84828501613168565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613499602083613047565b91506134a482613463565b602082019050919050565b600060208201905081810360008301526134c88161348c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561355557808604811115613531576135306134cf565b5b60018516156135405780820291505b808102905061354e856134fe565b9450613515565b94509492505050565b60008261356e576001905061362a565b8161357c576000905061362a565b8160018114613592576002811461359c576135cb565b600191505061362a565b60ff8411156135ae576135ad6134cf565b5b8360020a9150848211156135c5576135c46134cf565b5b5061362a565b5060208310610133831016604e8410600b84101617156136005782820a9050838111156135fb576135fa6134cf565b5b61362a565b61360d848484600161350b565b92509050818404811115613624576136236134cf565b5b81810290505b9392505050565b600061363c82613008565b91506136478361333e565b92506136747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461355e565b905092915050565b600061368782613008565b915061369283613008565b92508282026136a081613008565b915082820484148315176136b7576136b66134cf565b5b5092915050565b7f6f6e6c79206f776e6572206f72207461782077616c6c65747300000000000000600082015250565b60006136f4601983613047565b91506136ff826136be565b602082019050919050565b60006020820190508181036000830152613723816136e7565b9050919050565b7f6e6f742076616c69640000000000000000000000000000000000000000000000600082015250565b6000613760600983613047565b915061376b8261372a565b602082019050919050565b6000602082019050818103600083015261378f81613753565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006137cc601783613047565b91506137d782613796565b602082019050919050565b600060208201905081810360008301526137fb816137bf565b9050919050565b600081905092915050565b50565b600061381d600083613802565b91506138288261380d565b600082019050919050565b600061383e82613810565b9150819050919050565b600060408201905061385d6000830185613375565b61386a6020830184613012565b9392505050565b61387a816131bd565b811461388557600080fd5b50565b60008151905061389781613871565b92915050565b6000602082840312156138b3576138b26130ee565b5b60006138c184828501613888565b91505092915050565b60006040820190506138df6000830185613375565b6138ec60208301846131c9565b9392505050565b7f546178206d757374206265206c657373207468616e206f7220657175616c207460008201527f6f20353025000000000000000000000000000000000000000000000000000000602082015250565b600061394f602583613047565b915061395a826138f3565b604082019050919050565b6000602082019050818103600083015261397e81613942565b9050919050565b600060408201905061399a6000830185613012565b6139a76020830184613012565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a0a602483613047565b9150613a15826139ae565b604082019050919050565b60006020820190508181036000830152613a39816139fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9c602283613047565b9150613aa782613a40565b604082019050919050565b60006020820190508181036000830152613acb81613a8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b2e602583613047565b9150613b3982613ad2565b604082019050919050565b60006020820190508181036000830152613b5d81613b21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc0602383613047565b9150613bcb82613b64565b604082019050919050565b60006020820190508181036000830152613bef81613bb3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c52602983613047565b9150613c5d82613bf6565b604082019050919050565b60006020820190508181036000830152613c8181613c45565b9050919050565b7f45524332303a2054726164696e67206973206e6f74207374617274656420796560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce4602183613047565b9150613cef82613c88565b604082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784160008201527f646472657373416d6f756e740000000000000000000000000000000000000000602082015250565b6000613d76602c83613047565b9150613d8182613d1a565b604082019050919050565b60006020820190508181036000830152613da581613d69565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e7400000000000000000000000000000000000000000000000000602082015250565b6000613e08602783613047565b9150613e1382613dac565b604082019050919050565b60006020820190508181036000830152613e3781613dfb565b9050919050565b6000613e4982613008565b9150613e5483613008565b9250828203905081811115613e6c57613e6b6134cf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613edf81613125565b92915050565b600060208284031215613efb57613efa6130ee565b5b6000613f0984828501613ed0565b91505092915050565b6000819050919050565b6000613f37613f32613f2d84613f12565b6131f3565b613008565b9050919050565b613f4781613f1c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f8281613113565b82525050565b6000613f948383613f79565b60208301905092915050565b6000602082019050919050565b6000613fb882613f4d565b613fc28185613f58565b9350613fcd83613f69565b8060005b83811015613ffe578151613fe58882613f88565b9750613ff083613fa0565b925050600181019050613fd1565b5085935050505092915050565b600060a0820190506140206000830188613012565b61402d6020830187613f3e565b818103604083015261403f8186613fad565b905061404e6060830185613375565b61405b6080830184613012565b9695505050505050565b600061407082613008565b915061407b83613008565b9250828201905080821115614093576140926134cf565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006140cf601b83613047565b91506140da82614099565b602082019050919050565b600060208201905081810360008301526140fe816140c2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061413f82613008565b915061414a83613008565b92508261415a57614159614105565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141c1602183613047565b91506141cc82614165565b604082019050919050565b600060208201905081810360008301526141f0816141b4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee4a914f1b6db1dead6db52230b25402b8bf51e3ffffb0a0d396d5799e72708864736f6c63430008130033
Deployed Bytecode Sourcemap
4164:14767:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5510:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9780:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10840:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18836:92;;;;;;;;;;;;;:::i;:::-;;5638:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7376:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10057:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11009:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18250:500;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16449:219;;;;;;;;;;;;;:::i;:::-;;7180:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9966:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7895:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7498:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16041:341;;;;;;;;;;;;;:::i;:::-;;7035:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10160:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3188:148;;;;;;;;;;;;;:::i;:::-;;6950:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6460:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5770;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5878:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2974:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9871:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10287:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17092:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18094:98;;;;;;;;;;;;;:::i;:::-;;17316:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17764:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7273:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6992:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10462:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16785:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5510:57;;;;:::o;9780:83::-;9817:13;9850:5;;;;;;;;;;;;;;;;;9843:12;;9780:83;:::o;10840:161::-;10915:4;10932:39;10941:12;:10;:12::i;:::-;10955:7;10964:6;10932:8;:39::i;:::-;10989:4;10982:11;;10840:161;;;;:::o;18836:92::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18907:13:::1;;;;;;;;;;;18906:14;18890:13;;:30;;;;;;;;;;;;;;;;;;18836:92::o:0;5638:52::-;;;;:::o;7376:41::-;;;;;;;;;;;;;:::o;10057:95::-;10110:7;5146:2;5248;:13;;;;:::i;:::-;5235:10;:26;;;;:::i;:::-;10130:14;;10057:95;:::o;11009:313::-;11107:4;11124:36;11134:6;11142:9;11153:6;11124:9;:36::i;:::-;11171:121;11180:6;11188:12;:10;:12::i;:::-;11202:89;11240:6;11202:89;;;;;;;;;;;;;;;;;:11;:19;11214:6;11202:19;;;;;;;;;;;;;;;:33;11222:12;:10;:12::i;:::-;11202:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11171:8;:121::i;:::-;11310:4;11303:11;;11009:313;;;;;:::o;18250:500::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;18362:1:::1;18353:5;:10:::0;18349:394:::1;;18401:12;;;;;;;;;;;18387:26;;:10;:26;;;18379:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18457:6;18442:12;;:21;;;;;;;;;;;;;;;;;;18349:394;;;18494:1;18485:5;:10:::0;18481:262:::1;;18533:13;;;;;;;;;;;18519:27;;:10;:27;;;18511:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18591:6;18575:13;;:22;;;;;;;;;;;;;;;;;;18481:262;;;18628:1;18619:5;:10:::0;18615:128:::1;;18667:13;;;;;;;;;;;18653:27;;:10;:27;;;18645:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18725:6;18709:13;;:22;;;;;;;;;;;;;;;;;;18615:128;18481:262;18349:394;18250:500:::0;;:::o;16449:219::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16512:14:::1;;;;;;;;;;;16511:15;16503:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16581:4;16567:11;;:18;;;;;;;;;;;;;;;;;;16613:4;16596:14;;:21;;;;;;;;;;;;;;;;;;16648:12;16628:17;:32;;;;16449:219::o:0;7180:29::-;;;;:::o;9966:83::-;10007:5;5146:2;10025:16;;9966:83;:::o;7895:32::-;;;;;;;;;;;;;:::o;7498:28::-;;;;;;;;;;;;;:::o;16041:341::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;16098:20:::1;16121:24;16139:4;16121:9;:24::i;:::-;16098:47;;16175:1;16160:12;:16;16156:71;;;16192:23;16202:12;16192:9;:23::i;:::-;16156:71;16239:18;16260:21;16239:42;;16309:1;16296:10;:14;16292:83;;;16326:37;16352:10;16326:25;:37::i;:::-;16292:83;16087:295;;16041:341::o:0;7035:36::-;;;;;;;;;;;;;:::o;10160:119::-;10226:7;10253:9;:18;10263:7;10253:18;;;;;;;;;;;;;;;;10246:25;;10160:119;;;:::o;3188:148::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3295:1:::1;3258:40;;3279:6;::::0;::::1;;;;;;;;3258:40;;;;;;;;;;;;3326:1;3309:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3188:148::o:0;6950:35::-;;;;;;;;;;;;;:::o;6460:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;5770:::-;;;;:::o;5878:56::-;;;;:::o;2974:79::-;3012:7;3039:6;;;;;;;;;;;3032:13;;2974:79;:::o;9871:87::-;9910:13;9943:7;;;;;;;;;;;;;;;;;9936:14;;9871:87;:::o;10287:167::-;10365:4;10382:42;10392:12;:10;:12::i;:::-;10406:9;10417:6;10382:9;:42::i;:::-;10442:4;10435:11;;10287:167;;;;:::o;17092:146::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17203:18:::1;:27;17222:7;17203:27;;;;;;;;;;;;;;;;;;;;;;;;;17202:28;17172:18;:27;17191:7;17172:27;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;17092:146:::0;:::o;18094:98::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;18173:11:::1;;;;;;;;;;;18172:12;18158:11;;:26;;;;;;;;;;;;;;;;;;18094:98::o:0;17316:303::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;17431:1:::1;17414:19;;:5;:19;;::::0;17410:202:::1;;17450:9;17461:17:::0;17490:10:::1;17482:24;;17514:6;17482:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17449:76;;;;17434:103;;17410:202;;;17565:5;17558:22;;;17581:10;17593:6;17558:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17410:202;17316:303:::0;;:::o;17764:255::-;8393:7;:5;:7::i;:::-;8377:23;;:12;:10;:12::i;:::-;:23;;;:55;;;;8420:12;;;;;;;;;;;8404:28;;:12;:10;:12::i;:::-;:28;;;8377:55;:88;;;;8452:13;;;;;;;;;;;8436:29;;:12;:10;:12::i;:::-;:29;;;8377:88;:121;;;;8485:13;;;;;;;;;;;8469:29;;:12;:10;:12::i;:::-;:29;;;8377:121;8369:159;;;;;;;;;;;;:::i;:::-;;;;;;;;;17890:16:::1;:33;17907:15;17890:33;;;;;;;;;;;;;;;;;;;;;;;;;17889:34;17853:16;:33;17870:15;17853:33;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;17939:72;17960:15;17977:16;:33;17994:15;17977:33;;;;;;;;;;;;;;;;;;;;;;;;;17939:72;;;;;;;:::i;:::-;;;;;;;;17764:255:::0;:::o;7273:32::-;;;;:::o;6992:36::-;;;;;;;;;;;;;:::o;10462:143::-;10543:7;10570:11;:18;10582:5;10570:18;;;;;;;;;;;;;;;:27;10589:7;10570:27;;;;;;;;;;;;;;;;10563:34;;10462:143;;;;:::o;16785:205::-;3111:12;:10;:12::i;:::-;3101:22;;:6;;;;;;;;;;:22;;;3093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16868:2:::1;16861:3;:9;;16853:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16928:27;16939:10;;16951:3;16928:27;;;;;;;:::i;:::-;;;;;;;;16979:3;16966:10;:16;;;;16785:205:::0;:::o;732:98::-;785:7;812:10;805:17;;732:98;:::o;11330:335::-;11440:1;11423:19;;:5;:19;;;11415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11521:1;11502:21;;:7;:21;;;11494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11603:6;11573:11;:18;11585:5;11573:18;;;;;;;;;;;;;;;:27;11592:7;11573:27;;;;;;;;;;;;;;;:36;;;;11641:7;11625:32;;11634:5;11625:32;;;11650:6;11625:32;;;;;;:::i;:::-;;;;;;;;11330:335;;;:::o;11673:2032::-;11777:1;11761:18;;:4;:18;;;11753:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11854:1;11840:16;;:2;:16;;;11832:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11924:1;11915:6;:10;11907:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11984:15;12026:7;:5;:7::i;:::-;12018:15;;:4;:15;;;;:32;;;;;12043:7;:5;:7::i;:::-;12037:13;;:2;:13;;;;12018:32;12014:1224;;;12075:14;;;;;;;;;;;12067:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12148:16;:22;12165:4;12148:22;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;12175:18;:22;12194:2;12175:22;;;;;;;;;;;;;;;;;;;;;;;;;12174:23;12148:49;:66;;;;;12201:13;;;;;;;;;;;12148:66;12144:302;;;12271:17;;12242:25;12260:6;12242:9;:13;12252:2;12242:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;:46;;12234:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12374:12;;12364:6;:22;;12356:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12144:302;12481:16;:20;12498:2;12481:20;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;12521:4;12505:21;;:4;:21;;;;12481:45;12477:257;;;12556:42;12594:3;12556:33;12567:21;:19;:21::i;:::-;12556:6;:10;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;12546:52;;12477:257;;;12624:16;:22;12641:4;12624:22;;;;;;;;;;;;;;;;;;;;;;;;;12620:114;;;12676:42;12714:3;12676:33;12687:21;:19;:21::i;:::-;12676:6;:10;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;12666:52;;12620:114;12477:257;12750:28;12781:24;12799:4;12781:9;:24::i;:::-;12750:55;;12825:6;;;;;;;;;;;12824:7;:30;;;;;12841:13;;;;;;;;;;;12835:19;;:2;:19;;;12824:30;:45;;;;;12858:11;;;;;;;;;;;12824:45;:90;;;;;12896:18;;12873:20;:41;12824:90;12820:407;;;12935:70;12945:59;12953:6;12961:42;12969:20;12991:11;;12961:7;:42::i;:::-;12945:7;:59::i;:::-;12935:9;:70::i;:::-;13024:26;13053:21;13024:50;;13118:1;13097:18;:22;13093:119;;;13144:48;13170:21;13144:25;:48::i;:::-;13093:119;12916:311;12820:407;12052:1186;12014:1224;13254:18;:24;13273:4;13254:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13282:18;:22;13301:2;13282:22;;;;;;;;;;;;;;;;;;;;;;;;;13254:50;13250:93;;;13330:1;13320:11;;13250:93;13369:1;13359:7;:11;13355:165;;;13413:37;13442:7;13413:9;:24;13431:4;13413:24;;;;;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;13386:9;:24;13404:4;13386:24;;;;;;;;;;;;;;;:64;;;;13493:4;13470:38;;13479:4;13470:38;;;13500:7;13470:38;;;;;;:::i;:::-;;;;;;;;13355:165;13550:27;13570:6;13550:9;:15;13560:4;13550:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13532:9;:15;13542:4;13532:15;;;;;;;;;;;;;;;:45;;;;13604:38;13622:19;13633:7;13622:6;:10;;:19;;;;:::i;:::-;13604:9;:13;13614:2;13604:13;;;;;;;;;;;;;;;;:17;;:38;;;;:::i;:::-;13588:9;:13;13598:2;13588:13;;;;;;;;;;;;;;;:54;;;;13673:2;13658:39;;13667:4;13658:39;;;13677:19;13688:7;13677:6;:10;;:19;;;;:::i;:::-;13658:39;;;;;;:::i;:::-;;;;;;;;11742:1963;11673:2032;;;:::o;1869:190::-;1955:7;1988:1;1983;:6;;1991:12;1975:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2015:9;2031:1;2027;:5;;;;:::i;:::-;2015:17;;2050:1;2043:8;;;1869:190;;;;;:::o;14831:535::-;8277:4;8268:6;;:13;;;;;;;;;;;;;;;;;;14904:14:::1;;;;;;;;;;;14903:15;:35;;;;14937:1;14922:11;:16;14903:35;14940:7;14899:48;14959:21;14997:1;14983:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14959:40;;15028:4;15010;15015:1;15010:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15054:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15044:4;15049:1;15044:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15089:62;15106:4;15121:15;;;;;;;;;;;15139:11;15089:8;:62::i;:::-;15162:15;;;;;;;;;;;:66;;;15243:11;15269:1;15285:4;15312;15332:15;15162:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14888:478;8292:1;8313:5:::0;8304:6;;:14;;;;;;;;;;;;;;;;;;14831:535;:::o;15482:240::-;15552:12;;;;;;;;;;;:21;;:46;15574:23;15593:3;15574:14;15585:2;15574:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;15552:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15609:13;;;;;;;;;;;:22;;:47;15632:23;15651:3;15632:14;15643:2;15632:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;15609:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15667:13;;;;;;;;;;;:22;;:47;15690:23;15709:3;15690:14;15701:2;15690:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;15667:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15482:240;:::o;1538:179::-;1596:7;1616:9;1632:1;1628;:5;;;;:::i;:::-;1616:17;;1657:1;1652;:6;;1644:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1708:1;1701:8;;;1538:179;;;;:::o;14097:331::-;14151:7;14189:1;14175:10;;:15;14171:38;;14199:10;;14192:17;;;;14171:38;14262:1;14241:17;;14226:12;:32;;;;:::i;:::-;:37;14222:165;;14287:2;14280:9;;;;14222:165;14347:2;14326:17;;14311:12;:32;;;;:::i;:::-;:38;14307:80;;14373:2;14366:9;;;;14307:80;14419:1;14412:8;;14097:331;;:::o;2067:246::-;2125:7;2154:1;2149;:6;2145:47;;2179:1;2172:8;;;;2145:47;2202:9;2218:1;2214;:5;;;;:::i;:::-;2202:17;;2247:1;2242;2238;:5;;;;:::i;:::-;:10;2230:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2304:1;2297:8;;;2067:246;;;;;:::o;2321:132::-;2379:7;2406:39;2410:1;2413;2406:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2399:46;;2321:132;;;;:::o;14607:110::-;14668:7;14699:1;14695;:5;14694:15;;14708:1;14694:15;;;14704:1;14694:15;14687:22;;14607:110;;;;:::o;1725:136::-;1783:7;1810:43;1814:1;1817;1810:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1803:50;;1725:136;;;;:::o;2461:189::-;2547:7;2579:1;2575;:5;2582:12;2567:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2606:9;2622:1;2618;:5;;;;:::i;:::-;2606:17;;2641:1;2634:8;;;2461:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:104::-;5441:7;5470:24;5488:5;5470:24;:::i;:::-;5459:35;;5396:104;;;:::o;5506:138::-;5587:32;5613:5;5587:32;:::i;:::-;5580:5;5577:43;5567:71;;5634:1;5631;5624:12;5567:71;5506:138;:::o;5650:155::-;5704:5;5742:6;5729:20;5720:29;;5758:41;5793:5;5758:41;:::i;:::-;5650:155;;;;:::o;5811:490::-;5887:6;5895;5944:2;5932:9;5923:7;5919:23;5915:32;5912:119;;;5950:79;;:::i;:::-;5912:119;6070:1;6095:61;6148:7;6139:6;6128:9;6124:22;6095:61;:::i;:::-;6085:71;;6041:125;6205:2;6231:53;6276:7;6267:6;6256:9;6252:22;6231:53;:::i;:::-;6221:63;;6176:118;5811:490;;;;;:::o;6307:86::-;6342:7;6382:4;6375:5;6371:16;6360:27;;6307:86;;;:::o;6399:112::-;6482:22;6498:5;6482:22;:::i;:::-;6477:3;6470:35;6399:112;;:::o;6517:214::-;6606:4;6644:2;6633:9;6629:18;6621:26;;6657:67;6721:1;6710:9;6706:17;6697:6;6657:67;:::i;:::-;6517:214;;;;:::o;6737:118::-;6824:24;6842:5;6824:24;:::i;:::-;6819:3;6812:37;6737:118;;:::o;6861:222::-;6954:4;6992:2;6981:9;6977:18;6969:26;;7005:71;7073:1;7062:9;7058:17;7049:6;7005:71;:::i;:::-;6861:222;;;;:::o;7089:142::-;7192:32;7218:5;7192:32;:::i;:::-;7187:3;7180:45;7089:142;;:::o;7237:254::-;7346:4;7384:2;7373:9;7369:18;7361:26;;7397:87;7481:1;7470:9;7466:17;7457:6;7397:87;:::i;:::-;7237:254;;;;:::o;7497:329::-;7556:6;7605:2;7593:9;7584:7;7580:23;7576:32;7573:119;;;7611:79;;:::i;:::-;7573:119;7731:1;7756:53;7801:7;7792:6;7781:9;7777:22;7756:53;:::i;:::-;7746:63;;7702:117;7497:329;;;;:::o;7832:474::-;7900:6;7908;7957:2;7945:9;7936:7;7932:23;7928:32;7925:119;;;7963:79;;:::i;:::-;7925:119;8083:1;8108:53;8153:7;8144:6;8133:9;8129:22;8108:53;:::i;:::-;8098:63;;8054:117;8210:2;8236:53;8281:7;8272:6;8261:9;8257:22;8236:53;:::i;:::-;8226:63;;8181:118;7832:474;;;;;:::o;8312:329::-;8371:6;8420:2;8408:9;8399:7;8395:23;8391:32;8388:119;;;8426:79;;:::i;:::-;8388:119;8546:1;8571:53;8616:7;8607:6;8596:9;8592:22;8571:53;:::i;:::-;8561:63;;8517:117;8312:329;;;;:::o;8647:182::-;8787:34;8783:1;8775:6;8771:14;8764:58;8647:182;:::o;8835:366::-;8977:3;8998:67;9062:2;9057:3;8998:67;:::i;:::-;8991:74;;9074:93;9163:3;9074:93;:::i;:::-;9192:2;9187:3;9183:12;9176:19;;8835:366;;;:::o;9207:419::-;9373:4;9411:2;9400:9;9396:18;9388:26;;9460:9;9454:4;9450:20;9446:1;9435:9;9431:17;9424:47;9488:131;9614:4;9488:131;:::i;:::-;9480:139;;9207:419;;;:::o;9632:180::-;9680:77;9677:1;9670:88;9777:4;9774:1;9767:15;9801:4;9798:1;9791:15;9818:102;9860:8;9907:5;9904:1;9900:13;9879:34;;9818:102;;;:::o;9926:848::-;9987:5;9994:4;10018:6;10009:15;;10042:5;10033:14;;10056:712;10077:1;10067:8;10064:15;10056:712;;;10172:4;10167:3;10163:14;10157:4;10154:24;10151:50;;;10181:18;;:::i;:::-;10151:50;10231:1;10221:8;10217:16;10214:451;;;10646:4;10639:5;10635:16;10626:25;;10214:451;10696:4;10690;10686:15;10678:23;;10726:32;10749:8;10726:32;:::i;:::-;10714:44;;10056:712;;;9926:848;;;;;;;:::o;10780:1073::-;10834:5;11025:8;11015:40;;11046:1;11037:10;;11048:5;;11015:40;11074:4;11064:36;;11091:1;11082:10;;11093:5;;11064:36;11160:4;11208:1;11203:27;;;;11244:1;11239:191;;;;11153:277;;11203:27;11221:1;11212:10;;11223:5;;;11239:191;11284:3;11274:8;11271:17;11268:43;;;11291:18;;:::i;:::-;11268:43;11340:8;11337:1;11333:16;11324:25;;11375:3;11368:5;11365:14;11362:40;;;11382:18;;:::i;:::-;11362:40;11415:5;;;11153:277;;11539:2;11529:8;11526:16;11520:3;11514:4;11511:13;11507:36;11489:2;11479:8;11476:16;11471:2;11465:4;11462:12;11458:35;11442:111;11439:246;;;11595:8;11589:4;11585:19;11576:28;;11630:3;11623:5;11620:14;11617:40;;;11637:18;;:::i;:::-;11617:40;11670:5;;11439:246;11710:42;11748:3;11738:8;11732:4;11729:1;11710:42;:::i;:::-;11695:57;;;;11784:4;11779:3;11775:14;11768:5;11765:25;11762:51;;;11793:18;;:::i;:::-;11762:51;11842:4;11835:5;11831:16;11822:25;;10780:1073;;;;;;:::o;11859:281::-;11917:5;11941:23;11959:4;11941:23;:::i;:::-;11933:31;;11985:25;12001:8;11985:25;:::i;:::-;11973:37;;12029:104;12066:66;12056:8;12050:4;12029:104;:::i;:::-;12020:113;;11859:281;;;;:::o;12146:410::-;12186:7;12209:20;12227:1;12209:20;:::i;:::-;12204:25;;12243:20;12261:1;12243:20;:::i;:::-;12238:25;;12298:1;12295;12291:9;12320:30;12338:11;12320:30;:::i;:::-;12309:41;;12499:1;12490:7;12486:15;12483:1;12480:22;12460:1;12453:9;12433:83;12410:139;;12529:18;;:::i;:::-;12410:139;12194:362;12146:410;;;;:::o;12562:175::-;12702:27;12698:1;12690:6;12686:14;12679:51;12562:175;:::o;12743:366::-;12885:3;12906:67;12970:2;12965:3;12906:67;:::i;:::-;12899:74;;12982:93;13071:3;12982:93;:::i;:::-;13100:2;13095:3;13091:12;13084:19;;12743:366;;;:::o;13115:419::-;13281:4;13319:2;13308:9;13304:18;13296:26;;13368:9;13362:4;13358:20;13354:1;13343:9;13339:17;13332:47;13396:131;13522:4;13396:131;:::i;:::-;13388:139;;13115:419;;;:::o;13540:159::-;13680:11;13676:1;13668:6;13664:14;13657:35;13540:159;:::o;13705:365::-;13847:3;13868:66;13932:1;13927:3;13868:66;:::i;:::-;13861:73;;13943:93;14032:3;13943:93;:::i;:::-;14061:2;14056:3;14052:12;14045:19;;13705:365;;;:::o;14076:419::-;14242:4;14280:2;14269:9;14265:18;14257:26;;14329:9;14323:4;14319:20;14315:1;14304:9;14300:17;14293:47;14357:131;14483:4;14357:131;:::i;:::-;14349:139;;14076:419;;;:::o;14501:173::-;14641:25;14637:1;14629:6;14625:14;14618:49;14501:173;:::o;14680:366::-;14822:3;14843:67;14907:2;14902:3;14843:67;:::i;:::-;14836:74;;14919:93;15008:3;14919:93;:::i;:::-;15037:2;15032:3;15028:12;15021:19;;14680:366;;;:::o;15052:419::-;15218:4;15256:2;15245:9;15241:18;15233:26;;15305:9;15299:4;15295:20;15291:1;15280:9;15276:17;15269:47;15333:131;15459:4;15333:131;:::i;:::-;15325:139;;15052:419;;;:::o;15477:147::-;15578:11;15615:3;15600:18;;15477:147;;;;:::o;15630:114::-;;:::o;15750:398::-;15909:3;15930:83;16011:1;16006:3;15930:83;:::i;:::-;15923:90;;16022:93;16111:3;16022:93;:::i;:::-;16140:1;16135:3;16131:11;16124:18;;15750:398;;;:::o;16154:379::-;16338:3;16360:147;16503:3;16360:147;:::i;:::-;16353:154;;16524:3;16517:10;;16154:379;;;:::o;16539:332::-;16660:4;16698:2;16687:9;16683:18;16675:26;;16711:71;16779:1;16768:9;16764:17;16755:6;16711:71;:::i;:::-;16792:72;16860:2;16849:9;16845:18;16836:6;16792:72;:::i;:::-;16539:332;;;;;:::o;16877:116::-;16947:21;16962:5;16947:21;:::i;:::-;16940:5;16937:32;16927:60;;16983:1;16980;16973:12;16927:60;16877:116;:::o;16999:137::-;17053:5;17084:6;17078:13;17069:22;;17100:30;17124:5;17100:30;:::i;:::-;16999:137;;;;:::o;17142:345::-;17209:6;17258:2;17246:9;17237:7;17233:23;17229:32;17226:119;;;17264:79;;:::i;:::-;17226:119;17384:1;17409:61;17462:7;17453:6;17442:9;17438:22;17409:61;:::i;:::-;17399:71;;17355:125;17142:345;;;;:::o;17493:320::-;17608:4;17646:2;17635:9;17631:18;17623:26;;17659:71;17727:1;17716:9;17712:17;17703:6;17659:71;:::i;:::-;17740:66;17802:2;17791:9;17787:18;17778:6;17740:66;:::i;:::-;17493:320;;;;;:::o;17819:224::-;17959:34;17955:1;17947:6;17943:14;17936:58;18028:7;18023:2;18015:6;18011:15;18004:32;17819:224;:::o;18049:366::-;18191:3;18212:67;18276:2;18271:3;18212:67;:::i;:::-;18205:74;;18288:93;18377:3;18288:93;:::i;:::-;18406:2;18401:3;18397:12;18390:19;;18049:366;;;:::o;18421:419::-;18587:4;18625:2;18614:9;18610:18;18602:26;;18674:9;18668:4;18664:20;18660:1;18649:9;18645:17;18638:47;18702:131;18828:4;18702:131;:::i;:::-;18694:139;;18421:419;;;:::o;18846:332::-;18967:4;19005:2;18994:9;18990:18;18982:26;;19018:71;19086:1;19075:9;19071:17;19062:6;19018:71;:::i;:::-;19099:72;19167:2;19156:9;19152:18;19143:6;19099:72;:::i;:::-;18846:332;;;;;:::o;19184:223::-;19324:34;19320:1;19312:6;19308:14;19301:58;19393:6;19388:2;19380:6;19376:15;19369:31;19184:223;:::o;19413:366::-;19555:3;19576:67;19640:2;19635:3;19576:67;:::i;:::-;19569:74;;19652:93;19741:3;19652:93;:::i;:::-;19770:2;19765:3;19761:12;19754:19;;19413:366;;;:::o;19785:419::-;19951:4;19989:2;19978:9;19974:18;19966:26;;20038:9;20032:4;20028:20;20024:1;20013:9;20009:17;20002:47;20066:131;20192:4;20066:131;:::i;:::-;20058:139;;19785:419;;;:::o;20210:221::-;20350:34;20346:1;20338:6;20334:14;20327:58;20419:4;20414:2;20406:6;20402:15;20395:29;20210:221;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:224::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:7;21438:2;21430:6;21426:15;21419:32;21234:224;:::o;21464:366::-;21606:3;21627:67;21691:2;21686:3;21627:67;:::i;:::-;21620:74;;21703:93;21792:3;21703:93;:::i;:::-;21821:2;21816:3;21812:12;21805:19;;21464:366;;;:::o;21836:419::-;22002:4;22040:2;22029:9;22025:18;22017:26;;22089:9;22083:4;22079:20;22075:1;22064:9;22060:17;22053:47;22117:131;22243:4;22117:131;:::i;:::-;22109:139;;21836:419;;;:::o;22261:222::-;22401:34;22397:1;22389:6;22385:14;22378:58;22470:5;22465:2;22457:6;22453:15;22446:30;22261:222;:::o;22489:366::-;22631:3;22652:67;22716:2;22711:3;22652:67;:::i;:::-;22645:74;;22728:93;22817:3;22728:93;:::i;:::-;22846:2;22841:3;22837:12;22830:19;;22489:366;;;:::o;22861:419::-;23027:4;23065:2;23054:9;23050:18;23042:26;;23114:9;23108:4;23104:20;23100:1;23089:9;23085:17;23078:47;23142:131;23268:4;23142:131;:::i;:::-;23134:139;;22861:419;;;:::o;23286:228::-;23426:34;23422:1;23414:6;23410:14;23403:58;23495:11;23490:2;23482:6;23478:15;23471:36;23286:228;:::o;23520:366::-;23662:3;23683:67;23747:2;23742:3;23683:67;:::i;:::-;23676:74;;23759:93;23848:3;23759:93;:::i;:::-;23877:2;23872:3;23868:12;23861:19;;23520:366;;;:::o;23892:419::-;24058:4;24096:2;24085:9;24081:18;24073:26;;24145:9;24139:4;24135:20;24131:1;24120:9;24116:17;24109:47;24173:131;24299:4;24173:131;:::i;:::-;24165:139;;23892:419;;;:::o;24317:220::-;24457:34;24453:1;24445:6;24441:14;24434:58;24526:3;24521:2;24513:6;24509:15;24502:28;24317:220;:::o;24543:366::-;24685:3;24706:67;24770:2;24765:3;24706:67;:::i;:::-;24699:74;;24782:93;24871:3;24782:93;:::i;:::-;24900:2;24895:3;24891:12;24884:19;;24543:366;;;:::o;24915:419::-;25081:4;25119:2;25108:9;25104:18;25096:26;;25168:9;25162:4;25158:20;25154:1;25143:9;25139:17;25132:47;25196:131;25322:4;25196:131;:::i;:::-;25188:139;;24915:419;;;:::o;25340:231::-;25480:34;25476:1;25468:6;25464:14;25457:58;25549:14;25544:2;25536:6;25532:15;25525:39;25340:231;:::o;25577:366::-;25719:3;25740:67;25804:2;25799:3;25740:67;:::i;:::-;25733:74;;25816:93;25905:3;25816:93;:::i;:::-;25934:2;25929:3;25925:12;25918:19;;25577:366;;;:::o;25949:419::-;26115:4;26153:2;26142:9;26138:18;26130:26;;26202:9;26196:4;26192:20;26188:1;26177:9;26173:17;26166:47;26230:131;26356:4;26230:131;:::i;:::-;26222:139;;25949:419;;;:::o;26374:226::-;26514:34;26510:1;26502:6;26498:14;26491:58;26583:9;26578:2;26570:6;26566:15;26559:34;26374:226;:::o;26606:366::-;26748:3;26769:67;26833:2;26828:3;26769:67;:::i;:::-;26762:74;;26845:93;26934:3;26845:93;:::i;:::-;26963:2;26958:3;26954:12;26947:19;;26606:366;;;:::o;26978:419::-;27144:4;27182:2;27171:9;27167:18;27159:26;;27231:9;27225:4;27221:20;27217:1;27206:9;27202:17;27195:47;27259:131;27385:4;27259:131;:::i;:::-;27251:139;;26978:419;;;:::o;27403:194::-;27443:4;27463:20;27481:1;27463:20;:::i;:::-;27458:25;;27497:20;27515:1;27497:20;:::i;:::-;27492:25;;27541:1;27538;27534:9;27526:17;;27565:1;27559:4;27556:11;27553:37;;;27570:18;;:::i;:::-;27553:37;27403:194;;;;:::o;27603:180::-;27651:77;27648:1;27641:88;27748:4;27745:1;27738:15;27772:4;27769:1;27762:15;27789:180;27837:77;27834:1;27827:88;27934:4;27931:1;27924:15;27958:4;27955:1;27948:15;27975:143;28032:5;28063:6;28057:13;28048:22;;28079:33;28106:5;28079:33;:::i;:::-;27975:143;;;;:::o;28124:351::-;28194:6;28243:2;28231:9;28222:7;28218:23;28214:32;28211:119;;;28249:79;;:::i;:::-;28211:119;28369:1;28394:64;28450:7;28441:6;28430:9;28426:22;28394:64;:::i;:::-;28384:74;;28340:128;28124:351;;;;:::o;28481:85::-;28526:7;28555:5;28544:16;;28481:85;;;:::o;28572:158::-;28630:9;28663:61;28681:42;28690:32;28716:5;28690:32;:::i;:::-;28681:42;:::i;:::-;28663:61;:::i;:::-;28650:74;;28572:158;;;:::o;28736:147::-;28831:45;28870:5;28831:45;:::i;:::-;28826:3;28819:58;28736:147;;:::o;28889:114::-;28956:6;28990:5;28984:12;28974:22;;28889:114;;;:::o;29009:184::-;29108:11;29142:6;29137:3;29130:19;29182:4;29177:3;29173:14;29158:29;;29009:184;;;;:::o;29199:132::-;29266:4;29289:3;29281:11;;29319:4;29314:3;29310:14;29302:22;;29199:132;;;:::o;29337:108::-;29414:24;29432:5;29414:24;:::i;:::-;29409:3;29402:37;29337:108;;:::o;29451:179::-;29520:10;29541:46;29583:3;29575:6;29541:46;:::i;:::-;29619:4;29614:3;29610:14;29596:28;;29451:179;;;;:::o;29636:113::-;29706:4;29738;29733:3;29729:14;29721:22;;29636:113;;;:::o;29785:732::-;29904:3;29933:54;29981:5;29933:54;:::i;:::-;30003:86;30082:6;30077:3;30003:86;:::i;:::-;29996:93;;30113:56;30163:5;30113:56;:::i;:::-;30192:7;30223:1;30208:284;30233:6;30230:1;30227:13;30208:284;;;30309:6;30303:13;30336:63;30395:3;30380:13;30336:63;:::i;:::-;30329:70;;30422:60;30475:6;30422:60;:::i;:::-;30412:70;;30268:224;30255:1;30252;30248:9;30243:14;;30208:284;;;30212:14;30508:3;30501:10;;29909:608;;;29785:732;;;;:::o;30523:831::-;30786:4;30824:3;30813:9;30809:19;30801:27;;30838:71;30906:1;30895:9;30891:17;30882:6;30838:71;:::i;:::-;30919:80;30995:2;30984:9;30980:18;30971:6;30919:80;:::i;:::-;31046:9;31040:4;31036:20;31031:2;31020:9;31016:18;31009:48;31074:108;31177:4;31168:6;31074:108;:::i;:::-;31066:116;;31192:72;31260:2;31249:9;31245:18;31236:6;31192:72;:::i;:::-;31274:73;31342:3;31331:9;31327:19;31318:6;31274:73;:::i;:::-;30523:831;;;;;;;;:::o;31360:191::-;31400:3;31419:20;31437:1;31419:20;:::i;:::-;31414:25;;31453:20;31471:1;31453:20;:::i;:::-;31448:25;;31496:1;31493;31489:9;31482:16;;31517:3;31514:1;31511:10;31508:36;;;31524:18;;:::i;:::-;31508:36;31360:191;;;;:::o;31557:177::-;31697:29;31693:1;31685:6;31681:14;31674:53;31557:177;:::o;31740:366::-;31882:3;31903:67;31967:2;31962:3;31903:67;:::i;:::-;31896:74;;31979:93;32068:3;31979:93;:::i;:::-;32097:2;32092:3;32088:12;32081:19;;31740:366;;;:::o;32112:419::-;32278:4;32316:2;32305:9;32301:18;32293:26;;32365:9;32359:4;32355:20;32351:1;32340:9;32336:17;32329:47;32393:131;32519:4;32393:131;:::i;:::-;32385:139;;32112:419;;;:::o;32537:180::-;32585:77;32582:1;32575:88;32682:4;32679:1;32672:15;32706:4;32703:1;32696:15;32723:185;32763:1;32780:20;32798:1;32780:20;:::i;:::-;32775:25;;32814:20;32832:1;32814:20;:::i;:::-;32809:25;;32853:1;32843:35;;32858:18;;:::i;:::-;32843:35;32900:1;32897;32893:9;32888:14;;32723:185;;;;:::o;32914:220::-;33054:34;33050:1;33042:6;33038:14;33031:58;33123:3;33118:2;33110:6;33106:15;33099:28;32914:220;:::o;33140:366::-;33282:3;33303:67;33367:2;33362:3;33303:67;:::i;:::-;33296:74;;33379:93;33468:3;33379:93;:::i;:::-;33497:2;33492:3;33488:12;33481:19;;33140:366;;;:::o;33512:419::-;33678:4;33716:2;33705:9;33701:18;33693:26;;33765:9;33759:4;33755:20;33751:1;33740:9;33736:17;33729:47;33793:131;33919:4;33793:131;:::i;:::-;33785:139;;33512:419;;;:::o
Swarm Source
ipfs://ee4a914f1b6db1dead6db52230b25402b8bf51e3ffffb0a0d396d5799e727088
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.