0 txs
0 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
checkpoints
viewfunction checkpoints(address account, uint32 pos) view returns (tuple)
decimals
viewfunction decimals() view returns (uint8)
delegates
viewfunction delegates(address account) view returns (address)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
flashFee
viewfunction flashFee(address token, uint256 amount) view returns (uint256)
getPastTotalSupply
viewfunction getPastTotalSupply(uint256 blockNumber) view returns (uint256)
getPastVotes
viewfunction getPastVotes(address account, uint256 blockNumber) view returns (uint256)
getVotes
viewfunction getVotes(address account) view returns (uint256)
maxFlashLoan
viewfunction maxFlashLoan(address token) view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
numCheckpoints
viewfunction numCheckpoints(address account) view returns (uint32)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
delegate
nonpayablefunction delegate(address delegatee)
delegateBySig
nonpayablefunction delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s)
flashLoan
nonpayablefunction flashLoan(address receiver, address token, uint256 amount, bytes data) returns (bool)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
transfer
nonpayablefunction transfer(address recipient, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address sender, address recipient, uint256 amount) returns (bool)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
DelegateChanged
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate)
DelegateVotesChanged
event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
No errors.
creation bytecode
0x6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120908152503480156200003a57600080fd5b506040518060400160405280600581526020017f5041504552000000000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f50415045520000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f505052000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200012c92919062000b79565b5080600490805190602001906200014592919062000b79565b50505060008280519060200120905060008280519060200120905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90508260c081815250508160e081815250504660a08181525050620001b08184846200020c60201b60201c565b608081815250508061010081815250505050505050506200020633620001db6200024860201b60201c565b600a620001e9919062000ef0565b633b9aca00620001fa91906200102d565b6200025160201b60201c565b62001304565b600083838346306040516020016200022995949392919062000cf8565b6040516020818303038152906040528051906020012090509392505050565b60006012905090565b6200026882826200026c60201b620013851760201c565b5050565b6200028382826200032a60201b620014121760201c565b62000293620004a360201b60201c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620002c1620004c760201b60201c565b111562000305576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002fc9062000d55565b60405180910390fd5b620003246008620004d160201b620015721783620004e960201b60201c565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200039d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003949062000dbb565b60405180910390fd5b620003b1600083836200079a60201b60201c565b8060026000828254620003c5919062000e38565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200041c919062000e38565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000483919062000ddd565b60405180910390a36200049f600083836200079f60201b60201c565b5050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b6000600254905090565b60008183620004e1919062000e38565b905092915050565b600080600085805490509050600081146200055e57856001826200050e91906200108e565b81548110620005225762000521620011b2565b5b9060005260206000200160000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1662000561565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692506200058d83858760201c565b9150600081118015620005e657504386600183620005ac91906200108e565b81548110620005c057620005bf620011b2565b5b9060005260206000200160000160009054906101000a900463ffffffff1663ffffffff16145b1562000687576200060282620007bc60201b620015881760201c565b866001836200061291906200108e565b81548110620006265762000625620011b2565b5b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555062000791565b856040518060400160405280620006a9436200082a60201b620015f31760201c565b63ffffffff168152602001620006ca85620007bc60201b620015881760201c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b50935093915050565b505050565b620007b78383836200088060201b620016461760201c565b505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff801682111562000822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008199062000d77565b60405180910390fd5b819050919050565b600063ffffffff801682111562000878576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200086f9062000d99565b60405180910390fd5b819050919050565b62000898838383620008d060201b620016711760201c565b620008cb620008ad84620008d560201b60201c565b620008be84620008d560201b60201c565b836200093e60201b60201c565b505050565b505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156200097b5750600081115b1562000b5c57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000a6e5760008062000a15600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002062000b6160201b620016761785620004e960201b60201c565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405162000a6392919062000dfa565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000b5b5760008062000b02600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020620004d160201b620015721785620004e960201b60201c565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405162000b5092919062000dfa565b60405180910390a250505b5b505050565b6000818362000b7191906200108e565b905092915050565b82805462000b87906200111e565b90600052602060002090601f01602090048101928262000bab576000855562000bf7565b82601f1062000bc657805160ff191683800117855562000bf7565b8280016001018555821562000bf7579182015b8281111562000bf657825182559160200191906001019062000bd9565b5b50905062000c06919062000c0a565b5090565b5b8082111562000c2557600081600090555060010162000c0b565b5090565b62000c3481620010c9565b82525050565b62000c4581620010dd565b82525050565b600062000c5a60308362000e27565b915062000c6782620011ee565b604082019050919050565b600062000c8160278362000e27565b915062000c8e826200123d565b604082019050919050565b600062000ca860268362000e27565b915062000cb5826200128c565b604082019050919050565b600062000ccf601f8362000e27565b915062000cdc82620012db565b602082019050919050565b62000cf28162001107565b82525050565b600060a08201905062000d0f600083018862000c3a565b62000d1e602083018762000c3a565b62000d2d604083018662000c3a565b62000d3c606083018562000ce7565b62000d4b608083018462000c29565b9695505050505050565b6000602082019050818103600083015262000d708162000c4b565b9050919050565b6000602082019050818103600083015262000d928162000c72565b9050919050565b6000602082019050818103600083015262000db48162000c99565b9050919050565b6000602082019050818103600083015262000dd68162000cc0565b9050919050565b600060208201905062000df4600083018462000ce7565b92915050565b600060408201905062000e11600083018562000ce7565b62000e20602083018462000ce7565b9392505050565b600082825260208201905092915050565b600062000e458262001107565b915062000e528362001107565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e8a5762000e8962001154565b5b828201905092915050565b6000808291508390505b600185111562000ee75780860481111562000ebf5762000ebe62001154565b5b600185161562000ecf5780820291505b808102905062000edf85620011e1565b945062000e9f565b94509492505050565b600062000efd8262001107565b915062000f0a8362001111565b925062000f397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f41565b905092915050565b60008262000f53576001905062001026565b8162000f63576000905062001026565b816001811462000f7c576002811462000f875762000fbd565b600191505062001026565b60ff84111562000f9c5762000f9b62001154565b5b8360020a91508482111562000fb65762000fb562001154565b5b5062001026565b5060208310610133831016604e8410600b841016171562000ff75782820a90508381111562000ff15762000ff062001154565b5b62001026565b62001006848484600162000e95565b9250905081840481111562001020576200101f62001154565b5b81810290505b9392505050565b60006200103a8262001107565b9150620010478362001107565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001083576200108262001154565b5b828202905092915050565b60006200109b8262001107565b9150620010a88362001107565b925082821015620010be57620010bd62001154565b5b828203905092915050565b6000620010d682620010e7565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200113757607f821691505b602082108114156200114e576200114d62001183565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160011c9050919050565b7f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60008201527f766572666c6f77696e6720766f74657300000000000000000000000000000000602082015250565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203260008201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203360008201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60805160a05160c05160e051610100516101205161425c62001354600039600061107901526000611b3701526000611b7901526000611b5801526000611ae401526000611b0c015261425c6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636fcfff45116100de578063a457c2d711610097578063d505accf11610071578063d505accf146104e6578063d9d98ce414610502578063dd62ed3e14610532578063f1127ed81461056257610173565b8063a457c2d71461046a578063a9059cbb1461049a578063c3cda520146104ca57610173565b80636fcfff451461035c57806370a082311461038c5780637ecebe00146103bc5780638e539e8c146103ec57806395d89b411461041c5780639ab24eb01461043a57610173565b8063395093511161013057806339509351146102505780633a46b1a814610280578063587cde1e146102b05780635c19a95c146102e05780635cffe9de146102fc578063613255ab1461032c57610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e4578063313ce567146102145780633644e51514610232575b600080fd5b610180610592565b60405161018d919061340c565b60405180910390f35b6101b060048036038101906101ab9190612b49565b610624565b6040516101bd9190613298565b60405180910390f35b6101ce610642565b6040516101db9190613769565b60405180910390f35b6101fe60048036038101906101f99190612a54565b61064c565b60405161020b9190613298565b60405180910390f35b61021c610744565b60405161022991906137c8565b60405180910390f35b61023a61074d565b60405161024791906132b3565b60405180910390f35b61026a60048036038101906102659190612b49565b61075c565b6040516102779190613298565b60405180910390f35b61029a60048036038101906102959190612b49565b610808565b6040516102a79190613769565b60405180910390f35b6102ca60048036038101906102c591906129e7565b61089c565b6040516102d79190613221565b60405180910390f35b6102fa60048036038101906102f591906129e7565b610905565b005b61031660048036038101906103119190612c83565b610919565b6040516103239190613298565b60405180910390f35b610346600480360381019061034191906129e7565b610ac9565b6040516103539190613769565b60405180910390f35b610376600480360381019061037191906129e7565b610b40565b60405161038391906137ad565b60405180910390f35b6103a660048036038101906103a191906129e7565b610b94565b6040516103b39190613769565b60405180910390f35b6103d660048036038101906103d191906129e7565b610bdc565b6040516103e39190613769565b60405180910390f35b61040660048036038101906104019190612d0b565b610c2c565b6040516104139190613769565b60405180910390f35b610424610c82565b604051610431919061340c565b60405180910390f35b610454600480360381019061044f91906129e7565b610d14565b6040516104619190613769565b60405180910390f35b610484600480360381019061047f9190612b49565b610e25565b6040516104919190613298565b60405180910390f35b6104b460048036038101906104af9190612b49565b610f10565b6040516104c19190613298565b60405180910390f35b6104e460048036038101906104df9190612b89565b610f2e565b005b61050060048036038101906104fb9190612aa7565b611032565b005b61051c60048036038101906105179190612b49565b611174565b6040516105299190613769565b60405180910390f35b61054c60048036038101906105479190612a14565b6111ee565b6040516105599190613769565b60405180910390f35b61057c60048036038101906105779190612c16565b611275565b604051610589919061374e565b60405180910390f35b6060600380546105a1906139c1565b80601f01602080910402602001604051908101604052809291908181526020018280546105cd906139c1565b801561061a5780601f106105ef5761010080835404028352916020019161061a565b820191906000526020600020905b8154815290600101906020018083116105fd57829003601f168201915b5050505050905090565b600061063861063161168c565b8484611694565b6001905092915050565b6000600254905090565b600061065984848461185f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106a461168c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061360e565b60405180910390fd5b6107388561073061168c565b858403611694565b60019150509392505050565b60006012905090565b6000610757611ae0565b905090565b60006107fe61076961168c565b84846001600061077761168c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f9919061381b565b611694565b6001905092915050565b600043821061084c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108439061346e565b60405180910390fd5b610894600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083611ba3565b905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61091661091061168c565b82611caf565b50565b6000806109268686611174565b90506109328786611dc9565b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98773ffffffffffffffffffffffffffffffffffffffff166323e30c8b338989868a8a6040518763ffffffff1660e01b81526004016109969695949392919061323c565b602060405180830381600087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e89190612c56565b14610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f9061358e565b60405180910390fd5b6000610a3488306111ee565b90508186610a42919061381b565b811015610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b906136ee565b60405180910390fd5b610aa58830848985610a9691906138a2565b610aa091906138a2565b611694565b610aba888388610ab5919061381b565b611dd7565b60019250505095945050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610b05576000610b39565b610b0d610642565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b3891906138a2565b5b9050919050565b6000610b8d600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506115f3565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610c25600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611de5565b9050919050565b6000438210610c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c679061346e565b60405180910390fd5b610c7b600883611ba3565b9050919050565b606060048054610c91906139c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbd906139c1565b8015610d0a5780601f10610cdf57610100808354040283529160200191610d0a565b820191906000526020600020905b815481529060010190602001808311610ced57829003601f168201915b5050505050905090565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008114610dfc57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182610db091906138a2565b81548110610dc157610dc0613ab9565b5b9060005260206000200160000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610dff565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b60008060016000610e3461168c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee89061370e565b60405180910390fd5b610f05610efc61168c565b85858403611694565b600191505092915050565b6000610f24610f1d61168c565b848461185f565b6001905092915050565b83421115610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f689061348e565b60405180910390fd5b6000610fd3610fcb7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610fb0949392919061332f565b60405160208183030381529060405280519060200120611df3565b858585611e0d565b9050610fde81611e38565b861461101f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611016906134ee565b60405180910390fd5b6110298188611caf565b50505050505050565b83421115611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c9061352e565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008888886110a48c611e38565b896040516020016110ba969594939291906132ce565b60405160208183030381529060405280519060200120905060006110dd82611df3565b905060006110ed82878787611e0d565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611154906135ee565b60405180910390fd5b6111688a8a8a611694565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db906135ae565b60405180910390fd5b6000905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61127d6128c0565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208263ffffffff16815481106112d4576112d3613ab9565b5b906000526020600020016040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b61138f8282611412565b611397611e96565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166113bd610642565b11156113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f59061362e565b60405180910390fd5b61140c600861157283611eba565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114799061372e565b60405180910390fd5b61148e60008383612132565b80600260008282546114a0919061381b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114f5919061381b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161155a9190613769565b60405180910390a361156e60008383612137565b5050565b60008183611580919061381b565b905092915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80168211156115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e29061364e565b60405180910390fd5b819050919050565b600063ffffffff801682111561163e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611635906136ae565b60405180910390fd5b819050919050565b611651838383611671565b61166c61165d8461089c565b6116668461089c565b83612147565b505050565b505050565b6000818361168491906138a2565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb906136ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b9061350e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118529190613769565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c69061368e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561193f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119369061344e565b60405180910390fd5b61194a838383612132565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c79061354e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a63919061381b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ac79190613769565b60405180910390a3611ada848484612137565b50505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415611b32577f00000000000000000000000000000000000000000000000000000000000000009050611ba0565b611b9d7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612340565b90505b90565b6000808380549050905060005b81811015611c22576000611bc4828461237a565b905084868281548110611bda57611bd9613ab9565b5b9060005260206000200160000160009054906101000a900463ffffffff1663ffffffff161115611c0c57809250611c1c565b600181611c19919061381b565b91505b50611bb0565b60008214611c845784600183611c3891906138a2565b81548110611c4957611c48613ab9565b5b9060005260206000200160000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611c87565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169250505092915050565b6000611cba8361089c565b90506000611cc784610b94565b905082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611dc3828483612147565b50505050565b611dd38282611385565b5050565b611de182826123a0565b5050565b600081600001549050919050565b6000611e06611e00611ae0565b836123be565b9050919050565b6000806000611e1e878787876123f1565b91509150611e2b816124fe565b8192505050949350505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611e8581611de5565b9150611e90816126d3565b50919050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b60008060008580549050905060008114611f285785600182611edc91906138a2565b81548110611eed57611eec613ab9565b5b9060005260206000200160000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611f2b565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169250611f5983858763ffffffff16565b9150600081118015611fac57504386600183611f7591906138a2565b81548110611f8657611f85613ab9565b5b9060005260206000200160000160009054906101000a900463ffffffff1663ffffffff16145b1561203957611fba82611588565b86600183611fc891906138a2565b81548110611fd957611fd8613ab9565b5b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550612129565b85604051806040016040528061204e436115f3565b63ffffffff16815260200161206285611588565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b50935093915050565b505050565b612142838383611646565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121835750600081115b1561233b57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122615760008061220a600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061167685611eba565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612256929190613784565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461233a576000806122e3600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061157285611eba565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161232f929190613784565b60405180910390a250505b5b505050565b6000838383463060405160200161235b959493929190613374565b6040516020818303038152906040528051906020012090509392505050565b6000600282841861238b9190613871565b828416612398919061381b565b905092915050565b6123aa82826126e9565b6123b8600861167683611eba565b50505050565b600082826040516020016123d39291906131ea565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561242c5760006003915091506124f5565b601b8560ff16141580156124445750601c8560ff1614155b156124565760006004915091506124f5565b60006001878787876040516000815260200160405260405161247b94939291906133c7565b6020604051602081039080840390855afa15801561249d573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124ec576000600192509250506124f5565b80600092509250505b94509492505050565b6000600481111561251257612511613a5b565b5b81600481111561252557612524613a5b565b5b1415612530576126d0565b6001600481111561254457612543613a5b565b5b81600481111561255757612556613a5b565b5b1415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f9061342e565b60405180910390fd5b600260048111156125ac576125ab613a5b565b5b8160048111156125bf576125be613a5b565b5b1415612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f7906134ce565b60405180910390fd5b6003600481111561261457612613613a5b565b5b81600481111561262757612626613a5b565b5b1415612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f9061356e565b60405180910390fd5b60048081111561267b5761267a613a5b565b5b81600481111561268e5761268d613a5b565b5b14156126cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c6906135ce565b60405180910390fd5b5b50565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127509061366e565b60405180910390fd5b61276582600083612132565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906134ae565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461284291906138a2565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128a79190613769565b60405180910390a36128bb83600084612137565b505050565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60008135905061290d8161419c565b92915050565b600081359050612922816141b3565b92915050565b600081519050612937816141b3565b92915050565b60008083601f84011261295357612952613aed565b5b8235905067ffffffffffffffff8111156129705761296f613ae8565b5b60208301915083600182028301111561298c5761298b613af2565b5b9250929050565b6000813590506129a2816141ca565b92915050565b6000813590506129b7816141e1565b92915050565b6000813590506129cc816141f8565b92915050565b6000813590506129e18161420f565b92915050565b6000602082840312156129fd576129fc613afc565b5b6000612a0b848285016128fe565b91505092915050565b60008060408385031215612a2b57612a2a613afc565b5b6000612a39858286016128fe565b9250506020612a4a858286016128fe565b9150509250929050565b600080600060608486031215612a6d57612a6c613afc565b5b6000612a7b868287016128fe565b9350506020612a8c868287016128fe565b9250506040612a9d868287016129a8565b9150509250925092565b600080600080600080600060e0888a031215612ac657612ac5613afc565b5b6000612ad48a828b016128fe565b9750506020612ae58a828b016128fe565b9650506040612af68a828b016129a8565b9550506060612b078a828b016129a8565b9450506080612b188a828b016129d2565b93505060a0612b298a828b01612913565b92505060c0612b3a8a828b01612913565b91505092959891949750929550565b60008060408385031215612b6057612b5f613afc565b5b6000612b6e858286016128fe565b9250506020612b7f858286016129a8565b9150509250929050565b60008060008060008060c08789031215612ba657612ba5613afc565b5b6000612bb489828a016128fe565b9650506020612bc589828a016129a8565b9550506040612bd689828a016129a8565b9450506060612be789828a016129d2565b9350506080612bf889828a01612913565b92505060a0612c0989828a01612913565b9150509295509295509295565b60008060408385031215612c2d57612c2c613afc565b5b6000612c3b858286016128fe565b9250506020612c4c858286016129bd565b9150509250929050565b600060208284031215612c6c57612c6b613afc565b5b6000612c7a84828501612928565b91505092915050565b600080600080600060808688031215612c9f57612c9e613afc565b5b6000612cad88828901612993565b9550506020612cbe888289016128fe565b9450506040612ccf888289016129a8565b935050606086013567ffffffffffffffff811115612cf057612cef613af7565b5b612cfc8882890161293d565b92509250509295509295909350565b600060208284031215612d2157612d20613afc565b5b6000612d2f848285016129a8565b91505092915050565b612d41816138d6565b82525050565b612d50816138e8565b82525050565b612d5f816138f4565b82525050565b612d76612d71826138f4565b6139f3565b82525050565b6000612d8883856137ee565b9350612d9583858461397f565b612d9e83613b01565b840190509392505050565b6000612db4826137e3565b612dbe81856137ff565b9350612dce81856020860161398e565b612dd781613b01565b840191505092915050565b6000612def6018836137ff565b9150612dfa82613b12565b602082019050919050565b6000612e126023836137ff565b9150612e1d82613b3b565b604082019050919050565b6000612e35601f836137ff565b9150612e4082613b8a565b602082019050919050565b6000612e58601d836137ff565b9150612e6382613bb3565b602082019050919050565b6000612e7b6022836137ff565b9150612e8682613bdc565b604082019050919050565b6000612e9e601f836137ff565b9150612ea982613c2b565b602082019050919050565b6000612ec16019836137ff565b9150612ecc82613c54565b602082019050919050565b6000612ee46022836137ff565b9150612eef82613c7d565b604082019050919050565b6000612f07600283613810565b9150612f1282613ccc565b600282019050919050565b6000612f2a601d836137ff565b9150612f3582613cf5565b602082019050919050565b6000612f4d6026836137ff565b9150612f5882613d1e565b604082019050919050565b6000612f706022836137ff565b9150612f7b82613d6d565b604082019050919050565b6000612f936024836137ff565b9150612f9e82613dbc565b604082019050919050565b6000612fb6601b836137ff565b9150612fc182613e0b565b602082019050919050565b6000612fd96022836137ff565b9150612fe482613e34565b604082019050919050565b6000612ffc601e836137ff565b915061300782613e83565b602082019050919050565b600061301f6028836137ff565b915061302a82613eac565b604082019050919050565b60006130426030836137ff565b915061304d82613efb565b604082019050919050565b60006130656027836137ff565b915061307082613f4a565b604082019050919050565b60006130886021836137ff565b915061309382613f99565b604082019050919050565b60006130ab6025836137ff565b91506130b682613fe8565b604082019050919050565b60006130ce6026836137ff565b91506130d982614037565b604082019050919050565b60006130f16024836137ff565b91506130fc82614086565b604082019050919050565b6000613114602f836137ff565b915061311f826140d5565b604082019050919050565b60006131376025836137ff565b915061314282614124565b604082019050919050565b600061315a601f836137ff565b915061316582614173565b602082019050919050565b60408201600082015161318660008501826131bd565b506020820151613199602085018261319f565b50505050565b6131a881613930565b82525050565b6131b781613958565b82525050565b6131c681613962565b82525050565b6131d581613962565b82525050565b6131e481613972565b82525050565b60006131f582612efa565b91506132018285612d65565b6020820191506132118284612d65565b6020820191508190509392505050565b60006020820190506132366000830184612d38565b92915050565b600060a0820190506132516000830189612d38565b61325e6020830188612d38565b61326b60408301876131ae565b61327860608301866131ae565b818103608083015261328b818486612d7c565b9050979650505050505050565b60006020820190506132ad6000830184612d47565b92915050565b60006020820190506132c86000830184612d56565b92915050565b600060c0820190506132e36000830189612d56565b6132f06020830188612d38565b6132fd6040830187612d38565b61330a60608301866131ae565b61331760808301856131ae565b61332460a08301846131ae565b979650505050505050565b60006080820190506133446000830187612d56565b6133516020830186612d38565b61335e60408301856131ae565b61336b60608301846131ae565b95945050505050565b600060a0820190506133896000830188612d56565b6133966020830187612d56565b6133a36040830186612d56565b6133b060608301856131ae565b6133bd6080830184612d38565b9695505050505050565b60006080820190506133dc6000830187612d56565b6133e960208301866131db565b6133f66040830185612d56565b6134036060830184612d56565b95945050505050565b600060208201905081810360008301526134268184612da9565b905092915050565b6000602082019050818103600083015261344781612de2565b9050919050565b6000602082019050818103600083015261346781612e05565b9050919050565b6000602082019050818103600083015261348781612e28565b9050919050565b600060208201905081810360008301526134a781612e4b565b9050919050565b600060208201905081810360008301526134c781612e6e565b9050919050565b600060208201905081810360008301526134e781612e91565b9050919050565b6000602082019050818103600083015261350781612eb4565b9050919050565b6000602082019050818103600083015261352781612ed7565b9050919050565b6000602082019050818103600083015261354781612f1d565b9050919050565b6000602082019050818103600083015261356781612f40565b9050919050565b6000602082019050818103600083015261358781612f63565b9050919050565b600060208201905081810360008301526135a781612f86565b9050919050565b600060208201905081810360008301526135c781612fa9565b9050919050565b600060208201905081810360008301526135e781612fcc565b9050919050565b6000602082019050818103600083015261360781612fef565b9050919050565b6000602082019050818103600083015261362781613012565b9050919050565b6000602082019050818103600083015261364781613035565b9050919050565b6000602082019050818103600083015261366781613058565b9050919050565b600060208201905081810360008301526136878161307b565b9050919050565b600060208201905081810360008301526136a78161309e565b9050919050565b600060208201905081810360008301526136c7816130c1565b9050919050565b600060208201905081810360008301526136e7816130e4565b9050919050565b6000602082019050818103600083015261370781613107565b9050919050565b600060208201905081810360008301526137278161312a565b9050919050565b600060208201905081810360008301526137478161314d565b9050919050565b60006040820190506137636000830184613170565b92915050565b600060208201905061377e60008301846131ae565b92915050565b600060408201905061379960008301856131ae565b6137a660208301846131ae565b9392505050565b60006020820190506137c260008301846131cc565b92915050565b60006020820190506137dd60008301846131db565b92915050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061382682613958565b915061383183613958565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613866576138656139fd565b5b828201905092915050565b600061387c82613958565b915061388783613958565b92508261389757613896613a2c565b5b828204905092915050565b60006138ad82613958565b91506138b883613958565b9250828210156138cb576138ca6139fd565b5b828203905092915050565b60006138e182613910565b9050919050565b60008115159050919050565b6000819050919050565b6000613909826138d6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156139ac578082015181840152602081019050613991565b838111156139bb576000848401525b50505050565b600060028204905060018216806139d957607f821691505b602082108114156139ed576139ec613a8a565b5b50919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e656400600082015250565b7f4552433230566f7465733a207369676e61747572652065787069726564000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b7f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433230466c6173684d696e743a20696e76616c69642072657475726e207660008201527f616c756500000000000000000000000000000000000000000000000000000000602082015250565b7f4552433230466c6173684d696e743a2077726f6e6720746f6b656e0000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60008201527f766572666c6f77696e6720766f74657300000000000000000000000000000000602082015250565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203260008201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203360008201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433230466c6173684d696e743a20616c6c6f77616e636520646f6573206e60008201527f6f7420616c6c6f7720726566756e640000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6141a5816138d6565b81146141b057600080fd5b50565b6141bc816138f4565b81146141c757600080fd5b50565b6141d3816138fe565b81146141de57600080fd5b50565b6141ea81613958565b81146141f557600080fd5b50565b61420181613962565b811461420c57600080fd5b50565b61421881613972565b811461422357600080fd5b5056fea2646970667358221220a34a11c8e6432075fc38e0cb800c4c64e78f4b7add8257d61b78e8774506bfe264736f6c63430008070033