ERC-20
NFT
Overview
Max Total Supply
1,000,000,000 SON
Holders
17 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
779,753,198 SONValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SonicERC777
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-09 */ /** *Submitted for verification at Etherscan.io on 2021-03-10 */ pragma solidity ^0.5.0; interface IERC777 { function name() external view returns (string memory); function symbol() external view returns (string memory); function granularity() external view returns (uint256); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function send(address recipient, uint256 amount, bytes calldata data) external; function burn(uint256 amount, bytes calldata data) external; function isOperatorFor(address operator, address tokenHolder) external view returns (bool); function authorizeOperator(address operator) external; function revokeOperator(address operator) external; function defaultOperators() external view returns (address[] memory); function operatorSend( address sender, address recipient, uint256 amount, bytes calldata data, bytes calldata operatorData ) external; function operatorBurn( address account, uint256 amount, bytes calldata data, bytes calldata operatorData ) external; event Sent( address indexed operator, address indexed from, address indexed to, uint256 amount, bytes data, bytes operatorData ); event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData); event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData); event AuthorizedOperator(address indexed operator, address indexed tokenHolder); event RevokedOperator(address indexed operator, address indexed tokenHolder); } interface IERC777Recipient { function tokensReceived( address operator, address from, address to, uint256 amount, bytes calldata userData, bytes calldata operatorData ) external; } interface IERC777Sender { function tokensToSend( address operator, address from, address to, uint256 amount, bytes calldata userData, bytes calldata operatorData ) external; } interface IERC20 { 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); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event TokenNameChanged(string indexed previousName, string indexed newName); event TokenSymbolChanged(string indexed previousSymbol, string indexed newSymbol); event ExhangeRateChanged(uint8 indexed previousRate, uint8 indexed newRate); } 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) { require(b <= a, "SafeMath: subtraction overflow"); 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) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0x9047b45143e6b812eff14c01c3bbac1708d59ad85aa905a4100975ed95b1a9b3; assembly { codehash := extcodesize(account) } return (codehash != 0x0 && codehash != accountHash); } function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } } interface IERC1820Registry { function setManager(address account, address newManager) external; function getManager(address account) external view returns (address); function setInterfaceImplementer(address account, bytes32 interfaceHash, address implementer) external; function getInterfaceImplementer(address account, bytes32 interfaceHash) external view returns (address); function interfaceHash(string calldata interfaceName) external pure returns (bytes32); function updateERC165Cache(address account, bytes4 interfaceId) external; function implementsERC165Interface(address account, bytes4 interfaceId) external view returns (bool); function implementsERC165InterfaceNoCache(address account, bytes4 interfaceId) external view returns (bool); event InterfaceImplementerSet(address indexed account, bytes32 indexed interfaceHash, address indexed implementer); event ManagerChanged(address indexed account, address indexed newManager); } contract OwnableToken { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function Ownable() public { owner = msg.sender; } modifier isOwner() { require(msg.sender == owner); _; } function transferOwnership(address newOwner) public isOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract ERC777 is IERC777, IERC20 ,OwnableToken{ using SafeMath for uint256; using Address for address; IERC1820Registry private _erc1820 = IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24); mapping(address => uint256) private _balances; uint256 private _totalSupply; string private _name; string private _symbol; string public version = '1.0'; uint8 public exchangeRate; bytes32 constant private TOKENS_SENDER_INTERFACE_HASH = 0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895; bytes32 constant private TOKENS_RECIPIENT_INTERFACE_HASH = 0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b; address[] private _defaultOperatorsArray; mapping (address => uint256) balances; mapping(address => bool) private _defaultOperators; mapping(address => mapping(address => bool)) private _operators; mapping(address => mapping(address => bool)) private _revokedDefaultOperators; mapping (address => mapping (address => uint256)) private _allowances; constructor( string memory name, string memory symbol, address[] memory defaultOperators ) public { _name = name; _symbol = symbol; _defaultOperatorsArray = defaultOperators; for (uint256 i = 0; i < _defaultOperatorsArray.length; i++) { _defaultOperators[_defaultOperatorsArray[i]] = true; } _erc1820.setInterfaceImplementer(address(this), keccak256("ERC777Token"), address(this)); _erc1820.setInterfaceImplementer(address(this), keccak256("ERC20Token"), address(this)); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return 18; } function granularity() public view returns (uint256) { return 1; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address tokenHolder) public view returns (uint256) { return _balances[tokenHolder]; } function send(address recipient, uint256 amount, bytes calldata data) external { _send(msg.sender, msg.sender, recipient, amount, data, "", true); } function changeTokenName( string memory newName) public isOwner returns (bool success) { emit TokenNameChanged( _name, newName); _name = newName; return true; } function changeTokenSymbol(string memory newSymbol) public isOwner returns (bool success) { emit TokenSymbolChanged( _symbol, newSymbol); _symbol = newSymbol; return true; } function changeExhangeRate(uint8 newRate) public isOwner returns (bool success) { emit ExhangeRateChanged(exchangeRate, newRate); exchangeRate = newRate; return true; } function () payable external{ fundTokens(); } function fundTokens() public payable { require(msg.value > 0); uint256 tokens = msg.value.mul(exchangeRate); require(balances[owner].sub(tokens) > 0); balances[msg.sender] = balances[msg.sender].add(tokens); balances[owner] = balances[owner].sub(tokens); emit Transfer(msg.sender, owner, msg.value); forwardFunds(); } function forwardFunds() internal { address(uint160(owner)).transfer(msg.value); } function transfer(address recipient, uint256 amount) external returns (bool) { require(recipient != address(0), "ERC777: transfer to the zero address"); address from = msg.sender; _callTokensToSend(from, from, recipient, amount, "", ""); _move(from, from, recipient, amount, "", ""); _callTokensReceived(from, from, recipient, amount, "", "", false); return true; } function burn(uint256 amount, bytes calldata data) external { _burn(msg.sender, msg.sender, amount, data, ""); } function isOperatorFor( address operator, address tokenHolder ) public view returns (bool) { return operator == tokenHolder || (_defaultOperators[operator] && !_revokedDefaultOperators[tokenHolder][operator]) || _operators[tokenHolder][operator]; } function authorizeOperator(address operator) external { require(msg.sender != operator, "ERC777: authorizing self as operator"); if (_defaultOperators[operator]) { delete _revokedDefaultOperators[msg.sender][operator]; } else { _operators[msg.sender][operator] = true; } emit AuthorizedOperator(operator, msg.sender); } function revokeOperator(address operator) external { require(operator != msg.sender, "ERC777: revoking self as operator"); if (_defaultOperators[operator]) { _revokedDefaultOperators[msg.sender][operator] = true; } else { delete _operators[msg.sender][operator]; } emit RevokedOperator(operator, msg.sender); } function defaultOperators() public view returns (address[] memory) { return _defaultOperatorsArray; } function operatorSend( address sender, address recipient, uint256 amount, bytes calldata data, bytes calldata operatorData ) external { require(isOperatorFor(msg.sender, sender), "ERC777: caller is not an operator for holder"); _send(msg.sender, sender, recipient, amount, data, operatorData, true); } function operatorBurn(address account, uint256 amount, bytes calldata data, bytes calldata operatorData) external { require(isOperatorFor(msg.sender, account), "ERC777: caller is not an operator for holder"); _burn(msg.sender, account, amount, data, operatorData); } function allowance(address holder, address spender) public view returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 value) external returns (bool) { address holder = msg.sender; _approve(holder, spender, value); return true; } function transferFrom(address holder, address recipient, uint256 amount) external returns (bool) { require(recipient != address(0), "ERC777: transfer to the zero address"); require(holder != address(0), "ERC777: transfer from the zero address"); address spender = msg.sender; _callTokensToSend(spender, holder, recipient, amount, "", ""); _move(spender, holder, recipient, amount, "", ""); _approve(holder, spender, _allowances[holder][spender].sub(amount)); _callTokensReceived(spender, holder, recipient, amount, "", "", false); return true; } function _mint( address operator, address account, uint256 amount, bytes memory userData, bytes memory operatorData ) internal { require(account != address(0), "ERC777: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); _callTokensReceived(operator, address(0), account, amount, userData, operatorData, true); emit Minted(operator, account, amount, userData, operatorData); emit Transfer(address(0), account, amount); } function _send( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData, bool requireReceptionAck ) private { require(from != address(0), "ERC777: send from the zero address"); require(to != address(0), "ERC777: send to the zero address"); _callTokensToSend(operator, from, to, amount, userData, operatorData); _move(operator, from, to, amount, userData, operatorData); _callTokensReceived(operator, from, to, amount, userData, operatorData, requireReceptionAck); } function _burn( address operator, address from, uint256 amount, bytes memory data, bytes memory operatorData ) private { require(from != address(0), "ERC777: burn from the zero address"); _callTokensToSend(operator, from, address(0), amount, data, operatorData); // Update state variables _totalSupply = _totalSupply.sub(amount); _balances[from] = _balances[from].sub(amount); emit Burned(operator, from, amount, data, operatorData); emit Transfer(from, address(0), amount); } function _move( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData ) private { _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount); emit Sent(operator, from, to, amount, userData, operatorData); emit Transfer(from, to, amount); } function _approve(address holder, address spender, uint256 value) private { require(spender != address(0), "ERC777: approve to the zero address"); _allowances[holder][spender] = value; emit Approval(holder, spender, value); } function _callTokensToSend( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData ) private { address implementer = _erc1820.getInterfaceImplementer(from, TOKENS_SENDER_INTERFACE_HASH); if (implementer != address(0)) { IERC777Sender(implementer).tokensToSend(operator, from, to, amount, userData, operatorData); } } function _callTokensReceived( address operator, address from, address to, uint256 amount, bytes memory userData, bytes memory operatorData, bool requireReceptionAck ) private { address implementer = _erc1820.getInterfaceImplementer(to, TOKENS_RECIPIENT_INTERFACE_HASH); if (implementer != address(0)) { IERC777Recipient(implementer).tokensReceived(operator, from, to, amount, userData, operatorData); } else if (requireReceptionAck) { require(!to.isContract(), "ERC777: token recipient contract has no implementer for ERC777TokensRecipient"); } } } contract SonicERC777 is ERC777 { constructor () public ERC777("Sonic Token", "SON", new address[](0)) { _mint(msg.sender, msg.sender, 1000000000 * 10 ** 18, "", ""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"previousRate","type":"uint8"},{"indexed":true,"internalType":"uint8","name":"newRate","type":"uint8"}],"name":"ExhangeRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"previousName","type":"string"},{"indexed":true,"internalType":"string","name":"newName","type":"string"}],"name":"TokenNameChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"previousSymbol","type":"string"},{"indexed":true,"internalType":"string","name":"newSymbol","type":"string"}],"name":"TokenSymbolChanged","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"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"Ownable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"holder","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenHolder","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"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"newRate","type":"uint8"}],"name":"changeExhangeRate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"changeTokenName","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"changeTokenSymbol","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRate","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"fundTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","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":false,"inputs":[{"internalType":"address","name":"holder","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":true,"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052731820a4b7618bde71dce8cdc73aab6c95905fad24600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525060069080519060200190620000a692919062000cb9565b50348015620000b457600080fd5b506040518060400160405280600b81526020017f536f6e696320546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600381526020017f534f4e00000000000000000000000000000000000000000000000000000000008152506000604051908082528060200260200182016040528015620001525781602001602082028038833980820191505090505b5082600490805190602001906200016b92919062000cb9565b5081600590805190602001906200018492919062000cb9565b5080600890805190602001906200019d92919062000d40565b5060008090505b60088054905081101562000250576001600a600060088481548110620001c657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620001a4565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e000000000000000000000000000000000000000000815250600b0190506040518091039020306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200036457600080fd5b505af115801562000379573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f4552433230546f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200049057600080fd5b505af1158015620004a5573d6000803e3d6000fd5b50505050505050620004eb33336b033b2e3c9fd0803ce80000006040518060200160405280600081525060405180602001604052806000815250620004f160201b60201c565b62000e3d565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141562000595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b620005b1836003546200081e60201b620027861790919060201c565b6003819055506200061083600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200081e60201b620027861790919060201c565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200066c856000868686866001620008a760201b60201c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156200070a578082015181840152602081019050620006ed565b50505050905090810190601f168015620007385780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156200077357808201518184015260208101905062000756565b50505050905090810190601f168015620007a15780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b6000808284019050838110156200089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156200097457600080fd5b505afa15801562000989573d6000803e3d6000fd5b505050506040513d6020811015620009a057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000bd6578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101562000afa57808201518184015260208101905062000add565b50505050905090810190601f16801562000b285780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101562000b6357808201518184015260208101905062000b46565b50505050905090810190601f16801562000b915780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801562000bb757600080fd5b505af115801562000bcc573d6000803e3d6000fd5b5050505062000c63565b811562000c625762000c098673ffffffffffffffffffffffffffffffffffffffff1662000c6d60201b620037f51760201c565b1562000c61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180620048f7604d913960600191505060405180910390fd5b5b5b5050505050505050565b60008060007f9047b45143e6b812eff14c01c3bbac1708d59ad85aa905a4100975ed95b1a9b360001b9050833b91506000801b821415801562000cb05750808214155b92505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000cfc57805160ff191683800117855562000d2d565b8280016001018555821562000d2d579182015b8281111562000d2c57825182559160200191906001019062000d0f565b5b50905062000d3c919062000dcf565b5090565b82805482825590600052602060002090810192821562000dbc579160200282015b8281111562000dbb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000d61565b5b50905062000dcb919062000df7565b5090565b62000df491905b8082111562000df057600081600090555060010162000dd6565b5090565b90565b62000e3a91905b8082111562000e3657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000dfe565b5090565b90565b613aaa8062000e4d6000396000f3fe60806040526004361061019c5760003560e01c8063959b8c3f116100ec578063d95b63711161008a578063fad8b32a11610064578063fad8b32a14610c61578063fc673c4f14610cb2578063fcae08e114610db7578063fe9d930314610dc15761019c565b8063d95b637114610b02578063dd62ed3e14610b8b578063f2fde38b14610c105761019c565b8063a9059cbb116100c6578063a9059cbb14610879578063b0018bfc146108ec578063ba0410fb146109cc578063c6d3ab9d14610a225761019c565b8063959b8c3f146106e857806395d89b41146107395780639bd9bbc6146107c95761019c565b80633ba0b9a91161015957806362ad1b831161013357806362ad1b83146104f057806370a08231146106155780638afc36051461067a5780638da5cb5b146106915761019c565b80633ba0b9a91461040457806354fd4d5014610435578063556f0dc7146104c55761019c565b806306e48538146101a657806306fdde0314610212578063095ea7b3146102a257806318160ddd1461031557806323b872dd14610340578063313ce567146103d3575b6101a4610e51565b005b3480156101b257600080fd5b506101bb611103565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156101fe5780820151818401526020810190506101e3565b505050509050019250505060405180910390f35b34801561021e57600080fd5b50610227611191565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561026757808201518184015260208101905061024c565b50505050905090810190601f1680156102945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ae57600080fd5b506102fb600480360360408110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611233565b604051808215151515815260200191505060405180910390f35b34801561032157600080fd5b5061032a61124f565b6040518082815260200191505060405180910390f35b34801561034c57600080fd5b506103b96004803603606081101561036357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611259565b604051808215151515815260200191505060405180910390f35b3480156103df57600080fd5b506103e8611496565b604051808260ff1660ff16815260200191505060405180910390f35b34801561041057600080fd5b5061041961149f565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044157600080fd5b5061044a6114b2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048a57808201518184015260208101905061046f565b50505050905090810190601f1680156104b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d157600080fd5b506104da611550565b6040518082815260200191505060405180910390f35b3480156104fc57600080fd5b50610613600480360360a081101561051357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460018302840111640100000000831117156105ae57600080fd5b9091929391929390803590602001906401000000008111156105cf57600080fd5b8201836020820111156105e157600080fd5b8035906020019184600183028401116401000000008311171561060357600080fd5b9091929391929390505050611559565b005b34801561062157600080fd5b506106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611659565b6040518082815260200191505060405180910390f35b34801561068657600080fd5b5061068f6116a2565b005b34801561069d57600080fd5b506106a66116e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106f457600080fd5b506107376004803603602081101561070b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611709565b005b34801561074557600080fd5b5061074e611964565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078e578082015181840152602081019050610773565b50505050905090810190601f1680156107bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107d557600080fd5b50610877600480360360608110156107ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561083357600080fd5b82018360208201111561084557600080fd5b8035906020019184600183028401116401000000008311171561086757600080fd5b9091929391929390505050611a06565b005b34801561088557600080fd5b506108d26004803603604081101561089c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a6f565b604051808215151515815260200191505060405180910390f35b3480156108f857600080fd5b506109b26004803603602081101561090f57600080fd5b810190808035906020019064010000000081111561092c57600080fd5b82018360208201111561093e57600080fd5b8035906020019184600183028401116401000000008311171561096057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b8c565b604051808215151515815260200191505060405180910390f35b3480156109d857600080fd5b50610a08600480360360208110156109ef57600080fd5b81019080803560ff169060200190929190505050611cfe565b604051808215151515815260200191505060405180910390f35b348015610a2e57600080fd5b50610ae860048036036020811015610a4557600080fd5b8101908080359060200190640100000000811115610a6257600080fd5b820183602082011115610a7457600080fd5b80359060200191846001830284011164010000000083111715610a9657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611dc0565b604051808215151515815260200191505060405180910390f35b348015610b0e57600080fd5b50610b7160048036036040811015610b2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f32565b604051808215151515815260200191505060405180910390f35b348015610b9757600080fd5b50610bfa60048036036040811015610bae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120e3565b6040518082815260200191505060405180910390f35b348015610c1c57600080fd5b50610c5f60048036036020811015610c3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061216a565b005b348015610c6d57600080fd5b50610cb060048036036020811015610c8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122bb565b005b348015610cbe57600080fd5b50610db560048036036080811015610cd557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610d1c57600080fd5b820183602082011115610d2e57600080fd5b80359060200191846001830284011164010000000083111715610d5057600080fd5b909192939192939080359060200190640100000000811115610d7157600080fd5b820183602082011115610d8357600080fd5b80359060200191846001830284011164010000000083111715610da557600080fd5b9091929391929390505050612516565b005b610dbf610e51565b005b348015610dcd57600080fd5b50610e4f60048036036040811015610de457600080fd5b810190808035906020019092919080359060200190640100000000811115610e0b57600080fd5b820183602082011115610e1d57600080fd5b80359060200191846001830284011164010000000083111715610e3f57600080fd5b9091929391929390505050612612565b005b60003411610e5e57600080fd5b6000610e85600760009054906101000a900460ff1660ff163461267790919063ffffffff16565b90506000610efc82600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b11610f0657600080fd5b610f5881600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278690919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061100e81600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef346040518082815260200191505060405180910390a361110061280e565b50565b6060600880548060200260200160405190810160405280929190818152602001828054801561118757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161113d575b5050505050905090565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112295780601f106111fe57610100808354040283529160200191611229565b820191906000526020600020905b81548152906001019060200180831161120c57829003601f168201915b5050505050905090565b600080339050611244818585612878565b600191505092915050565b6000600354905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139dd6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611366576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a2d6026913960400191505060405180910390fd5b60003390506113978186868660405180602001604052806000815250604051806020016040528060008152506129e9565b6113c3818686866040518060200160405280600081525060405180602001604052806000815250612d11565b61145c858261145786600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b612878565b61148a8186868660405180602001604052806000815250604051806020016040528060008152506000612ffe565b60019150509392505050565b60006012905090565b600760009054906101000a900460ff1681565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115485780601f1061151d57610100808354040283529160200191611548565b820191906000526020600020905b81548152906001019060200180831161152b57829003601f168201915b505050505081565b60006001905090565b6115633388611f32565b6115b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613a01602c913960400191505060405180910390fd5b6116503388888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060016133a7565b50505050505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061392a6024913960400191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561187157600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055611907565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119fc5780601f106119d1576101008083540402835291602001916119fc565b820191906000526020600020905b8154815290600101906020018083116119df57829003601f168201915b5050505050905090565b611a693333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506040518060200160405280600081525060016133a7565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139dd6024913960400191505060405180910390fd5b6000339050611b278182868660405180602001604052806000815250604051806020016040528060008152506129e9565b611b53818286866040518060200160405280600081525060405180602001604052806000815250612d11565b611b818182868660405180602001604052806000815250604051806020016040528060008152506000612ffe565b600191505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611be757600080fd5b816040518082805190602001908083835b60208310611c1b5780518252602082019150602081019050602083039250611bf8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060046040518082805460018160011615610100020316600290048015611ca55780601f10611c83576101008083540402835291820191611ca5565b820191906000526020600020905b815481529060010190602001808311611c91575b505091505060405180910390207fe08ba098c56583ff7ce264f98fb97b7ddc5e6af834acc0556b24327f72a555f960405160405180910390a38160049080519060200190611cf4929190613840565b5060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d5957600080fd5b8160ff16600760009054906101000a900460ff1660ff167f69a4b1d840e5b6ee4b5b529c352c29b6535602f8c6807339d308cf4104fd7d0e60405160405180910390a381600760006101000a81548160ff021916908360ff16021790555060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e1b57600080fd5b816040518082805190602001908083835b60208310611e4f5780518252602082019150602081019050602083039250611e2c565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060056040518082805460018160011615610100020316600290048015611ed95780601f10611eb7576101008083540402835291820191611ed9565b820191906000526020600020905b815481529060010190602001808311611ec5575b505091505060405180910390207f68023cab388c6052af3fa625f164cd0c14cc9125d57286fbe0d9b384847c4c0260405160405180910390a38160059080519060200190611f28929190613840565b5060019050919050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061204a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120495750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806120db5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121fd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061394e6021913960400191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561242c576001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506124b9565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b6125203387611f32565b612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613a01602c913960400191505060405180910390fd5b61260a33878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613504565b505050505050565b61267233338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060405180602001604052806000815250613504565b505050565b60008083141561268a57600090506126f7565b600082840290508284828161269b57fe5b04146126f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061396f6021913960400191505060405180910390fd5b809150505b92915050565b600082821115612775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015612804576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612875573d6000803e3d6000fd5b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613a536023913960400191505060405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612ab557600080fd5b505afa158015612ac9573d6000803e3d6000fd5b505050506040513d6020811015612adf57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612d08578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612c37578082015181840152602081019050612c1c565b50505050905090810190601f168015612c645780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612c9d578082015181840152602081019050612c82565b50505050905090810190601f168015612cca5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015612cef57600080fd5b505af1158015612d03573d6000803e3d6000fd5b505050505b50505050505050565b612d6383600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612df883600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612eee578082015181840152602081019050612ed3565b50505050905090810190601f168015612f1b5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612f54578082015181840152602081019050612f39565b50505050905090810190601f168015612f815780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156130ca57600080fd5b505afa1580156130de573d6000803e3d6000fd5b505050506040513d60208110156130f457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613320578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561324b578082015181840152602081019050613230565b50505050905090810190601f1680156132785780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156132b1578082015181840152602081019050613296565b50505050905090810190601f1680156132de5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561330357600080fd5b505af1158015613317573d6000803e3d6000fd5b5050505061339d565b811561339c576133458673ffffffffffffffffffffffffffffffffffffffff166137f5565b1561339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180613990604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561342d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138e66022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156134d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6134de8787878787876129e9565b6134ec878787878787612d11565b6134fb87878787878787612ffe565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561358a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139086022913960400191505060405180910390fd5b613599858560008686866129e9565b6135ae836003546126fd90919063ffffffff16565b60038190555061360683600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156136e55780820151818401526020810190506136ca565b50505050905090810190601f1680156137125780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561374b578082015181840152602081019050613730565b50505050905090810190601f1680156137785780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b60008060007f9047b45143e6b812eff14c01c3bbac1708d59ad85aa905a4100975ed95b1a9b360001b9050833b91506000801b82141580156138375750808214155b92505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061388157805160ff19168380011785556138af565b828001600101855582156138af579182015b828111156138ae578251825591602001919060010190613893565b5b5090506138bc91906138c0565b5090565b6138e291905b808211156138de5760008160009055506001016138c6565b5090565b9056fe4552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f72536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a20617070726f766520746f20746865207a65726f2061646472657373a265627a7a723158205103d8887ef2f97321c2ecf6181f209f2a7c65f020eaa8273b0e551af65faf8364736f6c634300051100324552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e74
Deployed Bytecode
0x60806040526004361061019c5760003560e01c8063959b8c3f116100ec578063d95b63711161008a578063fad8b32a11610064578063fad8b32a14610c61578063fc673c4f14610cb2578063fcae08e114610db7578063fe9d930314610dc15761019c565b8063d95b637114610b02578063dd62ed3e14610b8b578063f2fde38b14610c105761019c565b8063a9059cbb116100c6578063a9059cbb14610879578063b0018bfc146108ec578063ba0410fb146109cc578063c6d3ab9d14610a225761019c565b8063959b8c3f146106e857806395d89b41146107395780639bd9bbc6146107c95761019c565b80633ba0b9a91161015957806362ad1b831161013357806362ad1b83146104f057806370a08231146106155780638afc36051461067a5780638da5cb5b146106915761019c565b80633ba0b9a91461040457806354fd4d5014610435578063556f0dc7146104c55761019c565b806306e48538146101a657806306fdde0314610212578063095ea7b3146102a257806318160ddd1461031557806323b872dd14610340578063313ce567146103d3575b6101a4610e51565b005b3480156101b257600080fd5b506101bb611103565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156101fe5780820151818401526020810190506101e3565b505050509050019250505060405180910390f35b34801561021e57600080fd5b50610227611191565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561026757808201518184015260208101905061024c565b50505050905090810190601f1680156102945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ae57600080fd5b506102fb600480360360408110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611233565b604051808215151515815260200191505060405180910390f35b34801561032157600080fd5b5061032a61124f565b6040518082815260200191505060405180910390f35b34801561034c57600080fd5b506103b96004803603606081101561036357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611259565b604051808215151515815260200191505060405180910390f35b3480156103df57600080fd5b506103e8611496565b604051808260ff1660ff16815260200191505060405180910390f35b34801561041057600080fd5b5061041961149f565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044157600080fd5b5061044a6114b2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048a57808201518184015260208101905061046f565b50505050905090810190601f1680156104b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d157600080fd5b506104da611550565b6040518082815260200191505060405180910390f35b3480156104fc57600080fd5b50610613600480360360a081101561051357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460018302840111640100000000831117156105ae57600080fd5b9091929391929390803590602001906401000000008111156105cf57600080fd5b8201836020820111156105e157600080fd5b8035906020019184600183028401116401000000008311171561060357600080fd5b9091929391929390505050611559565b005b34801561062157600080fd5b506106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611659565b6040518082815260200191505060405180910390f35b34801561068657600080fd5b5061068f6116a2565b005b34801561069d57600080fd5b506106a66116e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106f457600080fd5b506107376004803603602081101561070b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611709565b005b34801561074557600080fd5b5061074e611964565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078e578082015181840152602081019050610773565b50505050905090810190601f1680156107bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107d557600080fd5b50610877600480360360608110156107ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561083357600080fd5b82018360208201111561084557600080fd5b8035906020019184600183028401116401000000008311171561086757600080fd5b9091929391929390505050611a06565b005b34801561088557600080fd5b506108d26004803603604081101561089c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a6f565b604051808215151515815260200191505060405180910390f35b3480156108f857600080fd5b506109b26004803603602081101561090f57600080fd5b810190808035906020019064010000000081111561092c57600080fd5b82018360208201111561093e57600080fd5b8035906020019184600183028401116401000000008311171561096057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b8c565b604051808215151515815260200191505060405180910390f35b3480156109d857600080fd5b50610a08600480360360208110156109ef57600080fd5b81019080803560ff169060200190929190505050611cfe565b604051808215151515815260200191505060405180910390f35b348015610a2e57600080fd5b50610ae860048036036020811015610a4557600080fd5b8101908080359060200190640100000000811115610a6257600080fd5b820183602082011115610a7457600080fd5b80359060200191846001830284011164010000000083111715610a9657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611dc0565b604051808215151515815260200191505060405180910390f35b348015610b0e57600080fd5b50610b7160048036036040811015610b2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f32565b604051808215151515815260200191505060405180910390f35b348015610b9757600080fd5b50610bfa60048036036040811015610bae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120e3565b6040518082815260200191505060405180910390f35b348015610c1c57600080fd5b50610c5f60048036036020811015610c3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061216a565b005b348015610c6d57600080fd5b50610cb060048036036020811015610c8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122bb565b005b348015610cbe57600080fd5b50610db560048036036080811015610cd557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610d1c57600080fd5b820183602082011115610d2e57600080fd5b80359060200191846001830284011164010000000083111715610d5057600080fd5b909192939192939080359060200190640100000000811115610d7157600080fd5b820183602082011115610d8357600080fd5b80359060200191846001830284011164010000000083111715610da557600080fd5b9091929391929390505050612516565b005b610dbf610e51565b005b348015610dcd57600080fd5b50610e4f60048036036040811015610de457600080fd5b810190808035906020019092919080359060200190640100000000811115610e0b57600080fd5b820183602082011115610e1d57600080fd5b80359060200191846001830284011164010000000083111715610e3f57600080fd5b9091929391929390505050612612565b005b60003411610e5e57600080fd5b6000610e85600760009054906101000a900460ff1660ff163461267790919063ffffffff16565b90506000610efc82600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b11610f0657600080fd5b610f5881600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278690919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061100e81600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef346040518082815260200191505060405180910390a361110061280e565b50565b6060600880548060200260200160405190810160405280929190818152602001828054801561118757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161113d575b5050505050905090565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112295780601f106111fe57610100808354040283529160200191611229565b820191906000526020600020905b81548152906001019060200180831161120c57829003601f168201915b5050505050905090565b600080339050611244818585612878565b600191505092915050565b6000600354905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139dd6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611366576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a2d6026913960400191505060405180910390fd5b60003390506113978186868660405180602001604052806000815250604051806020016040528060008152506129e9565b6113c3818686866040518060200160405280600081525060405180602001604052806000815250612d11565b61145c858261145786600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b612878565b61148a8186868660405180602001604052806000815250604051806020016040528060008152506000612ffe565b60019150509392505050565b60006012905090565b600760009054906101000a900460ff1681565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115485780601f1061151d57610100808354040283529160200191611548565b820191906000526020600020905b81548152906001019060200180831161152b57829003601f168201915b505050505081565b60006001905090565b6115633388611f32565b6115b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613a01602c913960400191505060405180910390fd5b6116503388888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060016133a7565b50505050505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061392a6024913960400191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561187157600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055611907565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119fc5780601f106119d1576101008083540402835291602001916119fc565b820191906000526020600020905b8154815290600101906020018083116119df57829003601f168201915b5050505050905090565b611a693333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506040518060200160405280600081525060016133a7565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139dd6024913960400191505060405180910390fd5b6000339050611b278182868660405180602001604052806000815250604051806020016040528060008152506129e9565b611b53818286866040518060200160405280600081525060405180602001604052806000815250612d11565b611b818182868660405180602001604052806000815250604051806020016040528060008152506000612ffe565b600191505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611be757600080fd5b816040518082805190602001908083835b60208310611c1b5780518252602082019150602081019050602083039250611bf8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060046040518082805460018160011615610100020316600290048015611ca55780601f10611c83576101008083540402835291820191611ca5565b820191906000526020600020905b815481529060010190602001808311611c91575b505091505060405180910390207fe08ba098c56583ff7ce264f98fb97b7ddc5e6af834acc0556b24327f72a555f960405160405180910390a38160049080519060200190611cf4929190613840565b5060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d5957600080fd5b8160ff16600760009054906101000a900460ff1660ff167f69a4b1d840e5b6ee4b5b529c352c29b6535602f8c6807339d308cf4104fd7d0e60405160405180910390a381600760006101000a81548160ff021916908360ff16021790555060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e1b57600080fd5b816040518082805190602001908083835b60208310611e4f5780518252602082019150602081019050602083039250611e2c565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060056040518082805460018160011615610100020316600290048015611ed95780601f10611eb7576101008083540402835291820191611ed9565b820191906000526020600020905b815481529060010190602001808311611ec5575b505091505060405180910390207f68023cab388c6052af3fa625f164cd0c14cc9125d57286fbe0d9b384847c4c0260405160405180910390a38160059080519060200190611f28929190613840565b5060019050919050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061204a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120495750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806120db5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121fd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061394e6021913960400191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561242c576001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506124b9565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b6125203387611f32565b612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613a01602c913960400191505060405180910390fd5b61260a33878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613504565b505050505050565b61267233338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060405180602001604052806000815250613504565b505050565b60008083141561268a57600090506126f7565b600082840290508284828161269b57fe5b04146126f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061396f6021913960400191505060405180910390fd5b809150505b92915050565b600082821115612775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015612804576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612875573d6000803e3d6000fd5b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613a536023913960400191505060405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612ab557600080fd5b505afa158015612ac9573d6000803e3d6000fd5b505050506040513d6020811015612adf57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612d08578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612c37578082015181840152602081019050612c1c565b50505050905090810190601f168015612c645780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612c9d578082015181840152602081019050612c82565b50505050905090810190601f168015612cca5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015612cef57600080fd5b505af1158015612d03573d6000803e3d6000fd5b505050505b50505050505050565b612d6383600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612df883600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612eee578082015181840152602081019050612ed3565b50505050905090810190601f168015612f1b5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612f54578082015181840152602081019050612f39565b50505050905090810190601f168015612f815780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156130ca57600080fd5b505afa1580156130de573d6000803e3d6000fd5b505050506040513d60208110156130f457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613320578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561324b578082015181840152602081019050613230565b50505050905090810190601f1680156132785780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156132b1578082015181840152602081019050613296565b50505050905090810190601f1680156132de5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561330357600080fd5b505af1158015613317573d6000803e3d6000fd5b5050505061339d565b811561339c576133458673ffffffffffffffffffffffffffffffffffffffff166137f5565b1561339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180613990604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561342d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138e66022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156134d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6134de8787878787876129e9565b6134ec878787878787612d11565b6134fb87878787878787612ffe565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561358a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139086022913960400191505060405180910390fd5b613599858560008686866129e9565b6135ae836003546126fd90919063ffffffff16565b60038190555061360683600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fd90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156136e55780820151818401526020810190506136ca565b50505050905090810190601f1680156137125780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561374b578082015181840152602081019050613730565b50505050905090810190601f1680156137785780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b60008060007f9047b45143e6b812eff14c01c3bbac1708d59ad85aa905a4100975ed95b1a9b360001b9050833b91506000801b82141580156138375750808214155b92505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061388157805160ff19168380011785556138af565b828001600101855582156138af579182015b828111156138ae578251825591602001919060010190613893565b5b5090506138bc91906138c0565b5090565b6138e291905b808211156138de5760008160009055506001016138c6565b5090565b9056fe4552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f72536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a20617070726f766520746f20746865207a65726f2061646472657373a265627a7a723158205103d8887ef2f97321c2ecf6181f209f2a7c65f020eaa8273b0e551af65faf8364736f6c63430005110032
Deployed Bytecode Sourcemap
17440:195:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9523:12;:10;:12::i;:::-;17440:195;11787:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11787:115: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;11787:115:0;;;;;;;;;;;;;;;;;8074:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8074:83: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;8074:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12763:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12763:184:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12763:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8453:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8453:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12959:632;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12959:632:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12959:632:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8270:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8270:76:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6757:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6757:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6721:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6721:29: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;6721:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8359:80;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8359:80:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11916:384;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11916:384:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11916:384:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11916:384:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11916:384:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11916:384:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11916:384:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11916:384:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11916:384:0;;;;;;;;;;;;:::i;:::-;;8558:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8558:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8558:118:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5984:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5984:63:0;;;:::i;:::-;;5863:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5863:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10971:399;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10971:399:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10971:399:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8171:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8171:87: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;8171:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8685:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8685:162:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8685:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8685:162:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8685:162:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8685:162:0;;;;;;;;;;;;:::i;:::-;;10061:434;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10061:434:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10061:434:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8859:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8859:192:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8859:192:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8859:192:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8859:192:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8859:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8859:192:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9272:200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9272:200:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9272:200:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9059:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9059:205:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9059:205:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9059:205:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9059:205:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9059:205:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9059:205:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10647:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10647:311:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10647:311:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12615:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12615:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12615:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6141:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6141:190:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6141:190:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11383:390;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11383:390:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11383:390:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12313:289;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12313:289:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12313:289:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;12313:289:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12313:289:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12313:289:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;12313:289:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12313:289:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12313:289:0;;;;;;;;;;;;:::i;:::-;;9555:395;;;:::i;:::-;;10508:126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10508:126:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10508:126:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10508:126:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10508:126:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10508:126:0;;;;;;;;;;;;:::i;:::-;;9555:395;9623:1;9611:9;:13;9603:22;;;;;;9636:14;9653:27;9667:12;;;;;;;;;;;9653:27;;:9;:13;;:27;;;;:::i;:::-;9636:44;;9729:1;9699:27;9719:6;9699:8;:15;9708:5;;;;;;;;;;;9699:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;:31;9691:40;;;;;;9765:32;9790:6;9765:8;:20;9774:10;9765:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9742:8;:20;9751:10;9742:20;;;;;;;;;;;;;;;:55;;;;9826:27;9846:6;9826:8;:15;9835:5;;;;;;;;;;;9826:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9808:8;:15;9817:5;;;;;;;;;;;9808:15;;;;;;;;;;;;;;;:45;;;;9890:5;;;;;;;;;;;9869:38;;9878:10;9869:38;;;9897:9;9869:38;;;;;;;;;;;;;;;;;;9928:14;:12;:14::i;:::-;9555:395;:::o;11787:115::-;11836:16;11872:22;11865:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11787:115;:::o;8074:83::-;8111:13;8144:5;8137:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8074:83;:::o;12763:184::-;12830:4;12847:14;12864:10;12847:27;;12885:32;12894:6;12902:7;12911:5;12885:8;:32::i;:::-;12935:4;12928:11;;;12763:184;;;;:::o;8453:91::-;8497:7;8524:12;;8517:19;;8453:91;:::o;12959:632::-;13050:4;13096:1;13075:23;;:9;:23;;;;13067:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13176:1;13158:20;;:6;:20;;;;13150:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13234:15;13252:10;13234:28;;13275:61;13293:7;13302:6;13310:9;13321:6;13275:61;;;;;;;;;;;;;;;;;;;;;;;;:17;:61::i;:::-;13349:49;13355:7;13364:6;13372:9;13383:6;13349:49;;;;;;;;;;;;;;;;;;;;;;;;:5;:49::i;:::-;13409:67;13418:6;13426:7;13435:40;13468:6;13435:11;:19;13447:6;13435:19;;;;;;;;;;;;;;;:28;13455:7;13435:28;;;;;;;;;;;;;;;;:32;;:40;;;;:::i;:::-;13409:8;:67::i;:::-;13489:70;13509:7;13518:6;13526:9;13537:6;13489:70;;;;;;;;;;;;;;;;;;;;;;;;13553:5;13489:19;:70::i;:::-;13579:4;13572:11;;;12959:632;;;;;:::o;8270:76::-;8311:5;8336:2;8329:9;;8270:76;:::o;6757:25::-;;;;;;;;;;;;;:::o;6721:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8359:80::-;8403:7;8430:1;8423:8;;8359:80;:::o;11916:384::-;12129:33;12143:10;12155:6;12129:13;:33::i;:::-;12121:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12222:70;12228:10;12240:6;12248:9;12259:6;12267:4;;12222:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;12222:70:0;;;;;;12273:12;;12222:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;12222:70:0;;;;;;12287:4;12222:5;:70::i;:::-;11916:384;;;;;;;:::o;8558:118::-;8619:7;8646:9;:22;8656:11;8646:22;;;;;;;;;;;;;;;;8639:29;;8558:118;;;:::o;5984:63::-;6029:10;6021:5;;:18;;;;;;;;;;;;;;;;;;5984:63::o;5863:20::-;;;;;;;;;;;;;:::o;10971:399::-;11058:8;11044:22;;:10;:22;;;;11036:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11124:17;:27;11142:8;11124:27;;;;;;;;;;;;;;;;;;;;;;;;;11120:185;;;11175:24;:36;11200:10;11175:36;;;;;;;;;;;;;;;:46;11212:8;11175:46;;;;;;;;;;;;;;;;11168:53;;;;;;;;;;;11120:185;;;11289:4;11254:10;:22;11265:10;11254:22;;;;;;;;;;;;;;;:32;11277:8;11254:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11120:185;11351:10;11322:40;;11341:8;11322:40;;;;;;;;;;;;10971:399;:::o;8171:87::-;8210:13;8243:7;8236:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8171:87;:::o;8685:162::-;8775:64;8781:10;8793;8805:9;8816:6;8824:4;;8775:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8775:64:0;;;;;;;;;;;;;;;;;;8834:4;8775:5;:64::i;:::-;8685:162;;;;:::o;10061:434::-;10132:4;10178:1;10157:23;;:9;:23;;;;10149:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10234:12;10249:10;10234:25;;10272:56;10290:4;10296;10302:9;10313:6;10272:56;;;;;;;;;;;;;;;;;;;;;;;;:17;:56::i;:::-;10341:44;10347:4;10353;10359:9;10370:6;10341:44;;;;;;;;;;;;;;;;;;;;;;;;:5;:44::i;:::-;10398:65;10418:4;10424;10430:9;10441:6;10398:65;;;;;;;;;;;;;;;;;;;;;;;;10457:5;10398:19;:65::i;:::-;10483:4;10476:11;;;10061:434;;;;:::o;8859:192::-;8932:12;6107:5;;;;;;;;;;;6093:19;;:10;:19;;;6085:28;;;;;;8987:7;8962:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8962:33:0;;;;;;;;;;;;;;;;8980:5;8962:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9014:7;9006:5;:15;;;;;;;;;;;;:::i;:::-;;9039:4;9032:11;;8859:192;;;:::o;9272:200::-;9338:12;6107:5;;;;;;;;;;;6093:19;;:10;:19;;;6085:28;;;;;;9401:7;9368:41;;9387:12;;;;;;;;;;;9368:41;;;;;;;;;;;;9435:7;9420:12;;:22;;;;;;;;;;;;;;;;;;9460:4;9453:11;;9272:200;;;:::o;9059:205::-;9135:12;6107:5;;;;;;;;;;;6093:19;;:10;:19;;;6085:28;;;;;;9194:9;9165:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;9165:39:0;;;;;;;;;;;;;;;;9185:7;9165:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9225:9;9215:7;:19;;;;;;;;;;;;:::i;:::-;;9252:4;9245:11;;9059:205;;;:::o;10647:311::-;10755:4;10791:11;10779:23;;:8;:23;;;:121;;;;10820:17;:27;10838:8;10820:27;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;;10852:24;:37;10877:11;10852:37;;;;;;;;;;;;;;;:47;10890:8;10852:47;;;;;;;;;;;;;;;;;;;;;;;;;10851:48;10820:79;10779:121;:171;;;;10917:10;:23;10928:11;10917:23;;;;;;;;;;;;;;;:33;10941:8;10917:33;;;;;;;;;;;;;;;;;;;;;;;;;10779:171;10772:178;;10647:311;;;;:::o;12615:136::-;12688:7;12715:11;:19;12727:6;12715:19;;;;;;;;;;;;;;;:28;12735:7;12715:28;;;;;;;;;;;;;;;;12708:35;;12615:136;;;;:::o;6141:190::-;6107:5;;;;;;;;;;;6093:19;;:10;:19;;;6085:28;;;;;;6240:1;6220:22;;:8;:22;;;;6212:31;;;;;;6287:8;6259:37;;6280:5;;;;;;;;;;;6259:37;;;;;;;;;;;;6315:8;6307:5;;:16;;;;;;;;;;;;;;;;;;6141:190;:::o;11383:390::-;11465:10;11453:22;;:8;:22;;;;11445:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11530:17;:27;11548:8;11530:27;;;;;;;;;;;;;;;;;;;;;;;;;11526:185;;;11623:4;11574:24;:36;11599:10;11574:36;;;;;;;;;;;;;;;:46;11611:8;11574:46;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;11526:185;;;11667:10;:22;11678:10;11667:22;;;;;;;;;;;;;;;:32;11690:8;11667:32;;;;;;;;;;;;;;;;11660:39;;;;;;;;;;;11526:185;11754:10;11728:37;;11744:8;11728:37;;;;;;;;;;;;11383:390;:::o;12313:289::-;12446:34;12460:10;12472:7;12446:13;:34::i;:::-;12438:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12540:54;12546:10;12558:7;12567:6;12575:4;;12540:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;12540:54:0;;;;;;12581:12;;12540:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;12540:54:0;;;;;;:5;:54::i;:::-;12313:289;;;;;;:::o;10508:126::-;10579:47;10585:10;10597;10609:6;10617:4;;10579:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10579:47:0;;;;;;;;;;;;;;;;;;:5;:47::i;:::-;10508:126;;;:::o;3537:259::-;3595:7;3633:1;3628;:6;3624:47;;;3658:1;3651:8;;;;3624:47;3683:9;3699:1;3695;:5;3683:17;;3728:1;3723;3719;:5;;;;;;:10;3711:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3787:1;3780:8;;;3537:259;;;;;:::o;3342:182::-;3400:7;3433:1;3428;:6;;3420:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3480:9;3496:1;3492;:5;3480:17;;3515:1;3508:8;;;3342:182;;;;:::o;3150:179::-;3208:7;3228:9;3244:1;3240;:5;3228:17;;3269:1;3264;:6;;3256:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3320:1;3313:8;;;3150:179;;;;:::o;9958:95::-;10018:5;;;;;;;;;;;10002:32;;:43;10035:9;10002:43;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10002:43:0;9958:95::o;15969:259::-;16081:1;16062:21;;:7;:21;;;;16054:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16167:5;16136:11;:19;16148:6;16136:19;;;;;;;;;;;;;;;:28;16156:7;16136:28;;;;;;;;;;;;;;;:36;;;;16205:7;16188:32;;16197:6;16188:32;;;16214:5;16188:32;;;;;;;;;;;;;;;;;;15969:259;;;:::o;16240:488::-;16471:19;16493:8;;;;;;;;;;;:32;;;16526:4;6856:66;16532:28;;16493:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16493:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16493:68:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16493:68:0;;;;;;;;;;;;;;;;16471:90;;16599:1;16576:25;;:11;:25;;;16572:149;;16632:11;16618:39;;;16658:8;16668:4;16674:2;16678:6;16686:8;16696:12;16618:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;16618:91: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;16618:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16618:91:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16618:91:0;;;;16572:149;16240:488;;;;;;;:::o;15521:440::-;15758:27;15778:6;15758:9;:15;15768:4;15758:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;15740:9;:15;15750:4;15740:15;;;;;;;;;;;;;;;:45;;;;15812:25;15830:6;15812:9;:13;15822:2;15812:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;15796:9;:13;15806:2;15796:13;;;;;;;;;;;;;;;:41;;;;15876:2;15855:56;;15870:4;15855:56;;15860:8;15855:56;;;15880:6;15888:8;15898:12;15855:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15855:56: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;15855:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15942:2;15927:26;;15936:4;15927:26;;;15946:6;15927:26;;;;;;;;;;;;;;;;;;15521:440;;;;;;:::o;16740:695::-;17008:19;17030:8;;;;;;;;;;;:32;;;17063:2;6999:66;17067:31;;17030:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17030:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17030:69:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17030:69:0;;;;;;;;;;;;;;;;17008:91;;17137:1;17114:25;;:11;:25;;;17110:318;;17173:11;17156:44;;;17201:8;17211:4;17217:2;17221:6;17229:8;17239:12;17156:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;17156:96: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;17156:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17156:96:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17156:96:0;;;;17110:318;;;17274:19;17270:158;;;17319:15;:2;:13;;;:15::i;:::-;17318:16;17310:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17270:158;17110:318;16740:695;;;;;;;;:::o;14231:656::-;14509:1;14493:18;;:4;:18;;;;14485:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14583:1;14569:16;;:2;:16;;;;14561:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14635:69;14653:8;14663:4;14669:2;14673:6;14681:8;14691:12;14635:17;:69::i;:::-;14717:57;14723:8;14733:4;14739:2;14743:6;14751:8;14761:12;14717:5;:57::i;:::-;14787:92;14807:8;14817:4;14823:2;14827:6;14835:8;14845:12;14859:19;14787;:92::i;:::-;14231:656;;;;;;;:::o;14899:614::-;15117:1;15101:18;;:4;:18;;;;15093:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15171:73;15189:8;15199:4;15213:1;15217:6;15225:4;15231:12;15171:17;:73::i;:::-;15307:24;15324:6;15307:12;;:16;;:24;;;;:::i;:::-;15292:12;:39;;;;15360:27;15380:6;15360:9;:15;15370:4;15360:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;15342:9;:15;15352:4;15342:15;;;;;;;;;;;;;;;:45;;;;15422:4;15405:50;;15412:8;15405:50;;;15428:6;15436:4;15442:12;15405:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15405:50: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;15405:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15494:1;15471:34;;15480:4;15471:34;;;15498:6;15471:34;;;;;;;;;;;;;;;;;;14899:614;;;;;:::o;4342:343::-;4402:4;4427:16;4472:19;4494:66;4472:88;;;;4606:7;4594:20;4582:32;;4646:3;4634:15;;:8;:15;;:42;;;;;4665:11;4653:8;:23;;4634:42;4626:51;;;;4342:343;;;:::o;17440:195::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://5103d8887ef2f97321c2ecf6181f209f2a7c65f020eaa8273b0e551af65faf83
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.