[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [], "name": "Forbidden", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "market_", "type": "address" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "market", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
610180604052346104485760405161001860408261044c565b600c8152602081016b0507572652e63617368204c560a41b81526040519061004160408361044c565b600c82526b0507572652e63617368204c560a41b60208301526040519261006960208561044c565b5f84526040519361007b60408661044c565b60018552603160f81b60208601908152845190946001600160401b03821161034b5760035490600182811c9216801561043e575b602083101461032d5781601f8493116103d0575b50602090601f831160011461036a575f9261035f575b50508160011b915f199060031b1c1916176003555b8051906001600160401b03821161034b5760045490600182811c92168015610341575b602083101461032d5781601f8493116102bf575b50602090601f8311600114610259575f9261024e575b50508160011b915f199060031b1c1916176004555b6101598161046f565b61012052610166846105f6565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526101cf60c08261044c565b5190206080523060c05233610160526040516116ad908161072f82396080518161131b015260a051816113d8015260c051816112ec015260e0518161136a01526101005181611390015261012051816107ec0152610140518161081501526101605181818161018901528181610a4801528181610b750152610bec0152f35b015190505f8061013b565b60045f9081528281209350601f198516905b8181106102a7575090846001959493921061028f575b505050811b01600455610150565b01515f1960f88460031b161c191690555f8080610281565b9293602060018192878601518155019501930161026b565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610323575b90601f859493920160051c01905b8181106103155750610125565b5f8155849350600101610308565b90915081906102fa565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610111565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d9565b60035f9081528281209350601f198516905b8181106103b857509084600195949392106103a0575b505050811b016003556100ee565b01515f1960f88460031b161c191690555f8080610392565b9293602060018192878601518155019501930161037c565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81019160208510610434575b90601f859493920160051c01905b81811061042657506100c3565b5f8155849350600101610419565b909150819061040b565b91607f16916100af565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761034b57604052565b908151602081105f146104e9575090601f8151116104a957602081519101516020821061049a571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b03811161034b57600554600181811c911680156105ec575b602082101461032d57601f81116105b9575b50602092601f821160011461055857928192935f9261054d575b50508160011b915f199060031b1c19161760055560ff90565b015190505f80610534565b601f1982169360055f52805f20915f5b8681106105a15750836001959610610589575b505050811b0160055560ff90565b01515f1960f88460031b161c191690555f808061057b565b91926020600181928685015181550194019201610568565b60055f52601f60205f20910160051c810190601f830160051c015b8181106105e1575061051a565b5f81556001016105d4565b90607f1690610508565b908151602081105f14610621575090601f8151116104a957602081519101516020821061049a571790565b6001600160401b03811161034b57600654600181811c91168015610724575b602082101461032d57601f81116106f1575b50602092601f821160011461069057928192935f92610685575b50508160011b915f199060031b1c19161760065560ff90565b015190505f8061066c565b601f1982169360065f52805f20915f5b8681106106d957508360019596106106c1575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f80806106b3565b919260206001819286850151815501940192016106a0565b60065f52601f60205f20910160051c810190601f830160051c015b8181106107195750610652565b5f815560010161070c565b90607f169061064056fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde0314610f6357508063095ea7b314610f1f57806318160ddd14610ee457806323b872dd14610d50578063313ce56714610d175780633644e51514610cd757806340c10f1914610b9957806341ed2c1214610b2b57806342966c68146109fe57806370a082311461099c5780637ecebe001461093957806380f55605146108e857806384b0196e146107b657806395d89b4114610698578063a9059cbb14610649578063d505accf14610498578063dd62ed3e1461040c5763f399e22e146100e2575f80fd5b346104085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104085760043573ffffffffffffffffffffffffffffffffffffffff8116809103610408576024359067ffffffffffffffff821161040857366023830112156104085781600401359067ffffffffffffffff8211610408573660248385010111610408573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016036103e05760085473ffffffffffffffffffffffffffffffffffffffff81166103b8577fffffffffffffffffffffffff000000000000000000000000000000000000000016176008556101fd6009546110ac565b601f811161031b575b505f601f82116001146102605781925f92610252575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555f80f35b602492500101355f8061021c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216927f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af915f5b858110610300575083600195106102c5575b505050811b01600955005b01602401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c191690555f80806102ba565b909260206001819260248787010135815501940191016102a8565b601f820160051c7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af019060208310610390575b601f0160051c7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01905b8181106103855750610206565b5f8155600101610378565b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af915061034e565b7f0dc149f0000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fee90c468000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b346104085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040857610443611066565b73ffffffffffffffffffffffffffffffffffffffff610460611089565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b346104085760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610408576104cf611066565b6104d7611089565b604435906064359260843560ff811681036104085784421161061d576105d86105cf73ffffffffffffffffffffffffffffffffffffffff9283851697885f52600760205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528b6040840152878a1660608401528a608084015260a083015260c082015260c0815261058260e08261119d565b51902061058d6112d5565b90604051917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a435922061152e565b909291926115c8565b168481036105ed57506105eb93506113fe565b005b84907f4b800e46000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b847f62791302000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346104085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104085761068d610683611066565b602435903361120b565b602060405160018152f35b34610408575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610408576040515f6009546106d6816110ac565b80845290600181169081156107745750600114610716575b610712836106fe8185038261119d565b604051918291602083526020830190611023565b0390f35b60095f9081527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af939250905b80821061075a575090915081016020016106fe6106ee565b919260018160209254838588010152019101909291610742565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506106fe90506106ee565b34610408575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104085761088c6108107f000000000000000000000000000000000000000000000000000000000000000061147b565b6108397f00000000000000000000000000000000000000000000000000000000000000006114f7565b602061089a6040519261084c838561119d565b5f84525f3681376040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e08588015260e0870190611023565b908582036040870152611023565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b8281106108d157505050500390f35b8351855286955093810193928101926001016108c2565b34610408575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040857602073ffffffffffffffffffffffffffffffffffffffff60085416604051908152f35b346104085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104085773ffffffffffffffffffffffffffffffffffffffff610985611066565b165f526007602052602060405f2054604051908152f35b346104085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104085773ffffffffffffffffffffffffffffffffffffffff6109e8611066565b165f525f602052602060405f2054604051908152f35b346104085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610408576004353373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016036103e0573315610aff57335f525f60205260405f2054818110610acd5790805f923384528360205203604083205580600254036002556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3005b7fe450d38c000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610408575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040857610bd0611066565b602435903373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016036103e05773ffffffffffffffffffffffffffffffffffffffff16908115610cab5760025490808201809211610c7e5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610408575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610408576020610d0f6112d5565b604051908152f35b34610408575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040857602060405160068152f35b346104085760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261040857610d87611066565b610d8f611089565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103610e0b575b5061068d935061120b565b838110610eb0578415610e84573315610e585761068d945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f209103905584610e00565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b34610408575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610408576020600254604051908152f35b346104085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104085761068d610f59611066565b60243590336113fe565b34610408575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610408575f600354610f9e816110ac565b80845290600181169081156107745750600114610fc557610712836106fe8185038261119d565b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b808210611009575090915081016020016106fe6106ee565b919260018160209254838588010152019101909291610ff1565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361040857565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361040857565b90600182811c921680156110f3575b60208310146110c657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916110bb565b5f929181549161110c836110ac565b8083529260018116908115611161575060011461112857505050565b5f9081526020812093945091925b838310611147575060209250010190565b600181602092949394548385870101520191019190611136565b905060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176111de57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff16908115610aff5773ffffffffffffffffffffffffffffffffffffffff16918215610cab57815f525f60205260405f20548181106112a357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806113d5575b1561133d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526113cf60c08261119d565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611314565b73ffffffffffffffffffffffffffffffffffffffff16908115610e845773ffffffffffffffffffffffffffffffffffffffff16918215610e585760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60ff81146114da5760ff811690601f82116114b2576040519161149f60408461119d565b6020808452838101919036833783525290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040516114f4816114ed8160056110fd565b038261119d565b90565b60ff811461151b5760ff811690601f82116114b2576040519161149f60408461119d565b506040516114f4816114ed8160066110fd565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116115bd579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156115b2575f5173ffffffffffffffffffffffffffffffffffffffff8116156115a857905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561167357806115da575050565b6001810361160a577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361163e57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146116485750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea164736f6c634300081a000a