Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
150,000,000 MIMETIC
Holders
379
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
363,095.848917085 MIMETICValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Mimetic
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-02 */ /* * MIMETIC * Telegram:https://t.me/Mimetic_Official * Website:http://mimetic.finance * Withdraw Dividends at https://app.fairtokenproject.com * Using FTPEthReflect - FTPEthReflect is a contract as a service (CaaS). Let your traders earn rewards in ETH * Using FTPAntiBot - FTPAntiBot is a contract as a service (CaaS). Ward off harmful bots automatically. - Learn more at https://antibot.fairtokenproject.com */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; 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 m_Owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); m_Owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return m_Owner; } function transferOwnership(address _address) public virtual onlyOwner { emit OwnershipTransferred(m_Owner, _address); m_Owner = _address; } modifier onlyOwner() { require(_msgSender() == m_Owner, "Ownable: caller is not the owner"); _; } } contract Taxable is Ownable { using SafeMath for uint256; FTPExternal External; address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD); address payable private m_DevAddress; uint256 private m_DevAlloc = 1000; uint256[] m_TaxAlloc; address payable[] m_TaxAddresses; mapping (address => uint256) private m_TaxIdx; uint256 public m_TotalAlloc; function initTax() internal virtual { External = FTPExternal(m_ExternalServiceAddress); m_DevAddress = payable(address(External)); m_TaxAlloc = new uint24[](0); m_TaxAddresses = new address payable[](0); m_TaxAlloc.push(0); m_TaxAddresses.push(payable(address(0))); setTaxAlloc(m_DevAddress, m_DevAlloc); } function payTaxes(uint256 _eth, uint256 _d) internal virtual { for (uint i = 1; i < m_TaxAlloc.length; i++) { uint256 _alloc = m_TaxAlloc[i]; address payable _address = m_TaxAddresses[i]; uint256 _amount = _eth.mul(_alloc).div(_d); if (_amount > 1){ _address.transfer(_amount); if(_address == m_DevAddress) External.deposit(_amount); } } } function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() { uint _idx = m_TaxIdx[_address]; if (_idx == 0) { require(m_TotalAlloc.add(_alloc) <= 10500); m_TaxAlloc.push(_alloc); m_TaxAddresses.push(_address); m_TaxIdx[_address] = m_TaxAlloc.length - 1; m_TotalAlloc = m_TotalAlloc.add(_alloc); } else { // update alloc for this address uint256 _priorAlloc = m_TaxAlloc[_idx]; require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500); m_TaxAlloc[_idx] = _alloc; m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc); } } function totalTaxAlloc() internal virtual view returns (uint256) { return m_TotalAlloc; } function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) { uint _idx = m_TaxIdx[_address]; return m_TaxAlloc[_idx]; } function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() { setTaxAlloc(m_DevAddress, 0); m_DevAddress = _address; m_DevAlloc = _alloc; setTaxAlloc(m_DevAddress, m_DevAlloc); } } 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); } interface FTPAntiBot { function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool); function registerBlock(address _recipient, address _sender, address _origin) external; } interface FTPEthReflect { function init(address _contract, uint256 _alloc, address _pair, address _pairCurrency, uint256 _liquidity, uint256 _supply) external; function getAlloc() external view returns (uint256); function trackSell(address _holder, uint256 _newEth) external; function trackPurchase(address _holder) external; } interface FTPExternal { function owner() external returns(address); function deposit(uint256 _amount) external; } contract Mimetic is Context, IERC20, Taxable { using SafeMath for uint256; // TOKEN uint256 private constant TOTAL_SUPPLY = 150000000 * 10**9; string private m_Name = "Mimetic"; string private m_Symbol = "MIMETIC"; uint8 private m_Decimals = 9; // EXCHANGES address private m_UniswapV2Pair; IUniswapV2Router02 private m_UniswapV2Router; // TRANSACTIONS uint256 private m_TxLimit = TOTAL_SUPPLY.div(400); uint256 private m_WalletLimit = m_TxLimit.mul(6); bool private m_Liquidity = false; event SetTxLimit(uint TxLimit); // ETH REFLECT FTPEthReflect private EthReflect; address payable m_EthReflectSvcAddress = payable(0x574Fc478BC45cE144105Fa44D98B4B2e4BD442CB); uint256 m_EthReflectAlloc; uint256 m_EthReflectAmount; // ANTIBOT FTPAntiBot private AntiBot; address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3; uint256 private m_BanCount = 0; // MISC address private m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00; mapping (address => bool) private m_Blacklist; mapping (address => bool) private m_ExcludedAddresses; mapping (address => uint256) private m_Balances; mapping (address => mapping (address => uint256)) private m_Allowances; uint256 private m_LastEthBal = 0; uint256 private m_Launched = 1753633194; bool private m_IsSwap = false; uint256 private pMax = 100000; // max alloc percentage modifier lockTheSwap { m_IsSwap = true; _; m_IsSwap = false; } modifier onlyDev() { require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized"); _; } receive() external payable {} constructor () { EthReflect = FTPEthReflect(m_EthReflectSvcAddress); AntiBot = FTPAntiBot(m_AntibotSvcAddress); initTax(); m_Balances[address(this)] = TOTAL_SUPPLY; m_ExcludedAddresses[owner()] = true; m_ExcludedAddresses[address(this)] = true; emit Transfer(address(0), address(this), TOTAL_SUPPLY); } function name() public view returns (string memory) { return m_Name; } function symbol() public view returns (string memory) { return m_Symbol; } function decimals() public view returns (uint8) { return m_Decimals; } function totalSupply() public pure override returns (uint256) { return TOTAL_SUPPLY; } function balanceOf(address _account) public view override returns (uint256) { return m_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 m_Allowances[_owner][_spender]; } function approve(address _spender, uint256 _amount) public override returns (bool) { _approve(_msgSender(), _spender, _amount); return true; } function transferFrom(address _sender, address _recipient, uint256 _amount) public override returns (bool) { _transfer(_sender, _recipient, _amount); _approve(_sender, _msgSender(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance")); return true; } function _readyToTax(address _sender) private view returns (bool) { return !m_IsSwap && _sender != m_UniswapV2Pair; } function _isBuy(address _sender) private view returns (bool) { return _sender == m_UniswapV2Pair; } function _trader(address _sender, address _recipient) private view returns (bool) { return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]); } function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) { return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair; } function _txRestricted(address _sender, address _recipient) private view returns (bool) { return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient]; } function _walletCapped(address _recipient) private view returns (bool) { return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && block.timestamp <= m_Launched.add(1 hours); } function _checkTX() private view returns (uint256){ if(block.timestamp <= m_Launched.add(10 minutes)) return TOTAL_SUPPLY.div(400); else return TOTAL_SUPPLY; } 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"); m_Allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function _transfer(address _sender, address _recipient, uint256 _amount) private { require(_sender != address(0), "ERC20: transfer from the zero address"); require(_recipient != address(0), "ERC20: transfer to the zero address"); require(_amount > 0, "Transfer amount must be greater than zero"); require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]); if(_isExchangeTransfer(_sender, _recipient) && block.timestamp >= m_Launched) { require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop"); require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop"); AntiBot.registerBlock(_sender, _recipient, tx.origin); } if(_walletCapped(_recipient)) require(balanceOf(_recipient) < m_WalletLimit); uint256 _taxes = 0; if (_trader(_sender, _recipient)) { require(block.timestamp >= m_Launched); if (_txRestricted(_sender, _recipient)) require(_amount <= _checkTX()); _taxes = _getTaxes(_sender, _recipient, _amount); _tax(_sender); } _updateBalances(_sender, _recipient, _amount, _taxes); _trackEthReflection(_sender, _recipient); } function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private { uint256 _netAmount = _amount.sub(_taxes); m_Balances[_sender] = m_Balances[_sender].sub(_amount); m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount); m_Balances[address(this)] = m_Balances[address(this)].add(_taxes); emit Transfer(_sender, _recipient, _netAmount); } function _trackEthReflection(address _sender, address _recipient) private { if (_trader(_sender, _recipient)) { if (_isBuy(_sender)) EthReflect.trackPurchase(_recipient); else if (m_EthReflectAmount > 0) { EthReflect.trackSell(_sender, m_EthReflectAmount); m_EthReflectAmount = 0; } } } function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) { uint256 _ret = 0; if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) { return _ret; } _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc())); m_EthReflectAlloc = EthReflect.getAlloc(); _ret = _ret.add(_amount.mul(m_EthReflectAlloc).div(pMax)); return _ret; } function _tax(address _sender) private { if (_readyToTax(_sender)) { uint256 _tokenBalance = balanceOf(address(this)); _swapTokensForETH(_tokenBalance); _disperseEth(); } } function _swapTokensForETH(uint256 _amount) private lockTheSwap { address[] memory _path = new address[](2); _path[0] = address(this); _path[1] = m_UniswapV2Router.WETH(); _approve(address(this), address(m_UniswapV2Router), _amount); m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( _amount, 0, _path, address(this), block.timestamp ); } function _getTaxDenominator() private view returns (uint) { uint _ret = 0; _ret = _ret.add(totalTaxAlloc()); _ret = _ret.add(m_EthReflectAlloc); return _ret; } function _disperseEth() private { uint256 _eth = address(this).balance; if (_eth <= m_LastEthBal) return; uint256 _newEth = _eth.sub(m_LastEthBal); uint _d = _getTaxDenominator(); if (_d < 1) return; payTaxes(_newEth, _d); m_EthReflectAmount = _newEth.mul(m_EthReflectAlloc).div(_d); m_EthReflectSvcAddress.transfer(m_EthReflectAmount); m_LastEthBal = address(this).balance; } function addLiquidity() external onlyOwner() { require(!m_Liquidity,"Liquidity already added."); uint256 _ethBalance = address(this).balance; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); m_UniswapV2Router = _uniswapV2Router; _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY); m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max); EthReflect.init(address(this), 10000, m_UniswapV2Pair, _uniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY); m_Liquidity = true; } function launch(uint256 _timer) external onlyOwner() { m_Launched = block.timestamp.add(_timer); } function setTxLimit(uint256 _amount) external onlyOwner() { m_TxLimit = _amount.mul(10**9); emit SetTxLimit(m_TxLimit); } function checkIfBlacklist(address _address) external view returns (bool) { return m_Blacklist[_address]; } function blacklist(address _a) external onlyOwner() { m_Blacklist[_a] = true; } function rmBlacklist(address _a) external onlyOwner() { m_Blacklist[_a] = false; } function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() { setTaxAlloc(_address, _alloc); if (_alloc > 0) { m_ExcludedAddresses[_address] = true; } } function setWebThree(address _address) external onlyDev() { m_WebThree = _address; } }
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":"TxLimit","type":"uint256"}],"name":"SetTxLimit","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":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timer","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052731fc90cba64722d5e70af16783a2dfacfd19f3bed600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86004556040518060400160405280600781526020017f4d696d657469630000000000000000000000000000000000000000000000000081525060099080519060200190620000ac92919062000e2c565b506040518060400160405280600781526020017f4d494d4554494300000000000000000000000000000000000000000000000000815250600a9080519060200190620000fa92919062000e2c565b506009600b60006101000a81548160ff021916908360ff1602179055506200013b610190670214e8348c4f0000620005c160201b620019561790919060201c565b600d556200015b6006600d546200061360201b620019a01790919060201c565b600e556000600f60006101000a81548160ff02191690831515021790555073574fc478bc45ce144105fa44d98b4b2e4bd442cb601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601555731011f61df0e2ad67e269f4108098c79e71868e00601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b5563688651aa601c556000601d60006101000a81548160ff021916908315150217905550620186a0601e55348015620002b957600080fd5b506000620002cc6200069760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004406200069f60201b60201c565b670214e8348c4f0000601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000620004a26200093f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670214e8348c4f0000604051620005b3919062001115565b60405180910390a362001434565b60006200060b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200096860201b60201c565b905092915050565b60008083141562000628576000905062000691565b60008284620006389190620011e3565b9050828482620006499190620011ab565b146200068c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200068390620010d1565b60405180910390fd5b809150505b92915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff811115620007a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620007d65781602001602082028036833780820191505090505b5060059080519060200190620007ee92919062000ebd565b50600067ffffffffffffffff81111562000831577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620008605781602001602082028036833780820191505090505b50600690805190602001906200087892919062000f16565b50600560009080600181540180825580915050600190039060005260206000200160009091909190915055600660009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200093d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454620009d060201b60201c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620009b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a991906200108b565b60405180910390fd5b5060008385620009c39190620011ab565b9050809150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000a176200069760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6790620010f3565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000bf45761290462000add8360085462000d0e60201b62001a1b1790919060201c565b111562000ae957600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905062000b89919062001244565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000be88260085462000d0e60201b62001a1b1790919060201c565b60088190555062000d09565b60006005828154811062000c31577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905061290462000c768262000c628660085462000d0e60201b62001a1b1790919060201c565b62000d7160201b62001a791790919060201c565b111562000c8257600080fd5b826005838154811062000cbe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555062000d018162000ced8560085462000d0e60201b62001a1b1790919060201c565b62000d7160201b62001a791790919060201c565b600881905550505b505050565b600080828462000d1f91906200114e565b90508381101562000d67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d5e90620010af565b60405180910390fd5b8091505092915050565b600062000dbb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000dc360201b60201c565b905092915050565b600083831115829062000e0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e0591906200108b565b60405180910390fd5b506000838562000e1f919062001244565b9050809150509392505050565b82805462000e3a90620012bf565b90600052602060002090601f01602090048101928262000e5e576000855562000eaa565b82601f1062000e7957805160ff191683800117855562000eaa565b8280016001018555821562000eaa579182015b8281111562000ea957825182559160200191906001019062000e8c565b5b50905062000eb9919062000fa5565b5090565b82805482825590600052602060002090810192821562000f03579160200282015b8281111562000f02578251829062ffffff1690559160200191906001019062000ede565b5b50905062000f12919062000fa5565b5090565b82805482825590600052602060002090810192821562000f92579160200282015b8281111562000f915782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000f37565b5b50905062000fa1919062000fa5565b5090565b5b8082111562000fc057600081600090555060010162000fa6565b5090565b600062000fd18262001132565b62000fdd81856200113d565b935062000fef81856020860162001289565b62000ffa8162001382565b840191505092915050565b600062001014601b836200113d565b9150620010218262001393565b602082019050919050565b60006200103b6021836200113d565b91506200104882620013bc565b604082019050919050565b6000620010626020836200113d565b91506200106f826200140b565b602082019050919050565b62001085816200127f565b82525050565b60006020820190508181036000830152620010a7818462000fc4565b905092915050565b60006020820190508181036000830152620010ca8162001005565b9050919050565b60006020820190508181036000830152620010ec816200102c565b9050919050565b600060208201905081810360008301526200110e8162001053565b9050919050565b60006020820190506200112c60008301846200107a565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200115b826200127f565b915062001168836200127f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620011a0576200119f620012f5565b5b828201905092915050565b6000620011b8826200127f565b9150620011c5836200127f565b925082620011d857620011d762001324565b5b828204905092915050565b6000620011f0826200127f565b9150620011fd836200127f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620012395762001238620012f5565b5b828202905092915050565b600062001251826200127f565b91506200125e836200127f565b925082821015620012745762001273620012f5565b5b828203905092915050565b6000819050919050565b60005b83811015620012a95780820151818401526020810190506200128c565b83811115620012b9576000848401525b50505050565b60006002820490506001821680620012d857607f821691505b60208210811415620012ef57620012ee62001353565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61464180620014446000396000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610445578063dd62ed3e14610482578063e8078d94146104bf578063f2fde38b146104d6578063f37c4bce146104ff578063f9f92be41461052857610140565b80638da5cb5b1461036057806395d89b411461038b57806398d5a5cb146103b6578063a9059cbb146103df578063ab9562fe1461041c57610140565b8063313ce567116100fd578063313ce5671461023e57806354486ac3146102695780635c85974f1461029457806370a08231146102bd57806385b12c7c146102fa5780638a13792e1461032357610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631c815b49146101d857806323b872dd1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610551565b6040516101679190613d67565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190613847565b6105e3565b6040516101a49190613d4c565b60405180910390f35b3480156101b957600080fd5b506101c2610601565b6040516101cf9190613ee9565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190613780565b610611565b005b34801561020d57600080fd5b50610228600480360381019061022391906137f8565b610716565b6040516102359190613d4c565b60405180910390f35b34801561024a57600080fd5b506102536107ef565b6040516102609190613f5e565b60405180910390f35b34801561027557600080fd5b5061027e610806565b60405161028b9190613ee9565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b691906138ac565b61080c565b005b3480156102c957600080fd5b506102e460048036038101906102df9190613705565b6108fa565b6040516102f19190613ee9565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c91906138ac565b610943565b005b34801561032f57600080fd5b5061034a60048036038101906103459190613757565b6109f4565b6040516103579190613ee9565b60405180910390f35b34801561036c57600080fd5b50610375610b1d565b6040516103829190613be6565b60405180910390f35b34801561039757600080fd5b506103a0610b46565b6040516103ad9190613d67565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190613705565b610bd8565b005b3480156103eb57600080fd5b5061040660048036038101906104019190613847565b610cc8565b6040516104139190613d4c565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190613780565b610ce6565b005b34801561045157600080fd5b5061046c60048036038101906104679190613705565b610e22565b6040516104799190613d4c565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a491906137bc565b610e78565b6040516104b69190613ee9565b60405180910390f35b3480156104cb57600080fd5b506104d4610eff565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190613705565b61155b565b005b34801561050b57600080fd5b5061052660048036038101906105219190613705565b6116ad565b005b34801561053457600080fd5b5061054f600480360381019061054a9190613705565b611866565b005b606060098054610560906141a1565b80601f016020809104026020016040519081016040528092919081815260200182805461058c906141a1565b80156105d95780601f106105ae576101008083540402835291602001916105d9565b820191906000526020600020905b8154815290600101906020018083116105bc57829003601f168201915b5050505050905090565b60006105f76105f0611ac3565b8484611acb565b6001905092915050565b6000670214e8348c4f0000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610650611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d90613e49565b60405180910390fd5b6106b08282611c96565b6000811115610712576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6000610723848484611f97565b6107e48461072f611ac3565b6107df856040518060600160405280602881526020016145e460289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610795611ac3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252e9092919063ffffffff16565b611acb565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084b611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890613e49565b60405180910390fd5b6108b8633b9aca00826119a090919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516108ef9190613ee9565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610982611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90613e49565b60405180910390fd5b6109eb8142611a1b90919063ffffffff16565b601c8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a36611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613e49565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610b0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b55906141a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b81906141a1565b8015610bce5780601f10610ba357610100808354040283529160200191610bce565b820191906000526020600020905b815481529060010190602001808311610bb157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c17611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490613e49565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cdc610cd5611ac3565b8484611f97565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d25611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290613e49565b60405180910390fd5b610da8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c96565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e1e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c96565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3e611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b90613e49565b60405180910390fd5b600f60009054906101000a900460ff1615610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb90613da9565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061107830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16670214e8348c4f0000611acb565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f6919061372e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561115857600080fd5b505afa15801561116c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611190919061372e565b6040518363ffffffff1660e01b81526004016111ad929190613c01565b602060405180830381600087803b1580156111c757600080fd5b505af11580156111db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ff919061372e565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611288306108fa565b600080611293610b1d565b426040518863ffffffff1660e01b81526004016112b596959493929190613ceb565b6060604051808303818588803b1580156112ce57600080fd5b505af11580156112e2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130791906138fe565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113a9929190613cc2565b602060405180830381600087803b1580156113c357600080fd5b505af11580156113d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fb9190613883565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530612710600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114df919061372e565b87670214e8348c4f00006040518763ffffffff1660e01b815260040161150a96959493929190613c61565b600060405180830381600087803b15801561152457600080fd5b505af1158015611538573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661159a611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613e49565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f919061372e565b73ffffffffffffffffffffffffffffffffffffffff1661176d611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614806117e35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117cb611ac3565b73ffffffffffffffffffffffffffffffffffffffff16145b611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990613dc9565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118a5611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f290613e49565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061199883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612592565b905092915050565b6000808314156119b35760009050611a15565b600082846119c19190614055565b90508284826119d09190614024565b14611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790613e29565b60405180910390fd5b809150505b92915050565b6000808284611a2a9190613fce565b905083811015611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6690613e09565b60405180910390fd5b8091505092915050565b6000611abb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061252e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3290613ea9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613de9565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c899190613ee9565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cd5611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2290613e49565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e9c57612904611d9083600854611a1b90919063ffffffff16565b1115611d9b57600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611e3991906140af565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9182600854611a1b90919063ffffffff16565b600881905550611f92565b600060058281548110611ed8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611f0f82611f0186600854611a1b90919063ffffffff16565b611a7990919063ffffffff16565b1115611f1a57600080fd5b8260058381548110611f55577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f8a81611f7c85600854611a1b90919063ffffffff16565b611a7990919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe90613e89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e90613d89565b60405180910390fd5b600081116120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190613e69565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561215e5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121b45750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121bd57600080fd5b6121c783836125f5565b80156121d55750601c544210155b1561249257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161225b93929190613c2a565b602060405180830381600087803b15801561227557600080fd5b505af1158015612289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ad9190613883565b156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e490613ec9565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161236e93929190613c2a565b602060405180830381600087803b15801561238857600080fd5b505af115801561239c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c09190613883565b15612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790613ec9565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161245f93929190613c2a565b600060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b505050505b61249b826126a8565b156124b757600e546124ac836108fa565b106124b657600080fd5b5b60006124c3848461277f565b1561251257601c544210156124d757600080fd5b6124e1848461282b565b156124fb576124ee612936565b8211156124fa57600080fd5b5b612506848484612988565b905061251184612b6f565b5b61251e84848484612ba0565b6125288484612de2565b50505050565b6000838311158290612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256d9190613d67565b60405180910390fd5b506000838561258591906140af565b9050809150509392505050565b600080831182906125d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d09190613d67565b60405180910390fd5b50600083856125e89190614024565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806126a05750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127565750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127785750612774610e10601c54611a1b90919063ffffffff16565b4211155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128225750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128d85750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561292e5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061294f610258601c54611a1b90919063ffffffff16565b421161297957612972610190670214e8348c4f000061195690919063ffffffff16565b9050612985565b670214e8348c4f000090505b90565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a305750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a3e5780915050612b68565b612a7e612a6f612a4c612f3c565b612a61601e548761195690919063ffffffff16565b6119a090919063ffffffff16565b82611a1b90919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ae857600080fd5b505afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2091906138d5565b601181905550612b61612b52601e54612b44601154876119a090919063ffffffff16565b61195690919063ffffffff16565b82611a1b90919063ffffffff16565b9050809150505b9392505050565b612b7881612f46565b15612b9d576000612b88306108fa565b9050612b9381612fba565b612b9b6132b4565b505b50565b6000612bb58284611a7990919063ffffffff16565b9050612c0983601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7990919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c9e81601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1b90919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d3382601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1b90919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612dd39190613ee9565b60405180910390a35050505050565b612dec828261277f565b15612f3857612dfa826133ad565b15612e9157600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612e5a9190613be6565b600060405180830381600087803b158015612e7457600080fd5b505af1158015612e88573d6000803e3d6000fd5b50505050612f37565b60006012541115612f3657600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612efb929190613cc2565b600060405180830381600087803b158015612f1557600080fd5b505af1158015612f29573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000601d60009054906101000a900460ff16158015612fb35750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613018577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156130465781602001602082028036833780820191505090505b5090503081600081518110613084577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561312657600080fd5b505afa15801561313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315e919061372e565b81600181518110613198577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131ff30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611acb565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613263959493929190613f04565b600060405180830381600087803b15801561327d57600080fd5b505af1158015613291573d6000803e3d6000fd5b50505050506000601d60006101000a81548160ff02191690831515021790555050565b6000479050601b5481116132c857506133ab565b60006132df601b5483611a7990919063ffffffff16565b905060006132eb613407565b905060018110156132fe575050506133ab565b6133088282613448565b61332f81613321601154856119a090919063ffffffff16565b61195690919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f1935050505015801561339f573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060009050613428613419612f3c565b82611a1b90919063ffffffff16565b905061343f60115482611a1b90919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561368257600060058281548110613498577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490506000600683815481106134e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006135358561352785896119a090919063ffffffff16565b61195690919063ffffffff16565b9050600181111561366c578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613586573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561366b57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016136389190613ee9565b600060405180830381600087803b15801561365257600080fd5b505af1158015613666573d6000803e3d6000fd5b505050505b5b505050808061367a906141d3565b91505061344f565b505050565b60008135905061369681614587565b92915050565b6000815190506136ab81614587565b92915050565b6000813590506136c08161459e565b92915050565b6000815190506136d5816145b5565b92915050565b6000813590506136ea816145cc565b92915050565b6000815190506136ff816145cc565b92915050565b60006020828403121561371757600080fd5b600061372584828501613687565b91505092915050565b60006020828403121561374057600080fd5b600061374e8482850161369c565b91505092915050565b60006020828403121561376957600080fd5b6000613777848285016136b1565b91505092915050565b6000806040838503121561379357600080fd5b60006137a1858286016136b1565b92505060206137b2858286016136db565b9150509250929050565b600080604083850312156137cf57600080fd5b60006137dd85828601613687565b92505060206137ee85828601613687565b9150509250929050565b60008060006060848603121561380d57600080fd5b600061381b86828701613687565b935050602061382c86828701613687565b925050604061383d868287016136db565b9150509250925092565b6000806040838503121561385a57600080fd5b600061386885828601613687565b9250506020613879858286016136db565b9150509250929050565b60006020828403121561389557600080fd5b60006138a3848285016136c6565b91505092915050565b6000602082840312156138be57600080fd5b60006138cc848285016136db565b91505092915050565b6000602082840312156138e757600080fd5b60006138f5848285016136f0565b91505092915050565b60008060006060848603121561391357600080fd5b6000613921868287016136f0565b9350506020613932868287016136f0565b9250506040613943868287016136f0565b9150509250925092565b60006139598383613965565b60208301905092915050565b61396e816140e3565b82525050565b61397d816140e3565b82525050565b600061398e82613f89565b6139988185613fac565b93506139a383613f79565b8060005b838110156139d45781516139bb888261394d565b97506139c683613f9f565b9250506001810190506139a7565b5085935050505092915050565b6139ea81614107565b82525050565b6139f98161414a565b82525050565b613a088161415c565b82525050565b6000613a1982613f94565b613a238185613fbd565b9350613a3381856020860161416e565b613a3c816142a9565b840191505092915050565b6000613a54602383613fbd565b9150613a5f826142ba565b604082019050919050565b6000613a77601883613fbd565b9150613a8282614309565b602082019050919050565b6000613a9a600c83613fbd565b9150613aa582614332565b602082019050919050565b6000613abd602283613fbd565b9150613ac88261435b565b604082019050919050565b6000613ae0601b83613fbd565b9150613aeb826143aa565b602082019050919050565b6000613b03602183613fbd565b9150613b0e826143d3565b604082019050919050565b6000613b26602083613fbd565b9150613b3182614422565b602082019050919050565b6000613b49602983613fbd565b9150613b548261444b565b604082019050919050565b6000613b6c602583613fbd565b9150613b778261449a565b604082019050919050565b6000613b8f602483613fbd565b9150613b9a826144e9565b604082019050919050565b6000613bb2602683613fbd565b9150613bbd82614538565b604082019050919050565b613bd181614133565b82525050565b613be08161413d565b82525050565b6000602082019050613bfb6000830184613974565b92915050565b6000604082019050613c166000830185613974565b613c236020830184613974565b9392505050565b6000606082019050613c3f6000830186613974565b613c4c6020830185613974565b613c596040830184613974565b949350505050565b600060c082019050613c766000830189613974565b613c8360208301886139ff565b613c906040830187613974565b613c9d6060830186613974565b613caa6080830185613bc8565b613cb760a0830184613bc8565b979650505050505050565b6000604082019050613cd76000830185613974565b613ce46020830184613bc8565b9392505050565b600060c082019050613d006000830189613974565b613d0d6020830188613bc8565b613d1a60408301876139f0565b613d2760608301866139f0565b613d346080830185613974565b613d4160a0830184613bc8565b979650505050505050565b6000602082019050613d6160008301846139e1565b92915050565b60006020820190508181036000830152613d818184613a0e565b905092915050565b60006020820190508181036000830152613da281613a47565b9050919050565b60006020820190508181036000830152613dc281613a6a565b9050919050565b60006020820190508181036000830152613de281613a8d565b9050919050565b60006020820190508181036000830152613e0281613ab0565b9050919050565b60006020820190508181036000830152613e2281613ad3565b9050919050565b60006020820190508181036000830152613e4281613af6565b9050919050565b60006020820190508181036000830152613e6281613b19565b9050919050565b60006020820190508181036000830152613e8281613b3c565b9050919050565b60006020820190508181036000830152613ea281613b5f565b9050919050565b60006020820190508181036000830152613ec281613b82565b9050919050565b60006020820190508181036000830152613ee281613ba5565b9050919050565b6000602082019050613efe6000830184613bc8565b92915050565b600060a082019050613f196000830188613bc8565b613f2660208301876139f0565b8181036040830152613f388186613983565b9050613f476060830185613974565b613f546080830184613bc8565b9695505050505050565b6000602082019050613f736000830184613bd7565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613fd982614133565b9150613fe483614133565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140195761401861421c565b5b828201905092915050565b600061402f82614133565b915061403a83614133565b92508261404a5761404961424b565b5b828204905092915050565b600061406082614133565b915061406b83614133565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140a4576140a361421c565b5b828202905092915050565b60006140ba82614133565b91506140c583614133565b9250828210156140d8576140d761421c565b5b828203905092915050565b60006140ee82614113565b9050919050565b600061410082614113565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061415582614133565b9050919050565b600061416782614133565b9050919050565b60005b8381101561418c578082015181840152602081019050614171565b8381111561419b576000848401525b50505050565b600060028204905060018216806141b957607f821691505b602082108114156141cd576141cc61427a565b5b50919050565b60006141de82614133565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142115761421061421c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b614590816140e3565b811461459b57600080fd5b50565b6145a7816140f5565b81146145b257600080fd5b50565b6145be81614107565b81146145c957600080fd5b50565b6145d581614133565b81146145e057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bf5a09f8e384f5dcca6da025370b186d70aa6f74cbd283b84c4265b348ee83964736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610445578063dd62ed3e14610482578063e8078d94146104bf578063f2fde38b146104d6578063f37c4bce146104ff578063f9f92be41461052857610140565b80638da5cb5b1461036057806395d89b411461038b57806398d5a5cb146103b6578063a9059cbb146103df578063ab9562fe1461041c57610140565b8063313ce567116100fd578063313ce5671461023e57806354486ac3146102695780635c85974f1461029457806370a08231146102bd57806385b12c7c146102fa5780638a13792e1461032357610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631c815b49146101d857806323b872dd1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610551565b6040516101679190613d67565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190613847565b6105e3565b6040516101a49190613d4c565b60405180910390f35b3480156101b957600080fd5b506101c2610601565b6040516101cf9190613ee9565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa9190613780565b610611565b005b34801561020d57600080fd5b50610228600480360381019061022391906137f8565b610716565b6040516102359190613d4c565b60405180910390f35b34801561024a57600080fd5b506102536107ef565b6040516102609190613f5e565b60405180910390f35b34801561027557600080fd5b5061027e610806565b60405161028b9190613ee9565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b691906138ac565b61080c565b005b3480156102c957600080fd5b506102e460048036038101906102df9190613705565b6108fa565b6040516102f19190613ee9565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c91906138ac565b610943565b005b34801561032f57600080fd5b5061034a60048036038101906103459190613757565b6109f4565b6040516103579190613ee9565b60405180910390f35b34801561036c57600080fd5b50610375610b1d565b6040516103829190613be6565b60405180910390f35b34801561039757600080fd5b506103a0610b46565b6040516103ad9190613d67565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190613705565b610bd8565b005b3480156103eb57600080fd5b5061040660048036038101906104019190613847565b610cc8565b6040516104139190613d4c565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190613780565b610ce6565b005b34801561045157600080fd5b5061046c60048036038101906104679190613705565b610e22565b6040516104799190613d4c565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a491906137bc565b610e78565b6040516104b69190613ee9565b60405180910390f35b3480156104cb57600080fd5b506104d4610eff565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190613705565b61155b565b005b34801561050b57600080fd5b5061052660048036038101906105219190613705565b6116ad565b005b34801561053457600080fd5b5061054f600480360381019061054a9190613705565b611866565b005b606060098054610560906141a1565b80601f016020809104026020016040519081016040528092919081815260200182805461058c906141a1565b80156105d95780601f106105ae576101008083540402835291602001916105d9565b820191906000526020600020905b8154815290600101906020018083116105bc57829003601f168201915b5050505050905090565b60006105f76105f0611ac3565b8484611acb565b6001905092915050565b6000670214e8348c4f0000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610650611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d90613e49565b60405180910390fd5b6106b08282611c96565b6000811115610712576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6000610723848484611f97565b6107e48461072f611ac3565b6107df856040518060600160405280602881526020016145e460289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610795611ac3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252e9092919063ffffffff16565b611acb565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084b611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890613e49565b60405180910390fd5b6108b8633b9aca00826119a090919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516108ef9190613ee9565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610982611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90613e49565b60405180910390fd5b6109eb8142611a1b90919063ffffffff16565b601c8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a36611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613e49565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610b0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b55906141a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b81906141a1565b8015610bce5780601f10610ba357610100808354040283529160200191610bce565b820191906000526020600020905b815481529060010190602001808311610bb157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c17611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490613e49565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cdc610cd5611ac3565b8484611f97565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d25611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290613e49565b60405180910390fd5b610da8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c96565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e1e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c96565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3e611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b90613e49565b60405180910390fd5b600f60009054906101000a900460ff1615610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb90613da9565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061107830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16670214e8348c4f0000611acb565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f6919061372e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561115857600080fd5b505afa15801561116c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611190919061372e565b6040518363ffffffff1660e01b81526004016111ad929190613c01565b602060405180830381600087803b1580156111c757600080fd5b505af11580156111db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ff919061372e565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611288306108fa565b600080611293610b1d565b426040518863ffffffff1660e01b81526004016112b596959493929190613ceb565b6060604051808303818588803b1580156112ce57600080fd5b505af11580156112e2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130791906138fe565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113a9929190613cc2565b602060405180830381600087803b1580156113c357600080fd5b505af11580156113d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fb9190613883565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530612710600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114df919061372e565b87670214e8348c4f00006040518763ffffffff1660e01b815260040161150a96959493929190613c61565b600060405180830381600087803b15801561152457600080fd5b505af1158015611538573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661159a611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613e49565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f919061372e565b73ffffffffffffffffffffffffffffffffffffffff1661176d611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614806117e35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117cb611ac3565b73ffffffffffffffffffffffffffffffffffffffff16145b611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990613dc9565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118a5611ac3565b73ffffffffffffffffffffffffffffffffffffffff16146118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f290613e49565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061199883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612592565b905092915050565b6000808314156119b35760009050611a15565b600082846119c19190614055565b90508284826119d09190614024565b14611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790613e29565b60405180910390fd5b809150505b92915050565b6000808284611a2a9190613fce565b905083811015611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6690613e09565b60405180910390fd5b8091505092915050565b6000611abb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061252e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3290613ea9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613de9565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c899190613ee9565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cd5611ac3565b73ffffffffffffffffffffffffffffffffffffffff1614611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2290613e49565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e9c57612904611d9083600854611a1b90919063ffffffff16565b1115611d9b57600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611e3991906140af565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9182600854611a1b90919063ffffffff16565b600881905550611f92565b600060058281548110611ed8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611f0f82611f0186600854611a1b90919063ffffffff16565b611a7990919063ffffffff16565b1115611f1a57600080fd5b8260058381548110611f55577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f8a81611f7c85600854611a1b90919063ffffffff16565b611a7990919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe90613e89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e90613d89565b60405180910390fd5b600081116120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190613e69565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561215e5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121b45750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121bd57600080fd5b6121c783836125f5565b80156121d55750601c544210155b1561249257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161225b93929190613c2a565b602060405180830381600087803b15801561227557600080fd5b505af1158015612289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ad9190613883565b156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e490613ec9565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161236e93929190613c2a565b602060405180830381600087803b15801561238857600080fd5b505af115801561239c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c09190613883565b15612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790613ec9565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161245f93929190613c2a565b600060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b505050505b61249b826126a8565b156124b757600e546124ac836108fa565b106124b657600080fd5b5b60006124c3848461277f565b1561251257601c544210156124d757600080fd5b6124e1848461282b565b156124fb576124ee612936565b8211156124fa57600080fd5b5b612506848484612988565b905061251184612b6f565b5b61251e84848484612ba0565b6125288484612de2565b50505050565b6000838311158290612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256d9190613d67565b60405180910390fd5b506000838561258591906140af565b9050809150509392505050565b600080831182906125d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d09190613d67565b60405180910390fd5b50600083856125e89190614024565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806126a05750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127565750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127785750612774610e10601c54611a1b90919063ffffffff16565b4211155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128225750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128d85750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561292e5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061294f610258601c54611a1b90919063ffffffff16565b421161297957612972610190670214e8348c4f000061195690919063ffffffff16565b9050612985565b670214e8348c4f000090505b90565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a305750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a3e5780915050612b68565b612a7e612a6f612a4c612f3c565b612a61601e548761195690919063ffffffff16565b6119a090919063ffffffff16565b82611a1b90919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ae857600080fd5b505afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2091906138d5565b601181905550612b61612b52601e54612b44601154876119a090919063ffffffff16565b61195690919063ffffffff16565b82611a1b90919063ffffffff16565b9050809150505b9392505050565b612b7881612f46565b15612b9d576000612b88306108fa565b9050612b9381612fba565b612b9b6132b4565b505b50565b6000612bb58284611a7990919063ffffffff16565b9050612c0983601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7990919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c9e81601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1b90919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d3382601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a1b90919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612dd39190613ee9565b60405180910390a35050505050565b612dec828261277f565b15612f3857612dfa826133ad565b15612e9157600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612e5a9190613be6565b600060405180830381600087803b158015612e7457600080fd5b505af1158015612e88573d6000803e3d6000fd5b50505050612f37565b60006012541115612f3657600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612efb929190613cc2565b600060405180830381600087803b158015612f1557600080fd5b505af1158015612f29573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000601d60009054906101000a900460ff16158015612fb35750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613018577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156130465781602001602082028036833780820191505090505b5090503081600081518110613084577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561312657600080fd5b505afa15801561313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315e919061372e565b81600181518110613198577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131ff30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611acb565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613263959493929190613f04565b600060405180830381600087803b15801561327d57600080fd5b505af1158015613291573d6000803e3d6000fd5b50505050506000601d60006101000a81548160ff02191690831515021790555050565b6000479050601b5481116132c857506133ab565b60006132df601b5483611a7990919063ffffffff16565b905060006132eb613407565b905060018110156132fe575050506133ab565b6133088282613448565b61332f81613321601154856119a090919063ffffffff16565b61195690919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f1935050505015801561339f573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060009050613428613419612f3c565b82611a1b90919063ffffffff16565b905061343f60115482611a1b90919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561368257600060058281548110613498577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490506000600683815481106134e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006135358561352785896119a090919063ffffffff16565b61195690919063ffffffff16565b9050600181111561366c578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613586573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561366b57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016136389190613ee9565b600060405180830381600087803b15801561365257600080fd5b505af1158015613666573d6000803e3d6000fd5b505050505b5b505050808061367a906141d3565b91505061344f565b505050565b60008135905061369681614587565b92915050565b6000815190506136ab81614587565b92915050565b6000813590506136c08161459e565b92915050565b6000815190506136d5816145b5565b92915050565b6000813590506136ea816145cc565b92915050565b6000815190506136ff816145cc565b92915050565b60006020828403121561371757600080fd5b600061372584828501613687565b91505092915050565b60006020828403121561374057600080fd5b600061374e8482850161369c565b91505092915050565b60006020828403121561376957600080fd5b6000613777848285016136b1565b91505092915050565b6000806040838503121561379357600080fd5b60006137a1858286016136b1565b92505060206137b2858286016136db565b9150509250929050565b600080604083850312156137cf57600080fd5b60006137dd85828601613687565b92505060206137ee85828601613687565b9150509250929050565b60008060006060848603121561380d57600080fd5b600061381b86828701613687565b935050602061382c86828701613687565b925050604061383d868287016136db565b9150509250925092565b6000806040838503121561385a57600080fd5b600061386885828601613687565b9250506020613879858286016136db565b9150509250929050565b60006020828403121561389557600080fd5b60006138a3848285016136c6565b91505092915050565b6000602082840312156138be57600080fd5b60006138cc848285016136db565b91505092915050565b6000602082840312156138e757600080fd5b60006138f5848285016136f0565b91505092915050565b60008060006060848603121561391357600080fd5b6000613921868287016136f0565b9350506020613932868287016136f0565b9250506040613943868287016136f0565b9150509250925092565b60006139598383613965565b60208301905092915050565b61396e816140e3565b82525050565b61397d816140e3565b82525050565b600061398e82613f89565b6139988185613fac565b93506139a383613f79565b8060005b838110156139d45781516139bb888261394d565b97506139c683613f9f565b9250506001810190506139a7565b5085935050505092915050565b6139ea81614107565b82525050565b6139f98161414a565b82525050565b613a088161415c565b82525050565b6000613a1982613f94565b613a238185613fbd565b9350613a3381856020860161416e565b613a3c816142a9565b840191505092915050565b6000613a54602383613fbd565b9150613a5f826142ba565b604082019050919050565b6000613a77601883613fbd565b9150613a8282614309565b602082019050919050565b6000613a9a600c83613fbd565b9150613aa582614332565b602082019050919050565b6000613abd602283613fbd565b9150613ac88261435b565b604082019050919050565b6000613ae0601b83613fbd565b9150613aeb826143aa565b602082019050919050565b6000613b03602183613fbd565b9150613b0e826143d3565b604082019050919050565b6000613b26602083613fbd565b9150613b3182614422565b602082019050919050565b6000613b49602983613fbd565b9150613b548261444b565b604082019050919050565b6000613b6c602583613fbd565b9150613b778261449a565b604082019050919050565b6000613b8f602483613fbd565b9150613b9a826144e9565b604082019050919050565b6000613bb2602683613fbd565b9150613bbd82614538565b604082019050919050565b613bd181614133565b82525050565b613be08161413d565b82525050565b6000602082019050613bfb6000830184613974565b92915050565b6000604082019050613c166000830185613974565b613c236020830184613974565b9392505050565b6000606082019050613c3f6000830186613974565b613c4c6020830185613974565b613c596040830184613974565b949350505050565b600060c082019050613c766000830189613974565b613c8360208301886139ff565b613c906040830187613974565b613c9d6060830186613974565b613caa6080830185613bc8565b613cb760a0830184613bc8565b979650505050505050565b6000604082019050613cd76000830185613974565b613ce46020830184613bc8565b9392505050565b600060c082019050613d006000830189613974565b613d0d6020830188613bc8565b613d1a60408301876139f0565b613d2760608301866139f0565b613d346080830185613974565b613d4160a0830184613bc8565b979650505050505050565b6000602082019050613d6160008301846139e1565b92915050565b60006020820190508181036000830152613d818184613a0e565b905092915050565b60006020820190508181036000830152613da281613a47565b9050919050565b60006020820190508181036000830152613dc281613a6a565b9050919050565b60006020820190508181036000830152613de281613a8d565b9050919050565b60006020820190508181036000830152613e0281613ab0565b9050919050565b60006020820190508181036000830152613e2281613ad3565b9050919050565b60006020820190508181036000830152613e4281613af6565b9050919050565b60006020820190508181036000830152613e6281613b19565b9050919050565b60006020820190508181036000830152613e8281613b3c565b9050919050565b60006020820190508181036000830152613ea281613b5f565b9050919050565b60006020820190508181036000830152613ec281613b82565b9050919050565b60006020820190508181036000830152613ee281613ba5565b9050919050565b6000602082019050613efe6000830184613bc8565b92915050565b600060a082019050613f196000830188613bc8565b613f2660208301876139f0565b8181036040830152613f388186613983565b9050613f476060830185613974565b613f546080830184613bc8565b9695505050505050565b6000602082019050613f736000830184613bd7565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613fd982614133565b9150613fe483614133565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140195761401861421c565b5b828201905092915050565b600061402f82614133565b915061403a83614133565b92508261404a5761404961424b565b5b828204905092915050565b600061406082614133565b915061406b83614133565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140a4576140a361421c565b5b828202905092915050565b60006140ba82614133565b91506140c583614133565b9250828210156140d8576140d761421c565b5b828203905092915050565b60006140ee82614113565b9050919050565b600061410082614113565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061415582614133565b9050919050565b600061416782614133565b9050919050565b60005b8381101561418c578082015181840152602081019050614171565b8381111561419b576000848401525b50505050565b600060028204905060018216806141b957607f821691505b602082108114156141cd576141cc61427a565b5b50919050565b60006141de82614133565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142115761421061421c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b614590816140e3565b811461459b57600080fd5b50565b6145a7816140f5565b81146145b257600080fd5b50565b6145be81614107565b81146145c957600080fd5b50565b6145d581614133565b81146145e057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bf5a09f8e384f5dcca6da025370b186d70aa6f74cbd283b84c4265b348ee83964736f6c63430008040033
Deployed Bytecode Sourcemap
7423:11273:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9599:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10438:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9873:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18368:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10609:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9783:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3638:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17847:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9979:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17729:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5377:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2762:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9689:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18266:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10107:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5563:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18041:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10284:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16824:899;;;;;;;;;;;;;:::i;:::-;;2848:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18595:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18167:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9599:84;9636:13;9669:6;9662:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9599:84;:::o;10438:165::-;10515:4;10532:41;10541:12;:10;:12::i;:::-;10555:8;10565:7;10532:8;:41::i;:::-;10591:4;10584:11;;10438:165;;;;:::o;9873:100::-;9926:7;7562:17;9946:19;;9873:100;:::o;18368:221::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18463:29:::1;18475:8;18485:6;18463:11;:29::i;:::-;18516:1;18507:6;:10;18503:79;;;18566:4;18534:19;:29;18554:8;18534:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18503:79;18368:221:::0;;:::o;10609:323::-;10710:4;10727:39;10737:7;10746:10;10758:7;10727:9;:39::i;:::-;10777:125;10786:7;10795:12;:10;:12::i;:::-;10809:92;10849:7;10809:92;;;;;;;;;;;;;;;;;:12;:21;10822:7;10809:21;;;;;;;;;;;;;;;:35;10831:12;:10;:12::i;:::-;10809:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;10777:8;:125::i;:::-;10920:4;10913:11;;10609:323;;;;;:::o;9783:84::-;9824:5;9849:10;;;;;;;;;;;9842:17;;9783:84;:::o;3638:27::-;;;;:::o;17847:188::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17972:18:::1;17984:5;17972:7;:11;;:18;;;;:::i;:::-;17960:9;:30;;;;18006:21;18017:9;;18006:21;;;;;;:::i;:::-;;;;;;;;17847:188:::0;:::o;9979:122::-;10046:7;10073:10;:20;10084:8;10073:20;;;;;;;;;;;;;;;;10066:27;;9979:122;;;:::o;17729:112::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17806:27:::1;17826:6;17806:15;:19;;:27;;;;:::i;:::-;17793:10;:40;;;;17729:112:::0;:::o;5377:180::-;5465:7;3072;;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5485:9:::1;5497:8;:18;5506:8;5497:18;;;;;;;;;;;;;;;;5485:30;;5533:10;5544:4;5533:16;;;;;;;;;;;;;;;;;;;;;;;;5526:23;;;5377:180:::0;;;:::o;2762:80::-;2800:7;2827;;;;;;;;;;;2820:14;;2762:80;:::o;9689:88::-;9728:13;9761:8;9754:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9689:88;:::o;18266:96::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18349:5:::1;18331:11;:15;18343:2;18331:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18266:96:::0;:::o;10107:171::-;10187:4;10204:44;10214:12;:10;:12::i;:::-;10228:10;10240:7;10204:9;:44::i;:::-;10266:4;10259:11;;10107:171;;;;:::o;5563:253::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5668:28:::1;5680:12;;;;;;;;;;;5694:1;5668:11;:28::i;:::-;5722:8;5707:12;;:23;;;;;;;;;;;;;;;;;;5754:6;5741:10;:19;;;;5771:37;5783:12;;;;;;;;;;;5797:10;;5771:11;:37::i;:::-;5563:253:::0;;:::o;18041:120::-;18108:4;18132:11;:21;18144:8;18132:21;;;;;;;;;;;;;;;;;;;;;;;;;18125:28;;18041:120;;;:::o;10284:148::-;10367:7;10394:12;:20;10407:6;10394:20;;;;;;;;;;;;;;;:30;10415:8;10394:30;;;;;;;;;;;;;;;;10387:37;;10284:148;;;;:::o;16824:899::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16889:11:::1;;;;;;;;;;;16888:12;16880:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16939:19;16961:21;16939:43;;16993:35;17050:42;16993:100;;17124:16;17104:17;;:36;;;;;;;;;;;;;;;;;;17151:65;17168:4;17183:17;;;;;;;;;;;7562;17151:8;:65::i;:::-;17263:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17245:56;;;17310:4;17317:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17245:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17227:15;;:114;;;;;;;;;;;;;;;;;;17352:17;;;;;;;;;;;:33;;;17393:21;17424:4;17430:24;17448:4;17430:9;:24::i;:::-;17455:1;17457::::0;17459:7:::1;:5;:7::i;:::-;17467:15;17352:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17501:15;;;;;;;;;;;17494:31;;;17534:17;;;;;;;;;;;17554:14;17494:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17580:10;;;;;;;;;;;:15;;;17604:4;17611:5;17618:15;;;;;;;;;;;17635:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17660:11;7562:17;17580:106;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17711:4;17697:11;;:18;;;;;;;;;;;;;;;;;;3127:1;;16824:899::o:0;2848:162::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2964:8:::1;2934:39;;2955:7;::::0;::::1;;;;;;;;2934:39;;;;;;;;;;;;2994:8;2984:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;2848:162:::0;:::o;18595:98::-;9089:8;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9073:32;;:12;:10;:12::i;:::-;:32;;;:62;;;;9125:10;;;;;;;;;;;9109:26;;:12;:10;:12::i;:::-;:26;;;9073:62;9064:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18677:8:::1;18664:10;;:21;;;;;;;;;;;;;;;;;;18595:98:::0;:::o;18167:93::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18248:4:::1;18230:11;:15;18242:2;18230:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18167:93:::0;:::o;2114:132::-;2172:7;2199:39;2203:1;2206;2199:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2192:46;;2114:132;;;;:::o;1862:246::-;1920:7;1949:1;1944;:6;1940:47;;;1974:1;1967:8;;;;1940:47;1997:9;2013:1;2009;:5;;;;:::i;:::-;1997:17;;2042:1;2037;2033;:5;;;;:::i;:::-;:10;2025:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2099:1;2092:8;;;1862:246;;;;;:::o;1339:179::-;1397:7;1417:9;1433:1;1429;:5;;;;:::i;:::-;1417:17;;1458:1;1453;:6;;1445:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1509:1;1502:8;;;1339:179;;;;:::o;1524:136::-;1582:7;1609:43;1613:1;1616;1609:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1602:50;;1524:136;;;;:::o;537:98::-;590:7;617:10;610:17;;537:98;:::o;12221:347::-;12335:1;12317:20;;:6;:20;;;;12309:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12417:1;12397:22;;:8;:22;;;;12389:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12502:7;12469:12;:20;12482:6;12469:20;;;;;;;;;;;;;;;:30;12490:8;12469:30;;;;;;;;;;;;;;;:40;;;;12542:8;12525:35;;12534:6;12525:35;;;12552:7;12525:35;;;;;;:::i;:::-;;;;;;;;12221:347;;;:::o;4542:720::-;3072:7;;;;;;;;;;3056:23;;:12;:10;:12::i;:::-;:23;;;3048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4645:9:::1;4657:8;:18;4666:8;4657:18;;;;;;;;;;;;;;;;4645:30;;4698:1;4690:4;:9;4686:569;;;4752:5;4724:24;4741:6;4724:12;;:16;;:24;;;;:::i;:::-;:33;;4716:42;;;::::0;::::1;;4773:10;4789:6;4773:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4811:14;4831:8;4811:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4896:1;4876:10;:17;;;;:21;;;;:::i;:::-;4855:8;:18;4864:8;4855:18;;;;;;;;;;;;;;;:42;;;;4927:24;4944:6;4927:12;;:16;;:24;;;;:::i;:::-;4912:12;:39;;;;4686:569;;;5017:19;5040:10;5051:4;5040:16;;;;;;;;;;;;;;;;;;;;;;;;5017:39;;5124:5;5079:41;5108:11;5079:24;5096:6;5079:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:50;;5071:59;;;::::0;::::1;;5166:6;5147:10;5158:4;5147:16;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5202:41;5231:11;5202:24;5219:6;5202:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;5187:12;:56;;;;4686:569;;3127:1;4542:720:::0;;:::o;12574:1489::-;12693:1;12674:21;;:7;:21;;;;12666:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12778:1;12756:24;;:10;:24;;;;12748:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12849:1;12839:7;:11;12831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12916:11;:20;12928:7;12916:20;;;;;;;;;;;;;;;;;;;;;;;;;12915:21;:49;;;;;12941:11;:23;12953:10;12941:23;;;;;;;;;;;;;;;;;;;;;;;;;12940:24;12915:49;:76;;;;;12969:11;:22;12981:9;12969:22;;;;;;;;;;;;;;;;;;;;;;;;;12968:23;12915:76;12907:85;;;;;;13016:40;13036:7;13045:10;13016:19;:40::i;:::-;:73;;;;;13079:10;;13060:15;:29;;13016:73;13013:450;;;13115:7;;;;;;;;;;;:19;;;13135:10;13147:15;;;;;;;;;;;13164:9;13115:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13114:60;13106:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13283:7;;;;;;;;;;;:19;;;13303:7;13312:15;;;;;;;;;;;13329:9;13283:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13282:57;13274:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13398:7;;;;;;;;;;;:21;;;13420:7;13429:10;13441:9;13398:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13013:450;13487:25;13501:10;13487:13;:25::i;:::-;13484:89;;;13559:13;;13535:21;13545:10;13535:9;:21::i;:::-;:37;13527:46;;;;;;13484:89;13598:14;13631:28;13639:7;13648:10;13631:7;:28::i;:::-;13627:307;;;13703:10;;13684:15;:29;;13676:38;;;;;;13733:34;13747:7;13756:10;13733:13;:34::i;:::-;13729:88;;;13806:10;:8;:10::i;:::-;13795:7;:21;;13787:30;;;;;;13729:88;13855:39;13865:7;13874:10;13886:7;13855:9;:39::i;:::-;13846:48;;13909:13;13914:7;13909:4;:13::i;:::-;13627:307;13954:53;13970:7;13979:10;13991:7;14000:6;13954:15;:53::i;:::-;14018:40;14038:7;14047:10;14018:19;:40::i;:::-;12574:1489;;;;:::o;1666:190::-;1752:7;1785:1;1780;:6;;1788:12;1772:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1812:9;1828:1;1824;:5;;;;:::i;:::-;1812:17;;1847:1;1840:8;;;1666:190;;;;;:::o;2252:189::-;2338:7;2370:1;2366;:5;2373:12;2358:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2397:9;2413:1;2409;:5;;;;:::i;:::-;2397:17;;2432:1;2425:8;;;2252:189;;;;;:::o;11374:179::-;11462:4;11497:15;;;;;;;;;;;11486:26;;:7;:26;;;:59;;;;11530:15;;;;;;;;;;;11516:29;;:10;:29;;;11486:59;11479:66;;11374:179;;;;:::o;11785:216::-;11850:4;11888:15;;;;;;;;;;;11874:29;;:10;:29;;;;:73;;;;;11929:17;;;;;;;;;;;11907:40;;:10;:40;;;;11874:73;:119;;;;;11970:23;11985:7;11970:10;;:14;;:23;;;;:::i;:::-;11951:15;:42;;11874:119;11867:126;;11785:216;;;:::o;11194:174::-;11270:4;11296:19;:28;11316:7;11296:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11328:19;:31;11348:10;11328:31;;;;;;;;;;;;;;;;;;;;;;;;;11296:63;11294:66;11287:73;;11194:174;;;;:::o;11559:220::-;11641:4;11676:15;;;;;;;;;;;11665:26;;:7;:26;;;:70;;;;;11717:17;;;;;;;;;;;11695:40;;:10;:40;;;;11665:70;:106;;;;;11740:19;:31;11760:10;11740:31;;;;;;;;;;;;;;;;;;;;;;;;;11739:32;11665:106;11658:113;;11559:220;;;;:::o;12007:208::-;12049:7;12090:26;12105:10;12090;;:14;;:26;;;;:::i;:::-;12071:15;:45;12068:139;;12138:21;12155:3;7562:17;12138:16;;:21;;;;:::i;:::-;12131:28;;;;12068:139;7562:17;12188:19;;12007:208;;:::o;14911:459::-;15001:7;15021:12;15036:1;15021:16;;15052:19;:28;15072:7;15052:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15084:19;:31;15104:10;15084:31;;;;;;;;;;;;;;;;;;;;;;;;;15052:63;15048:107;;;15139:4;15132:11;;;;;15048:107;15172:48;15181:38;15203:15;:13;:15::i;:::-;15181:17;15193:4;;15181:7;:11;;:17;;;;:::i;:::-;:21;;:38;;;;:::i;:::-;15172:4;:8;;:48;;;;:::i;:::-;15165:55;;15251:10;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15231:17;:41;;;;15290:50;15299:40;15334:4;;15299:30;15311:17;;15299:7;:11;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15290:4;:8;;:50;;;;:::i;:::-;15283:57;;15358:4;15351:11;;;14911:459;;;;;;:::o;15376:234::-;15430:20;15442:7;15430:11;:20::i;:::-;15426:177;;;15467:21;15491:24;15509:4;15491:9;:24::i;:::-;15467:48;;15530:32;15548:13;15530:17;:32::i;:::-;15577:14;:12;:14::i;:::-;15426:177;;15376:234;:::o;14069:434::-;14183:18;14204:19;14216:6;14204:7;:11;;:19;;;;:::i;:::-;14183:40;;14256:32;14280:7;14256:10;:19;14267:7;14256:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14234:10;:19;14245:7;14234:19;;;;;;;;;;;;;;;:54;;;;14324:38;14351:10;14324;:22;14335:10;14324:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14299:10;:22;14310:10;14299:22;;;;;;;;;;;;;;;:63;;;;14401:37;14431:6;14401:10;:25;14420:4;14401:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14373:10;:25;14392:4;14373:25;;;;;;;;;;;;;;;:65;;;;14472:10;14454:41;;14463:7;14454:41;;;14484:10;14454:41;;;;;;:::i;:::-;;;;;;;;14069:434;;;;;:::o;14509:399::-;14598:28;14606:7;14615:10;14598:7;:28::i;:::-;14594:307;;;14647:15;14654:7;14647:6;:15::i;:::-;14643:247;;;14681:10;;;;;;;;;;;:24;;;14706:10;14681:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14643:247;;;14762:1;14741:18;;:22;14737:153;;;14784:10;;;;;;;;;;;:20;;;14805:7;14814:18;;14784:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14873:1;14852:18;:22;;;;14737:153;14643:247;14594:307;14509:399;;:::o;5268:103::-;5324:7;5351:12;;5344:19;;5268:103;:::o;10938:131::-;10998:4;11023:8;;;;;;;;;;;11022:9;:39;;;;;11046:15;;;;;;;;;;;11035:26;;:7;:26;;;;11022:39;11015:46;;10938:131;;;:::o;15616:482::-;8975:4;8964:8;;:15;;;;;;;;;;;;;;;;;;15691:22:::1;15730:1;15716:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15691:41;;15762:4;15743:5;15749:1;15743:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;15789:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15778:5;15784:1;15778:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;15824:60;15841:4;15856:17;;;;;;;;;;;15876:7;15824:8;:60::i;:::-;15895:17;;;;;;;;;;;:68;;;15978:7;16000:1;16016:5;16044:4;16064:15;15895:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8990:1;9013:5:::0;9002:8;;:16;;;;;;;;;;;;;;;;;;15616:482;:::o;16310:508::-;16353:12;16368:21;16353:36;;16412:12;;16404:4;:20;16400:46;;16439:7;;;16400:46;16470:15;16488:22;16497:12;;16488:4;:8;;:22;;;;:::i;:::-;16470:40;;16521:7;16531:20;:18;:20::i;:::-;16521:30;;16571:1;16566:2;:6;16562:32;;;16587:7;;;;;16562:32;16606:21;16615:7;16624:2;16606:8;:21::i;:::-;16661:38;16696:2;16661:30;16673:17;;16661:7;:11;;:30;;;;:::i;:::-;:34;;:38;;;;:::i;:::-;16640:18;:59;;;;16710:22;;;;;;;;;;;:31;;:51;16742:18;;16710:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16789:21;16774:12;:36;;;;16310:508;;;;:::o;11075:113::-;11130:4;11165:15;;;;;;;;;;;11154:26;;:7;:26;;;11147:33;;11075:113;;;:::o;16104:200::-;16156:4;16173:9;16185:1;16173:13;;16204:25;16213:15;:13;:15::i;:::-;16204:4;:8;;:25;;;;:::i;:::-;16197:32;;16247:27;16256:17;;16247:4;:8;;:27;;;;:::i;:::-;16240:34;;16292:4;16285:11;;;16104:200;:::o;4054:482::-;4131:6;4140:1;4131:10;;4126:403;4147:10;:17;;;;4143:1;:21;4126:403;;;4186:14;4203:10;4214:1;4203:13;;;;;;;;;;;;;;;;;;;;;;;;4186:30;;4231:24;4258:14;4273:1;4258:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4231:44;;4290:15;4308:24;4329:2;4308:16;4317:6;4308:4;:8;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;4290:42;;4361:1;4351:7;:11;4347:171;;;4382:8;:17;;:26;4400:7;4382:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4442:12;;;;;;;;;;;4430:24;;:8;:24;;;4427:75;;;4477:8;;;;;;;;;;;:16;;;4494:7;4477:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4427:75;4347:171;4126:403;;;4166:3;;;;;:::i;:::-;;;;4126:403;;;;4054:482;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:423::-;1817:6;1825;1874:2;1862:9;1853:7;1849:23;1845:32;1842:2;;;1890:1;1887;1880:12;1842:2;1933:1;1958:61;2011:7;2002:6;1991:9;1987:22;1958:61;:::i;:::-;1948:71;;1904:125;2068:2;2094:53;2139:7;2130:6;2119:9;2115:22;2094:53;:::i;:::-;2084:63;;2039:118;1832:332;;;;;:::o;2170:407::-;2238:6;2246;2295:2;2283:9;2274:7;2270:23;2266:32;2263:2;;;2311:1;2308;2301:12;2263:2;2354:1;2379:53;2424:7;2415:6;2404:9;2400:22;2379:53;:::i;:::-;2369:63;;2325:117;2481:2;2507:53;2552:7;2543:6;2532:9;2528:22;2507:53;:::i;:::-;2497:63;;2452:118;2253:324;;;;;:::o;2583:552::-;2660:6;2668;2676;2725:2;2713:9;2704:7;2700:23;2696:32;2693:2;;;2741:1;2738;2731:12;2693:2;2784:1;2809:53;2854:7;2845:6;2834:9;2830:22;2809:53;:::i;:::-;2799:63;;2755:117;2911:2;2937:53;2982:7;2973:6;2962:9;2958:22;2937:53;:::i;:::-;2927:63;;2882:118;3039:2;3065:53;3110:7;3101:6;3090:9;3086:22;3065:53;:::i;:::-;3055:63;;3010:118;2683:452;;;;;:::o;3141:407::-;3209:6;3217;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;3282:1;3279;3272:12;3234:2;3325:1;3350:53;3395:7;3386:6;3375:9;3371:22;3350:53;:::i;:::-;3340:63;;3296:117;3452:2;3478:53;3523:7;3514:6;3503:9;3499:22;3478:53;:::i;:::-;3468:63;;3423:118;3224:324;;;;;:::o;3554:278::-;3621:6;3670:2;3658:9;3649:7;3645:23;3641:32;3638:2;;;3686:1;3683;3676:12;3638:2;3729:1;3754:61;3807:7;3798:6;3787:9;3783:22;3754:61;:::i;:::-;3744:71;;3700:125;3628:204;;;;:::o;3838:262::-;3897:6;3946:2;3934:9;3925:7;3921:23;3917:32;3914:2;;;3962:1;3959;3952:12;3914:2;4005:1;4030:53;4075:7;4066:6;4055:9;4051:22;4030:53;:::i;:::-;4020:63;;3976:117;3904:196;;;;:::o;4106:284::-;4176:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:2;;;4241:1;4238;4231:12;4193:2;4284:1;4309:64;4365:7;4356:6;4345:9;4341:22;4309:64;:::i;:::-;4299:74;;4255:128;4183:207;;;;:::o;4396:596::-;4484:6;4492;4500;4549:2;4537:9;4528:7;4524:23;4520:32;4517:2;;;4565:1;4562;4555:12;4517:2;4608:1;4633:64;4689:7;4680:6;4669:9;4665:22;4633:64;:::i;:::-;4623:74;;4579:128;4746:2;4772:64;4828:7;4819:6;4808:9;4804:22;4772:64;:::i;:::-;4762:74;;4717:129;4885:2;4911:64;4967:7;4958:6;4947:9;4943:22;4911:64;:::i;:::-;4901:74;;4856:129;4507:485;;;;;:::o;4998:179::-;5067:10;5088:46;5130:3;5122:6;5088:46;:::i;:::-;5166:4;5161:3;5157:14;5143:28;;5078:99;;;;:::o;5183:108::-;5260:24;5278:5;5260:24;:::i;:::-;5255:3;5248:37;5238:53;;:::o;5297:118::-;5384:24;5402:5;5384:24;:::i;:::-;5379:3;5372:37;5362:53;;:::o;5451:732::-;5570:3;5599:54;5647:5;5599:54;:::i;:::-;5669:86;5748:6;5743:3;5669:86;:::i;:::-;5662:93;;5779:56;5829:5;5779:56;:::i;:::-;5858:7;5889:1;5874:284;5899:6;5896:1;5893:13;5874:284;;;5975:6;5969:13;6002:63;6061:3;6046:13;6002:63;:::i;:::-;5995:70;;6088:60;6141:6;6088:60;:::i;:::-;6078:70;;5934:224;5921:1;5918;5914:9;5909:14;;5874:284;;;5878:14;6174:3;6167:10;;5575:608;;;;;;;:::o;6189:109::-;6270:21;6285:5;6270:21;:::i;:::-;6265:3;6258:34;6248:50;;:::o;6304:147::-;6399:45;6438:5;6399:45;:::i;:::-;6394:3;6387:58;6377:74;;:::o;6457:155::-;6556:49;6599:5;6556:49;:::i;:::-;6551:3;6544:62;6534:78;;:::o;6618:364::-;6706:3;6734:39;6767:5;6734:39;:::i;:::-;6789:71;6853:6;6848:3;6789:71;:::i;:::-;6782:78;;6869:52;6914:6;6909:3;6902:4;6895:5;6891:16;6869:52;:::i;:::-;6946:29;6968:6;6946:29;:::i;:::-;6941:3;6937:39;6930:46;;6710:272;;;;;:::o;6988:366::-;7130:3;7151:67;7215:2;7210:3;7151:67;:::i;:::-;7144:74;;7227:93;7316:3;7227:93;:::i;:::-;7345:2;7340:3;7336:12;7329:19;;7134:220;;;:::o;7360:366::-;7502:3;7523:67;7587:2;7582:3;7523:67;:::i;:::-;7516:74;;7599:93;7688:3;7599:93;:::i;:::-;7717:2;7712:3;7708:12;7701:19;;7506:220;;;:::o;7732:366::-;7874:3;7895:67;7959:2;7954:3;7895:67;:::i;:::-;7888:74;;7971:93;8060:3;7971:93;:::i;:::-;8089:2;8084:3;8080:12;8073:19;;7878:220;;;:::o;8104:366::-;8246:3;8267:67;8331:2;8326:3;8267:67;:::i;:::-;8260:74;;8343:93;8432:3;8343:93;:::i;:::-;8461:2;8456:3;8452:12;8445:19;;8250:220;;;:::o;8476:366::-;8618:3;8639:67;8703:2;8698:3;8639:67;:::i;:::-;8632:74;;8715:93;8804:3;8715:93;:::i;:::-;8833:2;8828:3;8824:12;8817:19;;8622:220;;;:::o;8848:366::-;8990:3;9011:67;9075:2;9070:3;9011:67;:::i;:::-;9004:74;;9087:93;9176:3;9087:93;:::i;:::-;9205:2;9200:3;9196:12;9189:19;;8994:220;;;:::o;9220:366::-;9362:3;9383:67;9447:2;9442:3;9383:67;:::i;:::-;9376:74;;9459:93;9548:3;9459:93;:::i;:::-;9577:2;9572:3;9568:12;9561:19;;9366:220;;;:::o;9592:366::-;9734:3;9755:67;9819:2;9814:3;9755:67;:::i;:::-;9748:74;;9831:93;9920:3;9831:93;:::i;:::-;9949:2;9944:3;9940:12;9933:19;;9738:220;;;:::o;9964:366::-;10106:3;10127:67;10191:2;10186:3;10127:67;:::i;:::-;10120:74;;10203:93;10292:3;10203:93;:::i;:::-;10321:2;10316:3;10312:12;10305:19;;10110:220;;;:::o;10336:366::-;10478:3;10499:67;10563:2;10558:3;10499:67;:::i;:::-;10492:74;;10575:93;10664:3;10575:93;:::i;:::-;10693:2;10688:3;10684:12;10677:19;;10482:220;;;:::o;10708:366::-;10850:3;10871:67;10935:2;10930:3;10871:67;:::i;:::-;10864:74;;10947:93;11036:3;10947:93;:::i;:::-;11065:2;11060:3;11056:12;11049:19;;10854:220;;;:::o;11080:118::-;11167:24;11185:5;11167:24;:::i;:::-;11162:3;11155:37;11145:53;;:::o;11204:112::-;11287:22;11303:5;11287:22;:::i;:::-;11282:3;11275:35;11265:51;;:::o;11322:222::-;11415:4;11453:2;11442:9;11438:18;11430:26;;11466:71;11534:1;11523:9;11519:17;11510:6;11466:71;:::i;:::-;11420:124;;;;:::o;11550:332::-;11671:4;11709:2;11698:9;11694:18;11686:26;;11722:71;11790:1;11779:9;11775:17;11766:6;11722:71;:::i;:::-;11803:72;11871:2;11860:9;11856:18;11847:6;11803:72;:::i;:::-;11676:206;;;;;:::o;11888:442::-;12037:4;12075:2;12064:9;12060:18;12052:26;;12088:71;12156:1;12145:9;12141:17;12132:6;12088:71;:::i;:::-;12169:72;12237:2;12226:9;12222:18;12213:6;12169:72;:::i;:::-;12251;12319:2;12308:9;12304:18;12295:6;12251:72;:::i;:::-;12042:288;;;;;;:::o;12336:799::-;12581:4;12619:3;12608:9;12604:19;12596:27;;12633:71;12701:1;12690:9;12686:17;12677:6;12633:71;:::i;:::-;12714:84;12794:2;12783:9;12779:18;12770:6;12714:84;:::i;:::-;12808:72;12876:2;12865:9;12861:18;12852:6;12808:72;:::i;:::-;12890;12958:2;12947:9;12943:18;12934:6;12890:72;:::i;:::-;12972:73;13040:3;13029:9;13025:19;13016:6;12972:73;:::i;:::-;13055;13123:3;13112:9;13108:19;13099:6;13055:73;:::i;:::-;12586:549;;;;;;;;;:::o;13141:332::-;13262:4;13300:2;13289:9;13285:18;13277:26;;13313:71;13381:1;13370:9;13366:17;13357:6;13313:71;:::i;:::-;13394:72;13462:2;13451:9;13447:18;13438:6;13394:72;:::i;:::-;13267:206;;;;;:::o;13479:807::-;13728:4;13766:3;13755:9;13751:19;13743:27;;13780:71;13848:1;13837:9;13833:17;13824:6;13780:71;:::i;:::-;13861:72;13929:2;13918:9;13914:18;13905:6;13861:72;:::i;:::-;13943:80;14019:2;14008:9;14004:18;13995:6;13943:80;:::i;:::-;14033;14109:2;14098:9;14094:18;14085:6;14033:80;:::i;:::-;14123:73;14191:3;14180:9;14176:19;14167:6;14123:73;:::i;:::-;14206;14274:3;14263:9;14259:19;14250:6;14206:73;:::i;:::-;13733:553;;;;;;;;;:::o;14292:210::-;14379:4;14417:2;14406:9;14402:18;14394:26;;14430:65;14492:1;14481:9;14477:17;14468:6;14430:65;:::i;:::-;14384:118;;;;:::o;14508:313::-;14621:4;14659:2;14648:9;14644:18;14636:26;;14708:9;14702:4;14698:20;14694:1;14683:9;14679:17;14672:47;14736:78;14809:4;14800:6;14736:78;:::i;:::-;14728:86;;14626:195;;;;:::o;14827:419::-;14993:4;15031:2;15020:9;15016:18;15008:26;;15080:9;15074:4;15070:20;15066:1;15055:9;15051:17;15044:47;15108:131;15234:4;15108:131;:::i;:::-;15100:139;;14998:248;;;:::o;15252:419::-;15418:4;15456:2;15445:9;15441:18;15433:26;;15505:9;15499:4;15495:20;15491:1;15480:9;15476:17;15469:47;15533:131;15659:4;15533:131;:::i;:::-;15525:139;;15423:248;;;:::o;15677:419::-;15843:4;15881:2;15870:9;15866:18;15858:26;;15930:9;15924:4;15920:20;15916:1;15905:9;15901:17;15894:47;15958:131;16084:4;15958:131;:::i;:::-;15950:139;;15848:248;;;:::o;16102:419::-;16268:4;16306:2;16295:9;16291:18;16283:26;;16355:9;16349:4;16345:20;16341:1;16330:9;16326:17;16319:47;16383:131;16509:4;16383:131;:::i;:::-;16375:139;;16273:248;;;:::o;16527:419::-;16693:4;16731:2;16720:9;16716:18;16708:26;;16780:9;16774:4;16770:20;16766:1;16755:9;16751:17;16744:47;16808:131;16934:4;16808:131;:::i;:::-;16800:139;;16698:248;;;:::o;16952:419::-;17118:4;17156:2;17145:9;17141:18;17133:26;;17205:9;17199:4;17195:20;17191:1;17180:9;17176:17;17169:47;17233:131;17359:4;17233:131;:::i;:::-;17225:139;;17123:248;;;:::o;17377:419::-;17543:4;17581:2;17570:9;17566:18;17558:26;;17630:9;17624:4;17620:20;17616:1;17605:9;17601:17;17594:47;17658:131;17784:4;17658:131;:::i;:::-;17650:139;;17548:248;;;:::o;17802:419::-;17968:4;18006:2;17995:9;17991:18;17983:26;;18055:9;18049:4;18045:20;18041:1;18030:9;18026:17;18019:47;18083:131;18209:4;18083:131;:::i;:::-;18075:139;;17973:248;;;:::o;18227:419::-;18393:4;18431:2;18420:9;18416:18;18408:26;;18480:9;18474:4;18470:20;18466:1;18455:9;18451:17;18444:47;18508:131;18634:4;18508:131;:::i;:::-;18500:139;;18398:248;;;:::o;18652:419::-;18818:4;18856:2;18845:9;18841:18;18833:26;;18905:9;18899:4;18895:20;18891:1;18880:9;18876:17;18869:47;18933:131;19059:4;18933:131;:::i;:::-;18925:139;;18823:248;;;:::o;19077:419::-;19243:4;19281:2;19270:9;19266:18;19258:26;;19330:9;19324:4;19320:20;19316:1;19305:9;19301:17;19294:47;19358:131;19484:4;19358:131;:::i;:::-;19350:139;;19248:248;;;:::o;19502:222::-;19595:4;19633:2;19622:9;19618:18;19610:26;;19646:71;19714:1;19703:9;19699:17;19690:6;19646:71;:::i;:::-;19600:124;;;;:::o;19730:831::-;19993:4;20031:3;20020:9;20016:19;20008:27;;20045:71;20113:1;20102:9;20098:17;20089:6;20045:71;:::i;:::-;20126:80;20202:2;20191:9;20187:18;20178:6;20126:80;:::i;:::-;20253:9;20247:4;20243:20;20238:2;20227:9;20223:18;20216:48;20281:108;20384:4;20375:6;20281:108;:::i;:::-;20273:116;;20399:72;20467:2;20456:9;20452:18;20443:6;20399:72;:::i;:::-;20481:73;20549:3;20538:9;20534:19;20525:6;20481:73;:::i;:::-;19998:563;;;;;;;;:::o;20567:214::-;20656:4;20694:2;20683:9;20679:18;20671:26;;20707:67;20771:1;20760:9;20756:17;20747:6;20707:67;:::i;:::-;20661:120;;;;:::o;20787:132::-;20854:4;20877:3;20869:11;;20907:4;20902:3;20898:14;20890:22;;20859:60;;;:::o;20925:114::-;20992:6;21026:5;21020:12;21010:22;;20999:40;;;:::o;21045:99::-;21097:6;21131:5;21125:12;21115:22;;21104:40;;;:::o;21150:113::-;21220:4;21252;21247:3;21243:14;21235:22;;21225:38;;;:::o;21269:184::-;21368:11;21402:6;21397:3;21390:19;21442:4;21437:3;21433:14;21418:29;;21380:73;;;;:::o;21459:169::-;21543:11;21577:6;21572:3;21565:19;21617:4;21612:3;21608:14;21593:29;;21555:73;;;;:::o;21634:305::-;21674:3;21693:20;21711:1;21693:20;:::i;:::-;21688:25;;21727:20;21745:1;21727:20;:::i;:::-;21722:25;;21881:1;21813:66;21809:74;21806:1;21803:81;21800:2;;;21887:18;;:::i;:::-;21800:2;21931:1;21928;21924:9;21917:16;;21678:261;;;;:::o;21945:185::-;21985:1;22002:20;22020:1;22002:20;:::i;:::-;21997:25;;22036:20;22054:1;22036:20;:::i;:::-;22031:25;;22075:1;22065:2;;22080:18;;:::i;:::-;22065:2;22122:1;22119;22115:9;22110:14;;21987:143;;;;:::o;22136:348::-;22176:7;22199:20;22217:1;22199:20;:::i;:::-;22194:25;;22233:20;22251:1;22233:20;:::i;:::-;22228:25;;22421:1;22353:66;22349:74;22346:1;22343:81;22338:1;22331:9;22324:17;22320:105;22317:2;;;22428:18;;:::i;:::-;22317:2;22476:1;22473;22469:9;22458:20;;22184:300;;;;:::o;22490:191::-;22530:4;22550:20;22568:1;22550:20;:::i;:::-;22545:25;;22584:20;22602:1;22584:20;:::i;:::-;22579:25;;22623:1;22620;22617:8;22614:2;;;22628:18;;:::i;:::-;22614:2;22673:1;22670;22666:9;22658:17;;22535:146;;;;:::o;22687:96::-;22724:7;22753:24;22771:5;22753:24;:::i;:::-;22742:35;;22732:51;;;:::o;22789:104::-;22834:7;22863:24;22881:5;22863:24;:::i;:::-;22852:35;;22842:51;;;:::o;22899:90::-;22933:7;22976:5;22969:13;22962:21;22951:32;;22941:48;;;:::o;22995:126::-;23032:7;23072:42;23065:5;23061:54;23050:65;;23040:81;;;:::o;23127:77::-;23164:7;23193:5;23182:16;;23172:32;;;:::o;23210:86::-;23245:7;23285:4;23278:5;23274:16;23263:27;;23253:43;;;:::o;23302:121::-;23360:9;23393:24;23411:5;23393:24;:::i;:::-;23380:37;;23370:53;;;:::o;23429:125::-;23491:9;23524:24;23542:5;23524:24;:::i;:::-;23511:37;;23501:53;;;:::o;23560:307::-;23628:1;23638:113;23652:6;23649:1;23646:13;23638:113;;;23737:1;23732:3;23728:11;23722:18;23718:1;23713:3;23709:11;23702:39;23674:2;23671:1;23667:10;23662:15;;23638:113;;;23769:6;23766:1;23763:13;23760:2;;;23849:1;23840:6;23835:3;23831:16;23824:27;23760:2;23609:258;;;;:::o;23873:320::-;23917:6;23954:1;23948:4;23944:12;23934:22;;24001:1;23995:4;23991:12;24022:18;24012:2;;24078:4;24070:6;24066:17;24056:27;;24012:2;24140;24132:6;24129:14;24109:18;24106:38;24103:2;;;24159:18;;:::i;:::-;24103:2;23924:269;;;;:::o;24199:233::-;24238:3;24261:24;24279:5;24261:24;:::i;:::-;24252:33;;24307:66;24300:5;24297:77;24294:2;;;24377:18;;:::i;:::-;24294:2;24424:1;24417:5;24413:13;24406:20;;24242:190;;;:::o;24438:180::-;24486:77;24483:1;24476:88;24583:4;24580:1;24573:15;24607:4;24604:1;24597:15;24624:180;24672:77;24669:1;24662:88;24769:4;24766:1;24759:15;24793:4;24790:1;24783:15;24810:180;24858:77;24855:1;24848:88;24955:4;24952:1;24945:15;24979:4;24976:1;24969:15;24996:102;25037:6;25088:2;25084:7;25079:2;25072:5;25068:14;25064:28;25054:38;;25044:54;;;:::o;25104:222::-;25244:34;25240:1;25232:6;25228:14;25221:58;25313:5;25308:2;25300:6;25296:15;25289:30;25210:116;:::o;25332:174::-;25472:26;25468:1;25460:6;25456:14;25449:50;25438:68;:::o;25512:162::-;25652:14;25648:1;25640:6;25636:14;25629:38;25618:56;:::o;25680:221::-;25820:34;25816:1;25808:6;25804:14;25797:58;25889:4;25884:2;25876:6;25872:15;25865:29;25786:115;:::o;25907:177::-;26047:29;26043:1;26035:6;26031:14;26024:53;26013:71;:::o;26090:220::-;26230:34;26226:1;26218:6;26214:14;26207:58;26299:3;26294:2;26286:6;26282:15;26275:28;26196:114;:::o;26316:182::-;26456:34;26452:1;26444:6;26440:14;26433:58;26422:76;:::o;26504:228::-;26644:34;26640:1;26632:6;26628:14;26621:58;26713:11;26708:2;26700:6;26696:15;26689:36;26610:122;:::o;26738:224::-;26878:34;26874:1;26866:6;26862:14;26855:58;26947:7;26942:2;26934:6;26930:15;26923:32;26844:118;:::o;26968:223::-;27108:34;27104:1;27096:6;27092:14;27085:58;27177:6;27172:2;27164:6;27160:15;27153:31;27074:117;:::o;27197:225::-;27337:34;27333:1;27325:6;27321:14;27314:58;27406:8;27401:2;27393:6;27389:15;27382:33;27303:119;:::o;27428:122::-;27501:24;27519:5;27501:24;:::i;:::-;27494:5;27491:35;27481:2;;27540:1;27537;27530:12;27481:2;27471:79;:::o;27556:138::-;27637:32;27663:5;27637:32;:::i;:::-;27630:5;27627:43;27617:2;;27684:1;27681;27674:12;27617:2;27607:87;:::o;27700:116::-;27770:21;27785:5;27770:21;:::i;:::-;27763:5;27760:32;27750:2;;27806:1;27803;27796:12;27750:2;27740:76;:::o;27822:122::-;27895:24;27913:5;27895:24;:::i;:::-;27888:5;27885:35;27875:2;;27934:1;27931;27924:12;27875:2;27865:79;:::o
Swarm Source
ipfs://6bf5a09f8e384f5dcca6da025370b186d70aa6f74cbd283b84c4265b348ee839
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.