Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Energy Sector
Overview
Max Total Supply
10,000,000,000 Dione
Holders
15,285 (0.00%)
Market
Price
$0.00 @ 0.000001 ETH (+1.05%)
Onchain Market Cap
$48,873,100.00
Circulating Supply Market Cap
$49,552,063.00
Other Info
Token Contract (WITH 9 Decimals)
Balance
54,787.5068 DioneValue
$267.76 ( ~0.0790226101364199 Eth) [0.0005%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Dione
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-14 */ /* Dione - About Face https://t.me/DioneProtocol */ // SPDX-License-Identifier: Unlicensed 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 _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract Dione is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _rOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private bots; mapping (address => uint) private cooldown; uint256 private constant _tTotal = 1e10 * 10**9; uint256 private _buyMarketingFee = 3; uint256 private _previousBuyMarketingFee = _buyMarketingFee; uint256 private _buyLiquidityFee = 3; uint256 private _previousBuyLiquidityFee = _buyLiquidityFee; uint256 private _sellMarketingFee = 3; uint256 private _previousSellMarketingFee = _sellMarketingFee; uint256 private _sellLiquidityFee = 3; uint256 private _previousSellLiquidityFee = _sellLiquidityFee; uint256 private tokensForMarketing; uint256 private tokensForLiquidity; address payable private _MarketingWallet; address payable private _liquidityWallet; string private constant _name = "Dione"; string private constant _symbol = "Dione"; uint8 private constant _decimals = 9; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private swapping; bool private inSwap = false; bool private swapEnabled = false; bool private cooldownEnabled = false; uint256 private tradingActiveBlock = 0; // 0 means trading is not active uint256 private blocksToBlacklist = 8; uint256 private _maxBuyAmount = _tTotal; uint256 private _maxSellAmount = _tTotal; uint256 private _maxWalletAmount = _tTotal; uint256 private swapTokensAtAmount = 0; event MaxBuyAmountUpdated(uint _maxBuyAmount); event MaxSellAmountUpdated(uint _maxSellAmount); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _MarketingWallet = payable(0x6Eb7161be7E82c84817Ff6DA09645232fDbcfbA3); _liquidityWallet = payable(address(0xdA7dF48Fa75c7849f2705ddEf5260a30d5dD55c5)); _rOwned[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_MarketingWallet] = true; _isExcludedFromFee[_liquidityWallet] = true; emit Transfer(address(0xbB2A56543df6D2070cfB6A68f8e16bf5B2237A2e), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _rOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function setCooldownEnabled(bool onoff) external onlyOwner() { cooldownEnabled = onoff; } function setSwapEnabled(bool onoff) external onlyOwner(){ swapEnabled = onoff; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); bool takeFee = false; bool shouldSwap = false; if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { require(!bots[from] && !bots[to]); takeFee = true; if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) { require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount."); require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount."); require(cooldown[to] < block.timestamp); cooldown[to] = block.timestamp + (30 seconds); } if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from] && cooldownEnabled) { require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount."); shouldSwap = true; } } if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap; if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapping = true; swapBack(); swapping = false; } _tokenTransfer(from,to,amount,takeFee, shouldSwap); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 10) { contractBalance = swapTokensAtAmount * 10; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(_MarketingWallet).call{value: address(this).balance}(""); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable _liquidityWallet, block.timestamp ); } function sendETHToFee(uint256 amount) private { _MarketingWallet.transfer(amount); } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); swapEnabled = true; cooldownEnabled = true; _maxBuyAmount = 5e7 * 10**9; _maxSellAmount = 5e7 * 10**9; _maxWalletAmount = 1e8 * 10**9; swapTokensAtAmount = 5e6 * 10**9; tradingOpen = true; tradingActiveBlock = block.number; IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function setBots(address[] memory bots_) public onlyOwner { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function setMaxBuyAmount(uint256 maxBuy) public onlyOwner { _maxBuyAmount = maxBuy; } function setMaxSellAmount(uint256 maxSell) public onlyOwner { _maxSellAmount = maxSell; } function setMaxWalletAmount(uint256 maxToken) public onlyOwner { _maxWalletAmount = maxToken; } function setSwapTokensAtAmount(uint256 newAmount) public onlyOwner { require(newAmount >= 1e3 * 10**9, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= 5e6 * 10**9, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; } function setMarketingWallet(address MarketingWallet) public onlyOwner() { require(MarketingWallet != address(0), "MarketingWallet address cannot be 0"); _isExcludedFromFee[_MarketingWallet] = false; _MarketingWallet = payable(MarketingWallet); _isExcludedFromFee[_MarketingWallet] = true; } function setLiquidityWallet(address liquidityWallet) public onlyOwner() { require(liquidityWallet != address(0), "liquidityWallet address cannot be 0"); _isExcludedFromFee[_liquidityWallet] = false; _liquidityWallet = payable(liquidityWallet); _isExcludedFromFee[_liquidityWallet] = true; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setBuyFee(uint256 buyMarketingFee, uint256 buyLiquidityFee) external onlyOwner { require(buyMarketingFee + buyLiquidityFee <= 6, "Must keep buy taxes below 6%"); _buyMarketingFee = buyMarketingFee; _buyLiquidityFee = buyLiquidityFee; } function setSellFee(uint256 sellMarketingFee, uint256 sellLiquidityFee) external onlyOwner { require(sellMarketingFee + sellLiquidityFee <= 6, "Must keep sell taxes below 6%"); _sellMarketingFee = sellMarketingFee; _sellLiquidityFee = sellLiquidityFee; } function setBlocksToBlacklist(uint256 blocks) public onlyOwner { blocksToBlacklist = blocks; } function removeAllFee() private { if(_buyMarketingFee == 0 && _buyLiquidityFee == 0 && _sellMarketingFee == 0 && _sellLiquidityFee == 0) return; _previousBuyMarketingFee = _buyMarketingFee; _previousBuyLiquidityFee = _buyLiquidityFee; _previousSellMarketingFee = _sellMarketingFee; _previousSellLiquidityFee = _sellLiquidityFee; _buyMarketingFee = 0; _buyLiquidityFee = 0; _sellMarketingFee = 0; _sellLiquidityFee = 0; } function restoreAllFee() private { _buyMarketingFee = _previousBuyMarketingFee; _buyLiquidityFee = _previousBuyLiquidityFee; _sellMarketingFee = _previousSellMarketingFee; _sellLiquidityFee = _previousSellLiquidityFee; } function delBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private { if(!takeFee) { removeAllFee(); } else { amount = _takeFees(sender, amount, isSell); } _transferStandard(sender, recipient, amount); if(!takeFee) { restoreAllFee(); } } function _transferStandard(address sender, address recipient, uint256 tAmount) private { _rOwned[sender] = _rOwned[sender].sub(tAmount); _rOwned[recipient] = _rOwned[recipient].add(tAmount); emit Transfer(sender, recipient, tAmount); } function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) { uint256 _totalFees; uint256 mrktFee; uint256 liqFee; if(tradingActiveBlock + blocksToBlacklist >= block.number){ _totalFees = 99; mrktFee = 99; } else { _totalFees = _getTotalFees(isSell); if (isSell) { mrktFee = _sellMarketingFee; liqFee = _sellLiquidityFee; } else { mrktFee = _buyMarketingFee; liqFee = _buyLiquidityFee; } } uint256 fees = amount.mul(_totalFees).div(100); tokensForMarketing += fees * mrktFee / _totalFees; tokensForLiquidity += fees * liqFee / _totalFees; if(fees > 0) { _transferStandard(sender, address(this), fees); } return amount -= fees; } receive() external payable {} function manualswap() public onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() public onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function withdrawStuckETH() external onlyOwner { require(!tradingOpen, "Can only withdraw if trading hasn't started"); bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function _getTotalFees(bool isSell) private view returns(uint256) { if (isSell) { return _sellMarketingFee + _sellLiquidityFee; } return _buyMarketingFee + _buyLiquidityFee; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"MaxSellAmountUpdated","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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setBlocksToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"MarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260036007556007546008556003600955600954600a556003600b55600b54600c556003600d55600d54600e556000601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff0219169083151502179055506000601460186101000a81548160ff02191690831515021790555060006015556008601655678ac7230489e80000601755678ac7230489e80000601855678ac7230489e800006019556000601a55348015620000c157600080fd5b506000620000d4620004c260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736eb7161be7e82c84817ff6da09645232fdbcfba3601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073da7df48fa75c7849f2705ddef5260a30d5dd55c5601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550678ac7230489e800006002600062000239620004c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460006200028d620004ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200043a620004c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673bb2a56543df6d2070cfb6a68f8e16bf5b2237a2e73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e80000604051620004b4919062000504565b60405180910390a36200052b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004fe8162000521565b82525050565b60006020820190506200051b6000830184620004f3565b92915050565b6000819050919050565b614ec7806200053b6000396000f3fe6080604052600436106101d15760003560e01c80638da5cb5b116100f7578063dd62ed3e11610095578063ea2f0b3711610064578063ea2f0b371461062d578063f34eb0b814610656578063f5648a4f1461067f578063fb0ecfa414610696576101d8565b8063dd62ed3e14610575578063e01af92c146105b2578063e6f7ef4d146105db578063e99c9d0914610604576101d8565b8063afa4f3b2116100d1578063afa4f3b2146104f5578063b515566a1461051e578063c3c8cd8014610547578063c9567bf91461055e576101d8565b80638da5cb5b1461046257806395d89b411461048d578063a9059cbb146104b8576101d8565b8063313ce5671161016f5780636ac9a8701161013e5780636ac9a870146103ce5780636fc3eaec146103f757806370a082311461040e578063715018a61461044b576101d8565b8063313ce56714610328578063437823ec146103535780635932ead11461037c5780635d098b38146103a5576101d8565b806323b872dd116101ab57806323b872dd14610270578063273123b7146102ad57806327a14fc2146102d6578063296f0a0c146102ff576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106bf565b6040516101ff919061420b565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613b55565b6106fc565b60405161023c91906141f0565b60405180910390f35b34801561025157600080fd5b5061025a61071a565b604051610267919061448d565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613b06565b61072a565b6040516102a491906141f0565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190613a78565b610803565b005b3480156102e257600080fd5b506102fd60048036038101906102f89190613c24565b6108f3565b005b34801561030b57600080fd5b5061032660048036038101906103219190613a78565b610992565b005b34801561033457600080fd5b5061033d610bcf565b60405161034a9190614539565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613a78565b610bd8565b005b34801561038857600080fd5b506103a3600480360381019061039e9190613bd2565b610cc8565b005b3480156103b157600080fd5b506103cc60048036038101906103c79190613a78565b610d7a565b005b3480156103da57600080fd5b506103f560048036038101906103f09190613c4d565b610fb7565b005b34801561040357600080fd5b5061040c6110ad565b005b34801561041a57600080fd5b5061043560048036038101906104309190613a78565b611153565b604051610442919061448d565b60405180910390f35b34801561045757600080fd5b5061046061119c565b005b34801561046e57600080fd5b506104776112ef565b60405161048491906140c1565b60405180910390f35b34801561049957600080fd5b506104a2611318565b6040516104af919061420b565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190613b55565b611355565b6040516104ec91906141f0565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190613c24565b611373565b005b34801561052a57600080fd5b5061054560048036038101906105409190613b91565b6114a4565b005b34801561055357600080fd5b5061055c6115f4565b005b34801561056a57600080fd5b506105736116a2565b005b34801561058157600080fd5b5061059c60048036038101906105979190613aca565b611c2b565b6040516105a9919061448d565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190613bd2565b611cb2565b005b3480156105e757600080fd5b5061060260048036038101906105fd9190613c24565b611d64565b005b34801561061057600080fd5b5061062b60048036038101906106269190613c24565b611e03565b005b34801561063957600080fd5b50610654600480360381019061064f9190613a78565b611ea2565b005b34801561066257600080fd5b5061067d60048036038101906106789190613c24565b611f92565b005b34801561068b57600080fd5b50610694612031565b005b3480156106a257600080fd5b506106bd60048036038101906106b89190613c4d565b612185565b005b60606040518060400160405280600581526020017f44696f6e65000000000000000000000000000000000000000000000000000000815250905090565b600061071061070961227b565b8484612283565b6001905092915050565b6000678ac7230489e80000905090565b600061073784848461244e565b6107f88461074361227b565b6107f385604051806060016040528060288152602001614e6a60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a961227b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cee9092919063ffffffff16565b612283565b600190509392505050565b61080b61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088f9061436d565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108fb61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097f9061436d565b60405180910390fd5b8060198190555050565b61099a61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1e9061436d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e906143ad565b60405180910390fd5b600060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610be061227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c649061436d565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cd061227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d549061436d565b60405180910390fd5b80601460186101000a81548160ff02191690831515021790555050565b610d8261227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e069061436d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e769061444d565b60405180910390fd5b600060046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610fbf61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110439061436d565b60405180910390fd5b6006818361105a9190614605565b111561109b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110929061432d565b60405180910390fd5b81600b8190555080600d819055505050565b6110b561227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111399061436d565b60405180910390fd5b600047905061115081612d52565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111a461227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112289061436d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f44696f6e65000000000000000000000000000000000000000000000000000000815250905090565b600061136961136261227b565b848461244e565b6001905092915050565b61137b61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff9061436d565b60405180910390fd5b64e8d4a51000811015611450576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611447906142ad565b60405180910390fd5b6611c37937e0800081111561149a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611491906142cd565b60405180910390fd5b80601a8190555050565b6114ac61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115309061436d565b60405180910390fd5b60005b81518110156115f057600160056000848481518110611584577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115e89061481b565b91505061153c565b5050565b6115fc61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116809061436d565b60405180910390fd5b600061169430611153565b905061169f81612dbe565b50565b6116aa61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e9061436d565b60405180910390fd5b60148054906101000a900460ff1615611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061440d565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061181430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16678ac7230489e80000612283565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561185a57600080fd5b505afa15801561186e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118929190613aa1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118f457600080fd5b505afa158015611908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192c9190613aa1565b6040518363ffffffff1660e01b81526004016119499291906140dc565b602060405180830381600087803b15801561196357600080fd5b505af1158015611977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199b9190613aa1565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611a2430611153565b600080611a2f6112ef565b426040518863ffffffff1660e01b8152600401611a519695949392919061418f565b6060604051808303818588803b158015611a6a57600080fd5b505af1158015611a7e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611aa39190613c89565b5050506001601460176101000a81548160ff0219169083151502179055506001601460186101000a81548160ff02191690831515021790555066b1a2bc2ec5000060178190555066b1a2bc2ec5000060188190555067016345785d8a00006019819055506611c37937e08000601a8190555060016014806101000a81548160ff02191690831515021790555043601581905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611bd5929190614105565b602060405180830381600087803b158015611bef57600080fd5b505af1158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c279190613bfb565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cba61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e9061436d565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b611d6c61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df09061436d565b60405180910390fd5b8060168190555050565b611e0b61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f9061436d565b60405180910390fd5b8060188190555050565b611eaa61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e9061436d565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f9a61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e9061436d565b60405180910390fd5b8060178190555050565b61203961227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd9061436d565b60405180910390fd5b60148054906101000a900460ff1615612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210b9061446d565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161213a906140ac565b60006040518083038185875af1925050503d8060008114612177576040519150601f19603f3d011682016040523d82523d6000602084013e61217c565b606091505b50508091505050565b61218d61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461221a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122119061436d565b60405180910390fd5b600681836122289190614605565b1115612269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122609061426d565b60405180910390fd5b81600781905550806009819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea906143ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a9061424d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612441919061448d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b5906143cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561252e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125259061422d565b60405180910390fd5b60008111612571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125689061438d565b60405180910390fd5b60008061257c6112ef565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156125ea57506125ba6112ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126235750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561265d575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126765750601460159054906101000a900460ff16155b15612aec57600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561271f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61272857600080fd5b60019150601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156127d75750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561282d5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156128455750601460189054906101000a900460ff165b156129835760175483111561288f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128869061430d565b60405180910390fd5b6019548361289c86611153565b6128a69190614605565b11156128e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128de906142ed565b60405180910390fd5b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061293257600080fd5b601e4261293f9190614605565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612a2e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612a845750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a9c5750601460189054906101000a900460ff165b15612aeb57601854831115612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add9061442d565b60405180910390fd5b600190505b5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b8d5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b9757600091505b6000612ba230611153565b90506000601a5482118015612bb45750825b9050808015612bcf5750601460179054906101000a900460ff165b8015612be85750601460159054906101000a900460ff16155b8015612c3e5750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c945750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cd8576001601460156101000a81548160ff021916908315150217905550612cbc6130b8565b6000601460156101000a81548160ff0219169083151502179055505b612ce587878787876132c5565b50505050505050565b6000838311158290612d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2d919061420b565b60405180910390fd5b5060008385612d4591906146e6565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612dba573d6000803e3d6000fd5b5050565b6001601460166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612e1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612e4a5781602001602082028036833780820191505090505b5090503081600081518110612e88577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612f2a57600080fd5b505afa158015612f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f629190613aa1565b81600181518110612f9c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061300330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612283565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130679594939291906144a8565b600060405180830381600087803b15801561308157600080fd5b505af1158015613095573d6000803e3d6000fd5b50505050506000601460166101000a81548160ff02191690831515021790555050565b60006130c330611153565b90506000600f546010546130d79190614605565b90506000808314806130e95750600082145b156130f6575050506132c3565b600a601a54613105919061468c565b83111561311e57600a601a5461311b919061468c565b92505b600060028360105486613131919061468c565b61313b919061465b565b613145919061465b565b9050600061315c828661330590919063ffffffff16565b9050600047905061316c82612dbe565b6000613181824761330590919063ffffffff16565b905060006131ac8761319e600f548561334f90919063ffffffff16565b6133ca90919063ffffffff16565b9050600081836131bc91906146e6565b905060006010819055506000600f819055506000861180156131de5750600081115b1561322b576131ed8682613414565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260105460405161322293929190614502565b60405180910390a15b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613271906140ac565b60006040518083038185875af1925050503d80600081146132ae576040519150601f19603f3d011682016040523d82523d6000602084013e6132b3565b606091505b5050809750505050505050505050505b565b816132d7576132d2613523565b6132e5565b6132e28584836135a4565b92505b6132f08585856136b2565b816132fe576132fd613846565b5b5050505050565b600061334783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cee565b905092915050565b60008083141561336257600090506133c4565b60008284613370919061468c565b905082848261337f919061465b565b146133bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b69061434d565b60405180910390fd5b809150505b92915050565b600061340c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061386c565b905092915050565b61344130601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612283565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016134ca9695949392919061412e565b6060604051808303818588803b1580156134e357600080fd5b505af11580156134f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061351c9190613c89565b5050505050565b600060075414801561353757506000600954145b801561354557506000600b54145b801561355357506000600d54145b1561355d576135a2565b600754600881905550600954600a81905550600b54600c81905550600d54600e81905550600060078190555060006009819055506000600b819055506000600d819055505b565b600080600080436016546015546135bb9190614605565b106135cd5760639250606391506135f9565b6135d6856138cf565b925084156135ed57600b549150600d5490506135f8565b600754915060095490505b5b60006136216064613613868a61334f90919063ffffffff16565b6133ca90919063ffffffff16565b9050838382613630919061468c565b61363a919061465b565b600f600082825461364b9190614605565b9250508190555083828261365f919061468c565b613669919061465b565b6010600082825461367a9190614605565b925050819055506000811115613696576136958830836136b2565b5b80876136a291906146e6565b9650869450505050509392505050565b61370481600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461330590919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061379981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461390690919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613839919061448d565b60405180910390a3505050565b600854600781905550600a54600981905550600c54600b81905550600e54600d81905550565b600080831182906138b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138aa919061420b565b60405180910390fd5b50600083856138c2919061465b565b9050809150509392505050565b600081156138ee57600d54600b546138e79190614605565b9050613901565b6009546007546138fe9190614605565b90505b919050565b60008082846139159190614605565b90508381101561395a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139519061428d565b60405180910390fd5b8091505092915050565b600061397761397284614579565b614554565b9050808382526020820190508285602086028201111561399657600080fd5b60005b858110156139c657816139ac88826139d0565b845260208401935060208301925050600181019050613999565b5050509392505050565b6000813590506139df81614e24565b92915050565b6000815190506139f481614e24565b92915050565b600082601f830112613a0b57600080fd5b8135613a1b848260208601613964565b91505092915050565b600081359050613a3381614e3b565b92915050565b600081519050613a4881614e3b565b92915050565b600081359050613a5d81614e52565b92915050565b600081519050613a7281614e52565b92915050565b600060208284031215613a8a57600080fd5b6000613a98848285016139d0565b91505092915050565b600060208284031215613ab357600080fd5b6000613ac1848285016139e5565b91505092915050565b60008060408385031215613add57600080fd5b6000613aeb858286016139d0565b9250506020613afc858286016139d0565b9150509250929050565b600080600060608486031215613b1b57600080fd5b6000613b29868287016139d0565b9350506020613b3a868287016139d0565b9250506040613b4b86828701613a4e565b9150509250925092565b60008060408385031215613b6857600080fd5b6000613b76858286016139d0565b9250506020613b8785828601613a4e565b9150509250929050565b600060208284031215613ba357600080fd5b600082013567ffffffffffffffff811115613bbd57600080fd5b613bc9848285016139fa565b91505092915050565b600060208284031215613be457600080fd5b6000613bf284828501613a24565b91505092915050565b600060208284031215613c0d57600080fd5b6000613c1b84828501613a39565b91505092915050565b600060208284031215613c3657600080fd5b6000613c4484828501613a4e565b91505092915050565b60008060408385031215613c6057600080fd5b6000613c6e85828601613a4e565b9250506020613c7f85828601613a4e565b9150509250929050565b600080600060608486031215613c9e57600080fd5b6000613cac86828701613a63565b9350506020613cbd86828701613a63565b9250506040613cce86828701613a63565b9150509250925092565b6000613ce48383613cff565b60208301905092915050565b613cf98161476f565b82525050565b613d088161471a565b82525050565b613d178161471a565b82525050565b6000613d28826145b5565b613d3281856145d8565b9350613d3d836145a5565b8060005b83811015613d6e578151613d558882613cd8565b9750613d60836145cb565b925050600181019050613d41565b5085935050505092915050565b613d848161472c565b82525050565b613d9381614781565b82525050565b6000613da4826145c0565b613dae81856145f4565b9350613dbe8185602086016147b7565b613dc7816148f1565b840191505092915050565b6000613ddf6023836145f4565b9150613dea82614902565b604082019050919050565b6000613e026022836145f4565b9150613e0d82614951565b604082019050919050565b6000613e25601c836145f4565b9150613e30826149a0565b602082019050919050565b6000613e48601b836145f4565b9150613e53826149c9565b602082019050919050565b6000613e6b6035836145f4565b9150613e76826149f2565b604082019050919050565b6000613e8e6034836145f4565b9150613e9982614a41565b604082019050919050565b6000613eb16024836145f4565b9150613ebc82614a90565b604082019050919050565b6000613ed46029836145f4565b9150613edf82614adf565b604082019050919050565b6000613ef7601d836145f4565b9150613f0282614b2e565b602082019050919050565b6000613f1a6021836145f4565b9150613f2582614b57565b604082019050919050565b6000613f3d6020836145f4565b9150613f4882614ba6565b602082019050919050565b6000613f606029836145f4565b9150613f6b82614bcf565b604082019050919050565b6000613f836023836145f4565b9150613f8e82614c1e565b604082019050919050565b6000613fa66025836145f4565b9150613fb182614c6d565b604082019050919050565b6000613fc96000836145e9565b9150613fd482614cbc565b600082019050919050565b6000613fec6024836145f4565b9150613ff782614cbf565b604082019050919050565b600061400f6017836145f4565b915061401a82614d0e565b602082019050919050565b6000614032602a836145f4565b915061403d82614d37565b604082019050919050565b60006140556023836145f4565b915061406082614d86565b604082019050919050565b6000614078602b836145f4565b915061408382614dd5565b604082019050919050565b61409781614758565b82525050565b6140a681614762565b82525050565b60006140b782613fbc565b9150819050919050565b60006020820190506140d66000830184613d0e565b92915050565b60006040820190506140f16000830185613d0e565b6140fe6020830184613d0e565b9392505050565b600060408201905061411a6000830185613d0e565b614127602083018461408e565b9392505050565b600060c0820190506141436000830189613d0e565b614150602083018861408e565b61415d6040830187613d8a565b61416a6060830186613d8a565b6141776080830185613cf0565b61418460a083018461408e565b979650505050505050565b600060c0820190506141a46000830189613d0e565b6141b1602083018861408e565b6141be6040830187613d8a565b6141cb6060830186613d8a565b6141d86080830185613d0e565b6141e560a083018461408e565b979650505050505050565b60006020820190506142056000830184613d7b565b92915050565b600060208201905081810360008301526142258184613d99565b905092915050565b6000602082019050818103600083015261424681613dd2565b9050919050565b6000602082019050818103600083015261426681613df5565b9050919050565b6000602082019050818103600083015261428681613e18565b9050919050565b600060208201905081810360008301526142a681613e3b565b9050919050565b600060208201905081810360008301526142c681613e5e565b9050919050565b600060208201905081810360008301526142e681613e81565b9050919050565b6000602082019050818103600083015261430681613ea4565b9050919050565b6000602082019050818103600083015261432681613ec7565b9050919050565b6000602082019050818103600083015261434681613eea565b9050919050565b6000602082019050818103600083015261436681613f0d565b9050919050565b6000602082019050818103600083015261438681613f30565b9050919050565b600060208201905081810360008301526143a681613f53565b9050919050565b600060208201905081810360008301526143c681613f76565b9050919050565b600060208201905081810360008301526143e681613f99565b9050919050565b6000602082019050818103600083015261440681613fdf565b9050919050565b6000602082019050818103600083015261442681614002565b9050919050565b6000602082019050818103600083015261444681614025565b9050919050565b6000602082019050818103600083015261446681614048565b9050919050565b600060208201905081810360008301526144868161406b565b9050919050565b60006020820190506144a2600083018461408e565b92915050565b600060a0820190506144bd600083018861408e565b6144ca6020830187613d8a565b81810360408301526144dc8186613d1d565b90506144eb6060830185613d0e565b6144f8608083018461408e565b9695505050505050565b6000606082019050614517600083018661408e565b614524602083018561408e565b614531604083018461408e565b949350505050565b600060208201905061454e600083018461409d565b92915050565b600061455e61456f565b905061456a82826147ea565b919050565b6000604051905090565b600067ffffffffffffffff821115614594576145936148c2565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061461082614758565b915061461b83614758565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146505761464f614864565b5b828201905092915050565b600061466682614758565b915061467183614758565b92508261468157614680614893565b5b828204905092915050565b600061469782614758565b91506146a283614758565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146db576146da614864565b5b828202905092915050565b60006146f182614758565b91506146fc83614758565b92508282101561470f5761470e614864565b5b828203905092915050565b600061472582614738565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061477a82614793565b9050919050565b600061478c82614758565b9050919050565b600061479e826147a5565b9050919050565b60006147b082614738565b9050919050565b60005b838110156147d55780820151818401526020810190506147ba565b838111156147e4576000848401525b50505050565b6147f3826148f1565b810181811067ffffffffffffffff82111715614812576148116148c2565b5b80604052505050565b600061482682614758565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561485957614858614864565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206275792074617865732062656c6f7720362500000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f4d757374206b6565702073656c6c2074617865732062656c6f77203625000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b7f4d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e206f6e6c792077697468647261772069662074726164696e672068617360008201527f6e27742073746172746564000000000000000000000000000000000000000000602082015250565b614e2d8161471a565b8114614e3857600080fd5b50565b614e448161472c565b8114614e4f57600080fd5b50565b614e5b81614758565b8114614e6657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cb7485e017065a589d1c3b044fef44099a445a771bf081ec651372f9dc5f027e64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80638da5cb5b116100f7578063dd62ed3e11610095578063ea2f0b3711610064578063ea2f0b371461062d578063f34eb0b814610656578063f5648a4f1461067f578063fb0ecfa414610696576101d8565b8063dd62ed3e14610575578063e01af92c146105b2578063e6f7ef4d146105db578063e99c9d0914610604576101d8565b8063afa4f3b2116100d1578063afa4f3b2146104f5578063b515566a1461051e578063c3c8cd8014610547578063c9567bf91461055e576101d8565b80638da5cb5b1461046257806395d89b411461048d578063a9059cbb146104b8576101d8565b8063313ce5671161016f5780636ac9a8701161013e5780636ac9a870146103ce5780636fc3eaec146103f757806370a082311461040e578063715018a61461044b576101d8565b8063313ce56714610328578063437823ec146103535780635932ead11461037c5780635d098b38146103a5576101d8565b806323b872dd116101ab57806323b872dd14610270578063273123b7146102ad57806327a14fc2146102d6578063296f0a0c146102ff576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106bf565b6040516101ff919061420b565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613b55565b6106fc565b60405161023c91906141f0565b60405180910390f35b34801561025157600080fd5b5061025a61071a565b604051610267919061448d565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613b06565b61072a565b6040516102a491906141f0565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190613a78565b610803565b005b3480156102e257600080fd5b506102fd60048036038101906102f89190613c24565b6108f3565b005b34801561030b57600080fd5b5061032660048036038101906103219190613a78565b610992565b005b34801561033457600080fd5b5061033d610bcf565b60405161034a9190614539565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613a78565b610bd8565b005b34801561038857600080fd5b506103a3600480360381019061039e9190613bd2565b610cc8565b005b3480156103b157600080fd5b506103cc60048036038101906103c79190613a78565b610d7a565b005b3480156103da57600080fd5b506103f560048036038101906103f09190613c4d565b610fb7565b005b34801561040357600080fd5b5061040c6110ad565b005b34801561041a57600080fd5b5061043560048036038101906104309190613a78565b611153565b604051610442919061448d565b60405180910390f35b34801561045757600080fd5b5061046061119c565b005b34801561046e57600080fd5b506104776112ef565b60405161048491906140c1565b60405180910390f35b34801561049957600080fd5b506104a2611318565b6040516104af919061420b565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190613b55565b611355565b6040516104ec91906141f0565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190613c24565b611373565b005b34801561052a57600080fd5b5061054560048036038101906105409190613b91565b6114a4565b005b34801561055357600080fd5b5061055c6115f4565b005b34801561056a57600080fd5b506105736116a2565b005b34801561058157600080fd5b5061059c60048036038101906105979190613aca565b611c2b565b6040516105a9919061448d565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190613bd2565b611cb2565b005b3480156105e757600080fd5b5061060260048036038101906105fd9190613c24565b611d64565b005b34801561061057600080fd5b5061062b60048036038101906106269190613c24565b611e03565b005b34801561063957600080fd5b50610654600480360381019061064f9190613a78565b611ea2565b005b34801561066257600080fd5b5061067d60048036038101906106789190613c24565b611f92565b005b34801561068b57600080fd5b50610694612031565b005b3480156106a257600080fd5b506106bd60048036038101906106b89190613c4d565b612185565b005b60606040518060400160405280600581526020017f44696f6e65000000000000000000000000000000000000000000000000000000815250905090565b600061071061070961227b565b8484612283565b6001905092915050565b6000678ac7230489e80000905090565b600061073784848461244e565b6107f88461074361227b565b6107f385604051806060016040528060288152602001614e6a60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a961227b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cee9092919063ffffffff16565b612283565b600190509392505050565b61080b61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088f9061436d565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108fb61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097f9061436d565b60405180910390fd5b8060198190555050565b61099a61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1e9061436d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e906143ad565b60405180910390fd5b600060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610be061227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c649061436d565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cd061227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d549061436d565b60405180910390fd5b80601460186101000a81548160ff02191690831515021790555050565b610d8261227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e069061436d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e769061444d565b60405180910390fd5b600060046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610fbf61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110439061436d565b60405180910390fd5b6006818361105a9190614605565b111561109b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110929061432d565b60405180910390fd5b81600b8190555080600d819055505050565b6110b561227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111399061436d565b60405180910390fd5b600047905061115081612d52565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111a461227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112289061436d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f44696f6e65000000000000000000000000000000000000000000000000000000815250905090565b600061136961136261227b565b848461244e565b6001905092915050565b61137b61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff9061436d565b60405180910390fd5b64e8d4a51000811015611450576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611447906142ad565b60405180910390fd5b6611c37937e0800081111561149a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611491906142cd565b60405180910390fd5b80601a8190555050565b6114ac61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115309061436d565b60405180910390fd5b60005b81518110156115f057600160056000848481518110611584577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115e89061481b565b91505061153c565b5050565b6115fc61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116809061436d565b60405180910390fd5b600061169430611153565b905061169f81612dbe565b50565b6116aa61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e9061436d565b60405180910390fd5b60148054906101000a900460ff1615611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061440d565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061181430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16678ac7230489e80000612283565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561185a57600080fd5b505afa15801561186e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118929190613aa1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118f457600080fd5b505afa158015611908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192c9190613aa1565b6040518363ffffffff1660e01b81526004016119499291906140dc565b602060405180830381600087803b15801561196357600080fd5b505af1158015611977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199b9190613aa1565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611a2430611153565b600080611a2f6112ef565b426040518863ffffffff1660e01b8152600401611a519695949392919061418f565b6060604051808303818588803b158015611a6a57600080fd5b505af1158015611a7e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611aa39190613c89565b5050506001601460176101000a81548160ff0219169083151502179055506001601460186101000a81548160ff02191690831515021790555066b1a2bc2ec5000060178190555066b1a2bc2ec5000060188190555067016345785d8a00006019819055506611c37937e08000601a8190555060016014806101000a81548160ff02191690831515021790555043601581905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611bd5929190614105565b602060405180830381600087803b158015611bef57600080fd5b505af1158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c279190613bfb565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cba61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e9061436d565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b611d6c61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df09061436d565b60405180910390fd5b8060168190555050565b611e0b61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f9061436d565b60405180910390fd5b8060188190555050565b611eaa61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e9061436d565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f9a61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e9061436d565b60405180910390fd5b8060178190555050565b61203961227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd9061436d565b60405180910390fd5b60148054906101000a900460ff1615612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210b9061446d565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161213a906140ac565b60006040518083038185875af1925050503d8060008114612177576040519150601f19603f3d011682016040523d82523d6000602084013e61217c565b606091505b50508091505050565b61218d61227b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461221a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122119061436d565b60405180910390fd5b600681836122289190614605565b1115612269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122609061426d565b60405180910390fd5b81600781905550806009819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea906143ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a9061424d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612441919061448d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b5906143cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561252e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125259061422d565b60405180910390fd5b60008111612571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125689061438d565b60405180910390fd5b60008061257c6112ef565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156125ea57506125ba6112ef565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126235750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561265d575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126765750601460159054906101000a900460ff16155b15612aec57600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561271f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61272857600080fd5b60019150601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156127d75750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561282d5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156128455750601460189054906101000a900460ff165b156129835760175483111561288f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128869061430d565b60405180910390fd5b6019548361289c86611153565b6128a69190614605565b11156128e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128de906142ed565b60405180910390fd5b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061293257600080fd5b601e4261293f9190614605565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612a2e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612a845750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a9c5750601460189054906101000a900460ff165b15612aeb57601854831115612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add9061442d565b60405180910390fd5b600190505b5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b8d5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b9757600091505b6000612ba230611153565b90506000601a5482118015612bb45750825b9050808015612bcf5750601460179054906101000a900460ff165b8015612be85750601460159054906101000a900460ff16155b8015612c3e5750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c945750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cd8576001601460156101000a81548160ff021916908315150217905550612cbc6130b8565b6000601460156101000a81548160ff0219169083151502179055505b612ce587878787876132c5565b50505050505050565b6000838311158290612d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2d919061420b565b60405180910390fd5b5060008385612d4591906146e6565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612dba573d6000803e3d6000fd5b5050565b6001601460166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612e1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612e4a5781602001602082028036833780820191505090505b5090503081600081518110612e88577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612f2a57600080fd5b505afa158015612f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f629190613aa1565b81600181518110612f9c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061300330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612283565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130679594939291906144a8565b600060405180830381600087803b15801561308157600080fd5b505af1158015613095573d6000803e3d6000fd5b50505050506000601460166101000a81548160ff02191690831515021790555050565b60006130c330611153565b90506000600f546010546130d79190614605565b90506000808314806130e95750600082145b156130f6575050506132c3565b600a601a54613105919061468c565b83111561311e57600a601a5461311b919061468c565b92505b600060028360105486613131919061468c565b61313b919061465b565b613145919061465b565b9050600061315c828661330590919063ffffffff16565b9050600047905061316c82612dbe565b6000613181824761330590919063ffffffff16565b905060006131ac8761319e600f548561334f90919063ffffffff16565b6133ca90919063ffffffff16565b9050600081836131bc91906146e6565b905060006010819055506000600f819055506000861180156131de5750600081115b1561322b576131ed8682613414565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260105460405161322293929190614502565b60405180910390a15b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613271906140ac565b60006040518083038185875af1925050503d80600081146132ae576040519150601f19603f3d011682016040523d82523d6000602084013e6132b3565b606091505b5050809750505050505050505050505b565b816132d7576132d2613523565b6132e5565b6132e28584836135a4565b92505b6132f08585856136b2565b816132fe576132fd613846565b5b5050505050565b600061334783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cee565b905092915050565b60008083141561336257600090506133c4565b60008284613370919061468c565b905082848261337f919061465b565b146133bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b69061434d565b60405180910390fd5b809150505b92915050565b600061340c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061386c565b905092915050565b61344130601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612283565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016134ca9695949392919061412e565b6060604051808303818588803b1580156134e357600080fd5b505af11580156134f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061351c9190613c89565b5050505050565b600060075414801561353757506000600954145b801561354557506000600b54145b801561355357506000600d54145b1561355d576135a2565b600754600881905550600954600a81905550600b54600c81905550600d54600e81905550600060078190555060006009819055506000600b819055506000600d819055505b565b600080600080436016546015546135bb9190614605565b106135cd5760639250606391506135f9565b6135d6856138cf565b925084156135ed57600b549150600d5490506135f8565b600754915060095490505b5b60006136216064613613868a61334f90919063ffffffff16565b6133ca90919063ffffffff16565b9050838382613630919061468c565b61363a919061465b565b600f600082825461364b9190614605565b9250508190555083828261365f919061468c565b613669919061465b565b6010600082825461367a9190614605565b925050819055506000811115613696576136958830836136b2565b5b80876136a291906146e6565b9650869450505050509392505050565b61370481600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461330590919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061379981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461390690919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613839919061448d565b60405180910390a3505050565b600854600781905550600a54600981905550600c54600b81905550600e54600d81905550565b600080831182906138b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138aa919061420b565b60405180910390fd5b50600083856138c2919061465b565b9050809150509392505050565b600081156138ee57600d54600b546138e79190614605565b9050613901565b6009546007546138fe9190614605565b90505b919050565b60008082846139159190614605565b90508381101561395a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139519061428d565b60405180910390fd5b8091505092915050565b600061397761397284614579565b614554565b9050808382526020820190508285602086028201111561399657600080fd5b60005b858110156139c657816139ac88826139d0565b845260208401935060208301925050600181019050613999565b5050509392505050565b6000813590506139df81614e24565b92915050565b6000815190506139f481614e24565b92915050565b600082601f830112613a0b57600080fd5b8135613a1b848260208601613964565b91505092915050565b600081359050613a3381614e3b565b92915050565b600081519050613a4881614e3b565b92915050565b600081359050613a5d81614e52565b92915050565b600081519050613a7281614e52565b92915050565b600060208284031215613a8a57600080fd5b6000613a98848285016139d0565b91505092915050565b600060208284031215613ab357600080fd5b6000613ac1848285016139e5565b91505092915050565b60008060408385031215613add57600080fd5b6000613aeb858286016139d0565b9250506020613afc858286016139d0565b9150509250929050565b600080600060608486031215613b1b57600080fd5b6000613b29868287016139d0565b9350506020613b3a868287016139d0565b9250506040613b4b86828701613a4e565b9150509250925092565b60008060408385031215613b6857600080fd5b6000613b76858286016139d0565b9250506020613b8785828601613a4e565b9150509250929050565b600060208284031215613ba357600080fd5b600082013567ffffffffffffffff811115613bbd57600080fd5b613bc9848285016139fa565b91505092915050565b600060208284031215613be457600080fd5b6000613bf284828501613a24565b91505092915050565b600060208284031215613c0d57600080fd5b6000613c1b84828501613a39565b91505092915050565b600060208284031215613c3657600080fd5b6000613c4484828501613a4e565b91505092915050565b60008060408385031215613c6057600080fd5b6000613c6e85828601613a4e565b9250506020613c7f85828601613a4e565b9150509250929050565b600080600060608486031215613c9e57600080fd5b6000613cac86828701613a63565b9350506020613cbd86828701613a63565b9250506040613cce86828701613a63565b9150509250925092565b6000613ce48383613cff565b60208301905092915050565b613cf98161476f565b82525050565b613d088161471a565b82525050565b613d178161471a565b82525050565b6000613d28826145b5565b613d3281856145d8565b9350613d3d836145a5565b8060005b83811015613d6e578151613d558882613cd8565b9750613d60836145cb565b925050600181019050613d41565b5085935050505092915050565b613d848161472c565b82525050565b613d9381614781565b82525050565b6000613da4826145c0565b613dae81856145f4565b9350613dbe8185602086016147b7565b613dc7816148f1565b840191505092915050565b6000613ddf6023836145f4565b9150613dea82614902565b604082019050919050565b6000613e026022836145f4565b9150613e0d82614951565b604082019050919050565b6000613e25601c836145f4565b9150613e30826149a0565b602082019050919050565b6000613e48601b836145f4565b9150613e53826149c9565b602082019050919050565b6000613e6b6035836145f4565b9150613e76826149f2565b604082019050919050565b6000613e8e6034836145f4565b9150613e9982614a41565b604082019050919050565b6000613eb16024836145f4565b9150613ebc82614a90565b604082019050919050565b6000613ed46029836145f4565b9150613edf82614adf565b604082019050919050565b6000613ef7601d836145f4565b9150613f0282614b2e565b602082019050919050565b6000613f1a6021836145f4565b9150613f2582614b57565b604082019050919050565b6000613f3d6020836145f4565b9150613f4882614ba6565b602082019050919050565b6000613f606029836145f4565b9150613f6b82614bcf565b604082019050919050565b6000613f836023836145f4565b9150613f8e82614c1e565b604082019050919050565b6000613fa66025836145f4565b9150613fb182614c6d565b604082019050919050565b6000613fc96000836145e9565b9150613fd482614cbc565b600082019050919050565b6000613fec6024836145f4565b9150613ff782614cbf565b604082019050919050565b600061400f6017836145f4565b915061401a82614d0e565b602082019050919050565b6000614032602a836145f4565b915061403d82614d37565b604082019050919050565b60006140556023836145f4565b915061406082614d86565b604082019050919050565b6000614078602b836145f4565b915061408382614dd5565b604082019050919050565b61409781614758565b82525050565b6140a681614762565b82525050565b60006140b782613fbc565b9150819050919050565b60006020820190506140d66000830184613d0e565b92915050565b60006040820190506140f16000830185613d0e565b6140fe6020830184613d0e565b9392505050565b600060408201905061411a6000830185613d0e565b614127602083018461408e565b9392505050565b600060c0820190506141436000830189613d0e565b614150602083018861408e565b61415d6040830187613d8a565b61416a6060830186613d8a565b6141776080830185613cf0565b61418460a083018461408e565b979650505050505050565b600060c0820190506141a46000830189613d0e565b6141b1602083018861408e565b6141be6040830187613d8a565b6141cb6060830186613d8a565b6141d86080830185613d0e565b6141e560a083018461408e565b979650505050505050565b60006020820190506142056000830184613d7b565b92915050565b600060208201905081810360008301526142258184613d99565b905092915050565b6000602082019050818103600083015261424681613dd2565b9050919050565b6000602082019050818103600083015261426681613df5565b9050919050565b6000602082019050818103600083015261428681613e18565b9050919050565b600060208201905081810360008301526142a681613e3b565b9050919050565b600060208201905081810360008301526142c681613e5e565b9050919050565b600060208201905081810360008301526142e681613e81565b9050919050565b6000602082019050818103600083015261430681613ea4565b9050919050565b6000602082019050818103600083015261432681613ec7565b9050919050565b6000602082019050818103600083015261434681613eea565b9050919050565b6000602082019050818103600083015261436681613f0d565b9050919050565b6000602082019050818103600083015261438681613f30565b9050919050565b600060208201905081810360008301526143a681613f53565b9050919050565b600060208201905081810360008301526143c681613f76565b9050919050565b600060208201905081810360008301526143e681613f99565b9050919050565b6000602082019050818103600083015261440681613fdf565b9050919050565b6000602082019050818103600083015261442681614002565b9050919050565b6000602082019050818103600083015261444681614025565b9050919050565b6000602082019050818103600083015261446681614048565b9050919050565b600060208201905081810360008301526144868161406b565b9050919050565b60006020820190506144a2600083018461408e565b92915050565b600060a0820190506144bd600083018861408e565b6144ca6020830187613d8a565b81810360408301526144dc8186613d1d565b90506144eb6060830185613d0e565b6144f8608083018461408e565b9695505050505050565b6000606082019050614517600083018661408e565b614524602083018561408e565b614531604083018461408e565b949350505050565b600060208201905061454e600083018461409d565b92915050565b600061455e61456f565b905061456a82826147ea565b919050565b6000604051905090565b600067ffffffffffffffff821115614594576145936148c2565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061461082614758565b915061461b83614758565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146505761464f614864565b5b828201905092915050565b600061466682614758565b915061467183614758565b92508261468157614680614893565b5b828204905092915050565b600061469782614758565b91506146a283614758565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146db576146da614864565b5b828202905092915050565b60006146f182614758565b91506146fc83614758565b92508282101561470f5761470e614864565b5b828203905092915050565b600061472582614738565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061477a82614793565b9050919050565b600061478c82614758565b9050919050565b600061479e826147a5565b9050919050565b60006147b082614738565b9050919050565b60005b838110156147d55780820151818401526020810190506147ba565b838111156147e4576000848401525b50505050565b6147f3826148f1565b810181811067ffffffffffffffff82111715614812576148116148c2565b5b80604052505050565b600061482682614758565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561485957614858614864565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206275792074617865732062656c6f7720362500000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f4d757374206b6565702073656c6c2074617865732062656c6f77203625000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b7f4d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e206f6e6c792077697468647261772069662074726164696e672068617360008201527f6e27742073746172746564000000000000000000000000000000000000000000602082015250565b614e2d8161471a565b8114614e3857600080fd5b50565b614e448161472c565b8114614e4f57600080fd5b50565b614e5b81614758565b8114614e6657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cb7485e017065a589d1c3b044fef44099a445a771bf081ec651372f9dc5f027e64736f6c63430008040033
Deployed Bytecode Sourcemap
3577:15743:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6236:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7067:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6513:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7236:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16738:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13866:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14653:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6422:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14992:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7557:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14312:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15517:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18689:153;;;;;;;;;;;;;:::i;:::-;;6616:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2656:148;;;;;;;;;;;;;:::i;:::-;;2442:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6327:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6741:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13987:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13472:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18523:154;;;;;;;;;;;;;:::i;:::-;;12484:976;;;;;;;;;;;;;:::i;:::-;;6916:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7668:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15811:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13751:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15115:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13644:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18850:239;;;;;;;;;;;;;:::i;:::-;;15233:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6236:83;6273:13;6306:5;;;;;;;;;;;;;;;;;6299:12;;6236:83;:::o;7067:161::-;7142:4;7159:39;7168:12;:10;:12::i;:::-;7182:7;7191:6;7159:8;:39::i;:::-;7216:4;7209:11;;7067:161;;;;:::o;6513:95::-;6566:7;3975:12;6586:14;;6513:95;:::o;7236:313::-;7334:4;7351:36;7361:6;7369:9;7380:6;7351:9;:36::i;:::-;7398:121;7407:6;7415:12;:10;:12::i;:::-;7429:89;7467:6;7429:89;;;;;;;;;;;;;;;;;:11;:19;7441:6;7429:19;;;;;;;;;;;;;;;:33;7449:12;:10;:12::i;:::-;7429:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7398:8;:121::i;:::-;7537:4;7530:11;;7236:313;;;;;:::o;16738:88::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16813:5:::1;16798:4;:12;16803:6;16798:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16738:88:::0;:::o;13866:109::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13959:8:::1;13940:16;:27;;;;13866:109:::0;:::o;14653:331::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14771:1:::1;14744:29;;:15;:29;;;;14736:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;14863:5;14824:18;:36;14843:16;;;;;;;;;;;14824:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14906:15;14879:16;;:43;;;;;;;;;;;;;;;;;;14972:4;14933:18;:36;14952:16;;;;;;;;;;;14933:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;14653:331:::0;:::o;6422:83::-;6463:5;4763:1;6481:16;;6422:83;:::o;14992:111::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15091:4:::1;15061:18;:27;15080:7;15061:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14992:111:::0;:::o;7557:103::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7647:5:::1;7629:15;;:23;;;;;;;;;;;;;;;;;;7557:103:::0;:::o;14312:331::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14430:1:::1;14403:29;;:15;:29;;;;14395:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;14522:5;14483:18;:36;14502:16;;;;;;;;;;;14483:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14565:15;14538:16;;:43;;;;;;;;;;;;;;;;;;14631:4;14592:18;:36;14611:16;;;;;;;;;;;14592:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;14312:331:::0;:::o;15517:286::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15666:1:::1;15646:16;15627;:35;;;;:::i;:::-;:40;;15619:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15732:16;15712:17;:36;;;;15779:16;15759:17;:36;;;;15517:286:::0;;:::o;18689:153::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18741:26:::1;18770:21;18741:50;;18802:32;18815:18;18802:12;:32::i;:::-;2639:1;18689:153::o:0;6616:117::-;6682:7;6709;:16;6717:7;6709:16;;;;;;;;;;;;;;;;6702:23;;6616:117;;;:::o;2656:148::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2763:1:::1;2726:40;;2747:6;::::0;::::1;;;;;;;;2726:40;;;;;;;;;;;;2794:1;2777:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2656:148::o:0;2442:79::-;2480:7;2507:6;;;;;;;;;;;2500:13;;2442:79;:::o;6327:87::-;6366:13;6399:7;;;;;;;;;;;;;;;;;6392:14;;6327:87;:::o;6741:167::-;6819:4;6836:42;6846:12;:10;:12::i;:::-;6860:9;6871:6;6836:9;:42::i;:::-;6896:4;6889:11;;6741:167;;;;:::o;13987:317::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14086:11:::1;14073:9;:24;;14065:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14187:11;14174:9;:24;;14166:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14287:9;14266:18;:30;;;;13987:317:::0;:::o;13472:164::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13546:6:::1;13541:88;13562:5;:12;13558:1;:16;13541:88;;;13613:4;13596;:14;13601:5;13607:1;13601:8;;;;;;;;;;;;;;;;;;;;;;13596:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13576:3;;;;;:::i;:::-;;;;13541:88;;;;13472:164:::0;:::o;18523:154::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18575:23:::1;18601:24;18619:4;18601:9;:24::i;:::-;18575:50;;18636:33;18653:15;18636:16;:33::i;:::-;2639:1;18523:154::o:0;12484:976::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12548:11:::1;::::0;::::1;;;;;;;;12547:12;12539:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12597:35;12654:42;12597:100;;12726:16;12708:15;;:34;;;;;;;;;;;;;;;;;;12753:58;12770:4;12785:15;;;;;;;;;;;3975:12;12753:8;:58::i;:::-;12856:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12838:56;;;12903:4;12910:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12838:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12822:13;;:112;;;;;;;;;;;;;;;;;;12945:15;;;;;;;;;;;:31;;;12984:21;13015:4;13021:24;13039:4;13021:9;:24::i;:::-;13046:1;13048::::0;13050:7:::1;:5;:7::i;:::-;13058:15;12945:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13099:4;13085:11;;:18;;;;;;;;;;;;;;;;;;13132:4;13114:15;;:22;;;;;;;;;;;;;;;;;;13163:11;13147:13;:27;;;;13202:11;13185:14;:28;;;;13243:11;13224:16;:30;;;;13286:11;13265:18;:32;;;;13322:4;13308:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;13358:12;13337:18;:33;;;;13388:13;;;;;;;;;;;13381:29;;;13419:15;;;;;;;;;;;13437:14;13381:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2639:1;12484:976::o:0;6916:143::-;6997:7;7024:11;:18;7036:5;7024:18;;;;;;;;;;;;;;;:27;7043:7;7024:27;;;;;;;;;;;;;;;;7017:34;;6916:143;;;;:::o;7668:94::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7749:5:::1;7735:11;;:19;;;;;;;;;;;;;;;;;;7668:94:::0;:::o;15811:108::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15905:6:::1;15885:17;:26;;;;15811:108:::0;:::o;13751:103::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13839:7:::1;13822:14;:24;;;;13751:103:::0;:::o;15115:110::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15212:5:::1;15182:18;:27;15201:7;15182:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15115:110:::0;:::o;13644:99::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13729:6:::1;13713:13;:22;;;;13644:99:::0;:::o;18850:239::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18917:11:::1;::::0;::::1;;;;;;;;18916:12;18908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18987:12;19031:10;19023:24;;19055:21;19023:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19010:71;;;;;2639:1;18850:239::o:0;15233:276::-;2579:12;:10;:12::i;:::-;2569:22;;:6;;;;;;;;;;:22;;;2561:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15377:1:::1;15358:15;15340;:33;;;;:::i;:::-;:38;;15332:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15441:15;15422:16;:34;;;;15486:15;15467:16;:34;;;;15233:276:::0;;:::o;160:98::-;213:7;240:10;233:17;;160:98;:::o;7770:335::-;7880:1;7863:19;;:5;:19;;;;7855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7961:1;7942:21;;:7;:21;;;;7934:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8043:6;8013:11;:18;8025:5;8013:18;;;;;;;;;;;;;;;:27;8032:7;8013:27;;;;;;;;;;;;;;;:36;;;;8081:7;8065:32;;8074:5;8065:32;;;8090:6;8065:32;;;;;;:::i;:::-;;;;;;;;7770:335;;;:::o;8113:1850::-;8217:1;8201:18;;:4;:18;;;;8193:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8294:1;8280:16;;:2;:16;;;;8272:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8364:1;8355:6;:10;8347:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8422:12;8453:15;8499:7;:5;:7::i;:::-;8491:15;;:4;:15;;;;:32;;;;;8516:7;:5;:7::i;:::-;8510:13;;:2;:13;;;;8491:32;:52;;;;;8541:1;8527:16;;:2;:16;;;;8491:52;:77;;;;;8561:6;8547:21;;:2;:21;;;;8491:77;:90;;;;;8573:8;;;;;;;;;;;8572:9;8491:90;8487:939;;;8607:4;:10;8612:4;8607:10;;;;;;;;;;;;;;;;;;;;;;;;;8606:11;:24;;;;;8622:4;:8;8627:2;8622:8;;;;;;;;;;;;;;;;;;;;;;;;;8621:9;8606:24;8598:33;;;;;;8658:4;8648:14;;8689:13;;;;;;;;;;;8681:21;;:4;:21;;;:55;;;;;8720:15;;;;;;;;;;;8706:30;;:2;:30;;;;8681:55;:82;;;;;8741:18;:22;8760:2;8741:22;;;;;;;;;;;;;;;;;;;;;;;;;8740:23;8681:82;:101;;;;;8767:15;;;;;;;;;;;8681:101;8677:451;;;8821:13;;8811:6;:23;;8803:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;8933:16;;8923:6;8907:13;8917:2;8907:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;8899:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9032:15;9017:8;:12;9026:2;9017:12;;;;;;;;;;;;;;;;:30;9009:39;;;;;;9101:10;9082:15;:30;;;;:::i;:::-;9067:8;:12;9076:2;9067:12;;;;;;;;;;;;;;;:45;;;;8677:451;9166:13;;;;;;;;;;;9160:19;;:2;:19;;;:55;;;;;9199:15;;;;;;;;;;;9183:32;;:4;:32;;;;9160:55;:84;;;;;9220:18;:24;9239:4;9220:24;;;;;;;;;;;;;;;;;;;;;;;;;9219:25;9160:84;:103;;;;;9248:15;;;;;;;;;;;9160:103;9156:259;;;9302:14;;9292:6;:24;;9284:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9395:4;9382:17;;9156:259;8487:939;9441:18;:24;9460:4;9441:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;9469:18;:22;9488:2;9469:22;;;;;;;;;;;;;;;;;;;;;;;;;9441:50;9438:97;;;9518:5;9508:15;;9438:97;9547:28;9578:24;9596:4;9578:9;:24::i;:::-;9547:55;;9613:12;9652:18;;9629:20;:41;9628:57;;;;;9675:10;9628:57;9613:72;;9702:7;:22;;;;;9713:11;;;;;;;;;;;9702:22;:35;;;;;9729:8;;;;;;;;;;;9728:9;9702:35;:64;;;;;9742:18;:24;9761:4;9742:24;;;;;;;;;;;;;;;;;;;;;;;;;9741:25;9702:64;:91;;;;;9771:18;:22;9790:2;9771:22;;;;;;;;;;;;;;;;;;;;;;;;;9770:23;9702:91;9698:195;;;9821:4;9810:8;;:15;;;;;;;;;;;;;;;;;;9840:10;:8;:10::i;:::-;9876:5;9865:8;;:16;;;;;;;;;;;;;;;;;;9698:195;9905:50;9920:4;9925:2;9928:6;9935:7;9944:10;9905:14;:50::i;:::-;8113:1850;;;;;;;:::o;1297:190::-;1383:7;1416:1;1411;:6;;1419:12;1403:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1443:9;1459:1;1455;:5;;;;:::i;:::-;1443:17;;1478:1;1471:8;;;1297:190;;;;;:::o;12374:98::-;12431:16;;;;;;;;;;;:25;;:33;12457:6;12431:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12374:98;:::o;11444:483::-;5633:4;5624:6;;:13;;;;;;;;;;;;;;;;;;11522:21:::1;11560:1;11546:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11522:40;;11591:4;11573;11578:1;11573:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;11617:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11607:4;11612:1;11607:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;11650:62;11667:4;11682:15;;;;;;;;;;;11700:11;11650:8;:62::i;:::-;11723:15;;;;;;;;;;;:66;;;11804:11;11830:1;11846:4;11873;11893:15;11723:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5648:1;5669:5:::0;5660:6;;:14;;;;;;;;;;;;;;;;;;11444:483;:::o;9971:1465::-;10010:23;10036:24;10054:4;10036:9;:24::i;:::-;10010:50;;10071:25;10120:18;;10099;;:39;;;;:::i;:::-;10071:67;;10149:12;10204:1;10185:15;:20;:46;;;;10230:1;10209:17;:22;10185:46;10182:60;;;10234:7;;;;;10182:60;10296:2;10275:18;;:23;;;;:::i;:::-;10257:15;:41;10254:114;;;10354:2;10333:18;;:23;;;;:::i;:::-;10315:41;;10254:114;10437:23;10522:1;10502:17;10481:18;;10463:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;10437:86;;10534:26;10563:36;10583:15;10563;:19;;:36;;;;:::i;:::-;10534:65;;10620:25;10648:21;10620:49;;10682:36;10699:18;10682:16;:36::i;:::-;10740:18;10761:44;10787:17;10761:21;:25;;:44;;;;:::i;:::-;10740:65;;10826:23;10852:57;10891:17;10852:34;10867:18;;10852:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;10826:83;;10940:23;10979:15;10966:10;:28;;;;:::i;:::-;10940:54;;11046:1;11025:18;:22;;;;11079:1;11058:18;:22;;;;11132:1;11114:15;:19;:42;;;;;11155:1;11137:15;:19;11114:42;11111:210;;;11172:46;11185:15;11202;11172:12;:46::i;:::-;11238:71;11253:18;11273:15;11290:18;;11238:71;;;;;;;;:::i;:::-;;;;;;;;11111:210;11372:16;;;;;;;;;;;11364:30;;11402:21;11364:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11351:77;;;;;9971:1465;;;;;;;;;;:::o;16842:389::-;16967:7;16963:129;;16991:14;:12;:14::i;:::-;16963:129;;;17047:33;17057:6;17065;17073;17047:9;:33::i;:::-;17038:42;;16963:129;17104:44;17122:6;17130:9;17141:6;17104:17;:44::i;:::-;17173:7;17169:55;;17197:15;:13;:15::i;:::-;17169:55;16842:389;;;;;:::o;1153:136::-;1211:7;1238:43;1242:1;1245;1238:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1231:50;;1153:136;;;;:::o;1495:246::-;1553:7;1582:1;1577;:6;1573:47;;;1607:1;1600:8;;;;1573:47;1630:9;1646:1;1642;:5;;;;:::i;:::-;1630:17;;1675:1;1670;1666;:5;;;;:::i;:::-;:10;1658:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1732:1;1725:8;;;1495:246;;;;;:::o;1749:132::-;1807:7;1834:39;1838:1;1841;1834:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1827:46;;1749:132;;;;:::o;11935:423::-;12016:62;12033:4;12048:15;;;;;;;;;;;12066:11;12016:8;:62::i;:::-;12089:15;;;;;;;;;;;:31;;;12128:9;12161:4;12181:11;12207:1;12250;12293:16;;;;;;;;;;;12324:15;12089:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11935:423;;:::o;15927:526::-;15993:1;15973:16;;:21;:46;;;;;16018:1;15998:16;;:21;15973:46;:72;;;;;16044:1;16023:17;;:22;15973:72;:98;;;;;16070:1;16049:17;;:22;15973:98;15970:110;;;16073:7;;15970:110;16127:16;;16100:24;:43;;;;16181:16;;16154:24;:43;;;;16236:17;;16208:25;:45;;;;16292:17;;16264:25;:45;;;;16349:1;16330:16;:20;;;;16380:1;16361:16;:20;;;;16412:1;16392:17;:21;;;;16444:1;16424:17;:21;;;;15927:526;:::o;17514:960::-;17595:7;17615:18;17644:15;17670:14;17740:12;17719:17;;17698:18;;:38;;;;:::i;:::-;:54;17695:438;;17781:2;17768:15;;17808:2;17798:12;;17695:438;;;17856:21;17870:6;17856:13;:21::i;:::-;17843:34;;17896:6;17892:230;;;17933:17;;17923:27;;17978:17;;17969:26;;17892:230;;;18046:16;;18036:26;;18090:16;;18081:25;;17892:230;17695:438;18145:12;18160:31;18187:3;18160:22;18171:10;18160:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;18145:46;;18241:10;18231:7;18224:4;:14;;;;:::i;:::-;:27;;;;:::i;:::-;18202:18;;:49;;;;;;;:::i;:::-;;;;;;;;18300:10;18291:6;18284:4;:13;;;;:::i;:::-;:26;;;;:::i;:::-;18262:18;;:48;;;;;;;:::i;:::-;;;;;;;;18345:1;18338:4;:8;18335:86;;;18363:46;18381:6;18397:4;18404;18363:17;:46::i;:::-;18335:86;18462:4;18452:14;;;;;:::i;:::-;;;;18445:21;;;;;;17514:960;;;;;:::o;17239:267::-;17355:28;17375:7;17355;:15;17363:6;17355:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17337:7;:15;17345:6;17337:15;;;;;;;;;;;;;;;:46;;;;17415:31;17438:7;17415;:18;17423:9;17415:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;17394:7;:18;17402:9;17394:18;;;;;;;;;;;;;;;:52;;;;17479:9;17462:36;;17471:6;17462:36;;;17490:7;17462:36;;;;;;:::i;:::-;;;;;;;;17239:267;;;:::o;16465:261::-;16528:24;;16509:16;:43;;;;16582:24;;16563:16;:43;;;;16637:25;;16617:17;:45;;;;16693:25;;16673:17;:45;;;;16465:261::o;1889:189::-;1975:7;2007:1;2003;:5;2010:12;1995:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2034:9;2050:1;2046;:5;;;;:::i;:::-;2034:17;;2069:1;2062:8;;;1889:189;;;;;:::o;19097:220::-;19154:7;19178:6;19174:83;;;19228:17;;19208;;:37;;;;:::i;:::-;19201:44;;;;19174:83;19293:16;;19274;;:35;;;;:::i;:::-;19267:42;;19097:220;;;;:::o;966:179::-;1024:7;1044:9;1060:1;1056;:5;;;;:::i;:::-;1044:17;;1085:1;1080;:6;;1072:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1136:1;1129:8;;;966:179;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:137::-;1498:5;1529:6;1523:13;1514:22;;1545:30;1569:5;1545:30;:::i;:::-;1504:77;;;;:::o;1587:139::-;1633:5;1671:6;1658:20;1649:29;;1687:33;1714:5;1687:33;:::i;:::-;1639:87;;;;:::o;1732:143::-;1789:5;1820:6;1814:13;1805:22;;1836:33;1863:5;1836:33;:::i;:::-;1795:80;;;;:::o;1881:262::-;1940:6;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;1947:196;;;;:::o;2149:284::-;2219:6;2268:2;2256:9;2247:7;2243:23;2239:32;2236:2;;;2284:1;2281;2274:12;2236:2;2327:1;2352:64;2408:7;2399:6;2388:9;2384:22;2352:64;:::i;:::-;2342:74;;2298:128;2226:207;;;;:::o;2439:407::-;2507:6;2515;2564:2;2552:9;2543:7;2539:23;2535:32;2532:2;;;2580:1;2577;2570:12;2532:2;2623:1;2648:53;2693:7;2684:6;2673:9;2669:22;2648:53;:::i;:::-;2638:63;;2594:117;2750:2;2776:53;2821:7;2812:6;2801:9;2797:22;2776:53;:::i;:::-;2766:63;;2721:118;2522:324;;;;;:::o;2852:552::-;2929:6;2937;2945;2994:2;2982:9;2973:7;2969:23;2965:32;2962:2;;;3010:1;3007;3000:12;2962:2;3053:1;3078:53;3123:7;3114:6;3103:9;3099:22;3078:53;:::i;:::-;3068:63;;3024:117;3180:2;3206:53;3251:7;3242:6;3231:9;3227:22;3206:53;:::i;:::-;3196:63;;3151:118;3308:2;3334:53;3379:7;3370:6;3359:9;3355:22;3334:53;:::i;:::-;3324:63;;3279:118;2952:452;;;;;:::o;3410:407::-;3478:6;3486;3535:2;3523:9;3514:7;3510:23;3506:32;3503:2;;;3551:1;3548;3541:12;3503:2;3594:1;3619:53;3664:7;3655:6;3644:9;3640:22;3619:53;:::i;:::-;3609:63;;3565:117;3721:2;3747:53;3792:7;3783:6;3772:9;3768:22;3747:53;:::i;:::-;3737:63;;3692:118;3493:324;;;;;:::o;3823:405::-;3907:6;3956:2;3944:9;3935:7;3931:23;3927:32;3924:2;;;3972:1;3969;3962:12;3924:2;4043:1;4032:9;4028:17;4015:31;4073:18;4065:6;4062:30;4059:2;;;4105:1;4102;4095:12;4059:2;4133:78;4203:7;4194:6;4183:9;4179:22;4133:78;:::i;:::-;4123:88;;3986:235;3914:314;;;;:::o;4234:256::-;4290:6;4339:2;4327:9;4318:7;4314:23;4310:32;4307:2;;;4355:1;4352;4345:12;4307:2;4398:1;4423:50;4465:7;4456:6;4445:9;4441:22;4423:50;:::i;:::-;4413:60;;4369:114;4297:193;;;;:::o;4496:278::-;4563:6;4612:2;4600:9;4591:7;4587:23;4583:32;4580:2;;;4628:1;4625;4618:12;4580:2;4671:1;4696:61;4749:7;4740:6;4729:9;4725:22;4696:61;:::i;:::-;4686:71;;4642:125;4570:204;;;;:::o;4780:262::-;4839:6;4888:2;4876:9;4867:7;4863:23;4859:32;4856:2;;;4904:1;4901;4894:12;4856:2;4947:1;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4918:117;4846:196;;;;:::o;5048:407::-;5116:6;5124;5173:2;5161:9;5152:7;5148:23;5144:32;5141:2;;;5189:1;5186;5179:12;5141:2;5232:1;5257:53;5302:7;5293:6;5282:9;5278:22;5257:53;:::i;:::-;5247:63;;5203:117;5359:2;5385:53;5430:7;5421:6;5410:9;5406:22;5385:53;:::i;:::-;5375:63;;5330:118;5131:324;;;;;:::o;5461:596::-;5549:6;5557;5565;5614:2;5602:9;5593:7;5589:23;5585:32;5582:2;;;5630:1;5627;5620:12;5582:2;5673:1;5698:64;5754:7;5745:6;5734:9;5730:22;5698:64;:::i;:::-;5688:74;;5644:128;5811:2;5837:64;5893:7;5884:6;5873:9;5869:22;5837:64;:::i;:::-;5827:74;;5782:129;5950:2;5976:64;6032:7;6023:6;6012:9;6008:22;5976:64;:::i;:::-;5966:74;;5921:129;5572:485;;;;;:::o;6063:179::-;6132:10;6153:46;6195:3;6187:6;6153:46;:::i;:::-;6231:4;6226:3;6222:14;6208:28;;6143:99;;;;:::o;6248:147::-;6343:45;6382:5;6343:45;:::i;:::-;6338:3;6331:58;6321:74;;:::o;6401:108::-;6478:24;6496:5;6478:24;:::i;:::-;6473:3;6466:37;6456:53;;:::o;6515:118::-;6602:24;6620:5;6602:24;:::i;:::-;6597:3;6590:37;6580:53;;:::o;6669:732::-;6788:3;6817:54;6865:5;6817:54;:::i;:::-;6887:86;6966:6;6961:3;6887:86;:::i;:::-;6880:93;;6997:56;7047:5;6997:56;:::i;:::-;7076:7;7107:1;7092:284;7117:6;7114:1;7111:13;7092:284;;;7193:6;7187:13;7220:63;7279:3;7264:13;7220:63;:::i;:::-;7213:70;;7306:60;7359:6;7306:60;:::i;:::-;7296:70;;7152:224;7139:1;7136;7132:9;7127:14;;7092:284;;;7096:14;7392:3;7385:10;;6793:608;;;;;;;:::o;7407:109::-;7488:21;7503:5;7488:21;:::i;:::-;7483:3;7476:34;7466:50;;:::o;7522:147::-;7617:45;7656:5;7617:45;:::i;:::-;7612:3;7605:58;7595:74;;:::o;7675:364::-;7763:3;7791:39;7824:5;7791:39;:::i;:::-;7846:71;7910:6;7905:3;7846:71;:::i;:::-;7839:78;;7926:52;7971:6;7966:3;7959:4;7952:5;7948:16;7926:52;:::i;:::-;8003:29;8025:6;8003:29;:::i;:::-;7998:3;7994:39;7987:46;;7767:272;;;;;:::o;8045:366::-;8187:3;8208:67;8272:2;8267:3;8208:67;:::i;:::-;8201:74;;8284:93;8373:3;8284:93;:::i;:::-;8402:2;8397:3;8393:12;8386:19;;8191:220;;;:::o;8417:366::-;8559:3;8580:67;8644:2;8639:3;8580:67;:::i;:::-;8573:74;;8656:93;8745:3;8656:93;:::i;:::-;8774:2;8769:3;8765:12;8758:19;;8563:220;;;:::o;8789:366::-;8931:3;8952:67;9016:2;9011:3;8952:67;:::i;:::-;8945:74;;9028:93;9117:3;9028:93;:::i;:::-;9146:2;9141:3;9137:12;9130:19;;8935:220;;;:::o;9161:366::-;9303:3;9324:67;9388:2;9383:3;9324:67;:::i;:::-;9317:74;;9400:93;9489:3;9400:93;:::i;:::-;9518:2;9513:3;9509:12;9502:19;;9307:220;;;:::o;9533:366::-;9675:3;9696:67;9760:2;9755:3;9696:67;:::i;:::-;9689:74;;9772:93;9861:3;9772:93;:::i;:::-;9890:2;9885:3;9881:12;9874:19;;9679:220;;;:::o;9905:366::-;10047:3;10068:67;10132:2;10127:3;10068:67;:::i;:::-;10061:74;;10144:93;10233:3;10144:93;:::i;:::-;10262:2;10257:3;10253:12;10246:19;;10051:220;;;:::o;10277:366::-;10419:3;10440:67;10504:2;10499:3;10440:67;:::i;:::-;10433:74;;10516:93;10605:3;10516:93;:::i;:::-;10634:2;10629:3;10625:12;10618:19;;10423:220;;;:::o;10649:366::-;10791:3;10812:67;10876:2;10871:3;10812:67;:::i;:::-;10805:74;;10888:93;10977:3;10888:93;:::i;:::-;11006:2;11001:3;10997:12;10990:19;;10795:220;;;:::o;11021:366::-;11163:3;11184:67;11248:2;11243:3;11184:67;:::i;:::-;11177:74;;11260:93;11349:3;11260:93;:::i;:::-;11378:2;11373:3;11369:12;11362:19;;11167:220;;;:::o;11393:366::-;11535:3;11556:67;11620:2;11615:3;11556:67;:::i;:::-;11549:74;;11632:93;11721:3;11632:93;:::i;:::-;11750:2;11745:3;11741:12;11734:19;;11539:220;;;:::o;11765:366::-;11907:3;11928:67;11992:2;11987:3;11928:67;:::i;:::-;11921:74;;12004:93;12093:3;12004:93;:::i;:::-;12122:2;12117:3;12113:12;12106:19;;11911:220;;;:::o;12137:366::-;12279:3;12300:67;12364:2;12359:3;12300:67;:::i;:::-;12293:74;;12376:93;12465:3;12376:93;:::i;:::-;12494:2;12489:3;12485:12;12478:19;;12283:220;;;:::o;12509:366::-;12651:3;12672:67;12736:2;12731:3;12672:67;:::i;:::-;12665:74;;12748:93;12837:3;12748:93;:::i;:::-;12866:2;12861:3;12857:12;12850:19;;12655:220;;;:::o;12881:366::-;13023:3;13044:67;13108:2;13103:3;13044:67;:::i;:::-;13037:74;;13120:93;13209:3;13120:93;:::i;:::-;13238:2;13233:3;13229:12;13222:19;;13027:220;;;:::o;13253:398::-;13412:3;13433:83;13514:1;13509:3;13433:83;:::i;:::-;13426:90;;13525:93;13614:3;13525:93;:::i;:::-;13643:1;13638:3;13634:11;13627:18;;13416:235;;;:::o;13657:366::-;13799:3;13820:67;13884:2;13879:3;13820:67;:::i;:::-;13813:74;;13896:93;13985:3;13896:93;:::i;:::-;14014:2;14009:3;14005:12;13998:19;;13803:220;;;:::o;14029:366::-;14171:3;14192:67;14256:2;14251:3;14192:67;:::i;:::-;14185:74;;14268:93;14357:3;14268:93;:::i;:::-;14386:2;14381:3;14377:12;14370:19;;14175:220;;;:::o;14401:366::-;14543:3;14564:67;14628:2;14623:3;14564:67;:::i;:::-;14557:74;;14640:93;14729:3;14640:93;:::i;:::-;14758:2;14753:3;14749:12;14742:19;;14547:220;;;:::o;14773:366::-;14915:3;14936:67;15000:2;14995:3;14936:67;:::i;:::-;14929:74;;15012:93;15101:3;15012:93;:::i;:::-;15130:2;15125:3;15121:12;15114:19;;14919:220;;;:::o;15145:366::-;15287:3;15308:67;15372:2;15367:3;15308:67;:::i;:::-;15301:74;;15384:93;15473:3;15384:93;:::i;:::-;15502:2;15497:3;15493:12;15486:19;;15291:220;;;:::o;15517:118::-;15604:24;15622:5;15604:24;:::i;:::-;15599:3;15592:37;15582:53;;:::o;15641:112::-;15724:22;15740:5;15724:22;:::i;:::-;15719:3;15712:35;15702:51;;:::o;15759:379::-;15943:3;15965:147;16108:3;15965:147;:::i;:::-;15958:154;;16129:3;16122:10;;15947:191;;;:::o;16144:222::-;16237:4;16275:2;16264:9;16260:18;16252:26;;16288:71;16356:1;16345:9;16341:17;16332:6;16288:71;:::i;:::-;16242:124;;;;:::o;16372:332::-;16493:4;16531:2;16520:9;16516:18;16508:26;;16544:71;16612:1;16601:9;16597:17;16588:6;16544:71;:::i;:::-;16625:72;16693:2;16682:9;16678:18;16669:6;16625:72;:::i;:::-;16498:206;;;;;:::o;16710:332::-;16831:4;16869:2;16858:9;16854:18;16846:26;;16882:71;16950:1;16939:9;16935:17;16926:6;16882:71;:::i;:::-;16963:72;17031:2;17020:9;17016:18;17007:6;16963:72;:::i;:::-;16836:206;;;;;:::o;17048:823::-;17305:4;17343:3;17332:9;17328:19;17320:27;;17357:71;17425:1;17414:9;17410:17;17401:6;17357:71;:::i;:::-;17438:72;17506:2;17495:9;17491:18;17482:6;17438:72;:::i;:::-;17520:80;17596:2;17585:9;17581:18;17572:6;17520:80;:::i;:::-;17610;17686:2;17675:9;17671:18;17662:6;17610:80;:::i;:::-;17700:81;17776:3;17765:9;17761:19;17752:6;17700:81;:::i;:::-;17791:73;17859:3;17848:9;17844:19;17835:6;17791:73;:::i;:::-;17310:561;;;;;;;;;:::o;17877:807::-;18126:4;18164:3;18153:9;18149:19;18141:27;;18178:71;18246:1;18235:9;18231:17;18222:6;18178:71;:::i;:::-;18259:72;18327:2;18316:9;18312:18;18303:6;18259:72;:::i;:::-;18341:80;18417:2;18406:9;18402:18;18393:6;18341:80;:::i;:::-;18431;18507:2;18496:9;18492:18;18483:6;18431:80;:::i;:::-;18521:73;18589:3;18578:9;18574:19;18565:6;18521:73;:::i;:::-;18604;18672:3;18661:9;18657:19;18648:6;18604:73;:::i;:::-;18131:553;;;;;;;;;:::o;18690:210::-;18777:4;18815:2;18804:9;18800:18;18792:26;;18828:65;18890:1;18879:9;18875:17;18866:6;18828:65;:::i;:::-;18782:118;;;;:::o;18906:313::-;19019:4;19057:2;19046:9;19042:18;19034:26;;19106:9;19100:4;19096:20;19092:1;19081:9;19077:17;19070:47;19134:78;19207:4;19198:6;19134:78;:::i;:::-;19126:86;;19024:195;;;;:::o;19225:419::-;19391:4;19429:2;19418:9;19414:18;19406:26;;19478:9;19472:4;19468:20;19464:1;19453:9;19449:17;19442:47;19506:131;19632:4;19506:131;:::i;:::-;19498:139;;19396:248;;;:::o;19650:419::-;19816:4;19854:2;19843:9;19839:18;19831:26;;19903:9;19897:4;19893:20;19889:1;19878:9;19874:17;19867:47;19931:131;20057:4;19931:131;:::i;:::-;19923:139;;19821:248;;;:::o;20075:419::-;20241:4;20279:2;20268:9;20264:18;20256:26;;20328:9;20322:4;20318:20;20314:1;20303:9;20299:17;20292:47;20356:131;20482:4;20356:131;:::i;:::-;20348:139;;20246:248;;;:::o;20500:419::-;20666:4;20704:2;20693:9;20689:18;20681:26;;20753:9;20747:4;20743:20;20739:1;20728:9;20724:17;20717:47;20781:131;20907:4;20781:131;:::i;:::-;20773:139;;20671:248;;;:::o;20925:419::-;21091:4;21129:2;21118:9;21114:18;21106:26;;21178:9;21172:4;21168:20;21164:1;21153:9;21149:17;21142:47;21206:131;21332:4;21206:131;:::i;:::-;21198:139;;21096:248;;;:::o;21350:419::-;21516:4;21554:2;21543:9;21539:18;21531:26;;21603:9;21597:4;21593:20;21589:1;21578:9;21574:17;21567:47;21631:131;21757:4;21631:131;:::i;:::-;21623:139;;21521:248;;;:::o;21775:419::-;21941:4;21979:2;21968:9;21964:18;21956:26;;22028:9;22022:4;22018:20;22014:1;22003:9;21999:17;21992:47;22056:131;22182:4;22056:131;:::i;:::-;22048:139;;21946:248;;;:::o;22200:419::-;22366:4;22404:2;22393:9;22389:18;22381:26;;22453:9;22447:4;22443:20;22439:1;22428:9;22424:17;22417:47;22481:131;22607:4;22481:131;:::i;:::-;22473:139;;22371:248;;;:::o;22625:419::-;22791:4;22829:2;22818:9;22814:18;22806:26;;22878:9;22872:4;22868:20;22864:1;22853:9;22849:17;22842:47;22906:131;23032:4;22906:131;:::i;:::-;22898:139;;22796:248;;;:::o;23050:419::-;23216:4;23254:2;23243:9;23239:18;23231:26;;23303:9;23297:4;23293:20;23289:1;23278:9;23274:17;23267:47;23331:131;23457:4;23331:131;:::i;:::-;23323:139;;23221:248;;;:::o;23475:419::-;23641:4;23679:2;23668:9;23664:18;23656:26;;23728:9;23722:4;23718:20;23714:1;23703:9;23699:17;23692:47;23756:131;23882:4;23756:131;:::i;:::-;23748:139;;23646:248;;;:::o;23900:419::-;24066:4;24104:2;24093:9;24089:18;24081:26;;24153:9;24147:4;24143:20;24139:1;24128:9;24124:17;24117:47;24181:131;24307:4;24181:131;:::i;:::-;24173:139;;24071:248;;;:::o;24325:419::-;24491:4;24529:2;24518:9;24514:18;24506:26;;24578:9;24572:4;24568:20;24564:1;24553:9;24549:17;24542:47;24606:131;24732:4;24606:131;:::i;:::-;24598:139;;24496:248;;;:::o;24750:419::-;24916:4;24954:2;24943:9;24939:18;24931:26;;25003:9;24997:4;24993:20;24989:1;24978:9;24974:17;24967:47;25031:131;25157:4;25031:131;:::i;:::-;25023:139;;24921:248;;;:::o;25175:419::-;25341:4;25379:2;25368:9;25364:18;25356:26;;25428:9;25422:4;25418:20;25414:1;25403:9;25399:17;25392:47;25456:131;25582:4;25456:131;:::i;:::-;25448:139;;25346:248;;;:::o;25600:419::-;25766:4;25804:2;25793:9;25789:18;25781:26;;25853:9;25847:4;25843:20;25839:1;25828:9;25824:17;25817:47;25881:131;26007:4;25881:131;:::i;:::-;25873:139;;25771:248;;;:::o;26025:419::-;26191:4;26229:2;26218:9;26214:18;26206:26;;26278:9;26272:4;26268:20;26264:1;26253:9;26249:17;26242:47;26306:131;26432:4;26306:131;:::i;:::-;26298:139;;26196:248;;;:::o;26450:419::-;26616:4;26654:2;26643:9;26639:18;26631:26;;26703:9;26697:4;26693:20;26689:1;26678:9;26674:17;26667:47;26731:131;26857:4;26731:131;:::i;:::-;26723:139;;26621:248;;;:::o;26875:419::-;27041:4;27079:2;27068:9;27064:18;27056:26;;27128:9;27122:4;27118:20;27114:1;27103:9;27099:17;27092:47;27156:131;27282:4;27156:131;:::i;:::-;27148:139;;27046:248;;;:::o;27300:222::-;27393:4;27431:2;27420:9;27416:18;27408:26;;27444:71;27512:1;27501:9;27497:17;27488:6;27444:71;:::i;:::-;27398:124;;;;:::o;27528:831::-;27791:4;27829:3;27818:9;27814:19;27806:27;;27843:71;27911:1;27900:9;27896:17;27887:6;27843:71;:::i;:::-;27924:80;28000:2;27989:9;27985:18;27976:6;27924:80;:::i;:::-;28051:9;28045:4;28041:20;28036:2;28025:9;28021:18;28014:48;28079:108;28182:4;28173:6;28079:108;:::i;:::-;28071:116;;28197:72;28265:2;28254:9;28250:18;28241:6;28197:72;:::i;:::-;28279:73;28347:3;28336:9;28332:19;28323:6;28279:73;:::i;:::-;27796:563;;;;;;;;:::o;28365:442::-;28514:4;28552:2;28541:9;28537:18;28529:26;;28565:71;28633:1;28622:9;28618:17;28609:6;28565:71;:::i;:::-;28646:72;28714:2;28703:9;28699:18;28690:6;28646:72;:::i;:::-;28728;28796:2;28785:9;28781:18;28772:6;28728:72;:::i;:::-;28519:288;;;;;;:::o;28813:214::-;28902:4;28940:2;28929:9;28925:18;28917:26;;28953:67;29017:1;29006:9;29002:17;28993:6;28953:67;:::i;:::-;28907:120;;;;:::o;29033:129::-;29067:6;29094:20;;:::i;:::-;29084:30;;29123:33;29151:4;29143:6;29123:33;:::i;:::-;29074:88;;;:::o;29168:75::-;29201:6;29234:2;29228:9;29218:19;;29208:35;:::o;29249:311::-;29326:4;29416:18;29408:6;29405:30;29402:2;;;29438:18;;:::i;:::-;29402:2;29488:4;29480:6;29476:17;29468:25;;29548:4;29542;29538:15;29530:23;;29331:229;;;:::o;29566:132::-;29633:4;29656:3;29648:11;;29686:4;29681:3;29677:14;29669:22;;29638:60;;;:::o;29704:114::-;29771:6;29805:5;29799:12;29789:22;;29778:40;;;:::o;29824:99::-;29876:6;29910:5;29904:12;29894:22;;29883:40;;;:::o;29929:113::-;29999:4;30031;30026:3;30022:14;30014:22;;30004:38;;;:::o;30048:184::-;30147:11;30181:6;30176:3;30169:19;30221:4;30216:3;30212:14;30197:29;;30159:73;;;;:::o;30238:147::-;30339:11;30376:3;30361:18;;30351:34;;;;:::o;30391:169::-;30475:11;30509:6;30504:3;30497:19;30549:4;30544:3;30540:14;30525:29;;30487:73;;;;:::o;30566:305::-;30606:3;30625:20;30643:1;30625:20;:::i;:::-;30620:25;;30659:20;30677:1;30659:20;:::i;:::-;30654:25;;30813:1;30745:66;30741:74;30738:1;30735:81;30732:2;;;30819:18;;:::i;:::-;30732:2;30863:1;30860;30856:9;30849:16;;30610:261;;;;:::o;30877:185::-;30917:1;30934:20;30952:1;30934:20;:::i;:::-;30929:25;;30968:20;30986:1;30968:20;:::i;:::-;30963:25;;31007:1;30997:2;;31012:18;;:::i;:::-;30997:2;31054:1;31051;31047:9;31042:14;;30919:143;;;;:::o;31068:348::-;31108:7;31131:20;31149:1;31131:20;:::i;:::-;31126:25;;31165:20;31183:1;31165:20;:::i;:::-;31160:25;;31353:1;31285:66;31281:74;31278:1;31275:81;31270:1;31263:9;31256:17;31252:105;31249:2;;;31360:18;;:::i;:::-;31249:2;31408:1;31405;31401:9;31390:20;;31116:300;;;;:::o;31422:191::-;31462:4;31482:20;31500:1;31482:20;:::i;:::-;31477:25;;31516:20;31534:1;31516:20;:::i;:::-;31511:25;;31555:1;31552;31549:8;31546:2;;;31560:18;;:::i;:::-;31546:2;31605:1;31602;31598:9;31590:17;;31467:146;;;;:::o;31619:96::-;31656:7;31685:24;31703:5;31685:24;:::i;:::-;31674:35;;31664:51;;;:::o;31721:90::-;31755:7;31798:5;31791:13;31784:21;31773:32;;31763:48;;;:::o;31817:126::-;31854:7;31894:42;31887:5;31883:54;31872:65;;31862:81;;;:::o;31949:77::-;31986:7;32015:5;32004:16;;31994:32;;;:::o;32032:86::-;32067:7;32107:4;32100:5;32096:16;32085:27;;32075:43;;;:::o;32124:134::-;32182:9;32215:37;32246:5;32215:37;:::i;:::-;32202:50;;32192:66;;;:::o;32264:121::-;32322:9;32355:24;32373:5;32355:24;:::i;:::-;32342:37;;32332:53;;;:::o;32391:126::-;32441:9;32474:37;32505:5;32474:37;:::i;:::-;32461:50;;32451:66;;;:::o;32523:113::-;32573:9;32606:24;32624:5;32606:24;:::i;:::-;32593:37;;32583:53;;;:::o;32642:307::-;32710:1;32720:113;32734:6;32731:1;32728:13;32720:113;;;32819:1;32814:3;32810:11;32804:18;32800:1;32795:3;32791:11;32784:39;32756:2;32753:1;32749:10;32744:15;;32720:113;;;32851:6;32848:1;32845:13;32842:2;;;32931:1;32922:6;32917:3;32913:16;32906:27;32842:2;32691:258;;;;:::o;32955:281::-;33038:27;33060:4;33038:27;:::i;:::-;33030:6;33026:40;33168:6;33156:10;33153:22;33132:18;33120:10;33117:34;33114:62;33111:2;;;33179:18;;:::i;:::-;33111:2;33219:10;33215:2;33208:22;32998:238;;;:::o;33242:233::-;33281:3;33304:24;33322:5;33304:24;:::i;:::-;33295:33;;33350:66;33343:5;33340:77;33337:2;;;33420:18;;:::i;:::-;33337:2;33467:1;33460:5;33456:13;33449:20;;33285:190;;;:::o;33481:180::-;33529:77;33526:1;33519:88;33626:4;33623:1;33616:15;33650:4;33647:1;33640:15;33667:180;33715:77;33712:1;33705:88;33812:4;33809:1;33802:15;33836:4;33833:1;33826:15;33853:180;33901:77;33898:1;33891:88;33998:4;33995:1;33988:15;34022:4;34019:1;34012:15;34039:102;34080:6;34131:2;34127:7;34122:2;34115:5;34111:14;34107:28;34097:38;;34087:54;;;:::o;34147:222::-;34287:34;34283:1;34275:6;34271:14;34264:58;34356:5;34351:2;34343:6;34339:15;34332:30;34253:116;:::o;34375:221::-;34515:34;34511:1;34503:6;34499:14;34492:58;34584:4;34579:2;34571:6;34567:15;34560:29;34481:115;:::o;34602:178::-;34742:30;34738:1;34730:6;34726:14;34719:54;34708:72;:::o;34786:177::-;34926:29;34922:1;34914:6;34910:14;34903:53;34892:71;:::o;34969:240::-;35109:34;35105:1;35097:6;35093:14;35086:58;35178:23;35173:2;35165:6;35161:15;35154:48;35075:134;:::o;35215:239::-;35355:34;35351:1;35343:6;35339:14;35332:58;35424:22;35419:2;35411:6;35407:15;35400:47;35321:133;:::o;35460:223::-;35600:34;35596:1;35588:6;35584:14;35577:58;35669:6;35664:2;35656:6;35652:15;35645:31;35566:117;:::o;35689:228::-;35829:34;35825:1;35817:6;35813:14;35806:58;35898:11;35893:2;35885:6;35881:15;35874:36;35795:122;:::o;35923:179::-;36063:31;36059:1;36051:6;36047:14;36040:55;36029:73;:::o;36108:220::-;36248:34;36244:1;36236:6;36232:14;36225:58;36317:3;36312:2;36304:6;36300:15;36293:28;36214:114;:::o;36334:182::-;36474:34;36470:1;36462:6;36458:14;36451:58;36440:76;:::o;36522:228::-;36662:34;36658:1;36650:6;36646:14;36639:58;36731:11;36726:2;36718:6;36714:15;36707:36;36628:122;:::o;36756:222::-;36896:34;36892:1;36884:6;36880:14;36873:58;36965:5;36960:2;36952:6;36948:15;36941:30;36862:116;:::o;36984:224::-;37124:34;37120:1;37112:6;37108:14;37101:58;37193:7;37188:2;37180:6;37176:15;37169:32;37090:118;:::o;37214:114::-;37320:8;:::o;37334:223::-;37474:34;37470:1;37462:6;37458:14;37451:58;37543:6;37538:2;37530:6;37526:15;37519:31;37440:117;:::o;37563:173::-;37703:25;37699:1;37691:6;37687:14;37680:49;37669:67;:::o;37742:229::-;37882:34;37878:1;37870:6;37866:14;37859:58;37951:12;37946:2;37938:6;37934:15;37927:37;37848:123;:::o;37977:222::-;38117:34;38113:1;38105:6;38101:14;38094:58;38186:5;38181:2;38173:6;38169:15;38162:30;38083:116;:::o;38205:230::-;38345:34;38341:1;38333:6;38329:14;38322:58;38414:13;38409:2;38401:6;38397:15;38390:38;38311:124;:::o;38441:122::-;38514:24;38532:5;38514:24;:::i;:::-;38507:5;38504:35;38494:2;;38553:1;38550;38543:12;38494:2;38484:79;:::o;38569:116::-;38639:21;38654:5;38639:21;:::i;:::-;38632:5;38629:32;38619:2;;38675:1;38672;38665:12;38619:2;38609:76;:::o;38691:122::-;38764:24;38782:5;38764:24;:::i;:::-;38757:5;38754:35;38744:2;;38803:1;38800;38793:12;38744:2;38734:79;:::o
Swarm Source
ipfs://cb7485e017065a589d1c3b044fef44099a445a771bf081ec651372f9dc5f027e
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.