[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": [ { "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": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "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": [], "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" } ]
61016060405234801562000011575f80fd5b506040518060400160405280600681526020017f62656f626c650000000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f62656f626c6500000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42424c00000000000000000000000000000000000000000000000000000000008152508160039081620000fc919062000832565b5080600490816200010e919062000832565b50505062000127600583620001f560201b90919060201c565b610120818152505062000145600682620001f560201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001846200024a60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620001ef620001d6620002a660201b60201c565b6b033b2e3c9fd0803ce8000000620002ad60201b60201c565b62000c01565b5f6020835110156200021a5762000212836200033760201b60201c565b905062000244565b826200022c83620003a160201b60201c565b5f0190816200023c919062000832565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200028b95949392919062000984565b60405160208183030381529060405280519060200120905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000320575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620003179190620009df565b60405180910390fd5b620003335f8383620003aa60201b60201c565b5050565b5f80829050601f815111156200038657826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016200037d919062000a84565b60405180910390fd5b805181620003949062000ad5565b5f1c175f1b915050919050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620003fe578060025f828254620003f1919062000b71565b92505081905550620004cf565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200048a578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620004819392919062000bab565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000518578060025f828254039250508190555062000562565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005c1919062000be6565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200064a57607f821691505b60208210810362000660576200065f62000605565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000687565b620006d0868362000687565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200071a620007146200070e84620006e8565b620006f1565b620006e8565b9050919050565b5f819050919050565b6200073583620006fa565b6200074d620007448262000721565b84845462000693565b825550505050565b5f90565b6200076362000755565b620007708184846200072a565b505050565b5b8181101562000797576200078b5f8262000759565b60018101905062000776565b5050565b601f821115620007e657620007b08162000666565b620007bb8462000678565b81016020851015620007cb578190505b620007e3620007da8562000678565b83018262000775565b50505b505050565b5f82821c905092915050565b5f620008085f1984600802620007eb565b1980831691505092915050565b5f620008228383620007f7565b9150826002028217905092915050565b6200083d82620005ce565b67ffffffffffffffff811115620008595762000858620005d8565b5b62000865825462000632565b620008728282856200079b565b5f60209050601f831160018114620008a8575f841562000893578287015190505b6200089f858262000815565b8655506200090e565b601f198416620008b88662000666565b5f5b82811015620008e157848901518255600182019150602085019450602081019050620008ba565b86831015620009015784890151620008fd601f891682620007f7565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b6200092a8162000916565b82525050565b6200093b81620006e8565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200096c8262000941565b9050919050565b6200097e8162000960565b82525050565b5f60a082019050620009995f8301886200091f565b620009a860208301876200091f565b620009b760408301866200091f565b620009c6606083018562000930565b620009d5608083018462000973565b9695505050505050565b5f602082019050620009f45f83018462000973565b92915050565b5f82825260208201905092915050565b5f5b8381101562000a2957808201518184015260208101905062000a0c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000a5082620005ce565b62000a5c8185620009fa565b935062000a6e81856020860162000a0a565b62000a798162000a34565b840191505092915050565b5f6020820190508181035f83015262000a9e818462000a44565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f62000acc825162000916565b80915050919050565b5f62000ae18262000aa6565b8262000aed8462000ab0565b905062000afa8162000abf565b9250602082101562000b3d5762000b387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080262000687565b831692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000b7d82620006e8565b915062000b8a83620006e8565b925082820190508082111562000ba55762000ba462000b44565b5b92915050565b5f60608201905062000bc05f83018662000973565b62000bcf602083018562000930565b62000bde604083018462000930565b949350505050565b5f60208201905062000bfb5f83018462000930565b92915050565b60805160a05160c05160e051610100516101205161014051611caa62000c535f395f610b2601525f610aeb01525f61101f01525f610ffe01525f61096a01525f6109c001525f6109e90152611caa5ff3fe608060405234801561000f575f80fd5b50600436106100f3575f3560e01c806370a082311161009557806395d89b411161006457806395d89b411461028b578063a9059cbb146102a9578063d505accf146102d9578063dd62ed3e146102f5576100f3565b806370a08231146101eb57806379cc67901461021b5780637ecebe001461023757806384b0196e14610267576100f3565b806323b872dd116100d157806323b872dd14610163578063313ce567146101935780633644e515146101b157806342966c68146101cf576100f3565b806306fdde03146100f7578063095ea7b31461011557806318160ddd14610145575b5f80fd5b6100ff610325565b60405161010c91906114ef565b60405180910390f35b61012f600480360381019061012a91906115a0565b6103b5565b60405161013c91906115f8565b60405180910390f35b61014d6103d7565b60405161015a9190611620565b60405180910390f35b61017d60048036038101906101789190611639565b6103e0565b60405161018a91906115f8565b60405180910390f35b61019b61040e565b6040516101a891906116a4565b60405180910390f35b6101b9610416565b6040516101c691906116d5565b60405180910390f35b6101e960048036038101906101e491906116ee565b610424565b005b61020560048036038101906102009190611719565b610438565b6040516102129190611620565b60405180910390f35b610235600480360381019061023091906115a0565b61047d565b005b610251600480360381019061024c9190611719565b61049d565b60405161025e9190611620565b60405180910390f35b61026f6104ae565b6040516102829796959493929190611844565b60405180910390f35b610293610553565b6040516102a091906114ef565b60405180910390f35b6102c360048036038101906102be91906115a0565b6105e3565b6040516102d091906115f8565b60405180910390f35b6102f360048036038101906102ee919061191a565b610605565b005b61030f600480360381019061030a91906119b7565b61074a565b60405161031c9190611620565b60405180910390f35b60606003805461033490611a22565b80601f016020809104026020016040519081016040528092919081815260200182805461036090611a22565b80156103ab5780601f10610382576101008083540402835291602001916103ab565b820191905f5260205f20905b81548152906001019060200180831161038e57829003601f168201915b5050505050905090565b5f806103bf6107cc565b90506103cc8185856107d3565b600191505092915050565b5f600254905090565b5f806103ea6107cc565b90506103f78582856107e5565b610402858585610877565b60019150509392505050565b5f6012905090565b5f61041f610967565b905090565b61043561042f6107cc565b82610a1d565b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61048f826104896107cc565b836107e5565b6104998282610a1d565b5050565b5f6104a782610a9c565b9050919050565b5f6060805f805f60606104bf610ae2565b6104c7610b1d565b46305f801b5f67ffffffffffffffff8111156104e6576104e5611a52565b5b6040519080825280602002602001820160405280156105145781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b60606004805461056290611a22565b80601f016020809104026020016040519081016040528092919081815260200182805461058e90611a22565b80156105d95780601f106105b0576101008083540402835291602001916105d9565b820191905f5260205f20905b8154815290600101906020018083116105bc57829003601f168201915b5050505050905090565b5f806105ed6107cc565b90506105fa818585610877565b600191505092915050565b8342111561064a57836040517f627913020000000000000000000000000000000000000000000000000000000081526004016106419190611620565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886106788c610b58565b8960405160200161068e96959493929190611a7f565b6040516020818303038152906040528051906020012090505f6106b082610bab565b90505f6106bf82878787610bc4565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461073357808a6040517f4b800e4600000000000000000000000000000000000000000000000000000000815260040161072a929190611ade565b60405180910390fd5b61073e8a8a8a6107d3565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6107e08383836001610bf2565b505050565b5f6107f0848461074a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108715781811015610862578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161085993929190611b05565b60405180910390fd5b61087084848484035f610bf2565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108e7575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108de9190611b3a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610957575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161094e9190611b3a565b60405180910390fd5b610962838383610dc1565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156109e257507f000000000000000000000000000000000000000000000000000000000000000046145b15610a0f577f00000000000000000000000000000000000000000000000000000000000000009050610a1a565b610a17610fda565b90505b90565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a8d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a849190611b3a565b60405180910390fd5b610a98825f83610dc1565b5050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060610b1860057f000000000000000000000000000000000000000000000000000000000000000061106f90919063ffffffff16565b905090565b6060610b5360067f000000000000000000000000000000000000000000000000000000000000000061106f90919063ffffffff16565b905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f610bbd610bb7610967565b8361111c565b9050919050565b5f805f80610bd48888888861115c565b925092509250610be48282611243565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c62575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610c599190611b3a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cd2575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610cc99190611b3a565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610dbb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610db29190611620565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e11578060025f828254610e059190611b80565b92505081905550610edf565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610e9a578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610e9193929190611b05565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f26578060025f8282540392505081905550610f70565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fcd9190611620565b60405180910390a3505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611054959493929190611bb3565b60405160208183030381529060405280519060200120905090565b606060ff5f1b831461108b57611084836113a5565b9050611116565b81805461109790611a22565b80601f01602080910402602001604051908101604052809291908181526020018280546110c390611a22565b801561110e5780601f106110e55761010080835404028352916020019161110e565b820191905f5260205f20905b8154815290600101906020018083116110f157829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611198575f600385925092509250611239565b5f6001888888886040515f81526020016040526040516111bb9493929190611c04565b6020604051602081039080840390855afa1580156111db573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361122c575f60015f801b93509350935050611239565b805f805f1b935093509350505b9450945094915050565b5f600381111561125657611255611c47565b5b82600381111561126957611268611c47565b5b03156113a1576001600381111561128357611282611c47565b5b82600381111561129657611295611c47565b5b036112cd576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156112e1576112e0611c47565b5b8260038111156112f4576112f3611c47565b5b0361133857805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161132f9190611620565b60405180910390fd5b60038081111561134b5761134a611c47565b5b82600381111561135e5761135d611c47565b5b036113a057806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161139791906116d5565b60405180910390fd5b5b5050565b60605f6113b183611417565b90505f602067ffffffffffffffff8111156113cf576113ce611a52565b5b6040519080825280601f01601f1916602001820160405280156114015781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f81111561145c576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561149c578082015181840152602081019050611481565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114c182611465565b6114cb818561146f565b93506114db81856020860161147f565b6114e4816114a7565b840191505092915050565b5f6020820190508181035f83015261150781846114b7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61153c82611513565b9050919050565b61154c81611532565b8114611556575f80fd5b50565b5f8135905061156781611543565b92915050565b5f819050919050565b61157f8161156d565b8114611589575f80fd5b50565b5f8135905061159a81611576565b92915050565b5f80604083850312156115b6576115b561150f565b5b5f6115c385828601611559565b92505060206115d48582860161158c565b9150509250929050565b5f8115159050919050565b6115f2816115de565b82525050565b5f60208201905061160b5f8301846115e9565b92915050565b61161a8161156d565b82525050565b5f6020820190506116335f830184611611565b92915050565b5f805f606084860312156116505761164f61150f565b5b5f61165d86828701611559565b935050602061166e86828701611559565b925050604061167f8682870161158c565b9150509250925092565b5f60ff82169050919050565b61169e81611689565b82525050565b5f6020820190506116b75f830184611695565b92915050565b5f819050919050565b6116cf816116bd565b82525050565b5f6020820190506116e85f8301846116c6565b92915050565b5f602082840312156117035761170261150f565b5b5f6117108482850161158c565b91505092915050565b5f6020828403121561172e5761172d61150f565b5b5f61173b84828501611559565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61177881611744565b82525050565b61178781611532565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6117bf8161156d565b82525050565b5f6117d083836117b6565b60208301905092915050565b5f602082019050919050565b5f6117f28261178d565b6117fc8185611797565b9350611807836117a7565b805f5b8381101561183757815161181e88826117c5565b9750611829836117dc565b92505060018101905061180a565b5085935050505092915050565b5f60e0820190506118575f83018a61176f565b818103602083015261186981896114b7565b9050818103604083015261187d81886114b7565b905061188c6060830187611611565b611899608083018661177e565b6118a660a08301856116c6565b81810360c08301526118b881846117e8565b905098975050505050505050565b6118cf81611689565b81146118d9575f80fd5b50565b5f813590506118ea816118c6565b92915050565b6118f9816116bd565b8114611903575f80fd5b50565b5f81359050611914816118f0565b92915050565b5f805f805f805f60e0888a0312156119355761193461150f565b5b5f6119428a828b01611559565b97505060206119538a828b01611559565b96505060406119648a828b0161158c565b95505060606119758a828b0161158c565b94505060806119868a828b016118dc565b93505060a06119978a828b01611906565b92505060c06119a88a828b01611906565b91505092959891949750929550565b5f80604083850312156119cd576119cc61150f565b5b5f6119da85828601611559565b92505060206119eb85828601611559565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611a3957607f821691505b602082108103611a4c57611a4b6119f5565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60c082019050611a925f8301896116c6565b611a9f602083018861177e565b611aac604083018761177e565b611ab96060830186611611565b611ac66080830185611611565b611ad360a0830184611611565b979650505050505050565b5f604082019050611af15f83018561177e565b611afe602083018461177e565b9392505050565b5f606082019050611b185f83018661177e565b611b256020830185611611565b611b326040830184611611565b949350505050565b5f602082019050611b4d5f83018461177e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b8a8261156d565b9150611b958361156d565b9250828201905080821115611bad57611bac611b53565b5b92915050565b5f60a082019050611bc65f8301886116c6565b611bd360208301876116c6565b611be060408301866116c6565b611bed6060830185611611565b611bfa608083018461177e565b9695505050505050565b5f608082019050611c175f8301876116c6565b611c246020830186611695565b611c3160408301856116c6565b611c3e60608301846116c6565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea26469706673582212209e83d3db135f7577de0536768f310c7c2a39e4d7625a0a34dfa3cfdbe837a7a064736f6c63430008140033