0 txs
2 calls
constructor
No constructor.
functions
_requests
viewfunction _requests(bytes8) view returns (bytes8 uniqueId, uint256 signerCount, address targetAccount, address clawbackTo, uint256 clawbackAmount, uint8 actionType, bool executed, bool isActive)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
assetUrl
viewfunction assetUrl() view returns (string)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
checkEoaSignatureStatus
viewfunction checkEoaSignatureStatus(bytes8 _requestId, address _signer) view returns (bool status)
decimals
purefunction decimals() pure returns (uint8)
getEoaSignatureCount
viewfunction getEoaSignatureCount(bytes8 _requestId) view returns (uint256 count)
getFileByMaskedCid
viewfunction getFileByMaskedCid(bytes4 _cid) view returns (string)
getIPFSData
viewfunction getIPFSData(address _account) view returns (string ipfsHash)
getNextSignerIndex
viewfunction getNextSignerIndex() view returns (uint8)
getNotes
viewfunction getNotes(address _account) view returns (string note)
getRequestCount
viewfunction getRequestCount() view returns (uint256 requestCount)
getRequestDetails
viewfunction getRequestDetails(bytes8 _requestId) view returns (bytes8 uniqueId, address targetAccount, address clawbackTo, uint256 clawbackAmount, uint8 actionType, uint256 signerCount, bool executed, bool isActive)
getSignerIndex
viewfunction getSignerIndex(address _signer) view returns (uint8 index)
hkdeToken
viewfunction hkdeToken() view returns (address)
isAccountFrozen
viewfunction isAccountFrozen(address _account) view returns (bool isFrozen)
name
viewfunction name() view returns (string)
nftRegistryAddress
viewfunction nftRegistryAddress() view returns (address)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
REQUIRED_SIGNATURES
viewfunction REQUIRED_SIGNATURES() view returns (uint8)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
usdeToken
viewfunction usdeToken() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
attachMaskedCid
nonpayablefunction attachMaskedCid(bytes4[] _cids, string[] _filenames)
batchApproveSigners
nonpayablefunction batchApproveSigners(address[] _signers)
batchDisapproveSigners
nonpayablefunction batchDisapproveSigners(address[] _signers)
burn
nonpayablefunction burn(address _from, uint256 _amount, string _note)
createRequest
nonpayablefunction createRequest(uint8 _actionType, address _targetAccount, address _clawbackTo, uint256 _clawbackAmount, bytes8 _uniqueId) returns (bytes8 _requestId)
deleteMaskedCid
nonpayablefunction deleteMaskedCid(bytes4 _cid)
executeRequest
nonpayablefunction executeRequest(bytes8 _requestId)
freeze
nonpayablefunction freeze(address _account, string _note)
initialize
nonpayablefunction initialize(address _multisigContract, string _assetName, string _assetSymbol, string _assetUrl, address _usdeTokenAddress, address _hkdeTokenAddress, address _nftRegistryAddress, string note)
mint
nonpayablefunction mint(address _to, uint256 _amount, string _note)
pause
nonpayablefunction pause(string _note)
renounceOwnership
nonpayablefunction renounceOwnership()
setRequestInactive
nonpayablefunction setRequestInactive(bytes8 _requestId)
storeIPFSData
nonpayablefunction storeIPFSData(string _ipfsHash, address _assetAddress)
submitSignature
nonpayablefunction submitSignature(bytes8 _requestId, uint8 _signerIdx)
transfer
nonpayablefunction transfer(address _recipient, uint256 _amount, string _note) returns (bool status)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address _sender, address _recipient, uint256 _amount, string _note) returns (bool status)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferHeldToken
nonpayablefunction transferHeldToken(address _tokenAddress, address _recipient, uint256 _amount, string _note)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unfreeze
nonpayablefunction unfreeze(address _account, string _note)
unpause
nonpayablefunction unpause(string _note)
events
AccountFrozen
event AccountFrozen(address indexed account, string note, address indexed _initiator)
AccountUnfrozen
event AccountUnfrozen(address indexed account, string note, address indexed _initiator)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
HeldTokenTransferred
event HeldTokenTransferred(address indexed tokenAddress, address indexed recipient, uint256 amount, string note)
Initialized
event Initialized(uint64 version)
IPFSDataStored
event IPFSDataStored(address indexed account, string ipfsHash, address indexed _assetAddress)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RequestInactiveSet
event RequestInactiveSet(bytes8 indexed requestId, address indexed initiator)
SpecialRequestCreated
event SpecialRequestCreated(bytes8 indexed requestId, uint8 action, address indexed _initiator)
TokensChanged
event TokensChanged(address indexed from, address indexed to, uint256 amount, string note, address indexed _initiator)
TokensClawedBack
event TokensClawedBack(address indexed from, address indexed to, uint256 amount, string note, address indexed _initiator, bytes8 requestId)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
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()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x6080806040523461001657613ab3908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908163054981241461303d5750806306fdde0314612f87578063095ea7b314612ed457806310a5069014612e9a57806311681b6714612d94578063150b7a0214612d2e57806315f570dc14612a7557806317fc9e9e14612a4c57806318160ddd14612a0f5780631af716ba1461283e57806323b872dd14612806578063243db65414612608578063313ce567146125ec57806334b27fca146125af5780633f4f9067146125155780633fad1834146124f757806341ad57de146124bc5780634c5856151461225657806356b8c7241461206c5780635af606a714611d545780635c975abb14611d24578063624fc99014611ce65780636da6635514611bc05780636e14372014611b8357806370a0823114611b3c578063715018a614611ad257806375bf8fe7146119eb57806385c12475146119c25780638da5cb5b1461198c57806395d89b41146118985780639ac18b191461187c5780639b87f77e1461185b5780639c500959146117b5578063a86675e81461170e578063a9059cbb146116dd578063a9436bf814611601578063ae2140fa146113f5578063b114f4f114611340578063bc14ebe714611317578063c9d20fe114611299578063d3fc986414610fe2578063dd62ed3e14610f99578063e79faa5814610e36578063e816d97f14610df7578063eb94891a14610c56578063ebe5f7d114610b92578063f2fde38b14610b67578063fb72691114610a465763fbd163ca1461023a57600080fd5b34610a4157610100366003190112610a4157610254613256565b6024356001600160401b038111610a415761027390369060040161344d565b6044356001600160401b038111610a415761029290369060040161344d565b916064356001600160401b038111610a41576102b290369060040161344d565b608435906001600160a01b0382168203610a415760a4356001600160a01b0381168103610a415760c435916001600160a01b0383168303610a415760e4356001600160401b038111610a415761030c90369060040161344d565b96600080516020613a5e83398151915254966001600160401b03881680159081610a31575b6001149081610a27575b159081610a1e575b50610a0c5760016001600160401b0319891617600080516020613a5e8339815191525560ff8860401c16156109df575b61037b61394e565b61038361394e565b8051906001600160401b0382116106da576103ac60008051602061397e8339815191525461310d565b601f8111610983575b50602090601f83116001146108df576103e79291600091836106f0575b50508160011b916000199060031b1c19161790565b60008051602061397e833981519152555b8051906001600160401b0382116106da576104216000805160206139be8339815191525461310d565b601f8111610883575b50602090601f83116001146107df5761045b9291600091836106f05750508160011b916000199060031b1c19161790565b6000805160206139be833981519152555b61047461394e565b61047c61394e565b600080516020613a1e833981519152805460ff1916905561049b61394e565b6104a361394e565b6104ac3361367e565b6104b4613722565b6104bd8561367e565b8051906001600160401b0382116106da576104d960035461310d565b601f8111610785575b50602090601f83116001146106fb576105139291600091836106f05750508160011b916000199060031b1c19161790565b6003555b600080546001600160a01b03199081166001600160a01b03958616178255600180548216938616939093178355600280549091169385169390931790925560048290556005805460ff191682179055929091168082526007602052604090912084519492016001600160401b0385116106da5761059e85610598835461310d565b83613593565b6020601f8611600114610674578560ff966105cf92600091610669575b508160011b916000199060031b1c19161790565b90555b7fac065ad39f558b11ad9182b6e1141f2b7c40a1060ec0bcf0f3df9404349713646040518061060230958261320d565b0390a360401c161561061057005b68ff000000000000000019600080516020613a5e8339815191525416600080516020613a5e833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b9050850151386105bb565b601f1986169082600052806000209160005b8181106106c2575091879160ff98600194106106a9575b5050811b0190556105d2565b86015160001960f88460031b161c19169055388061069d565b9192602060018192868a015181550194019201610686565b634e487b7160e01b600052604160045260246000fd5b0151905038806103d2565b919060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000935b601f198416851061076a576001945083601f19811610610751575b505050811b01600355610517565b015160001960f88460031b161c19169055388080610743565b81810151835560209485019460019093019290910190610728565b6107cf9060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f850160051c810191602086106107d5575b601f0160051c019061357c565b386104e2565b90915081906107c2565b91906000805160206139be8339815191526000527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa906000935b601f1984168510610868576001945083601f1981161061084f575b505050811b016000805160206139be8339815191525561046c565b015160001960f88460031b161c19169055388080610834565b81810151835560209485019460019093019290910190610819565b6108d9906000805160206139be8339815191526000527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f850160051c810191602086106107d557601f0160051c019061357c565b3861042a565b919060008051602061397e8339815191526000527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0906000935b601f1984168510610968576001945083601f1981161061094f575b505050811b0160008051602061397e833981519152556103f8565b015160001960f88460031b161c19169055388080610934565b81810151835560209485019460019093019290910190610919565b6109d99060008051602061397e8339815191526000527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f850160051c810191602086106107d557601f0160051c019061357c565b386103b5565b68ffffffffffffffffff1988166801000000000000000117600080516020613a5e83398151915255610373565b60405163f92ee8a960e01b8152600490fd5b90501538610343565b303b15915061033b565b60408a901c60ff16159150610331565b600080fd5b34610a4157602080600319360112610a41576004356001600160401b038111610a4157610a779036906004016133bb565b90610a806136f2565b610a88613722565b610a9560198311156135ee565b60005b63ffffffff811683811015610b53576001600160a01b0390610ac490610abf90868661365a565b61366a565b166000526006845260406000209081549160ff92838160081c1615610af5575b5050610af09150613645565b610a98565b6101009061ff001916179055600582815416600a8752604060002060ff19918282541617905581549084821694808614610b3d576001610af096011691161790558580610ae4565b634e487b7160e01b600052601160045260246000fd5b6001600080516020613a3e83398151915255005b34610a41576020366003190112610a4157610b90610b83613256565b610b8b613722565b61367e565b005b34610a4157602080600319360112610a41576004356001600160401b038111610a4157610bc39036906004016133bb565b91610bcc6136f2565b610bd4613722565b610be160198411156135ee565b60005b63ffffffff81169084821015610b5357610c32916001600160a01b0390610c1090610abf90888861365a565b16600052600683526040600020805460ff8160081c16610c37575b5050613645565b610be4565b61ff0019169055600a83526040600020805460ff191690558580610c2b565b34610a415760a0366003190112610a41576004356001811015610a4157610c7b61326c565b6001600160a01b03916044358381169290839003610a4157608435906001600160401b0360c01b821693848303610a4157610cb46136f2565b3360005260209560068752610cd360ff60406000205460081c166134a4565b856000526008875260ff60056040600020015460101c16610db957906005939291866000526008885260406000209360c01c6001600160401b031985541617845560028401906bffffffffffffffffffffffff60a01b931683825416179055600383019182541617905560643560048201550162010000815460ff84169062ffffff19161717905560045460018101809111610b3d57600455610d79604051809261342a565b817f135051cf1974201ea905f44a982248b2d1b937a631c555be8347067c13ad44cd843393a36001600080516020613a3e83398151915255604051908152f35b60405162461bcd60e51b81526004810188905260166024820152755265717565737420616c72656164792065786973747360501b6044820152606490fd5b34610a41576020366003190112610a41576001600160a01b03610e18613256565b166000526006602052602060ff604060002054166040519015158152f35b34610a4157602080600319360112610a41576001600160401b03600435818111610a4157610e689036906004016132df565b90610e71613722565b600080516020613a1e833981519152805460ff811615610f875760ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa84604051338152a1336000526007845260406000209282116106da57610ee282610edc855461310d565b85613593565b600093601f8311600114610f235750610f1492938291600092610f185750508160011b916000199060031b1c19161790565b9055005b0135905084806103d2565b90601f198316948460005282600020926000905b878210610f6f575050836001959610610f55575b505050811b019055005b0135600019600384901b60f8161c19169055838080610f4b565b80600184968294958701358155019501920190610f37565b604051638dfc202b60e01b8152600490fd5b34610a41576040366003190112610a4157610fb2613256565b610fc3610fbd61326c565b9161346b565b9060018060a01b03166000526020526020604060002054604051908152f35b34610a4157610ff03661330c565b909291610ffb6136f2565b611003613722565b60018060a01b0380931692836000526024602080926006825261102e60ff60406000205416156134e6565b600254166040519283809263013ab75560e01b82528960048301525afa801561128d5761106391600091611260575b5061353e565b831561124757600080526006815261108360ff60406000205416156134e6565b836000526006815261109d60ff60406000205416156134e6565b6110a5613923565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02805490838201809211610b3d57558360005260008051602061399e833981519152815260406000208281540190558360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051868152a3836000526007815260406000206001600160401b0384116106da5761114984610598835461310d565b836000601f82116001146111cb579161118c826000805160206139fe8339815191529695936040956000916111c057508160011b916000199060031b1c19161790565b90555b8151928352820152806111a93396309560408401916135cd565b0390a46001600080516020613a3e83398151915255005b90508a01358b6105bb565b600083815284812092508690601f198216905b81811061122d5750916000805160206139fe833981519152969593916040959310611213575b5050600186811b01905561118f565b890135600019600389901b60f8161c191690558880611204565b8a84013585556001909401939286019288925086016111de565b60405163ec442f0560e01b815260006004820152602490fd5b6112809150833d8511611286575b6112788183613147565b810190613526565b8761105d565b503d61126e565b6040513d6000823e3d90fd5b34610a41576020366003190112610a41576112b26133a4565b6112ba613722565b63ffffffff60e01b16600052600b60205260406000206112da815461310d565b90816112e257005b81601f600093116001146112f4575055005b908083918252611313601f60208420940160051c84016001850161357c565b5555005b34610a41576000366003190112610a41576000546040516001600160a01b039091168152602090f35b34610a41576040366003190112610a4157611359613282565b6001600160a01b0361136961326c565b16600052600a60205260ff604060002054169081156113ba576020916113b0916001600160401b0360c01b166000526009602052600160ff60406000205492161b16151590565b6040519015158152f35b60405162461bcd60e51b815260206004820152601360248201527214da59db995c881b9bdd08185c1c1c9bdd9959606a1b6044820152606490fd5b34610a41576040366003190112610a41576001600160401b03600435818111610a415761142690369060040161344d565b61142e61326c565b611436613722565b60018060a01b03169182600052602060078152604060002091600180840185518381116106da576114718161146b845461310d565b84613593565b84601f821160011461159f57908061149e9260009161159457508160011b916000199060031b1c19161790565b90555b84519182116106da576114be826114b8865461310d565b86613593565b82601f831160011461152f575050806114ec9260009161152457508160011b916000199060031b1c19161790565b90555b7fac065ad39f558b11ad9182b6e1141f2b7c40a1060ec0bcf0f3df9404349713646040518061151f33948261320d565b0390a3005b9050840151866105bb565b909282601f1981168660005283600020936000905b8783831061157a5750505010611561575b5050811b0190556114ef565b85015160001960f88460031b161c191690558580611555565b8a8601518755909501949384019386935090810190611544565b90508801518a6105bb565b908391601f1982169084600052876000209160005b898c8383106115ec5750505083116115d3575b5050811b0190556114a1565b89015160001960f88460031b161c1916905589806115c7565b840151855588969094019392830192016115b4565b34610a41576020366003190112610a415761161a613282565b6116226136f2565b61162a613722565b6001600160401b0360c01b168060005260086020526005604060002001805460ff8160101c16156116985762ff00001916905533907f877b4c13c0c366d6ddb8759efee4066f47388619e7b9a86e5a0c012505d7123c600080a36001600080516020613a3e83398151915255005b60405162461bcd60e51b815260206004820152601860248201527f5265717565737420616c726561647920696e61637469766500000000000000006044820152606490fd5b34610a41576040366003190112610a41576117036116f9613256565b6024359033613831565b602060405160018152f35b34610a41576020366003190112610a41576101006001600160c01b031980611734613282565b16600052600860205260ff604060002091825492600181015460018060a01b0380600284015416906003840154169160056004850154940154946040519760c01b168752602087015260408601526060850152608084015261179b60a0840183831661342a565b818160081c16151560c084015260101c16151560e0820152f35b34610a41576020366003190112610a41576101006001600160c01b0319806117db613282565b16600052600860205260ff604060002080549260018060a01b03806002840154169060038401541660048401549160016005860154950154936040519760c01b16875260208701526040860152606085015261183c6080850184841661342a565b60a0840152818160081c16151560c084015260101c16151560e0820152f35b34610a41576000366003190112610a4157602060ff60055416604051908152f35b34610a41576000366003190112610a4157602060405160048152f35b34610a41576000366003190112610a415760405160006000805160206139be8339815191528054906118c98261310d565b8085529160209160019182811690811561195f5750600114611906575b611902866118f681880382613147565b6040519182918261320d565b0390f35b600090815293507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b83851061194c575050505081016020016118f682611902856118e6565b805486860184015293820193810161192f565b9050869550611902969350602092506118f694915060ff191682840152151560051b8201019293856118e6565b34610a41576000366003190112610a41576000805160206139de833981519152546040516001600160a01b039091168152602090f35b34610a41576000366003190112610a41576001546040516001600160a01b039091168152602090f35b34610a41576119f9366133eb565b91611a026136f2565b611a0a613722565b6001600160a01b031660008181526006602052604090205490919060ff1615611a9557611a7e7fad6658d428eb9421a3d09cdca69dfd342ac5d113ac3b365b32ede3e0319a4a4f91836000526006602052604060002060ff19815416905560405191829160208352339660208401916135cd565b0390a36001600080516020613a3e83398151915255005b60405162461bcd60e51b815260206004820152601560248201527420b1b1b7bab73a1034b9903737ba10333937bd32b760591b6044820152606490fd5b34610a41576000366003190112610a4157611aeb613722565b6000805160206139de83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610a41576020366003190112610a41576001600160a01b03611b5d613256565b1660005260008051602061399e8339815191526020526020604060002054604051908152f35b34610a41576020366003190112610a41576001600160a01b03611ba4613256565b16600052600a602052602060ff60406000205416604051908152f35b34610a4157602080600319360112610a41576001600160401b03600435818111610a4157611bf29036906004016132df565b90611bfb613722565b611c03613923565b600190600080516020613a1e833981519152600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25885604051338152a1336000526007855260406000209383116106da57611c6b836114b8865461310d565b600091601f8411600114611c9f5750610f14939450908291600092610f185750508160011b916000199060031b1c19161790565b6000858152868120601f198616979094925b888310611ccf57505050836001959610610f5557505050811b019055005b848401358655948501949281019291810191611cb1565b34610a41576020366003190112610a41576001600160c01b0319611d08613282565b1660005260086020526020600160406000200154604051908152f35b34610a41576000366003190112610a4157602060ff600080516020613a1e83398151915254166040519015158152f35b34610a4157611d6236613352565b919093611d6d613722565b611d756136f2565b6001600160a01b0390811693841561202f5716938415611fea576040516370a0823160e01b8152306004820152602093908481602481895afa801561128d578491600091611fb9575b5010611f7457856000526007845260406000206001600160401b0382116106da57611ded82610598835461310d565b600082601f8111600114611f0e5780611e1b92600091611f0357508160011b916000199060031b1c19161790565b90555b6040516315ae31c960e21b815286600482015283602482015260606044820152848180611e4f6064820186886135cd565b038160008a5af190811561128d57600091611ee6575b5015611ea9577f5b067422f53a2f797c113116647212d0124249bbf9d3c79ba9bd7d4054ae19dc939291611a7e9160408051958695865285015260408401916135cd565b60405162461bcd60e51b8152600481018590526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606490fd5b611efd9150853d8711611286576112788183613147565b87611e65565b90508501358a6105bb565b50601f198316908260005283876000209260005b89828210611f5b57505010611f41575b5050600182811b019055611e1e565b840135600019600385901b60f8161c191690558780611f32565b8885013586556001909501949384019387935001611f22565b60405162461bcd60e51b815260048101859052601d60248201527f4e6f7420656e6f75676820746f6b656e7320696e20636f6e74726163740000006044820152606490fd5b809250868092503d8311611fe3575b611fd28183613147565b81010312610a415783905188611dbe565b503d611fc8565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c696420726563697069656e742061646472657373000000000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606490fd5b34610a415761207a3661330c565b926120836136f2565b33600052602093600685526120a060ff60406000205416156134e6565b602460018060a01b0392868482169485600052600682526120c960ff60406000205416156134e6565b600254166040519384809263013ab75560e01b82528860048301525afa90811561128d57612103879261210994600091612239575061353e565b33613831565b81600052600785526040600020936001600160401b0382116106da5761213982612133875461310d565b87613593565b600094601f83116001146121c45761217a83806000805160206139fe833981519152959697986000916121b957508160011b916000199060031b1c19161790565b90555b6040519081526040868201528061219b3396339560408401916135cd565b0390a46001600080516020613a3e8339815191525560405160018152f35b90508801358a6105bb565b601f1983169581600052876000209060005b89898210612223575050846000805160206139fe8339815191529596979810612209575b5050600184811b01905561217d565b870135600019600387901b60f8161c1916905587806121fa565b600183948293948b0135815501930191016121d6565b61225091508a3d8c11611286576112788183613147565b8a61105d565b34610a4157602080600319360112610a4157612270613282565b6122786136f2565b336000526006825261229460ff60406000205460081c166134a4565b6001600160401b0360c01b1690816000526008815260ff60056040600020015460101c1615612485578160005260088152604060002090600460018301540361244957600582019260ff845460081c166124045760018060a01b03908160028501541691600360048601549501541692826000526006815261231e60ff60406000205416156134e6565b8260005260008051602061399e833981519152815284604060002054106123c95760609061234d868686613831565b60405195865285015260166060850152754175746f2d657865637574656420636c61776261636b60501b608085015260408401527f1a0b46cbbf0749bb33229944269dba4e91e52d465b90c6b7603b82a8676efc7160a03394a4805462ffff0019166101001790556001600080516020613a3e83398151915255005b6064906040519062461bcd60e51b825260048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152fd5b60405162461bcd60e51b815260048101839052601860248201527f5265717565737420616c726561647920657865637574656400000000000000006044820152606490fd5b6064906040519062461bcd60e51b8252600482015260156024820152744e6f7420656e6f756768207369676e61747572657360581b6044820152fd5b6064906040519062461bcd60e51b82526004820152601060248201526f5265717565737420696e61637469766560801b6044820152fd5b34610a41576020366003190112610a41576001600160e01b03196124de6133a4565b16600052600b6020526119026118f66040600020613168565b34610a41576000366003190112610a41576020600454604051908152f35b34610a41577f740b7d79536875237ad3a252eb20e51d5ae58f9e2cfef3b7f3c0505856c5c509611a7e612547366133eb565b93916125549391936136f2565b61255c613722565b60018060a01b03169283600052600660205261258060ff60406000205416156134e6565b8360005260066020526040600020600160ff1982541617905560405191829160208352339660208401916135cd565b34610a41576020366003190112610a41576001600160a01b036125d0613256565b1660005260076020526119026118f66001604060002001613168565b34610a41576000366003190112610a4157602060405160038152f35b34610a41576040366003190112610a41576004356001600160401b03808211610a415736602383011215610a415781600401358181116106da578060051b926020936040519261265a86830185613147565b835260248584019183010191368311610a4157602401905b8282106127e657505050602435828111610a41576126949036906004016133bb565b92909161269f613722565b60005b8151811015610b9057848110156127d0578060051b80850135601e1986360301811215610a4157850190813590858211610a415781360389840113610a415784518410156127d0578863ffffffff60e01b918601015116600052600b885287604060002092612715836114b8865461310d565b600090601f8411600114612763579261274d9281926001979695600093612756575b5050508160011b916000199060031b1c19161790565b90555b016126a2565b01013590508a8c80612737565b60008581528b8120601f1986169796959450928c915b8881106127b65750846001981061279a575b50505050831b83019055612750565b60001960f88660031b161c199201013516905589808a8161278b565b81840183013585556001909401938d929182019101612779565b634e487b7160e01b600052603260045260246000fd5b81356001600160e01b031981168103610a41578152908501908501612672565b34610a41576060366003190112610a4157611703612822613256565b61282a61326c565b6044359161283983338361375b565b613831565b34610a415761284c36613352565b9293909160018060a01b0392602484841693846000526020976006895261287b60ff60406000205416156134e6565b8887821697886000526006825261289a60ff60406000205416156134e6565b6128a26136f2565b600254166040519485809263013ab75560e01b82528b60048301525afa91821561128d576128dc86936128e7956000916129f2575061353e565b61283983338361375b565b83600052600786526040600020916001600160401b0386116106da5761291186610edc855461310d565b60009286601f811160011461297b5780612950916000805160206139fe8339815191529660009161297057508160011b916000199060031b1c19161790565b90555b61219b6040519283928352604089840152339760408401916135cd565b90508501358b6105bb565b506000818152888120909488601f1981165b8b8189106129d657506000805160206139fe8339815191529750106129bc575b5050600187811b019055612953565b84013560001960038a901b60f8161c1916905588806129ad565b83880135855597880197600190940193909201918a915061298d565b612a0991508c8d3d10611286576112788183613147565b8c61105d565b34610a41576000366003190112610a415760207f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254604051908152f35b34610a41576000366003190112610a41576002546040516001600160a01b039091168152602090f35b34610a4157612a833661330c565b91612a8f9391936136f2565b612a97613722565b60018060a01b03808316928360005260246020809360068252612ac260ff60406000205416156134e6565b600254166040519283809263013ab75560e01b82528960048301525afa801561128d57612af691600091612d11575061353e565b8315612cf8578360005260068252612b1660ff60406000205416156134e6565b6000805260068252612b3060ff60406000205416156134e6565b612b38613923565b8360005260008051602061399e83398151915280835260406000205491848310612cc55750908391856000528352036040600020557f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace028281540390556000837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051868152a3826000526007815260406000206001600160401b0385116106da57612be985610598835461310d565b846000601f8211600114612c495791612c2c826000805160206139fe8339815191529695936040956000916111c057508160011b916000199060031b1c19161790565b90555b8151928352820152806111a93396309660408401916135cd565b600083815284812092508790601f198216905b818110612cab5750916000805160206139fe833981519152969593916040959310612c91575b5050600187811b019055612c2f565b89013560001960038a901b60f8161c191690558880612c82565b8a8401358555600190940193928601928992508601612c5c565b60405163391434e360e21b81526001600160a01b0391909116600482015260248101929092525060448101839052606490fd5b604051634b637e8f60e11b815260006004820152602490fd5b612d289150843d8611611286576112788183613147565b8861105d565b34610a41576080366003190112610a4157612d47613256565b50612d5061326c565b506064356001600160401b038111610a415736602382011215610a4157612d81903690602481600401359101613299565b50604051630a85bd0160e11b8152602090f35b34610a41576040366003190112610a4157612dad613282565b6024359060ff821691828103610a4157612e0e90612dc96136f2565b336000526006602052612de660ff60406000205460081c166134a4565b826001600160401b0360c01b166000526009602052600160ff60406000205492161b16151590565b612e64576001600160401b0360c01b16600052600960205260016040600020911b81541790556008602052600160406000200180549060018201809211610b3d57556001600080516020613a3e83398151915255005b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b34610a41576020366003190112610a41576001600160a01b03612ebb613256565b1660005260076020526119026118f66040600020613168565b34610a41576040366003190112610a4157612eed613256565b602435903315612f6e576001600160a01b0316908115612f5557612f103361346b565b82600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b604051634a1406b160e11b815260006004820152602490fd5b60405163e602df0560e01b815260006004820152602490fd5b34610a41576000366003190112610a4157604051600060008051602061397e833981519152805490612fb88261310d565b8085529160209160019182811690811561195f5750600114612fe457611902866118f681880382613147565b600090815293507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b83851061302a575050505081016020016118f682611902856118e6565b805486860184015293820193810161300d565b34610a41576000366003190112610a4157600060035461305c8161310d565b808452906020906001908181169081156130e35750600114613089575b611902856118f681870382613147565b6003600090815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8385106130d0575050505081016020016118f682611902613079565b80548686018401529382019381016130b4565b869550611902969350602092506118f694915060ff191682840152151560051b8201019293613079565b90600182811c9216801561313d575b602083101461312757565b634e487b7160e01b600052602260045260246000fd5b91607f169161311c565b90601f801991011681019081106001600160401b038211176106da57604052565b9060405191826000825461317b8161310d565b908184526020946001916001811690816000146131eb57506001146131ac575b5050506131aa92500383613147565b565b600090815285812095935091905b8183106131d35750506131aa935082010138808061319b565b855488840185015294850194879450918301916131ba565b925050506131aa94925060ff191682840152151560051b82010138808061319b565b6020808252825181830181905290939260005b82811061324257505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501613220565b600435906001600160a01b0382168203610a4157565b602435906001600160a01b0382168203610a4157565b600435906001600160c01b031982168203610a4157565b9291926001600160401b0382116106da57604051916132c2601f8201601f191660200184613147565b829481845281830111610a41578281602093846000960137010152565b9181601f84011215610a41578235916001600160401b038311610a415760208381860195010111610a4157565b6060600319820112610a41576004356001600160a01b0381168103610a41579160243591604435906001600160401b038211610a415761334e916004016132df565b9091565b906080600319830112610a41576001600160a01b03916004358381168103610a4157926024359081168103610a41579160443591606435906001600160401b038211610a415761334e916004016132df565b600435906001600160e01b031982168203610a4157565b9181601f84011215610a41578235916001600160401b038311610a41576020808501948460051b010111610a4157565b906040600319830112610a41576004356001600160a01b0381168103610a415791602435906001600160401b038211610a415761334e916004016132df565b9060018210156134375752565b634e487b7160e01b600052602160045260246000fd5b9080601f83011215610a415781602061346893359101613299565b90565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b156134ab57565b60405162461bcd60e51b81526020600482015260136024820152722737ba1030b8383937bb32b21039b4b3b732b960691b6044820152606490fd5b156134ed57565b60405162461bcd60e51b815260206004820152601160248201527020b1b1b7bab73a1034b990333937bd32b760791b6044820152606490fd5b90816020910312610a4157518015158103610a415790565b1561354557565b60405162461bcd60e51b815260206004820152600f60248201526e139bc81d995c9a599a595908111251608a1b6044820152606490fd5b818110613587575050565b6000815560010161357c565b9190601f81116135a257505050565b6131aa926000526020600020906020601f840160051c830193106107d557601f0160051c019061357c565b908060209392818452848401376000828201840152601f01601f1916010190565b156135f557565b60405162461bcd60e51b815260206004820152602260248201527f42617463682065786365656473206d6178696d756d20616c6c6f7765642073696044820152617a6560f01b6064820152608490fd5b63ffffffff809116908114610b3d5760010190565b91908110156127d05760051b0190565b356001600160a01b0381168103610a415790565b6001600160a01b039081169081156136d9576000805160206139de83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020613a3e83398151915260028154146137105760029055565b604051633ee5aeb560e01b8152600490fd5b6000805160206139de833981519152546001600160a01b0316330361374357565b60405163118cdaa760e01b8152336004820152602490fd5b91906137668361346b565b9260018060a01b0390818316916000958387526020526040862054936000198503613795575b50505050505050565b85851061380057508116156137e75781156137ce57906137b8604094939261346b565b908552602052039120553880808080808061378c565b604051634a1406b160e11b815260048101869052602490fd5b60405163e602df0560e01b815260048101869052602490fd5b604051637dc7a0d960e11b81526001600160a01b039190911660048201526024810185905260448101869052606490fd5b916001600160a01b03808416928315612cf85716928315611247576000838152600660205260409161386960ff8484205416156134e6565b858252600660205261388160ff8484205416156134e6565b613889613923565b84825260008051602061399e8339815191528060205283832054918583106138f157509282858293602096897fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef999752875203828220558781522082815401905551908152a3565b845163391434e360e21b81526001600160a01b0391909116600482015260248101929092525060448101849052606490fd5b60ff600080516020613a1e833981519152541661393c57565b60405163d93c066560e01b8152600490fd5b60ff600080516020613a5e8339815191525460401c161561396b57565b604051631afcd79f60e31b8152600490fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993000330b9665698e2240c04e9b3663fddc57d601de07132e67deecf92e16a8c9828cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e4642704f0d344aec8e882e7ffeb028f8edb6ca1b766f8e80284704f7d05f24c64736f6c63430008160033