Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
TokenTracker
Multichain Info
N/A
Loading...
Loading
Contract Name:
NOWCoin
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-24 */ pragma solidity 0.5.16; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); event BlacklistUpdated(address indexed account, bool indexed enabled); } contract Context { constructor() internal {} function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; msg.data; } } 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() internal { 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 onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract NOWCoin is Context, IERC20, Ownable { using SafeMath for uint256; struct LockBalance { uint256 Amount; uint256 UnlockTime; } mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => LockBalance[]) public locks; mapping(address => bool) private _blacklisted; mapping(address => uint256) private _mintedTokens; uint256 private _totalSupply; uint8 private _decimals; string private _symbol; string private _name; address public airdropContract; uint256 public transferFee; address[] private _blacklist; constructor() public { _name = "NOW Coin"; _symbol = "NOW"; _decimals = 18; _totalSupply = 10000000000000000000000000000; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } function getOwner() external view returns (address) { return owner(); } function decimals() external view returns (uint8) { return _decimals; } function symbol() external view returns (string memory) { return _symbol; } function name() external view returns (string memory) { return _name; } function totalSupply() external view returns (uint256) { return _totalSupply; } function balanceOf(address account) external view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) external view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function burn(uint256 amount) public returns (bool) { _burn(_msgSender(), amount); return true; } function getContractAddress() public view returns (address) { return address(this); } function lockBalance( address _account, uint256 _amount, uint256 _unlockTime ) external onlyOwner { for (uint256 i = 0; i < locks[_account].length; i++) { if (locks[_account][i].UnlockTime == _unlockTime) { locks[_account][i].Amount = locks[_account][i].Amount.add( _amount ); return; } } LockBalance memory lock = LockBalance(_amount, _unlockTime); locks[_account].push(lock); } function lockMultiBalance( address _account, uint256[] calldata _amounts, uint256[] calldata _unlockTimes ) external onlyOwner { require( _amounts.length == _unlockTimes.length, "Arrays length mismatch" ); for (uint256 k = 0; k < _amounts.length; k++) { uint256 amount = _amounts[k]; uint256 unlockTime = _unlockTimes[k]; bool existingLockFound = false; for (uint256 i = 0; i < locks[_account].length; i++) { if (locks[_account][i].UnlockTime == unlockTime) { locks[_account][i].Amount = locks[_account][i].Amount.add( amount ); existingLockFound = true; break; } } if (!existingLockFound) { LockBalance memory lock = LockBalance(amount, unlockTime); locks[_account].push(lock); } } } function getLockedBalances(address account) external view returns (uint256[] memory, uint256[] memory) { uint256[] memory lockedAmounts = new uint256[](locks[account].length); uint256[] memory unlockTimes = new uint256[](locks[account].length); for (uint256 i = 0; i < locks[account].length; i++) { lockedAmounts[i] = locks[account][i].Amount; unlockTimes[i] = locks[account][i].UnlockTime; } return (lockedAmounts, unlockTimes); } function unlockBalance(address[] calldata accounts) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { address account = accounts[i]; uint256 totalUnlocked; for (uint256 j = 0; j < locks[account].length; j++) { if (locks[account][j].UnlockTime <= block.timestamp) { totalUnlocked += locks[account][j].Amount; delete locks[account][j]; } } if (totalUnlocked > 0) { _transfer(address(this), account, totalUnlocked); } } } function setAirdropContract(address _airdropContract) public onlyOwner { airdropContract = _airdropContract; } function setTransferFee(uint256 _fee) external onlyOwner { transferFee = _fee; } function setBlacklistEnabled(address account, bool enabled) external onlyOwner { _blacklisted[account] = enabled; if (enabled == true) { _blacklist.push(account); } if (enabled == false) { for (uint256 i = 0; i < _blacklist.length; i++) { if (_blacklist[i] == account) { _blacklist[i] = _blacklist[_blacklist.length - 1]; _blacklist.pop(); break; } } } emit BlacklistUpdated(account, enabled); } function setBlacklistEnabledMultiple( address[] calldata accounts, bool enabled ) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _blacklisted[accounts[i]] = enabled; if (enabled == true) { _blacklist.push(accounts[i]); } if (enabled == false) { for (uint256 j = 0; i < _blacklist.length; j++) { if (_blacklist[j] == accounts[i]) { _blacklist[j] = _blacklist[_blacklist.length - 1]; _blacklist.pop(); break; } } } emit BlacklistUpdated(accounts[i], enabled); } } function isBlacklisted(address account) external view returns (bool) { return _blacklisted[account]; } function getBlacklist() external view returns (address[] memory) { return _blacklist; } function mint(address account, uint256 amount) public onlyOwner { require(account != address(0), "ERC20: mint to the zero address"); require(amount > 0, "ERC20: mint amount must be greater than 0"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); _mintedTokens[account] = _mintedTokens[account].add(amount); emit Transfer(address(0), account, amount); } function _transfer( address sender, address recipient, uint256 amount ) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal { 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 _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve( account, _msgSender(), _allowances[account][_msgSender()].sub( amount, "ERC20: burn amount exceeds allowance" ) ); } }
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"airdropContract","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBlacklist","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getLockedBalances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"name":"lockBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"_unlockTimes","type":"uint256[]"}],"name":"lockMultiBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"locks","outputs":[{"internalType":"uint256","name":"Amount","type":"uint256"},{"internalType":"uint256","name":"UnlockTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_airdropContract","type":"address"}],"name":"setAirdropContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setTransferFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"unlockBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506000620000246200024160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600881526020017f4e4f5720436f696e000000000000000000000000000000000000000000000000815250600990805190602001906200010f92919062000249565b506040518060400160405280600381526020017f4e4f570000000000000000000000000000000000000000000000000000000000815250600890805190602001906200015d92919062000249565b506012600760006101000a81548160ff021916908360ff1602179055506b204fce5e3e25026110000000600681905550600654600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a3620002f8565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028c57805160ff1916838001178555620002bd565b82800160010185558215620002bd579182015b82811115620002bc5782518255916020019190600101906200029f565b5b509050620002cc9190620002d0565b5090565b620002f591905b80821115620002f1576000816000905550600101620002d7565b5090565b90565b6139eb80620003086000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f578063ab2be726116100a2578063dd62ed3e11610071578063dd62ed3e14610beb578063eec2744e14610c63578063f2fde38b14610cb3578063fe575a8714610cf7576101e5565b8063ab2be72614610a2c578063acb2ad6f14610a76578063b425f80214610a94578063c08ff89a14610afd576101e5565b806395d89b41116100de57806395d89b4114610885578063a457c2d714610908578063a55956831461096e578063a9059cbb146109c6576101e5565b8063715018a6146107b9578063893d20e8146107c35780638da5cb5b1461080d5780638f02bb5b14610857576101e5565b806332a2c5d01161018757806342966c681161015657806342966c68146105f65780636e8cecbe1461063c5780636f0115381461071d57806370a0823114610761576101e5565b806332a2c5d014610499578063338d6c30146104e3578063395093511461054257806340c10f19146105a8576101e5565b806318160ddd116101c357806318160ddd1461035857806323b872dd146103765780632cf066f8146103fc578063313ce56714610475576101e5565b806305bbedb6146101ea57806306fdde031461026f578063095ea7b3146102f2575b600080fd5b61026d6004803603604081101561020057600080fd5b810190808035906020019064010000000081111561021d57600080fd5b82018360208201111561022f57600080fd5b8035906020019184602083028401116401000000008311171561025157600080fd5b9091929391929390803515159060200190929190505050610d53565b005b610277611165565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b757808201518184015260208101905061029c565b50505050905090810190601f1680156102e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033e6004803603604081101561030857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611207565b604051808215151515815260200191505060405180910390f35b610360611225565b6040518082815260200191505060405180910390f35b6103e26004803603606081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061122f565b604051808215151515815260200191505060405180910390f35b6104736004803603602081101561041257600080fd5b810190808035906020019064010000000081111561042f57600080fd5b82018360208201111561044157600080fd5b8035906020019184602083028401116401000000008311171561046357600080fd5b9091929391929390505050611308565b005b61047d6115c6565b604051808260ff1660ff16815260200191505060405180910390f35b6104a16115dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104eb6115e5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561052e578082015181840152602081019050610513565b505050509050019250505060405180910390f35b61058e6004803603604081101561055857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611673565b604051808215151515815260200191505060405180910390f35b6105f4600480360360408110156105be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b005b6106226004803603602081101561060c57600080fd5b8101908080359060200190929190505050611a9a565b604051808215151515815260200191505060405180910390f35b61067e6004803603602081101561065257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ab6565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106c55780820151818401526020810190506106aa565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107075780820151818401526020810190506106ec565b5050505090500194505050505060405180910390f35b61075f6004803603602081101561073357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf8565b005b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e05565b6040518082815260200191505060405180910390f35b6107c1611e4e565b005b6107cb611fd6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610815611fe5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108836004803603602081101561086d57600080fd5b810190808035906020019092919050505061200e565b005b61088d6120e1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108cd5780820151818401526020810190506108b2565b50505050905090810190601f1680156108fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109546004803603604081101561091e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612183565b604051808215151515815260200191505060405180910390f35b6109c46004803603606081101561098457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612250565b005b610a12600480360360408110156109dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612555565b604051808215151515815260200191505060405180910390f35b610a34612573565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a7e612599565b6040518082815260200191505060405180910390f35b610ae060048036036040811015610aaa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061259f565b604051808381526020018281526020019250505060405180910390f35b610be960048036036060811015610b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610b5057600080fd5b820183602082011115610b6257600080fd5b80359060200191846020830284011164010000000083111715610b8457600080fd5b909192939192939080359060200190640100000000811115610ba557600080fd5b820183602082011115610bb757600080fd5b80359060200191846020830284011164010000000083111715610bd957600080fd5b90919293919293905050506125dd565b005b610c4d60048036036040811015610c0157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129bc565b6040518082815260200191505060405180910390f35b610cb160048036036040811015610c7957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612a43565b005b610cf560048036036020811015610cc957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d95565b005b610d3960048036036020811015610d0d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e6a565b604051808215151515815260200191505060405180910390f35b610d5b612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b8383905081101561115f578160046000868685818110610e3e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600115158215151415610f4857600c848483818110610ec757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6000151582151514156110e45760008090505b600c805490508210156110e257848483818110610f7457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600c8281548110610fb457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110d557600c6001600c80549050038154811061101057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c828154811061104857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548061109b57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556110e2565b8080600101915050610f5b565b505b8115158484838181106110f357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac60405160405180910390a38080600101915050610e22565b50505050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111fd5780601f106111d2576101008083540402835291602001916111fd565b820191906000526020600020905b8154815290600101906020018083116111e057829003601f168201915b5050505050905090565b600061121b611214612ec0565b8484612ec8565b6001905092915050565b6000600654905090565b600061123c8484846130bf565b6112fd84611248612ec0565b6112f88560405180606001604052806028815260200161390060289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112ae612ec0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133799092919063ffffffff16565b612ec8565b600190509392505050565b611310612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b828290508110156115c15760008383838181106113f057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050600080600090505b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561159c5742600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106114ac57fe5b9060005260206000209060020201600101541161158f57600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061150d57fe5b90600052602060002090600202016000015482019150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061156d57fe5b9060005260206000209060020201600080820160009055600182016000905550505b8080600101915050611417565b5060008111156115b2576115b13083836130bf565b5b505080806001019150506113d7565b505050565b6000600760009054906101000a900460ff16905090565b600030905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561166957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161161f575b5050505050905090565b600061171c611680612ec0565b846117178560026000611691612ec0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343990919063ffffffff16565b612ec8565b6001905092915050565b61172e612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b600081116118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806138b16029913960400191505060405180910390fd5b6119008160065461343990919063ffffffff16565b60068190555061195881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119ed81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343990919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611aad611aa7612ec0565b836134c1565b60019050919050565b6060806060600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050604051908082528060200260200182016040528015611b2c5781602001602082028038833980820191505090505b5090506060600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050604051908082528060200260200182016040528015611ba25781602001602082028038833980820191505090505b50905060008090505b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611cea57600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110611c3f57fe5b906000526020600020906002020160000154838281518110611c5d57fe5b602002602001018181525050600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110611cb357fe5b906000526020600020906002020160010154828281518110611cd157fe5b6020026020010181815250508080600101915050611bab565b508181935093505050915091565b611d00612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e56612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611fe0611fe5565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612016612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121795780601f1061214e57610100808354040283529160200191612179565b820191906000526020600020905b81548152906001019060200180831161215c57829003601f168201915b5050505050905090565b6000612246612190612ec0565b846122418560405180606001604052806025815260200161399260259139600260006121ba612ec0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133799092919063ffffffff16565b612ec8565b6001905092915050565b612258612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156124ac5781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106123b457fe5b906000526020600020906002020160010154141561249f5761243a83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061241a57fe5b90600052602060002090600202016000015461343990919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061248457fe5b90600052602060002090600202016000018190555050612550565b808060010191505061231f565b506124b5613809565b6040518060400160405280848152602001838152509050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050505b505050565b6000612569612562612ec0565b84846130bf565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600360205281600052604060002081815481106125b857fe5b9060005260206000209060020201600091509150508060000154908060010154905082565b6125e5612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b818190508484905014612721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f417272617973206c656e677468206d69736d617463680000000000000000000081525060200191505060405180910390fd5b60008090505b848490508110156129b457600085858381811061274057fe5b905060200201359050600084848481811061275757fe5b905060200201359050600080905060008090505b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156128fb5782600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061280057fe5b90600052602060002090600202016001015414156128ee5761288684600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061286657fe5b90600052602060002090600202016000015461343990919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106128d057fe5b906000526020600020906002020160000181905550600191506128fb565b808060010191505061276b565b50806129a457612909613809565b6040518060400160405280858152602001848152509050600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050505b5050508080600101915050612727565b505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612a4b612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600115158115151415612bd757600c8290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b600015158115151415612d4b5760008090505b600c80549050811015612d49578273ffffffffffffffffffffffffffffffffffffffff16600c8281548110612c1b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d3c57600c6001600c805490500381548110612c7757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110612caf57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c805480612d0257fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612d49565b8080600101915050612bea565b505b8015158273ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac60405160405180910390a35050565b612d9d612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612e678161367b565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061396e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061388f6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613145576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806139496025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806138246023913960400191505060405180910390fd5b613237816040518060600160405280602681526020016138da60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133799092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132cc81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290613426576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133eb5780820151818401526020810190506133d0565b50505050905090810190601f1680156134185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156134b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139286021913960400191505060405180910390fd5b6135b38160405180606001604052806022815260200161384760229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133799092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360b816006546137bf90919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806138696026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061380183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613379565b905092915050565b60405180604001604052806000815260200160008152509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206d696e7420616d6f756e74206d7573742062652067726561746572207468616e203045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158209038ba7546f1661aa73767a778d11c558166c147c213145955a731ceaea83e9064736f6c63430005100032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f578063ab2be726116100a2578063dd62ed3e11610071578063dd62ed3e14610beb578063eec2744e14610c63578063f2fde38b14610cb3578063fe575a8714610cf7576101e5565b8063ab2be72614610a2c578063acb2ad6f14610a76578063b425f80214610a94578063c08ff89a14610afd576101e5565b806395d89b41116100de57806395d89b4114610885578063a457c2d714610908578063a55956831461096e578063a9059cbb146109c6576101e5565b8063715018a6146107b9578063893d20e8146107c35780638da5cb5b1461080d5780638f02bb5b14610857576101e5565b806332a2c5d01161018757806342966c681161015657806342966c68146105f65780636e8cecbe1461063c5780636f0115381461071d57806370a0823114610761576101e5565b806332a2c5d014610499578063338d6c30146104e3578063395093511461054257806340c10f19146105a8576101e5565b806318160ddd116101c357806318160ddd1461035857806323b872dd146103765780632cf066f8146103fc578063313ce56714610475576101e5565b806305bbedb6146101ea57806306fdde031461026f578063095ea7b3146102f2575b600080fd5b61026d6004803603604081101561020057600080fd5b810190808035906020019064010000000081111561021d57600080fd5b82018360208201111561022f57600080fd5b8035906020019184602083028401116401000000008311171561025157600080fd5b9091929391929390803515159060200190929190505050610d53565b005b610277611165565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b757808201518184015260208101905061029c565b50505050905090810190601f1680156102e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033e6004803603604081101561030857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611207565b604051808215151515815260200191505060405180910390f35b610360611225565b6040518082815260200191505060405180910390f35b6103e26004803603606081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061122f565b604051808215151515815260200191505060405180910390f35b6104736004803603602081101561041257600080fd5b810190808035906020019064010000000081111561042f57600080fd5b82018360208201111561044157600080fd5b8035906020019184602083028401116401000000008311171561046357600080fd5b9091929391929390505050611308565b005b61047d6115c6565b604051808260ff1660ff16815260200191505060405180910390f35b6104a16115dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104eb6115e5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561052e578082015181840152602081019050610513565b505050509050019250505060405180910390f35b61058e6004803603604081101561055857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611673565b604051808215151515815260200191505060405180910390f35b6105f4600480360360408110156105be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b005b6106226004803603602081101561060c57600080fd5b8101908080359060200190929190505050611a9a565b604051808215151515815260200191505060405180910390f35b61067e6004803603602081101561065257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ab6565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106c55780820151818401526020810190506106aa565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107075780820151818401526020810190506106ec565b5050505090500194505050505060405180910390f35b61075f6004803603602081101561073357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf8565b005b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e05565b6040518082815260200191505060405180910390f35b6107c1611e4e565b005b6107cb611fd6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610815611fe5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108836004803603602081101561086d57600080fd5b810190808035906020019092919050505061200e565b005b61088d6120e1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108cd5780820151818401526020810190506108b2565b50505050905090810190601f1680156108fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109546004803603604081101561091e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612183565b604051808215151515815260200191505060405180910390f35b6109c46004803603606081101561098457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612250565b005b610a12600480360360408110156109dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612555565b604051808215151515815260200191505060405180910390f35b610a34612573565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a7e612599565b6040518082815260200191505060405180910390f35b610ae060048036036040811015610aaa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061259f565b604051808381526020018281526020019250505060405180910390f35b610be960048036036060811015610b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610b5057600080fd5b820183602082011115610b6257600080fd5b80359060200191846020830284011164010000000083111715610b8457600080fd5b909192939192939080359060200190640100000000811115610ba557600080fd5b820183602082011115610bb757600080fd5b80359060200191846020830284011164010000000083111715610bd957600080fd5b90919293919293905050506125dd565b005b610c4d60048036036040811015610c0157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129bc565b6040518082815260200191505060405180910390f35b610cb160048036036040811015610c7957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612a43565b005b610cf560048036036020811015610cc957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d95565b005b610d3960048036036020811015610d0d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e6a565b604051808215151515815260200191505060405180910390f35b610d5b612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b8383905081101561115f578160046000868685818110610e3e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600115158215151415610f4857600c848483818110610ec757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6000151582151514156110e45760008090505b600c805490508210156110e257848483818110610f7457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600c8281548110610fb457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110d557600c6001600c80549050038154811061101057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c828154811061104857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548061109b57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556110e2565b8080600101915050610f5b565b505b8115158484838181106110f357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac60405160405180910390a38080600101915050610e22565b50505050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111fd5780601f106111d2576101008083540402835291602001916111fd565b820191906000526020600020905b8154815290600101906020018083116111e057829003601f168201915b5050505050905090565b600061121b611214612ec0565b8484612ec8565b6001905092915050565b6000600654905090565b600061123c8484846130bf565b6112fd84611248612ec0565b6112f88560405180606001604052806028815260200161390060289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112ae612ec0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133799092919063ffffffff16565b612ec8565b600190509392505050565b611310612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b828290508110156115c15760008383838181106113f057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050600080600090505b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561159c5742600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106114ac57fe5b9060005260206000209060020201600101541161158f57600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061150d57fe5b90600052602060002090600202016000015482019150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061156d57fe5b9060005260206000209060020201600080820160009055600182016000905550505b8080600101915050611417565b5060008111156115b2576115b13083836130bf565b5b505080806001019150506113d7565b505050565b6000600760009054906101000a900460ff16905090565b600030905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561166957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161161f575b5050505050905090565b600061171c611680612ec0565b846117178560026000611691612ec0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343990919063ffffffff16565b612ec8565b6001905092915050565b61172e612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b600081116118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806138b16029913960400191505060405180910390fd5b6119008160065461343990919063ffffffff16565b60068190555061195881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119ed81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343990919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611aad611aa7612ec0565b836134c1565b60019050919050565b6060806060600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050604051908082528060200260200182016040528015611b2c5781602001602082028038833980820191505090505b5090506060600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050604051908082528060200260200182016040528015611ba25781602001602082028038833980820191505090505b50905060008090505b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611cea57600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110611c3f57fe5b906000526020600020906002020160000154838281518110611c5d57fe5b602002602001018181525050600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110611cb357fe5b906000526020600020906002020160010154828281518110611cd157fe5b6020026020010181815250508080600101915050611bab565b508181935093505050915091565b611d00612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e56612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611fe0611fe5565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612016612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121795780601f1061214e57610100808354040283529160200191612179565b820191906000526020600020905b81548152906001019060200180831161215c57829003601f168201915b5050505050905090565b6000612246612190612ec0565b846122418560405180606001604052806025815260200161399260259139600260006121ba612ec0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133799092919063ffffffff16565b612ec8565b6001905092915050565b612258612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156124ac5781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106123b457fe5b906000526020600020906002020160010154141561249f5761243a83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061241a57fe5b90600052602060002090600202016000015461343990919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061248457fe5b90600052602060002090600202016000018190555050612550565b808060010191505061231f565b506124b5613809565b6040518060400160405280848152602001838152509050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050505b505050565b6000612569612562612ec0565b84846130bf565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600360205281600052604060002081815481106125b857fe5b9060005260206000209060020201600091509150508060000154908060010154905082565b6125e5612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b818190508484905014612721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f417272617973206c656e677468206d69736d617463680000000000000000000081525060200191505060405180910390fd5b60008090505b848490508110156129b457600085858381811061274057fe5b905060200201359050600084848481811061275757fe5b905060200201359050600080905060008090505b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156128fb5782600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061280057fe5b90600052602060002090600202016001015414156128ee5761288684600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061286657fe5b90600052602060002090600202016000015461343990919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106128d057fe5b906000526020600020906002020160000181905550600191506128fb565b808060010191505061276b565b50806129a457612909613809565b6040518060400160405280858152602001848152509050600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050505b5050508080600101915050612727565b505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612a4b612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600115158115151415612bd757600c8290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b600015158115151415612d4b5760008090505b600c80549050811015612d49578273ffffffffffffffffffffffffffffffffffffffff16600c8281548110612c1b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d3c57600c6001600c805490500381548110612c7757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110612caf57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c805480612d0257fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612d49565b8080600101915050612bea565b505b8015158273ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac60405160405180910390a35050565b612d9d612ec0565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612e678161367b565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061396e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061388f6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613145576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806139496025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806138246023913960400191505060405180910390fd5b613237816040518060600160405280602681526020016138da60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133799092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132cc81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290613426576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133eb5780820151818401526020810190506133d0565b50505050905090810190601f1680156134185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156134b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139286021913960400191505060405180910390fd5b6135b38160405180606001604052806022815260200161384760229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133799092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360b816006546137bf90919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806138696026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061380183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613379565b905092915050565b60405180604001604052806000815260200160008152509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206d696e7420616d6f756e74206d7573742062652067726561746572207468616e203045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158209038ba7546f1661aa73767a778d11c558166c147c213145955a731ceaea83e9064736f6c63430005100032
Deployed Bytecode Sourcemap
4083:10275:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4083:10275:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11215:775;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11215:775:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11215:775:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11215:775:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11215:775:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5346:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5346:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6027:154;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6027:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5439:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6189:439;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6189:439:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9721:631;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9721:631:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9721:631:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9721:631:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9721:631:0;;;;;;;;;;;;:::i;:::-;;5156:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7446:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12122:101;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12122:101:0;;;;;;;;;;;;;;;;;6636:283;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6636:283:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12231:462;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12231:462:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7318:120;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7318:120:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9174:539;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9174:539:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9174:539:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9174:539:0;;;;;;;;;;;;;;;;;;;10360:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10360:124:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5540:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5540:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3545:140;;;:::i;:::-;;5063:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3331:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10492:94;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10492:94:0;;;;;;;;;;;;;;;;;:::i;:::-;;5249:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5249:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6927:383;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6927:383:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7553:550;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7553:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5660:183;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5660:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4675:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4712:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4387:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4387:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8111:1055;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8111:1055:0;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8111:1055:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8111:1055:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8111:1055:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8111:1055:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8111:1055:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8111:1055:0;;;;;;;;;;;;:::i;:::-;;5851:168;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5851:168:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10594:613;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10594:613:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3693:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3693:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11998:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11998:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11215:775;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11355:9;11367:1;11355:13;;11350:633;11374:8;;:15;;11370:1;:19;11350:633;;;11439:7;11411:12;:25;11424:8;;11433:1;11424:11;;;;;;;;;;;;;;;11411:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;11476:4;11465:15;;:7;:15;;;11461:84;;;11501:10;11517:8;;11526:1;11517:11;;;;;;;;;;;;;;;11501:28;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;11501:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11461:84;11574:5;11563:16;;:7;:16;;;11559:355;;;11605:9;11617:1;11605:13;;11600:299;11624:10;:17;;;;11620:1;:21;11600:299;;;11692:8;;11701:1;11692:11;;;;;;;;;;;;;;;11675:28;;:10;11686:1;11675:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;11671:209;;;11748:10;11779:1;11759:10;:17;;;;:21;11748:33;;;;;;;;;;;;;;;;;;;;;;;;;11732:10;11743:1;11732:13;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;11808:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11851:5;;11671:209;11643:3;;;;;;;11600:299;;;;11559:355;11963:7;11933:38;;11950:8;;11959:1;11950:11;;;;;;;;;;;;;;;11933:38;;;;;;;;;;;;11391:3;;;;;;;11350:633;;;;11215:775;;;:::o;5346:85::-;5385:13;5418:5;5411:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5346:85;:::o;6027:154::-;6095:4;6112:39;6121:12;:10;:12::i;:::-;6135:7;6144:6;6112:8;:39::i;:::-;6169:4;6162:11;;6027:154;;;;:::o;5439:93::-;5485:7;5512:12;;5505:19;;5439:93;:::o;6189:439::-;6314:4;6331:36;6341:6;6349:9;6360:6;6331:9;:36::i;:::-;6378:220;6401:6;6422:12;:10;:12::i;:::-;6449:138;6505:6;6449:138;;;;;;;;;;;;;;;;;:11;:19;6461:6;6449:19;;;;;;;;;;;;;;;:33;6469:12;:10;:12::i;:::-;6449:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;6378:8;:220::i;:::-;6616:4;6609:11;;6189:439;;;;;:::o;9721:631::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9808:9;9820:1;9808:13;;9803:542;9827:8;;:15;;9823:1;:19;9803:542;;;9864:15;9882:8;;9891:1;9882:11;;;;;;;;;;;;;;;9864:29;;9908:21;9949:9;9961:1;9949:13;;9944:270;9968:5;:14;9974:7;9968:14;;;;;;;;;;;;;;;:21;;;;9964:1;:25;9944:270;;;10051:15;10019:5;:14;10025:7;10019:14;;;;;;;;;;;;;;;10034:1;10019:17;;;;;;;;;;;;;;;;;;:28;;;:47;10015:184;;10108:5;:14;10114:7;10108:14;;;;;;;;;;;;;;;10123:1;10108:17;;;;;;;;;;;;;;;;;;:24;;;10091:41;;;;10162:5;:14;10168:7;10162:14;;;;;;;;;;;;;;;10177:1;10162:17;;;;;;;;;;;;;;;;;;;10155:24;;;;;;;;;;;;;;10015:184;9991:3;;;;;;;9944:270;;;;10248:1;10232:13;:17;10228:106;;;10270:48;10288:4;10295:7;10304:13;10270:9;:48::i;:::-;10228:106;9803:542;;9844:3;;;;;;;9803:542;;;;9721:631;;:::o;5156:85::-;5199:5;5224:9;;;;;;;;;;;5217:16;;5156:85;:::o;7446:99::-;7497:7;7532:4;7517:20;;7446:99;:::o;12122:101::-;12169:16;12205:10;12198:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12122:101;:::o;6636:283::-;6734:4;6756:133;6779:12;:10;:12::i;:::-;6806:7;6828:50;6867:10;6828:11;:25;6840:12;:10;:12::i;:::-;6828:25;;;;;;;;;;;;;;;:34;6854:7;6828:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6756:8;:133::i;:::-;6907:4;6900:11;;6636:283;;;;:::o;12231:462::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12333:1;12314:21;;:7;:21;;;;12306:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12399:1;12390:6;:10;12382:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12474:24;12491:6;12474:12;;:16;;:24;;;;:::i;:::-;12459:12;:39;;;;12530:30;12553:6;12530:9;:18;12540:7;12530:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;12509:9;:18;12519:7;12509:18;;;;;;;;;;;;;;;:51;;;;12596:34;12623:6;12596:13;:22;12610:7;12596:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;12571:13;:22;12585:7;12571:22;;;;;;;;;;;;;;;:59;;;;12669:7;12648:37;;12665:1;12648:37;;;12678:6;12648:37;;;;;;;;;;;;;;;;;;12231:462;;:::o;7318:120::-;7364:4;7381:27;7387:12;:10;:12::i;:::-;7401:6;7381:5;:27::i;:::-;7426:4;7419:11;;7318:120;;;:::o;9174:539::-;9268:16;9286;9320:30;9367:5;:14;9373:7;9367:14;;;;;;;;;;;;;;;:21;;;;9353:36;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9353:36:0;;;;9320:69;;9400:28;9445:5;:14;9451:7;9445:14;;;;;;;;;;;;;;;:21;;;;9431:36;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9431:36:0;;;;9400:67;;9483:9;9495:1;9483:13;;9478:182;9502:5;:14;9508:7;9502:14;;;;;;;;;;;;;;;:21;;;;9498:1;:25;9478:182;;;9564:5;:14;9570:7;9564:14;;;;;;;;;;;;;;;9579:1;9564:17;;;;;;;;;;;;;;;;;;:24;;;9545:13;9559:1;9545:16;;;;;;;;;;;;;:43;;;;;9620:5;:14;9626:7;9620:14;;;;;;;;;;;;;;;9635:1;9620:17;;;;;;;;;;;;;;;;;;:28;;;9603:11;9615:1;9603:14;;;;;;;;;;;;;:45;;;;;9525:3;;;;;;;9478:182;;;;9678:13;9693:11;9670:35;;;;;;9174:539;;;:::o;10360:124::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10460:16;10442:15;;:34;;;;;;;;;;;;;;;;;;10360:124;:::o;5540:112::-;5599:7;5626:9;:18;5636:7;5626:18;;;;;;;;;;;;;;;;5619:25;;5540:112;;;:::o;3545:140::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3644:1;3607:40;;3628:6;;;;;;;;;;;3607:40;;;;;;;;;;;;3675:1;3658:6;;:19;;;;;;;;;;;;;;;;;;3545:140::o;5063:85::-;5106:7;5133;:5;:7::i;:::-;5126:14;;5063:85;:::o;3331:79::-;3369:7;3396:6;;;;;;;;;;;3389:13;;3331:79;:::o;10492:94::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10574:4;10560:11;:18;;;;10492:94;:::o;5249:89::-;5290:13;5323:7;5316:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5249:89;:::o;6927:383::-;7030:4;7052:228;7075:12;:10;:12::i;:::-;7102:7;7124:145;7181:15;7124:145;;;;;;;;;;;;;;;;;:11;:25;7136:12;:10;:12::i;:::-;7124:25;;;;;;;;;;;;;;;:34;7150:7;7124:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;7052:8;:228::i;:::-;7298:4;7291:11;;6927:383;;;;:::o;7553:550::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7699:9;7711:1;7699:13;;7694:295;7718:5;:15;7724:8;7718:15;;;;;;;;;;;;;;;:22;;;;7714:1;:26;7694:295;;;7799:11;7766:5;:15;7772:8;7766:15;;;;;;;;;;;;;;;7782:1;7766:18;;;;;;;;;;;;;;;;;;:29;;;:44;7762:216;;;7859:78;7911:7;7859:5;:15;7865:8;7859:15;;;;;;;;;;;;;;;7875:1;7859:18;;;;;;;;;;;;;;;;;;:25;;;:29;;:78;;;;:::i;:::-;7831:5;:15;7837:8;7831:15;;;;;;;;;;;;;;;7847:1;7831:18;;;;;;;;;;;;;;;;;;:25;;:106;;;;7956:7;;;7762:216;7742:3;;;;;;;7694:295;;;;7999:23;;:::i;:::-;8025:33;;;;;;;;8037:7;8025:33;;;;8046:11;8025:33;;;7999:59;;8069:5;:15;8075:8;8069:15;;;;;;;;;;;;;;;8090:4;8069:26;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8069:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3528:1;;7553:550;;;:::o;5660:183::-;5749:4;5771:42;5781:12;:10;:12::i;:::-;5795:9;5806:6;5771:9;:42::i;:::-;5831:4;5824:11;;5660:183;;;;:::o;4675:30::-;;;;;;;;;;;;;:::o;4712:26::-;;;;:::o;4387:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8111:1055::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8322:12;;:19;;8303:8;;:15;;:38;8281:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8409:9;8421:1;8409:13;;8404:755;8428:8;;:15;;8424:1;:19;8404:755;;;8465:14;8482:8;;8491:1;8482:11;;;;;;;;;;;;;8465:28;;8508:18;8529:12;;8542:1;8529:15;;;;;;;;;;;;;8508:36;;8561:22;8586:5;8561:30;;8611:9;8623:1;8611:13;;8606:367;8630:5;:15;8636:8;8630:15;;;;;;;;;;;;;;;:22;;;;8626:1;:26;8606:367;;;8715:10;8682:5;:15;8688:8;8682:15;;;;;;;;;;;;;;;8698:1;8682:18;;;;;;;;;;;;;;;;;;:29;;;:43;8678:280;;;8778:85;8834:6;8778:5;:15;8784:8;8778:15;;;;;;;;;;;;;;;8794:1;8778:18;;;;;;;;;;;;;;;;;;:25;;;:29;;:85;;;;:::i;:::-;8750:5;:15;8756:8;8750:15;;;;;;;;;;;;;;;8766:1;8750:18;;;;;;;;;;;;;;;;;;:25;;:113;;;;8906:4;8886:24;;8933:5;;8678:280;8654:3;;;;;;;8606:367;;;;8992:17;8987:161;;9030:23;;:::i;:::-;9056:31;;;;;;;;9068:6;9056:31;;;;9076:10;9056:31;;;9030:57;;9106:5;:15;9112:8;9106:15;;;;;;;;;;;;;;;9127:4;9106:26;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;9106:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8987:161;;8404:755;;;8445:3;;;;;;;8404:755;;;;8111:1055;;;;;:::o;5851:168::-;5952:7;5984:11;:18;5996:5;5984:18;;;;;;;;;;;;;;;:27;6003:7;5984:27;;;;;;;;;;;;;;;;5977:34;;5851:168;;;;:::o;10594:613::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10731:7;10707:12;:21;10720:7;10707:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;10764:4;10753:15;;:7;:15;;;10749:72;;;10785:10;10801:7;10785:24;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;10785:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10749:72;10846:5;10835:16;;:7;:16;;;10831:319;;;10873:9;10885:1;10873:13;;10868:271;10892:10;:17;;;;10888:1;:21;10868:271;;;10956:7;10939:24;;:10;10950:1;10939:13;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;10935:189;;;11004:10;11035:1;11015:10;:17;;;;:21;11004:33;;;;;;;;;;;;;;;;;;;;;;;;;10988:10;10999:1;10988:13;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;11060:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11099:5;;10935:189;10911:3;;;;;;;10868:271;;;;10831:319;11191:7;11165:34;;11182:7;11165:34;;;;;;;;;;;;10594:613;;:::o;3693:109::-;3468:12;:10;:12::i;:::-;3458:22;;:6;;;;;;;;;;;:22;;;3450:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3766:28;3785:8;3766:18;:28::i;:::-;3693:109;:::o;11998:116::-;12061:4;12085:12;:21;12098:7;12085:21;;;;;;;;;;;;;;;;;;;;;;;;;12078:28;;11998:116;;;:::o;1207:98::-;1252:15;1287:10;1280:17;;1207:98;:::o;13644:372::-;13789:1;13772:19;;:5;:19;;;;13764:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:1;13851:21;;:7;:21;;;;13843:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13954:6;13924:11;:18;13936:5;13924:18;;;;;;;;;;;;;;;:27;13943:7;13924:27;;;;;;;;;;;;;;;:36;;;;13992:7;13976:32;;13985:5;13976:32;;;14001:6;13976:32;;;;;;;;;;;;;;;;;;13644:372;;;:::o;12701:542::-;12851:1;12833:20;;:6;:20;;;;12825:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12935:1;12914:23;;:9;:23;;;;12906:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13010:108;13046:6;13010:108;;;;;;;;;;;;;;;;;:9;:17;13020:6;13010:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;12990:9;:17;13000:6;12990:17;;;;;;;;;;;;;;;:128;;;;13152:32;13177:6;13152:9;:20;13162:9;13152:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13129:9;:20;13139:9;13129:20;;;;;;;;;;;;;;;:55;;;;13217:9;13200:35;;13209:6;13200:35;;;13228:6;13200:35;;;;;;;;;;;;;;;;;;12701:542;;;:::o;1774:224::-;1894:7;1927:1;1922;:6;;1930:12;1914:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1914:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:9;1970:1;1966;:5;1954:17;;1989:1;1982:8;;;1774:224;;;;;:::o;1443:179::-;1501:7;1521:9;1537:1;1533;:5;1521:17;;1562:1;1557;:6;;1549:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:1;1606:8;;;1443:179;;;;:::o;13251:385::-;13346:1;13327:21;;:7;:21;;;;13319:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13420:105;13457:6;13420:105;;;;;;;;;;;;;;;;;:9;:18;13430:7;13420:18;;;;;;;;;;;;;;;;:22;;:105;;;;;:::i;:::-;13399:9;:18;13409:7;13399:18;;;;;;;;;;;;;;;:126;;;;13551:24;13568:6;13551:12;;:16;;:24;;;;:::i;:::-;13536:12;:39;;;;13617:1;13591:37;;13600:7;13591:37;;;13621:6;13591:37;;;;;;;;;;;;;;;;;;13251:385;;:::o;3810:266::-;3918:1;3898:22;;:8;:22;;;;3876:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4031:8;4002:38;;4023:6;;;;;;;;;;;4002:38;;;;;;;;;;;;4060:8;4051:6;;:17;;;;;;;;;;;;;;;;;;3810:266;:::o;1630:136::-;1688:7;1715:43;1719:1;1722;1715:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1708:50;;1630:136;;;;:::o;4083:10275::-;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://9038ba7546f1661aa73767a778d11c558166c147c213145955a731ceaea83e90
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.