40 txs
78 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
distributionNode
viewfunction distributionNode() view returns (address)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getNodeBalanceLimitInUsd
viewfunction getNodeBalanceLimitInUsd(address nodeAddress) view returns (uint256)
hasComputeAccess
viewfunction hasComputeAccess(address) view returns (bool)
isMeshNetworkEnabled
viewfunction isMeshNetworkEnabled() view returns (bool)
isQuarantined
viewfunction isQuarantined(address) view returns (bool)
lastValidationId
viewfunction lastValidationId() view returns (uint256)
maintenanceEndTime
viewfunction maintenanceEndTime() view returns (uint256)
name
viewfunction name() view returns (string)
networkValidator
viewfunction networkValidator() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
VALIDATE_NODE_TYPEHASH
viewfunction VALIDATE_NODE_TYPEHASH() view returns (bytes32)
validationIds
viewfunction validationIds(uint256) view returns (bool)
acceptOwnership
nonpayablefunction acceptOwnership()
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
initiateNetworkMaintenance
nonpayablefunction initiateNetworkMaintenance(uint256 maintenanceEndTime_)
quarantineNode
nonpayablefunction quarantineNode(address nodeAddress)
removeQuarantine
nonpayablefunction removeQuarantine(address nodeAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
resumeNetworkOperations
nonpayablefunction resumeNetworkOperations()
revokeNodeAccess
nonpayablefunction revokeNodeAccess(address nodeAddress)
setDistributionNode
nonpayablefunction setDistributionNode(address distributionNode_)
setNetworkMode
nonpayablefunction setNetworkMode(bool isP2PAllowed_)
setNetworkValidator
nonpayablefunction setNetworkValidator(address networkValidator_)
setNodeBalanceLimit
nonpayablefunction setNodeBalanceLimit(address nodeAddress, uint256 nodeBalanceLimitInUsd_)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
validateComputeNode
nonpayablefunction validateComputeNode(address nodeAddress, uint256 validationId, bytes validationProof)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
ComputeNodeValidated
event ComputeNodeValidated(address indexed nodeAddress, uint256 validationId)
DistributionNodeUpdated
event DistributionNodeUpdated(address distributionNode)
EIP712DomainChanged
event EIP712DomainChanged()
NetworkMaintenanceActivated
event NetworkMaintenanceActivated(uint256 maintenanceEndTime)
NetworkModeChanged
event NetworkModeChanged(bool isMeshNetworkEnabled)
NetworkOperationsResumed
event NetworkOperationsResumed()
NetworkValidatorUpdated
event NetworkValidatorUpdated(address indexed networkValidator)
NodeAccessRevoked
event NodeAccessRevoked(address indexed nodeAddress)
NodeBalanceLimitInUsdUpdated
event NodeBalanceLimitInUsdUpdated(address indexed nodeAddress, uint256 nodeBalanceLimitInUsd)
NodeQuarantined
event NodeQuarantined(address indexed nodeAddress)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
QuarantineLifted
event QuarantineLifted(address indexed nodeAddress)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
DistributionNodeNotSetted
error DistributionNodeNotSetted()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ExpectedPause
error ExpectedPause()
InvalidShortString
error InvalidShortString()
InvalidTimestamp
error InvalidTimestamp()
InvalidValidationProof
error InvalidValidationProof()
MeshNetworkDisabled
error MeshNetworkDisabled()
NodeAlreadyQuarantined
error NodeAlreadyQuarantined()
NodeAlreadyValidated
error NodeAlreadyValidated()
NodeBalanceLimitExeeded
error NodeBalanceLimitExeeded()
NodeInQuarantine
error NodeInQuarantine()
NodeNotQuarantined
error NodeNotQuarantined()
NodeNotValidated
error NodeNotValidated()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
StringTooLong
error StringTooLong(string str)
UnauthorizedComputeAccess
error UnauthorizedComputeAccess(address nodeAddress)
ValidationIdAlreadyUsed
error ValidationIdAlreadyUsed(uint256 validationId)
ZeroAddress
error ZeroAddress()
creation bytecode
0x6101606040526011805460ff60a01b1916905534801561001e57600080fd5b506040518060400160405280601881526020017f436f6c6c656374697665204d696e6420414920546f6b656e0000000000000000815250604051806040016040528060018152602001603160f81b8152503360405180604001604052806012815260200171436f6c6c656374697665204d696e6420414960701b81525060405180604001604052806004815260200163434d414960e01b81525081600390816100c7919061090b565b5060046100d4828261090b565b5050506001600160a01b03811661010657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61010f81610272565b5061011b82600761028e565b6101205261012a81600861028e565b61014052815160208084019190912060e052815190820120610100524660a0526101b760e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c08190526009805460ff19908116909155336000818152600a60205260408082208054851660019081179091559482528120805484168517905580527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e38054909216909217905561023b906b033b2e3c9fd0803ce80000006102c1565b60008052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3805460ff19169055610bb3565b600680546001600160a01b031916905561028b816102fb565b50565b60006020835110156102aa576102a38361034d565b90506102bb565b816102b5848261090b565b5060ff90505b92915050565b6001600160a01b0382166102eb5760405163ec442f0560e01b8152600060048201526024016100fd565b6102f76000838361038b565b5050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f81511115610378578260405163305a27a960e01b81526004016100fd91906109c9565b805161038382610a17565b179392505050565b60095460ff16801561039f57506010544210155b156103db5760006010556103b1610688565b6040517fbf77348d79d1b655a6ed9fbf965d22a97f6e7ac7447a9de43ef45326be1d5b1d90600090a15b6103e36106cf565b8282826001600160a01b03831615610592576011546001600160a01b031661041d576040516263c48760e51b815260040160405180910390fd5b60115460408051636a8953ed60e01b815290516000926001600160a01b031691636a8953ed916004808301926020929190829003018187875af1158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c9190610a3b565b90506000601160009054906101000a90046001600160a01b03166001600160a01b0316635b32085a6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156104e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105099190610a3b565b9050600081838561052f886001600160a01b031660009081526020819052604090205490565b6105399190610a6a565b6105439190610a7d565b61054d9190610a94565b905061055b6012600a610b9d565b610564866106f5565b61056e9190610a7d565b81111561058e5760405163475c4a7d60e11b815260040160405180910390fd5b5050505b6001600160a01b0386166000908152600a602052604090205460ff166105d657604051633842a7ad60e01b81526001600160a01b03871660048201526024016100fd565b6001600160a01b0385166000908152600a602052604090205460ff1661061a57604051633842a7ad60e01b81526001600160a01b03861660048201526024016100fd565b601154600160a01b900460ff16610675576011546001600160a01b0387811691161480159061065757506011546001600160a01b03868116911614155b15610675576040516399b90be160e01b815260040160405180910390fd5b61068086868661071f565b505050505050565b610690610849565b6009805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60095460ff16156106f35760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381166000908152600d60205260408120548082036102bb575061271092915050565b6001600160a01b03831661074a57806002600082825461073f9190610a6a565b909155506107bc9050565b6001600160a01b0383166000908152602081905260409020548181101561079d5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100fd565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166107d8576002805482900390556107f7565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161083c91815260200190565b60405180910390a3505050565b60095460ff166106f357604051638dfc202b60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061089657607f821691505b6020821081036108b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561090657806000526020600020601f840160051c810160208510156108e35750805b601f840160051c820191505b8181101561090357600081556001016108ef565b50505b505050565b81516001600160401b038111156109245761092461086c565b610938816109328454610882565b846108bc565b6020601f82116001811461096c57600083156109545750848201515b600019600385901b1c1916600184901b178455610903565b600084815260208120601f198516915b8281101561099c578785015182556020948501946001909201910161097c565b50848210156109ba5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b818110156109f757602081860181015160408684010152016109da565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156108b65760001960209190910360031b1b16919050565b600060208284031215610a4d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102bb576102bb610a54565b80820281158282048414176102bb576102bb610a54565b600082610ab157634e487b7160e01b600052601260045260246000fd5b500490565b6001815b6001841115610af157808504811115610ad557610ad5610a54565b6001841615610ae357908102905b60019390931c928002610aba565b935093915050565b600082610b08575060016102bb565b81610b15575060006102bb565b8160018114610b2b5760028114610b3557610b51565b60019150506102bb565b60ff841115610b4657610b46610a54565b50506001821b6102bb565b5060208310610133831016604e8410600b8410161715610b74575081810a6102bb565b610b816000198484610ab6565b8060001904821115610b9557610b95610a54565b029392505050565b6000610bac60ff841683610af9565b9392505050565b60805160a05160c05160e051610100516101205161014051611ebf610c0d6000396000610ed401526000610ea20152600061179001526000611768015260006116c3015260006116ed015260006117170152611ebf6000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80637bfd08bf11610125578063b0adf7c5116100ad578063dd62ed3e1161007c578063dd62ed3e146104b1578063e30c3978146104ea578063e9ee8b19146104fb578063f2fde38b14610522578063f7635d081461053557600080fd5b8063b0adf7c514610470578063c15033ee14610483578063ca1279d914610496578063d8389c98146104a957600080fd5b806395d89b41116100f457806395d89b411461040b57806398269bc3146104135780639b88428414610436578063a78e94421461044a578063a9059cbb1461045d57600080fd5b80637bfd08bf146103b957806384b0196e146103cc57806385812ff5146103e75780638da5cb5b146103fa57600080fd5b806338dc8e41116101a85780635c975abb116101775780635c975abb1461035257806370a082311461035d578063715018a6146103865780637661ebe11461038e57806379ba5097146103b157600080fd5b806338dc8e41146102f657806347f2576414610309578063485d6ef81461031c578063561933391461033f57600080fd5b806318160ddd116101ef57806318160ddd1461028e57806323b872dd1461029657806328008bd1146102a95780632d31b066146102bc578063313ce567146102e757600080fd5b806306fdde0314610221578063095ea7b31461023f5780630cad5fe814610262578063155a1d2814610279575b600080fd5b61022961053e565b6040516102369190611a28565b60405180910390f35b61025261024d366004611a57565b6105d0565b6040519015158152602001610236565b61026b60105481565b604051908152602001610236565b61028c610287366004611a81565b6105ea565b005b60025461026b565b6102526102a4366004611a9a565b610660565b61028c6102b7366004611ad7565b610684565b6011546102cf906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b60405160128152602001610236565b61028c610304366004611af2565b61071b565b61028c610317366004611ad7565b610770565b61025261032a366004611ad7565b600b6020526000908152604090205460ff1681565b61028c61034d366004611ad7565b6107fa565b60095460ff16610252565b61026b61036b366004611ad7565b6001600160a01b031660009081526020819052604090205490565b61028c610884565b61025261039c366004611a81565b600c6020526000908152604090205460ff1681565b61028c610898565b600f546102cf906001600160a01b031681565b6103d46108e1565b6040516102369796959493929190611b14565b61028c6103f5366004611ad7565b610927565b6005546001600160a01b03166102cf565b6102296109f7565b610252610421366004611ad7565b600a6020526000908152604090205460ff1681565b60115461025290600160a01b900460ff1681565b61028c610458366004611ad7565b610a06565b61025261046b366004611a57565b610a7f565b61026b61047e366004611ad7565b610a92565b61028c610491366004611bc2565b610abc565b61028c6104a4366004611a57565b610bf9565b61028c610c5a565b61026b6104bf366004611c95565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b03166102cf565b61026b7f13d957103cd32c3750c7a2ef9a4d7db5086fa85873b094daf614f9d8e802b71c81565b61028c610530366004611ad7565b610c9a565b61026b600e5481565b60606003805461054d90611cc8565b80601f016020809104026020016040519081016040528092919081815260200182805461057990611cc8565b80156105c65780601f1061059b576101008083540402835291602001916105c6565b820191906000526020600020905b8154815290600101906020018083116105a957829003601f168201915b5050505050905090565b6000336105de818585610d0b565b60019150505b92915050565b6105f2610d1d565b8042106106125760405163b7d0949760e01b815260040160405180910390fd5b601081905560095460ff1661062957610629610d4a565b6040518181527f1e38326582b29fef3a6246b5b191e749d8a836cfb0034bebdf659d6b23eddd87906020015b60405180910390a150565b60003361066e858285610da4565b610679858585610e23565b506001949350505050565b61068c610d1d565b6001600160a01b0381166106b35760405163d92e233d60e01b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556000818152600a6020908152604091829020805460ff1916600117905590519182527f2dbd9922caaaac088b2122c01cd0f65cf0336c8ff7955c827e6f126c683fd23a9101610655565b610723610d1d565b60118054821515600160a01b0260ff60a01b199091161790556040517fd93586ac3b2e45f6530c33ff15c73f04103cebbf74c46807dea414a5e254bd1a9061065590831515815260200190565b610778610d1d565b6001600160a01b0381166000908152600b602052604090205460ff166107b157604051636288f69b60e11b815260040160405180910390fd5b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517f0a816bbc9ea0ca716ce877148809fb3d0299a53ba236a4057eb597bfdc92aa899190a250565b610802610d1d565b6001600160a01b0381166000908152600a602052604090205460ff1661083b57604051634ccdc37160e01b815260040160405180910390fd5b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517f0a44ef2c2a1b39177fd2e866376574a4464a7103fe55332c50a2286fb28246f99190a250565b61088c610d1d565b6108966000610e82565b565b60065433906001600160a01b031681146108d55760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6108de81610e82565b50565b6000606080600080600060606108f5610e9b565b6108fd610ecd565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b61092f610d1d565b6001600160a01b0381166000908152600b602052604090205460ff1615610969576040516332e0a3ad60e21b815260040160405180910390fd5b6001600160a01b0381166000908152600a602052604090205460ff16156109ab576001600160a01b0381166000908152600a60205260409020805460ff191690555b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f0a585541a9d239af96b0223047000db8f46b1a2d69476f205df81088754450619190a250565b60606004805461054d90611cc8565b610a0e610d1d565b6001600160a01b038116610a355760405163d92e233d60e01b815260040160405180910390fd5b600f80546001600160a01b0319166001600160a01b0383169081179091556040517faf48b2764e532b71462828d5aa302097ae93e97845cea8ab24e6a28844837c5690600090a250565b6000610a8b8383610efa565b9392505050565b6001600160a01b0381166000908152600d60205260408120548082036105e4575061271092915050565b6001600160a01b0383166000908152600a602052604090205460ff1615610af6576040516308800edd60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600b602052604090205460ff1615610b3057604051630427cde160e21b815260040160405180910390fd5b604080517f13d957103cd32c3750c7a2ef9a4d7db5086fa85873b094daf614f9d8e802b71c6020808301919091526001600160a01b0386168284015260608083018690528351808403909101815260809092019092528051910120610b96818484610f08565b506001600160a01b0383166000818152600a602052604090819020805460ff19166001179055517fe991768dc0d448b6cebbe306e32816a6dfea64b992cfbec84726031c21ba34b990610bec9085815260200190565b60405180910390a2505050565b610c01610d1d565b6001600160a01b0382166000818152600d602052604090819020839055517f8165203473d09a8d719e410009e4dbc712d12dabb2693455ecb33a0eb8032d9d90610c4e9084815260200190565b60405180910390a25050565b610c62610d1d565b6000601055610c6f610fa7565b6040517fbf77348d79d1b655a6ed9fbf965d22a97f6e7ac7447a9de43ef45326be1d5b1d90600090a1565b610ca2610d1d565b600680546001600160a01b0383166001600160a01b03199091168117909155610cd36005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610d188383836001610fe0565b505050565b6005546001600160a01b031633146108965760405163118cdaa760e01b81523360048201526024016108cc565b610d526110b5565b6009805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d873390565b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811015610e1d5781811015610e0e57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016108cc565b610e1d84848484036000610fe0565b50505050565b6001600160a01b038316610e4d57604051634b637e8f60e11b8152600060048201526024016108cc565b6001600160a01b038216610e775760405163ec442f0560e01b8152600060048201526024016108cc565b610d188383836110d9565b600680546001600160a01b03191690556108de816113d6565b6060610ec87f00000000000000000000000000000000000000000000000000000000000000006007611428565b905090565b6060610ec87f00000000000000000000000000000000000000000000000000000000000000006008611428565b6000336105de818585610e23565b6000828152600c602052604090205460ff1615610f3b57604051632015d7e160e21b8152600481018390526024016108cc565b6000610f46846114d3565b90506000610f548284611500565b600f549091506001600160a01b03808316911614610f8557604051632f5ffd6760e11b815260040160405180910390fd5b5050506000818152600c60205260409020805460ff19166001179055600e5550565b610faf61152a565b6009805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610d87565b6001600160a01b03841661100a5760405163e602df0560e01b8152600060048201526024016108cc565b6001600160a01b03831661103457604051634a1406b160e11b8152600060048201526024016108cc565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610e1d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110a791815260200190565b60405180910390a350505050565b60095460ff16156108965760405163d93c066560e01b815260040160405180910390fd5b60095460ff1680156110ed57506010544210155b156111295760006010556110ff610fa7565b6040517fbf77348d79d1b655a6ed9fbf965d22a97f6e7ac7447a9de43ef45326be1d5b1d90600090a15b6111316110b5565b8282826001600160a01b038316156112e0576011546001600160a01b031661116b576040516263c48760e51b815260040160405180910390fd5b60115460408051636a8953ed60e01b815290516000926001600160a01b031691636a8953ed916004808301926020929190829003018187875af11580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da9190611d02565b90506000601160009054906101000a90046001600160a01b03166001600160a01b0316635b32085a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112579190611d02565b9050600081838561127d886001600160a01b031660009081526020819052604090205490565b6112879190611d31565b6112919190611d44565b61129b9190611d5b565b90506112a96012600a611e64565b6112b286610a92565b6112bc9190611d44565b8111156112dc5760405163475c4a7d60e11b815260040160405180910390fd5b5050505b6001600160a01b0386166000908152600a602052604090205460ff1661132457604051633842a7ad60e01b81526001600160a01b03871660048201526024016108cc565b6001600160a01b0385166000908152600a602052604090205460ff1661136857604051633842a7ad60e01b81526001600160a01b03861660048201526024016108cc565b601154600160a01b900460ff166113c3576011546001600160a01b038781169116148015906113a557506011546001600160a01b03868116911614155b156113c3576040516399b90be160e01b815260040160405180910390fd5b6113ce86868661154d565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff83146114425761143b83611677565b90506105e4565b81805461144e90611cc8565b80601f016020809104026020016040519081016040528092919081815260200182805461147a90611cc8565b80156114c75780601f1061149c576101008083540402835291602001916114c7565b820191906000526020600020905b8154815290600101906020018083116114aa57829003601f168201915b505050505090506105e4565b60006105e46114e06116b6565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061151086866117e1565b925092509250611520828261182e565b5090949350505050565b60095460ff1661089657604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b03831661157857806002600082825461156d9190611d31565b909155506115ea9050565b6001600160a01b038316600090815260208190526040902054818110156115cb5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016108cc565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661160657600280548290039055611625565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161166a91815260200190565b60405180910390a3505050565b60606000611684836118eb565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561170f57507f000000000000000000000000000000000000000000000000000000000000000046145b1561173957507f000000000000000000000000000000000000000000000000000000000000000090565b610ec8604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6000806000835160410361181b5760208401516040850151606086015160001a61180d88828585611913565b955095509550505050611827565b50508151600091506002905b9250925092565b600082600381111561184257611842611e73565b0361184b575050565b600182600381111561185f5761185f611e73565b0361187d5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561189157611891611e73565b036118b25760405163fce698f760e01b8152600481018290526024016108cc565b60038260038111156118c6576118c6611e73565b036118e7576040516335e2f38360e21b8152600481018290526024016108cc565b5050565b600060ff8216601f8111156105e457604051632cd44ac360e21b815260040160405180910390fd5b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561194e57506000915060039050826119d8565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156119a2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166119ce575060009250600191508290506119d8565b9250600091508190505b9450945094915050565b6000815180845260005b81811015611a08576020818501810151868301820152016119ec565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a8b60208301846119e2565b80356001600160a01b0381168114611a5257600080fd5b919050565b60008060408385031215611a6a57600080fd5b611a7383611a3b565b946020939093013593505050565b600060208284031215611a9357600080fd5b5035919050565b600080600060608486031215611aaf57600080fd5b611ab884611a3b565b9250611ac660208501611a3b565b929592945050506040919091013590565b600060208284031215611ae957600080fd5b610a8b82611a3b565b600060208284031215611b0457600080fd5b81358015158114610a8b57600080fd5b60ff60f81b8816815260e060208201526000611b3360e08301896119e2565b8281036040840152611b4581896119e2565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b81811015611b9b578351835260209384019390920191600101611b7d565b50909b9a5050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215611bd757600080fd5b611be084611a3b565b925060208401359150604084013567ffffffffffffffff811115611c0357600080fd5b8401601f81018613611c1457600080fd5b803567ffffffffffffffff811115611c2e57611c2e611bac565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c5d57611c5d611bac565b604052818152828201602001881015611c7557600080fd5b816020840160208301376000602083830101528093505050509250925092565b60008060408385031215611ca857600080fd5b611cb183611a3b565b9150611cbf60208401611a3b565b90509250929050565b600181811c90821680611cdc57607f821691505b602082108103611cfc57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611d1457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105e4576105e4611d1b565b80820281158282048414176105e4576105e4611d1b565b600082611d7857634e487b7160e01b600052601260045260246000fd5b500490565b6001815b6001841115611db857808504811115611d9c57611d9c611d1b565b6001841615611daa57908102905b60019390931c928002611d81565b935093915050565b600082611dcf575060016105e4565b81611ddc575060006105e4565b8160018114611df25760028114611dfc57611e18565b60019150506105e4565b60ff841115611e0d57611e0d611d1b565b50506001821b6105e4565b5060208310610133831016604e8410600b8410161715611e3b575081810a6105e4565b611e486000198484611d7d565b8060001904821115611e5c57611e5c611d1b565b029392505050565b6000610a8b60ff841683611dc0565b634e487b7160e01b600052602160045260246000fdfea26469706673582212200b081709da4b3323c41aef15fc087b7ec4e957641ae9e5b74cac7f2c99fdd38e64736f6c634300081c0033