[ { "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": [], "name": "TOKEN_INITIAL_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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" } ]
6101606040523480156200001257600080fd5b506040518060400160405280600581526020017f4d6f786965000000000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d6f7869650000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d4f5849450000000000000000000000000000000000000000000000000000008152508160039081620000fd919062000876565b5080600490816200010f919062000876565b505050620001286005836200020a60201b90919060201c565b6101208181525050620001466006826200020a60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001856200026260201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506200020433620001d8620002bf60201b60201c565b600a620001e6919062000aed565b6402540be400620001f8919062000b3e565b620002c860201b60201c565b62000e5e565b6000602083511015620002305762000228836200035560201b60201c565b90506200025c565b826200024283620003c260201b60201c565b600001908162000253919062000876565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e051610100514630604051602001620002a495949392919062000bfa565b60405160208183030381529060405280519060200120905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200033d5760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000334919062000c57565b60405180910390fd5b6200035160008383620003cc60201b60201c565b5050565b600080829050601f81511115620003a557826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016200039c919062000d03565b60405180910390fd5b805181620003b39062000d59565b60001c1760001b915050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200042257806002600082825462000415919062000dc9565b92505081905550620004f8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620004b1578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620004a89392919062000e04565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000543578060026000828254039250508190555062000590565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005ef919062000e41565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200067e57607f821691505b60208210810362000694576200069362000636565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006bf565b6200070a8683620006bf565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000757620007516200074b8462000722565b6200072c565b62000722565b9050919050565b6000819050919050565b620007738362000736565b6200078b62000782826200075e565b848454620006cc565b825550505050565b600090565b620007a262000793565b620007af81848462000768565b505050565b5b81811015620007d757620007cb60008262000798565b600181019050620007b5565b5050565b601f8211156200082657620007f0816200069a565b620007fb84620006af565b810160208510156200080b578190505b620008236200081a85620006af565b830182620007b4565b50505b505050565b600082821c905092915050565b60006200084b600019846008026200082b565b1980831691505092915050565b600062000866838362000838565b9150826002028217905092915050565b6200088182620005fc565b67ffffffffffffffff8111156200089d576200089c62000607565b5b620008a9825462000665565b620008b6828285620007db565b600060209050601f831160018114620008ee5760008415620008d9578287015190505b620008e5858262000858565b86555062000955565b601f198416620008fe866200069a565b60005b82811015620009285784890151825560018201915060208501945060208101905062000901565b8683101562000948578489015162000944601f89168262000838565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009eb57808604811115620009c357620009c26200095d565b5b6001851615620009d35780820291505b8081029050620009e3856200098c565b9450620009a3565b94509492505050565b60008262000a06576001905062000ad9565b8162000a16576000905062000ad9565b816001811462000a2f576002811462000a3a5762000a70565b600191505062000ad9565b60ff84111562000a4f5762000a4e6200095d565b5b8360020a91508482111562000a695762000a686200095d565b5b5062000ad9565b5060208310610133831016604e8410600b841016171562000aaa5782820a90508381111562000aa45762000aa36200095d565b5b62000ad9565b62000ab9848484600162000999565b9250905081840481111562000ad35762000ad26200095d565b5b81810290505b9392505050565b600060ff82169050919050565b600062000afa8262000722565b915062000b078362000ae0565b925062000b367fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009f4565b905092915050565b600062000b4b8262000722565b915062000b588362000722565b925082820262000b688162000722565b9150828204841483151762000b825762000b816200095d565b5b5092915050565b6000819050919050565b62000b9e8162000b89565b82525050565b62000baf8162000722565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000be28262000bb5565b9050919050565b62000bf48162000bd5565b82525050565b600060a08201905062000c11600083018862000b93565b62000c20602083018762000b93565b62000c2f604083018662000b93565b62000c3e606083018562000ba4565b62000c4d608083018462000be9565b9695505050505050565b600060208201905062000c6e600083018462000be9565b92915050565b600082825260208201905092915050565b60005b8381101562000ca557808201518184015260208101905062000c88565b60008484015250505050565b6000601f19601f8301169050919050565b600062000ccf82620005fc565b62000cdb818562000c74565b935062000ced81856020860162000c85565b62000cf88162000cb1565b840191505092915050565b6000602082019050818103600083015262000d1f818462000cc2565b905092915050565b600081519050919050565b6000819050602082019050919050565b600062000d50825162000b89565b80915050919050565b600062000d668262000d27565b8262000d728462000d32565b905062000d7f8162000d42565b9250602082101562000dc25762000dbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620006bf565b831692505b5050919050565b600062000dd68262000722565b915062000de38362000722565b925082820190508082111562000dfe5762000dfd6200095d565b5b92915050565b600060608201905062000e1b600083018662000be9565b62000e2a602083018562000ba4565b62000e39604083018462000ba4565b949350505050565b600060208201905062000e58600083018462000ba4565b92915050565b60805160a05160c05160e051610100516101205161014051611d8a62000eb96000396000610b8401526000610b490152600061109901526000611078015260006109c201526000610a1801526000610a410152611d8a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a082311161009757806395d89b411161006657806395d89b41146102b7578063a9059cbb146102d5578063d505accf14610305578063dd62ed3e1461032157610100565b806370a082311461021757806379cc6790146102475780637ecebe001461026357806384b0196e1461029357610100565b8063313ce567116100d3578063313ce567146101a15780633644e515146101bf57806336c20dcf146101dd57806342966c68146101fb57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610351565b60405161011a9190611586565b60405180910390f35b61013d60048036038101906101389190611641565b6103e3565b60405161014a919061169c565b60405180910390f35b61015b610406565b60405161016891906116c6565b60405180910390f35b61018b600480360381019061018691906116e1565b610410565b604051610198919061169c565b60405180910390f35b6101a961043f565b6040516101b69190611750565b60405180910390f35b6101c7610448565b6040516101d49190611784565b60405180910390f35b6101e5610457565b6040516101f291906116c6565b60405180910390f35b6102156004803603810190610210919061179f565b610460565b005b610231600480360381019061022c91906117cc565b610474565b60405161023e91906116c6565b60405180910390f35b610261600480360381019061025c9190611641565b6104bc565b005b61027d600480360381019061027891906117cc565b6104dc565b60405161028a91906116c6565b60405180910390f35b61029b6104ee565b6040516102ae9796959493929190611901565b60405180910390f35b6102bf610598565b6040516102cc9190611586565b60405180910390f35b6102ef60048036038101906102ea9190611641565b61062a565b6040516102fc919061169c565b60405180910390f35b61031f600480360381019061031a91906119dd565b61064d565b005b61033b60048036038101906103369190611a7f565b610795565b60405161034891906116c6565b60405180910390f35b60606003805461036090611aee565b80601f016020809104026020016040519081016040528092919081815260200182805461038c90611aee565b80156103d95780601f106103ae576101008083540402835291602001916103d9565b820191906000526020600020905b8154815290600101906020018083116103bc57829003601f168201915b5050505050905090565b6000806103ee61081c565b90506103fb818585610824565b600191505092915050565b6000600254905090565b60008061041b61081c565b9050610428858285610836565b6104338585856108ca565b60019150509392505050565b60006012905090565b60006104526109be565b905090565b6402540be40081565b61047161046b61081c565b82610a75565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104ce826104c861081c565b83610836565b6104d88282610a75565b5050565b60006104e782610af7565b9050919050565b600060608060008060006060610502610b40565b61050a610b7b565b46306000801b600067ffffffffffffffff81111561052b5761052a611b1f565b5b6040519080825280602002602001820160405280156105595781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6060600480546105a790611aee565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390611aee565b80156106205780601f106105f557610100808354040283529160200191610620565b820191906000526020600020905b81548152906001019060200180831161060357829003601f168201915b5050505050905090565b60008061063561081c565b90506106428185856108ca565b600191505092915050565b8342111561069257836040517f6279130200000000000000000000000000000000000000000000000000000000815260040161068991906116c6565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886106c18c610bb6565b896040516020016106d796959493929190611b4e565b60405160208183030381529060405280519060200120905060006106fa82610c0d565b9050600061070a82878787610c27565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461077e57808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610775929190611baf565b60405180910390fd5b6107898a8a8a610824565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6108318383836001610c57565b505050565b60006108428484610795565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108c457818110156108b4578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016108ab93929190611bd8565b60405180910390fd5b6108c384848484036000610c57565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361093c5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109339190611c0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109ae5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109a59190611c0f565b60405180910390fd5b6109b9838383610e2e565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610a3a57507f000000000000000000000000000000000000000000000000000000000000000046145b15610a67577f00000000000000000000000000000000000000000000000000000000000000009050610a72565b610a6f611053565b90505b90565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ae75760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610ade9190611c0f565b60405180910390fd5b610af382600083610e2e565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060610b7660057f00000000000000000000000000000000000000000000000000000000000000006110e990919063ffffffff16565b905090565b6060610bb160067f00000000000000000000000000000000000000000000000000000000000000006110e990919063ffffffff16565b905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050559050919050565b6000610c20610c1a6109be565b83611199565b9050919050565b600080600080610c39888888886111da565b925092509250610c4982826112ce565b829350505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610cc95760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610cc09190611c0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3b5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610d329190611c0f565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610e28578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e1f91906116c6565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e80578060026000828254610e749190611c59565b92505081905550610f53565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f0c578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610f0393929190611bd8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9c5780600260008282540392505081905550610fe9565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161104691906116c6565b60405180910390a3505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016110ce959493929190611c8d565b60405160208183030381529060405280519060200120905090565b606060ff60001b8314611106576110ff83611432565b9050611193565b81805461111290611aee565b80601f016020809104026020016040519081016040528092919081815260200182805461113e90611aee565b801561118b5780601f106111605761010080835404028352916020019161118b565b820191906000526020600020905b81548152906001019060200180831161116e57829003601f168201915b505050505090505b92915050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c111561121a5760006003859250925092506112c4565b60006001888888886040516000815260200160405260405161123f9493929190611ce0565b6020604051602081039080840390855afa158015611261573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112b557600060016000801b935093509350506112c4565b8060008060001b935093509350505b9450945094915050565b600060038111156112e2576112e1611d25565b5b8260038111156112f5576112f4611d25565b5b031561142e576001600381111561130f5761130e611d25565b5b82600381111561132257611321611d25565b5b03611359576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561136d5761136c611d25565b5b8260038111156113805761137f611d25565b5b036113c5578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016113bc91906116c6565b60405180910390fd5b6003808111156113d8576113d7611d25565b5b8260038111156113eb576113ea611d25565b5b0361142d57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016114249190611784565b60405180910390fd5b5b5050565b6060600061143f836114a6565b90506000602067ffffffffffffffff81111561145e5761145d611b1f565b5b6040519080825280601f01601f1916602001820160405280156114905781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b60008060ff8360001c169050601f8111156114ed576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611530578082015181840152602081019050611515565b60008484015250505050565b6000601f19601f8301169050919050565b6000611558826114f6565b6115628185611501565b9350611572818560208601611512565b61157b8161153c565b840191505092915050565b600060208201905081810360008301526115a0818461154d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115d8826115ad565b9050919050565b6115e8816115cd565b81146115f357600080fd5b50565b600081359050611605816115df565b92915050565b6000819050919050565b61161e8161160b565b811461162957600080fd5b50565b60008135905061163b81611615565b92915050565b60008060408385031215611658576116576115a8565b5b6000611666858286016115f6565b92505060206116778582860161162c565b9150509250929050565b60008115159050919050565b61169681611681565b82525050565b60006020820190506116b1600083018461168d565b92915050565b6116c08161160b565b82525050565b60006020820190506116db60008301846116b7565b92915050565b6000806000606084860312156116fa576116f96115a8565b5b6000611708868287016115f6565b9350506020611719868287016115f6565b925050604061172a8682870161162c565b9150509250925092565b600060ff82169050919050565b61174a81611734565b82525050565b60006020820190506117656000830184611741565b92915050565b6000819050919050565b61177e8161176b565b82525050565b60006020820190506117996000830184611775565b92915050565b6000602082840312156117b5576117b46115a8565b5b60006117c38482850161162c565b91505092915050565b6000602082840312156117e2576117e16115a8565b5b60006117f0848285016115f6565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61182e816117f9565b82525050565b61183d816115cd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6118788161160b565b82525050565b600061188a838361186f565b60208301905092915050565b6000602082019050919050565b60006118ae82611843565b6118b8818561184e565b93506118c38361185f565b8060005b838110156118f45781516118db888261187e565b97506118e683611896565b9250506001810190506118c7565b5085935050505092915050565b600060e082019050611916600083018a611825565b8181036020830152611928818961154d565b9050818103604083015261193c818861154d565b905061194b60608301876116b7565b6119586080830186611834565b61196560a0830185611775565b81810360c083015261197781846118a3565b905098975050505050505050565b61198e81611734565b811461199957600080fd5b50565b6000813590506119ab81611985565b92915050565b6119ba8161176b565b81146119c557600080fd5b50565b6000813590506119d7816119b1565b92915050565b600080600080600080600060e0888a0312156119fc576119fb6115a8565b5b6000611a0a8a828b016115f6565b9750506020611a1b8a828b016115f6565b9650506040611a2c8a828b0161162c565b9550506060611a3d8a828b0161162c565b9450506080611a4e8a828b0161199c565b93505060a0611a5f8a828b016119c8565b92505060c0611a708a828b016119c8565b91505092959891949750929550565b60008060408385031215611a9657611a956115a8565b5b6000611aa4858286016115f6565b9250506020611ab5858286016115f6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b0657607f821691505b602082108103611b1957611b18611abf565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060c082019050611b636000830189611775565b611b706020830188611834565b611b7d6040830187611834565b611b8a60608301866116b7565b611b9760808301856116b7565b611ba460a08301846116b7565b979650505050505050565b6000604082019050611bc46000830185611834565b611bd16020830184611834565b9392505050565b6000606082019050611bed6000830186611834565b611bfa60208301856116b7565b611c0760408301846116b7565b949350505050565b6000602082019050611c246000830184611834565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c648261160b565b9150611c6f8361160b565b9250828201905080821115611c8757611c86611c2a565b5b92915050565b600060a082019050611ca26000830188611775565b611caf6020830187611775565b611cbc6040830186611775565b611cc960608301856116b7565b611cd66080830184611834565b9695505050505050565b6000608082019050611cf56000830187611775565b611d026020830186611741565b611d0f6040830185611775565b611d1c6060830184611775565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea264697066735822122018cec6fdd82cef29469922e0ffa2c0f297c5876361e57d10f00b333e8861857c64736f6c63430008180033