ERC-20
Exchange
Overview
Max Total Supply
340,000,000 CNEX
Holders
1,509 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
CNEXToken
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-09-11 */ pragma solidity ^0.5.11; library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract ERC223Interface { uint public totalSupply; function balanceOf(address who) public view returns (uint); function transfer(address to, uint value) public returns (bool success); function transfer(address to, uint value, bytes memory data) public returns (bool success); event Transfer(address indexed from, address indexed to, uint value, bytes data); event Transfer(address indexed from, address indexed to, uint value); } /** * @title Contract that will work with ERC223 tokens. * source: https://github.com/ethereum/EIPs/issues/223 */ interface ERC223ReceivingContract { /** * @dev Standard ERC223 function that will handle incoming token transfers. * * @param from Token sender address. * @param value Amount of tokens. * @param data Transaction metadata. */ function tokenFallback( address from, uint value, bytes calldata data ) external; } /** * @title Ownership * @author Prashant Prabhakar Singh * @dev Contract that allows to hande ownership of contract */ contract Ownership { address public owner; event LogOwnershipTransferred(address indexed oldOwner, address indexed newOwner); constructor() public { owner = msg.sender; emit LogOwnershipTransferred(address(0), owner); } modifier onlyOwner { require(msg.sender == owner, "Only owner is allowed"); _; } /** * @dev Transfers ownership of contract to other address * @param _newOwner address The address of new owner */ function transferOwnership(address _newOwner) public onlyOwner { require(_newOwner != address(0), "Zero address not allowed"); address oldOwner = owner; owner = _newOwner; emit LogOwnershipTransferred(oldOwner, _newOwner); } /** * @dev Removes owner from the contract. * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. * @param _code uint that prevents accidental calling of the function */ function renounceOwnership(uint _code) public onlyOwner { require(_code == 1234567890, "Invalid code"); owner = address(0); emit LogOwnershipTransferred(owner, address(0)); } } /** * @title Freezable * @author Prashant Prabhakar Singh * @dev Contract that allows freezing/unfreezing an address or complete contract */ contract Freezable is Ownership { bool public emergencyFreeze; mapping(address => bool) public frozen; event LogFreezed(address indexed target, bool freezeStatus); event LogEmergencyFreezed(bool emergencyFreezeStatus); modifier unfreezed(address _account) { require(!frozen[_account], "Account is freezed"); _; } modifier noEmergencyFreeze() { require(!emergencyFreeze, "Contract is emergency freezed"); _; } /** * @dev Freezes or unfreezes an addreess * this does not check for previous state before applying new state * @param _target the address which will be feeezed. * @param _freeze boolean status. Use true to freeze and false to unfreeze. */ function freezeAccount (address _target, bool _freeze) public onlyOwner { require(_target != address(0), "Zero address not allowed"); frozen[_target] = _freeze; emit LogFreezed(_target, _freeze); } /** * @dev Freezes or unfreezes the contract * this does not check for previous state before applying new state * @param _freeze boolean status. Use true to freeze and false to unfreeze. */ function emergencyFreezeAllAccounts (bool _freeze) public onlyOwner { emergencyFreeze = _freeze; emit LogEmergencyFreezed(_freeze); } } /** * @title Standard Token * @author Prashant Prabhakar Singh * @dev A Standard Token contract that follows ERC-223 standard */ contract StandardToken is ERC223Interface, Freezable { using SafeMath for uint; string public name; string public symbol; uint public decimals; uint public totalSupply; uint public maxSupply; mapping(address => uint) internal balances; mapping(address => mapping(address => uint)) private _allowed; event Approval(address indexed tokenOwner, address indexed spender, uint tokens); constructor () public { name = 'CNEXCHANGE'; symbol = 'CNEX'; decimals = 8; maxSupply = 400000000 * ( 10 ** decimals ); // 400 million } /** * @dev Transfer the specified amount of tokens to the specified address. * Invokes the `tokenFallback` function if the recipient is a contract. * The token transfer fails if the recipient is a contract * but does not implement the `tokenFallback` function * or the fallback function to receive funds. * * Compitable wit ERC-20 Standard * * @param _to Receiver address. * @param _value Amount of tokens that will be transferred. */ function transfer(address _to, uint _value) public unfreezed(_to) unfreezed(msg.sender) noEmergencyFreeze() returns (bool success) { bytes memory _data; _transfer223(msg.sender, _to, _value, _data); return true; } /** * @dev Transfer the specified amount of tokens to the specified address. * Invokes the `tokenFallback` function if the recipient is a contract. * The token transfer fails if the recipient is a contract * but does not implement the `tokenFallback` function * or the fallback function to receive funds. * * @param _to Receiver address. * @param _value Amount of tokens that will be transferred. * @param _data Transaction metadata. */ function transfer(address _to, uint _value, bytes memory _data) public unfreezed(_to) unfreezed(msg.sender) noEmergencyFreeze() returns (bool success) { _transfer223(msg.sender, _to, _value, _data); return true; } /** * @dev Utility method to check if an address is contract address * * @param _addr address which is being checked. * @return true if address belongs to a contract else returns false */ function isContract(address _addr ) private view returns (bool) { uint length; assembly { length := extcodesize(_addr) } return (length > 0); } /** * @dev To change the approve amount you first have to reduce the addresses * allowance to zero by calling `approve(_spender, 0)` if it is not * already 0 to mitigate the race condition described here * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * Recommended is to use increase approval and decrease approval instead * * Requires either that _value of allwance is 0 * @param _spender address who is allowed to spend * @param _value the no of tokens spender can spend * @return true if everything goes well */ function approve(address _spender, uint _value) public unfreezed(_spender) unfreezed(msg.sender) noEmergencyFreeze() returns (bool success) { require((_value == 0) || (_allowed[msg.sender][_spender] == 0), "Approval needs to be 0 first"); require(_spender != msg.sender, "Can not approve to self"); _allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev increases current allowance * * @param _spender address who is allowed to spend * @param _addedValue the no of tokens added to previous allowance * @return true if everything goes well */ function increaseApproval(address _spender, uint _addedValue) public unfreezed(_spender) unfreezed(msg.sender) noEmergencyFreeze() returns (bool success) { require(_spender != msg.sender, "Can not approve to self"); _allowed[msg.sender][_spender] = _allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, _allowed[msg.sender][_spender]); return true; } /** * @dev decrease current allowance * @param _spender address who is allowed to spend * @param _subtractedValue the no of tokens deducted to previous allowance * If _subtractedValue is greater than prev allowance, allowance becomes 0 * @return true if everything goes well */ function decreaseApproval(address _spender, uint _subtractedValue) public unfreezed(_spender) unfreezed(msg.sender) noEmergencyFreeze() returns (bool success) { require(_spender != msg.sender, "Can not approve to self"); uint oldAllowance = _allowed[msg.sender][_spender]; if (_subtractedValue > oldAllowance) { _allowed[msg.sender][_spender] = 0; } else { _allowed[msg.sender][_spender] = oldAllowance.sub(_subtractedValue); } emit Approval(msg.sender, _spender, _allowed[msg.sender][_spender]); return true; } /** * @dev Transfer tokens from one address to another. * @param _from address The address from which you want to send tokens. * @param _to address The address to which you want to transfer tokens. * @param _value uint256 the amount of tokens to be transferred. */ function transferFrom(address _from, address _to, uint _value) public unfreezed(_to) unfreezed(msg.sender) unfreezed(_from) noEmergencyFreeze() returns (bool success) { require(_value <= _allowed[_from][msg.sender], "Insufficient allowance"); _allowed[_from][msg.sender] = _allowed[_from][msg.sender].sub(_value); bytes memory _data; _transfer223(_from, _to, _value, _data); return true; } /** * @dev Transfer tokens from one address to another. * @param _from address The address from which you want to send tokens. * @param _to address The address to which you want to transfer tokens. * @param _value uint256 the amount of tokens to be transferred * @param _data bytes Transaction metadata. */ function transferFrom(address _from, address _to, uint _value, bytes memory _data) public unfreezed(_to) unfreezed(msg.sender) unfreezed(_from) noEmergencyFreeze() returns (bool success) { require(_value <= _allowed[_from][msg.sender], "Insufficient allowance"); _allowed[_from][msg.sender] = _allowed[_from][msg.sender].sub(_value); _transfer223(_from, _to, _value, _data); return true; } /** * @dev Function that burns an amount of the token of a sender. * reduces total and max supply. * only owner is allowed to burn tokens. * * @param _value The amount that will be burn. */ function burn(uint256 _value) public unfreezed(msg.sender) noEmergencyFreeze() onlyOwner returns (bool success) { require(balances[msg.sender] >= _value, "Insufficient balance"); balances[msg.sender] = balances[msg.sender].sub(_value); totalSupply = totalSupply.sub(_value); bytes memory _data; emit Transfer(msg.sender, address(0), _value, _data); emit Transfer(msg.sender, address(0), _value); return true; } /** * @dev Gets the balance of the specified address. * @param _tokenOwner The address to query the balance of. * @return A uint256 representing the amount owned by the passed address. */ function balanceOf(address _tokenOwner) public view returns (uint) { return balances[_tokenOwner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _tokenOwner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _tokenOwner, address _spender) public view returns (uint) { return _allowed[_tokenOwner][_spender]; } /** * @dev Function to withdraw any accidently sent ERC20 token. * the value should be pre-multiplied by decimals of token wthdrawan * @param _tokenAddress address The contract address of ERC20 token. * @param _value uint amount to tokens to be withdrawn */ function transferAnyERC20Token(address _tokenAddress, uint _value) public onlyOwner { ERC223Interface(_tokenAddress).transfer(owner, _value); } /** * @dev Transfer the specified amount of tokens to the specified address. * Invokes the `tokenFallback` function if the recipient is a contract. * The token transfer fails if the recipient is a contract * but does not implement the `tokenFallback` function * or the fallback function to receive funds. * * @param _from Sender address. * @param _to Receiver address. * @param _value Amount of tokens that will be transferred. * @param _data Transaction metadata. */ function _transfer223(address _from, address _to, uint _value, bytes memory _data) private { require(_to != address(0), "Zero address not allowed"); require(balances[_from] >= _value, "Insufficient balance"); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); if (isContract(_to)) { ERC223ReceivingContract receiver = ERC223ReceivingContract(_to); receiver.tokenFallback(msg.sender, _value, _data); } emit Transfer(_from, _to, _value, _data); // ERC223-compat version emit Transfer(_from, _to, _value); // ERC20-compat version } } /** * @title CNEX Token * @author Prashant Prabhakar Singh * @dev CNEX implementation of ERC-223 standard token */ contract CNEXToken is StandardToken { uint public icoFunds; uint public consumerProtectionFund; uint public ecoSystemDevelopmentAndOperationFund; uint public teamAndFounderFund; bool public consumerProtectionFundAllocated = false; bool public ecoSystemDevelopmentAndOperationFundAllocated = false; bool public teamAndFounderFundAllocated = false; uint public tokenDeploymentTime; constructor() public{ icoFunds = 200000000 * (10 ** decimals); // 200 million consumerProtectionFund = 60000000 * (10 ** decimals); // 60 million ecoSystemDevelopmentAndOperationFund = 100000000 * (10 ** decimals); // 100 million teamAndFounderFund = 40000000 * (10 ** decimals); // 40 million tokenDeploymentTime = now; _mint(msg.sender, icoFunds); } /** * @dev Function to mint tokens allocated for consumer * protection to owner address. Owner then sends them * to responsible parties */ function allocateConsumerProtectionFund() public onlyOwner { require(!consumerProtectionFundAllocated, "Already allocated"); consumerProtectionFundAllocated = true; _mint(owner, consumerProtectionFund); } /** * @dev Function to mint tokens allocated for Ecosystem development * and operations to owner address. Owner then sends them * to responsible parties */ function allocateEcoSystemDevelopmentAndOperationFund() public onlyOwner { require(!ecoSystemDevelopmentAndOperationFundAllocated, "Already allocated"); ecoSystemDevelopmentAndOperationFundAllocated = true; _mint(owner, ecoSystemDevelopmentAndOperationFund); } /** * @dev Function to mint tokens allocated for team * and founders to owner address. Owner then sends them * to responsible parties. * Tokens are locked for 1 year and can be claimed after 1 year * from date of deployment */ function allocateTeamAndFounderFund() public onlyOwner { require(!teamAndFounderFundAllocated, "Already allocated"); require(now > tokenDeploymentTime + 365 days, "Vesting period not over yet"); teamAndFounderFundAllocated = true; _mint(owner, teamAndFounderFund); } /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _value The amount of tokens to mint. */ function _mint(address _to, uint _value) private onlyOwner { require(totalSupply.add(_value) <= maxSupply, "Exceeds max supply"); balances[_to] = balances[_to].add(_value); totalSupply = totalSupply.add(_value); bytes memory _data; emit Transfer(address(0), _to, _value, _data); emit Transfer(address(0), _to, _value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"allocateEcoSystemDevelopmentAndOperationFund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ecoSystemDevelopmentAndOperationFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ecoSystemDevelopmentAndOperationFundAllocated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"allocateTeamAndFounderFund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamAndFounderFundAllocated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_freeze","type":"bool"}],"name":"emergencyFreezeAllAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"consumerProtectionFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_code","type":"uint256"}],"name":"renounceOwnership","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":true,"inputs":[],"name":"tokenDeploymentTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamAndFounderFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"consumerProtectionFundAllocated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"allocateConsumerProtectionFund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","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":"_target","type":"address"},{"internalType":"bool","name":"_freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"icoFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"emergencyFreeze","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bool","name":"freezeStatus","type":"bool"}],"name":"LogFreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"emergencyFreezeStatus","type":"bool"}],"name":"LogEmergencyFreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"LogOwnershipTransferred","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"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Transfer","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"}]
Contract Creation Code
60806040526000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055503480156200006257600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fdb6d05f3295cede580affa301a1eb5297528f3b3f6a56b075887ce6f61c45f2160405160405180910390a36040518060400160405280600a81526020017f434e45584348414e474500000000000000000000000000000000000000000000815250600390805190602001906200016e929190620005b6565b506040518060400160405280600481526020017f434e45580000000000000000000000000000000000000000000000000000000081525060049080519060200190620001bc929190620005b6565b506008600581905550600554600a0a6317d7840002600781905550600554600a0a630bebc20002600a81905550600554600a0a630393870002600b81905550600554600a0a6305f5e10002600c81905550600554600a0a6302625a0002600d8190555042600f819055506200023a33600a546200024060201b60201c565b62000665565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462000304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b60075462000323826006546200059960201b6200464b1790919060201c565b111562000398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f45786365656473206d617820737570706c79000000000000000000000000000081525060200191505060405180910390fd5b620003f181600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200059960201b6200464b1790919060201c565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000450816006546200059960201b6200464b1790919060201c565b60068190555060608273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1684846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620004f2578082015181840152602081019050620004d5565b50505050905090810190601f168015620005205780820380516001836020036101000a031916815260200191505b50935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600080828401905083811015620005ac57fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005f957805160ff19168380011785556200062a565b828001600101855582156200062a579182015b82811115620006295782518255916020019190600101906200060c565b5b5090506200063991906200063d565b5090565b6200066291905b808211156200065e57600081600090555060010162000644565b5090565b90565b6146af80620006756000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638f76abcb1161011a578063d0516650116100ad578063dd62ed3e1161007c578063dd62ed3e14610a8f578063e724529c14610b07578063f2cc0bc314610b57578063f2fde38b14610b75578063f3d4b94214610bb957610206565b8063d051665014610961578063d5abeb01146109bd578063d73dd623146109db578063dc39d06d14610a4157610206565b8063ab67aa58116100e9578063ab67aa581461071b578063be45fd6214610838578063be9f90dd14610935578063c190adb11461095757610206565b80638f76abcb146105f657806395d89b4114610614578063a9059cbb14610697578063a950b9b2146106fd57610206565b80635cc73faa1161019d57806370a082311161016c57806370a08231146104d85780637898278f1461053057806379f0755c146105605780637d654c7f1461057e5780638da5cb5b146105ac57610206565b80635cc73faa14610424578063600a35d414610446578063661884631461045057806368bf427b146104b657610206565b80632a6f344b116101d95780632a6f344b14610398578063313ce567146103a257806342966c68146103c057806343b459321461040657610206565b806306fdde031461020b578063095ea7b31461028e57806318160ddd146102f457806323b872dd14610312575b600080fd5b610213610bdb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102da600480360360408110156102a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c79565b604051808215151515815260200191505060405180910390f35b6102fc611111565b6040518082815260200191505060405180910390f35b61037e6004803603606081101561032857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611117565b604051808215151515815260200191505060405180910390f35b6103a06115fd565b005b6103aa61178e565b6040518082815260200191505060405180910390f35b6103ec600480360360208110156103d657600080fd5b8101908080359060200190929190505050611794565b604051808215151515815260200191505060405180910390f35b61040e611c48565b6040518082815260200191505060405180910390f35b61042c611c4e565b604051808215151515815260200191505060405180910390f35b61044e611c61565b005b61049c6004803603604081101561046657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e6f565b604051808215151515815260200191505060405180910390f35b6104be6123aa565b604051808215151515815260200191505060405180910390f35b61051a600480360360208110156104ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123bd565b6040518082815260200191505060405180910390f35b61055e6004803603602081101561054657600080fd5b81019080803515159060200190929190505050612406565b005b610568612521565b6040518082815260200191505060405180910390f35b6105aa6004803603602081101561059457600080fd5b8101908080359060200190929190505050612527565b005b6105b4612725565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105fe61274b565b6040518082815260200191505060405180910390f35b61061c612751565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561065c578082015181840152602081019050610641565b50505050905090810190601f1680156106895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106e3600480360360408110156106ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127ef565b604051808215151515815260200191505060405180910390f35b610705612a11565b6040518082815260200191505060405180910390f35b61081e6004803603608081101561073157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561079857600080fd5b8201836020820111156107aa57600080fd5b803590602001918460018302840111640100000000831117156107cc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612a17565b604051808215151515815260200191505060405180910390f35b61091b6004803603606081101561084e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561089557600080fd5b8201836020820111156108a757600080fd5b803590602001918460018302840111640100000000831117156108c957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612efb565b604051808215151515815260200191505060405180910390f35b61093d61311b565b604051808215151515815260200191505060405180910390f35b61095f61312e565b005b6109a36004803603602081101561097757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132bf565b604051808215151515815260200191505060405180910390f35b6109c56132df565b6040518082815260200191505060405180910390f35b610a27600480360360408110156109f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506132e5565b604051808215151515815260200191505060405180910390f35b610a8d60048036036040811015610a5757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061378a565b005b610af160048036036040811015610aa557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613936565b6040518082815260200191505060405180910390f35b610b5560048036036040811015610b1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139bd565b005b610b5f613bd0565b6040518082815260200191505060405180910390f35b610bb760048036036020811015610b8b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613bd6565b005b610bc1613e02565b604051808215151515815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c715780601f10610c4657610100808354040283529160200191610c71565b820191906000526020600020905b815481529060010190602001808311610c5457829003601f168201915b505050505081565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615610e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b6000841480610f0b57506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610f7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f417070726f76616c206e6565647320746f20626520302066697273740000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561101f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e206e6f7420617070726f766520746f2073656c6600000000000000000081525060200191505060405180910390fd5b83600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b60065481565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561129b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b85600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561135c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156113df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511156114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e73756666696369656e7420616c6c6f77616e63650000000000000000000081525060200191505060405180910390fd5b61156085600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1590919063ffffffff16565b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060606115ee88888884613e2c565b60019450505050509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600e60019054906101000a900460ff1615611743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416c726561647920616c6c6f636174656400000000000000000000000000000081525060200191505060405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555061178c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c5461430c565b565b60055481565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156118da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b82600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e742062616c616e636500000000000000000000000081525060200191505060405180910390fd5b611aa483600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1590919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611afc83600654613e1590919063ffffffff16565b6006819055506060600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b9c578082015181840152602081019050611b81565b50505050905090810190601f168015611bc95780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600192505050919050565b600c5481565b600e60019054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600e60029054906101000a900460ff1615611da7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416c726561647920616c6c6f636174656400000000000000000000000000000081525060200191505060405180910390fd5b6301e13380600f54014211611e24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f56657374696e6720706572696f64206e6f74206f76657220796574000000000081525060200191505060405180910390fd5b6001600e60026101000a81548160ff021916908315150217905550611e6d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d5461430c565b565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ff3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e206e6f7420617070726f766520746f2073656c6600000000000000000081525060200191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080851115612228576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122bc565b61223b8582613e1590919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001935050505092915050565b600e60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b80600160146101000a81548160ff0219169083151502179055507f580548506bb4255fa3aac48e0b760d26bf3b05333e738393bbca5dfb440054c881604051808215151515815260200191505060405180910390a150565b600b5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b63499602d28114612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e76616c696420636f6465000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdb6d05f3295cede580affa301a1eb5297528f3b3f6a56b075887ce6f61c45f2160405160405180910390a350565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127e75780601f106127bc576101008083540402835291602001916127e7565b820191906000526020600020905b8154815290600101906020018083116127ca57829003601f168201915b505050505081565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612973576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156129f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b6060612a0433878784613e2c565b6001935050505092915050565b600d5481565b600083600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b86600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615612cdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054861115612dd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e73756666696369656e7420616c6c6f77616e63650000000000000000000081525060200191505060405180910390fd5b612e6086600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1590919063ffffffff16565b600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612eec88888888613e2c565b60019350505050949350505050565b600083600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561307f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615613102576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b61310e33878787613e2c565b6001925050509392505050565b600e60009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146131f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600e60009054906101000a900460ff1615613274576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416c726561647920616c6c6f636174656400000000000000000000000000000081525060200191505060405180910390fd5b6001600e60006101000a81548160ff0219169083151502179055506132bd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b5461430c565b565b60026020528060005260406000206000915054906101000a900460ff1681565b60075481565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156134ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561358e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e206e6f7420617070726f766520746f2073656c6600000000000000000081525060200191505060405180910390fd5b61361d84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461464b90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019250505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461384d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156138f657600080fd5b505af115801561390a573d6000803e3d6000fd5b505050506040513d602081101561392057600080fd5b8101908080519060200190929190505050505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613a80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdad2539b39cdbb96eb5dac852bf880a471c22b0e9d698aa1d48eae8d014ea8f482604051808215151515815260200191505060405180910390a25050565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fdb6d05f3295cede580affa301a1eb5297528f3b3f6a56b075887ce6f61c45f2160405160405180910390a35050565b600160149054906101000a900460ff1681565b600082821115613e2157fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613ecf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613f84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e742062616c616e636500000000000000000000000081525060200191505060405180910390fd5b613fd682600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061406b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461464b90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140b783614667565b156141cf5760008390508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a3385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561416757808201518184015260208101905061414c565b50505050905090810190601f1680156141945780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156141b557600080fd5b505af11580156141c9573d6000803e3d6000fd5b50505050505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1684846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561426657808201518184015260208101905061424b565b50505050905090810190601f1680156142935780820380516001836020036101000a031916815260200191505b50935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146143cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6007546143e78260065461464b90919063ffffffff16565b111561445b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f45786365656473206d617820737570706c79000000000000000000000000000081525060200191505060405180910390fd5b6144ad81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461464b90919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145058160065461464b90919063ffffffff16565b60068190555060608273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1684846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156145a557808201518184015260208101905061458a565b50505050905090810190601f1680156145d25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b60008082840190508381101561465d57fe5b8091505092915050565b600080823b90506000811191505091905056fea265627a7a72315820ecd383786a8c992fa5da7366459a2fb5c505e748f3700398df0499bff5d42b7a64736f6c634300050b0032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638f76abcb1161011a578063d0516650116100ad578063dd62ed3e1161007c578063dd62ed3e14610a8f578063e724529c14610b07578063f2cc0bc314610b57578063f2fde38b14610b75578063f3d4b94214610bb957610206565b8063d051665014610961578063d5abeb01146109bd578063d73dd623146109db578063dc39d06d14610a4157610206565b8063ab67aa58116100e9578063ab67aa581461071b578063be45fd6214610838578063be9f90dd14610935578063c190adb11461095757610206565b80638f76abcb146105f657806395d89b4114610614578063a9059cbb14610697578063a950b9b2146106fd57610206565b80635cc73faa1161019d57806370a082311161016c57806370a08231146104d85780637898278f1461053057806379f0755c146105605780637d654c7f1461057e5780638da5cb5b146105ac57610206565b80635cc73faa14610424578063600a35d414610446578063661884631461045057806368bf427b146104b657610206565b80632a6f344b116101d95780632a6f344b14610398578063313ce567146103a257806342966c68146103c057806343b459321461040657610206565b806306fdde031461020b578063095ea7b31461028e57806318160ddd146102f457806323b872dd14610312575b600080fd5b610213610bdb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102da600480360360408110156102a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c79565b604051808215151515815260200191505060405180910390f35b6102fc611111565b6040518082815260200191505060405180910390f35b61037e6004803603606081101561032857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611117565b604051808215151515815260200191505060405180910390f35b6103a06115fd565b005b6103aa61178e565b6040518082815260200191505060405180910390f35b6103ec600480360360208110156103d657600080fd5b8101908080359060200190929190505050611794565b604051808215151515815260200191505060405180910390f35b61040e611c48565b6040518082815260200191505060405180910390f35b61042c611c4e565b604051808215151515815260200191505060405180910390f35b61044e611c61565b005b61049c6004803603604081101561046657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e6f565b604051808215151515815260200191505060405180910390f35b6104be6123aa565b604051808215151515815260200191505060405180910390f35b61051a600480360360208110156104ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123bd565b6040518082815260200191505060405180910390f35b61055e6004803603602081101561054657600080fd5b81019080803515159060200190929190505050612406565b005b610568612521565b6040518082815260200191505060405180910390f35b6105aa6004803603602081101561059457600080fd5b8101908080359060200190929190505050612527565b005b6105b4612725565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105fe61274b565b6040518082815260200191505060405180910390f35b61061c612751565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561065c578082015181840152602081019050610641565b50505050905090810190601f1680156106895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106e3600480360360408110156106ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127ef565b604051808215151515815260200191505060405180910390f35b610705612a11565b6040518082815260200191505060405180910390f35b61081e6004803603608081101561073157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561079857600080fd5b8201836020820111156107aa57600080fd5b803590602001918460018302840111640100000000831117156107cc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612a17565b604051808215151515815260200191505060405180910390f35b61091b6004803603606081101561084e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561089557600080fd5b8201836020820111156108a757600080fd5b803590602001918460018302840111640100000000831117156108c957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612efb565b604051808215151515815260200191505060405180910390f35b61093d61311b565b604051808215151515815260200191505060405180910390f35b61095f61312e565b005b6109a36004803603602081101561097757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132bf565b604051808215151515815260200191505060405180910390f35b6109c56132df565b6040518082815260200191505060405180910390f35b610a27600480360360408110156109f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506132e5565b604051808215151515815260200191505060405180910390f35b610a8d60048036036040811015610a5757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061378a565b005b610af160048036036040811015610aa557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613936565b6040518082815260200191505060405180910390f35b610b5560048036036040811015610b1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139bd565b005b610b5f613bd0565b6040518082815260200191505060405180910390f35b610bb760048036036020811015610b8b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613bd6565b005b610bc1613e02565b604051808215151515815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c715780601f10610c4657610100808354040283529160200191610c71565b820191906000526020600020905b815481529060010190602001808311610c5457829003601f168201915b505050505081565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615610e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b6000841480610f0b57506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610f7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f417070726f76616c206e6565647320746f20626520302066697273740000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561101f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e206e6f7420617070726f766520746f2073656c6600000000000000000081525060200191505060405180910390fd5b83600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b60065481565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561129b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b85600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561135c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156113df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511156114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e73756666696369656e7420616c6c6f77616e63650000000000000000000081525060200191505060405180910390fd5b61156085600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1590919063ffffffff16565b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060606115ee88888884613e2c565b60019450505050509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600e60019054906101000a900460ff1615611743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416c726561647920616c6c6f636174656400000000000000000000000000000081525060200191505060405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555061178c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c5461430c565b565b60055481565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156118da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b82600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e742062616c616e636500000000000000000000000081525060200191505060405180910390fd5b611aa483600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1590919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611afc83600654613e1590919063ffffffff16565b6006819055506060600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b9c578082015181840152602081019050611b81565b50505050905090810190601f168015611bc95780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600192505050919050565b600c5481565b600e60019054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600e60029054906101000a900460ff1615611da7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416c726561647920616c6c6f636174656400000000000000000000000000000081525060200191505060405180910390fd5b6301e13380600f54014211611e24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f56657374696e6720706572696f64206e6f74206f76657220796574000000000081525060200191505060405180910390fd5b6001600e60026101000a81548160ff021916908315150217905550611e6d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d5461430c565b565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ff3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612118576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e206e6f7420617070726f766520746f2073656c6600000000000000000081525060200191505060405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080851115612228576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122bc565b61223b8582613e1590919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001935050505092915050565b600e60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b80600160146101000a81548160ff0219169083151502179055507f580548506bb4255fa3aac48e0b760d26bf3b05333e738393bbca5dfb440054c881604051808215151515815260200191505060405180910390a150565b600b5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b63499602d28114612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e76616c696420636f6465000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdb6d05f3295cede580affa301a1eb5297528f3b3f6a56b075887ce6f61c45f2160405160405180910390a350565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127e75780601f106127bc576101008083540402835291602001916127e7565b820191906000526020600020905b8154815290600101906020018083116127ca57829003601f168201915b505050505081565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612973576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156129f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b6060612a0433878784613e2c565b6001935050505092915050565b600d5481565b600083600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b86600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615612cdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054861115612dd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e73756666696369656e7420616c6c6f77616e63650000000000000000000081525060200191505060405180910390fd5b612e6086600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1590919063ffffffff16565b600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612eec88888888613e2c565b60019350505050949350505050565b600083600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561307f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615613102576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b61310e33878787613e2c565b6001925050509392505050565b600e60009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146131f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600e60009054906101000a900460ff1615613274576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416c726561647920616c6c6f636174656400000000000000000000000000000081525060200191505060405180910390fd5b6001600e60006101000a81548160ff0219169083151502179055506132bd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b5461430c565b565b60026020528060005260406000206000915054906101000a900460ff1681565b60075481565b600082600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4163636f756e7420697320667265657a6564000000000000000000000000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156134ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6e747261637420697320656d657267656e637920667265657a656400000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561358e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e206e6f7420617070726f766520746f2073656c6600000000000000000081525060200191505060405180910390fd5b61361d84600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461464b90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019250505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461384d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156138f657600080fd5b505af115801561390a573d6000803e3d6000fd5b505050506040513d602081101561392057600080fd5b8101908080519060200190929190505050505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613a80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdad2539b39cdbb96eb5dac852bf880a471c22b0e9d698aa1d48eae8d014ea8f482604051808215151515815260200191505060405180910390a25050565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613d3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fdb6d05f3295cede580affa301a1eb5297528f3b3f6a56b075887ce6f61c45f2160405160405180910390a35050565b600160149054906101000a900460ff1681565b600082821115613e2157fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613ecf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000081525060200191505060405180910390fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613f84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e742062616c616e636500000000000000000000000081525060200191505060405180910390fd5b613fd682600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e1590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061406b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461464b90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140b783614667565b156141cf5760008390508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a3385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561416757808201518184015260208101905061414c565b50505050905090810190601f1680156141945780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156141b557600080fd5b505af11580156141c9573d6000803e3d6000fd5b50505050505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1684846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561426657808201518184015260208101905061424b565b50505050905090810190601f1680156142935780820380516001836020036101000a031916815260200191505b50935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146143cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6e6c79206f776e657220697320616c6c6f776564000000000000000000000081525060200191505060405180910390fd5b6007546143e78260065461464b90919063ffffffff16565b111561445b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f45786365656473206d617820737570706c79000000000000000000000000000081525060200191505060405180910390fd5b6144ad81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461464b90919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145058160065461464b90919063ffffffff16565b60068190555060608273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1684846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156145a557808201518184015260208101905061458a565b50505050905090810190601f1680156145d25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b60008082840190508381101561465d57fe5b8091505092915050565b600080823b90506000811191505091905056fea265627a7a72315820ecd383786a8c992fa5da7366459a2fb5c505e748f3700398df0499bff5d42b7a64736f6c634300050b0032
Deployed Bytecode Sourcemap
15662:2984:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15662:2984:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5111:18;;;:::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;5111:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8343:499;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8343:499:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5190:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10852:498;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10852:498:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17133:315;;;:::i;:::-;;5163:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12436:528;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12436:528:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15775:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15927:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17724:330;;;:::i;:::-;;9889:655;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9889:655:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15999:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13191:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13191:114:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4691:179;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4691:179:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;15734:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3053:225;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3053:225:0;;;;;;;;;;;;;;;;;:::i;:::-;;1969:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16055:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5136:20;;;:::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;5136:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6175:295;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6175:295:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15830:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11706:489;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11706:489:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11706:489:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11706:489: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;11706:489: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;;11706:489:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7004:286;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7004:286:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7004:286:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7004:286: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;7004:286: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;;7004:286:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15869:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16681:259;;;:::i;:::-;;3512:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3512:38:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5220:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9090:472;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9090:472:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14094:180;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14094:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13651:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13651:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4213:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4213:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15707:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2461:288;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2461:288:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3478:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5111:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8343:499::-;8514:12;8426:8;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8455:10;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:15;;;;;;;;;;;3859:16;3851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8563:1;8553:6;:11;8552:54;;;;8604:1;8570:8;:20;8579:10;8570:20;;;;;;;;;;;;;;;:30;8591:8;8570:30;;;;;;;;;;;;;;;;:35;8552:54;8544:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8670:10;8658:22;;:8;:22;;;;8650:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8752:6;8719:8;:20;8728:10;8719:20;;;;;;;;;;;;;;;:30;8740:8;8719:30;;;;;;;;;;;;;;;:39;;;;8795:8;8774:38;;8783:10;8774:38;;;8805:6;8774:38;;;;;;;;;;;;;;;;;;8830:4;8823:11;;3794:1;8343:499;;;;;:::o;5190:23::-;;;;:::o;10852:498::-;11059:12;10950:3;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10974:10;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:5;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:15;;;;;;;;;;;3859:16;3851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11107:8;:15;11116:5;11107:15;;;;;;;;;;;;;;;:27;11123:10;11107:27;;;;;;;;;;;;;;;;11097:6;:37;;11089:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:39;11234:6;11202:8;:15;11211:5;11202:15;;;;;;;;;;;;;;;:27;11218:10;11202:27;;;;;;;;;;;;;;;;:31;;:39;;;;:::i;:::-;11172:8;:15;11181:5;11172:15;;;;;;;;;;;;;;;:27;11188:10;11172:27;;;;;;;;;;;;;;;:69;;;;11252:18;11281:39;11294:5;11301:3;11306:6;11314:5;11281:12;:39::i;:::-;11338:4;11331:11;;;3794:1;;10852:498;;;;;;:::o;17133:315::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17249:45;;;;;;;;;;;17248:46;17240:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17375:4;17327:45;;:52;;;;;;;;;;;;;;;;;;17390:50;17396:5;;;;;;;;;;;17403:36;;17390:5;:50::i;:::-;17133:315::o;5163:20::-;;;;:::o;12436:528::-;12579:12;12501:10;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:15;;;;;;;;;;;3859:16;3851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12641:6;12617:8;:20;12626:10;12617:20;;;;;;;;;;;;;;;;:30;;12609:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12706:32;12731:6;12706:8;:20;12715:10;12706:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12683:8;:20;12692:10;12683:20;;;;;;;;;;;;;;;:55;;;;12763:23;12779:6;12763:11;;:15;;:23;;;;:::i;:::-;12749:11;:37;;;;12797:18;12860:1;12831:47;;12840:10;12831:47;;;12864:6;12872:5;12831:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;12831:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12923:1;12894:40;;12903:10;12894:40;;;12927:6;12894:40;;;;;;;;;;;;;;;;;;12952:4;12945:11;;;12436:528;;;;:::o;15775:48::-;;;;:::o;15927:65::-;;;;;;;;;;;;;:::o;17724:330::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17822:27;;;;;;;;;;;17821:28;17813:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17918:8;17896:19;;:30;17890:3;:36;17882:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17999:4;17969:27;;:34;;;;;;;;;;;;;;;;;;18014:32;18020:5;;;;;;;;;;;18027:18;;18014:5;:32::i;:::-;17724:330::o;9889:655::-;10079:12;9991:8;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10020:10;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:15;;;;;;;;;;;3859:16;3851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10129:10;10117:22;;:8;:22;;;;10109:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10178:17;10198:8;:20;10207:10;10198:20;;;;;;;;;;;;;;;:30;10219:8;10198:30;;;;;;;;;;;;;;;;10178:50;;10262:12;10243:16;:31;10239:198;;;10324:1;10291:8;:20;10300:10;10291:20;;;;;;;;;;;;;;;:30;10312:8;10291:30;;;;;;;;;;;;;;;:34;;;;10239:198;;;10391:34;10408:16;10391:12;:16;;:34;;;;:::i;:::-;10358:8;:20;10367:10;10358:20;;;;;;;;;;;;;;;:30;10379:8;10358:30;;;;;;;;;;;;;;;:67;;;;10239:198;10473:8;10452:62;;10461:10;10452:62;;;10483:8;:20;10492:10;10483:20;;;;;;;;;;;;;;;:30;10504:8;10483:30;;;;;;;;;;;;;;;;10452:62;;;;;;;;;;;;;;;;;;10532:4;10525:11;;;3794:1;9889:655;;;;;:::o;15999:47::-;;;;;;;;;;;;;:::o;13191:114::-;13252:4;13276:8;:21;13285:11;13276:21;;;;;;;;;;;;;;;;13269:28;;13191:114;;;:::o;4691:179::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4811:7;4793:15;;:25;;;;;;;;;;;;;;;;;;4834:28;4854:7;4834:28;;;;;;;;;;;;;;;;;;;;;;4691:179;:::o;15734:34::-;;;;:::o;3053:225::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3156:10;3147:5;:19;3139:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3210:1;3194:5;;:18;;;;;;;;;;;;;;;;;;3267:1;3228:42;;3252:5;;;;;;;;;;;3228:42;;;;;;;;;;;;3053:225;:::o;1969:20::-;;;;;;;;;;;;;:::o;16055:31::-;;;;:::o;5136:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6175:295::-;6337:12;6254:3;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6278:10;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:15;;;;;;;;;;;3859:16;3851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6367:18;6396:44;6409:10;6421:3;6426:6;6434:5;6396:12;:44::i;:::-;6458:4;6451:11;;;3794:1;6175:295;;;;;:::o;15830:30::-;;;;:::o;11706:489::-;11933:12;11824:3;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11848:10;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11879:5;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:15;;;;;;;;;;;3859:16;3851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11981:8;:15;11990:5;11981:15;;;;;;;;;;;;;;;:27;11997:10;11981:27;;;;;;;;;;;;;;;;11971:6;:37;;11963:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12076:39;12108:6;12076:8;:15;12085:5;12076:15;;;;;;;;;;;;;;;:27;12092:10;12076:27;;;;;;;;;;;;;;;;:31;;:39;;;;:::i;:::-;12046:8;:15;12055:5;12046:15;;;;;;;;;;;;;;;:27;12062:10;12046:27;;;;;;;;;;;;;;;:69;;;;12126:39;12139:5;12146:3;12151:6;12159:5;12126:12;:39::i;:::-;12183:4;12176:11;;3794:1;;11706:489;;;;;;;:::o;7004:286::-;7186:12;7103:3;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7127:10;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:15;;;;;;;;;;;3859:16;3851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:44;7229:10;7241:3;7246:6;7254:5;7216:12;:44::i;:::-;7278:4;7271:11;;3794:1;7004:286;;;;;;:::o;15869:51::-;;;;;;;;;;;;;:::o;16681:259::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16783:31;;;;;;;;;;;16782:32;16774:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16881:4;16847:31;;:38;;;;;;;;;;;;;;;;;;16896:36;16902:5;;;;;;;;;;;16909:22;;16896:5;:36::i;:::-;16681:259::o;3512:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;5220:21::-;;;;:::o;9090:472::-;9275:12;9187:8;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9216:10;3744:6;:16;3751:8;3744:16;;;;;;;;;;;;;;;;;;;;;;;;;3743:17;3735:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:15;;;;;;;;;;;3859:16;3851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9325:10;9313:22;;:8;:22;;;;9305:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9407:47;9442:11;9407:8;:20;9416:10;9407:20;;;;;;;;;;;;;;;:30;9428:8;9407:30;;;;;;;;;;;;;;;;:34;;:47;;;;:::i;:::-;9374:8;:20;9383:10;9374:20;;;;;;;;;;;;;;;:30;9395:8;9374:30;;;;;;;;;;;;;;;:80;;;;9491:8;9470:62;;9479:10;9470:62;;;9501:8;:20;9510:10;9501:20;;;;;;;;;;;;;;;:30;9522:8;9501:30;;;;;;;;;;;;;;;;9470:62;;;;;;;;;;;;;;;;;;9550:4;9543:11;;3794:1;9090:472;;;;;:::o;14094:180::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14228:13;14212:39;;;14252:5;;;;;;;;;;;14259:6;14212:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14212:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14212:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14212:54:0;;;;;;;;;;;;;;;;;14094:180;;:::o;13651:142::-;13730:4;13754:8;:21;13763:11;13754:21;;;;;;;;;;;;;;;:31;13776:8;13754:31;;;;;;;;;;;;;;;;13747:38;;13651:142;;;;:::o;4213:252::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4346:1;4327:21;;:7;:21;;;;4319:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4406:7;4388:6;:15;4395:7;4388:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;4440:7;4429:28;;;4449:7;4429:28;;;;;;;;;;;;;;;;;;;;;;4213:252;;:::o;15707:20::-;;;;:::o;2461:288::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2587:1;2566:23;;:9;:23;;;;2558:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2629:16;2648:5;;;;;;;;;;;2629:24;;2672:9;2664:5;;:17;;;;;;;;;;;;;;;;;;2731:9;2697:44;;2721:8;2697:44;;;;;;;;;;;;2306:1;2461:288;:::o;3478:27::-;;;;;;;;;;;;;:::o;568:123::-;626:7;658:1;653;:6;;646:14;;;;682:1;678;:5;671:12;;568:123;;;;:::o;14845:684::-;14984:1;14969:17;;:3;:17;;;;14961:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15053:6;15034:8;:15;15043:5;15034:15;;;;;;;;;;;;;;;;:25;;15026:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15113:27;15133:6;15113:8;:15;15122:5;15113:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;15095:8;:15;15104:5;15095:15;;;;;;;;;;;;;;;:45;;;;15167:25;15185:6;15167:8;:13;15176:3;15167:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;15151:8;:13;15160:3;15151:13;;;;;;;;;;;;;;;:41;;;;15207:15;15218:3;15207:10;:15::i;:::-;15203:175;;;15239:32;15298:3;15239:63;;15317:8;:22;;;15340:10;15352:6;15360:5;15317:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15317:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15317:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15317:49:0;;;;15203:175;;15409:3;15393:35;;15402:5;15393:35;;;15414:6;15422:5;15393:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15393:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15485:3;15469:28;;15478:5;15469:28;;;15490:6;15469:28;;;;;;;;;;;;;;;;;;14845:684;;;;:::o;18237:404::-;2264:5;;;;;;;;;;;2250:19;;:10;:19;;;2242:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18365:9;;18338:23;18354:6;18338:11;;:15;;:23;;;;:::i;:::-;:36;;18330:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18424:25;18442:6;18424:8;:13;18433:3;18424:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;18408:8;:13;18417:3;18408:13;;;;;;;;;;;;;;;:41;;;;18474:23;18490:6;18474:11;;:15;;:23;;;;:::i;:::-;18460:11;:37;;;;18508:18;18563:3;18542:40;;18559:1;18542:40;;;18568:6;18576:5;18542:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;18542:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18619:3;18598:33;;18615:1;18598:33;;;18624:6;18598:33;;;;;;;;;;;;;;;;;;2306:1;18237:404;;:::o;703:149::-;761:7;783:9;799:1;795;:5;783:17;;823:1;818;:6;;811:14;;;;843:1;836:8;;;703:149;;;;:::o;7521:207::-;7606:4;7628:11;7683:5;7671:18;7661:28;;7718:1;7709:6;:10;7701:19;;;7521:207;;;:::o
Swarm Source
bzzr://ecd383786a8c992fa5da7366459a2fb5c505e748f3700398df0499bff5d42b7a
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.