[ { "inputs": [ { "internalType": "uint256", "name": "initialShares", "type": "uint256" }, { "internalType": "address", "name": "oracleAddress", "type": "address" }, { "internalType": "address", "name": "initialOwner", "type": "address" }, { "internalType": "string", "name": "tokenName", "type": "string" }, { "internalType": "string", "name": "tokenSymbol", "type": "string" }, { "internalType": "uint8", "name": "tokenDecimals", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "amount", "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": "result", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "tokenDecimals", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "tokenName", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oracle", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "oracleAddress", "type": "address" } ], "name": "setOracle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "shares2value", "outputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "sharesOf", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "tokenSymbol", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSharesSupply", "outputs": [ { "internalType": "uint256", "name": "totalShares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "totalPool", "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": "result", "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": "result", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "value2shares", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620026ef380380620026ef8339818101604052810190620000379190620007fc565b83600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ad5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a49190620008e7565b60405180910390fd5b620000be816200015d60201b60201c565b5084600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826003908162000111919062000b45565b50816004908162000123919062000b45565b5080600560006101000a81548160ff021916908360ff1602179055506200015130876200022160201b60201c565b50505050505062000dfa565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002965760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200028d9190620008e7565b60405180910390fd5b620002aa60008383620002ae60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614620003bb576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000373578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200036a9392919062000c3d565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620004495780600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000441919062000ca9565b925050819055505b60006200045c82620004cb60201b60201c565b90508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004bd919062000ce4565b60405180910390a350505050565b6000806000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4e41b226040518163ffffffff1660e01b81526004016040805180830381865afa1580156200053d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000563919062000d01565b9150915080828562000576919062000d48565b62000582919062000dc2565b92505050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b620005b4816200059f565b8114620005c057600080fd5b50565b600081519050620005d481620005a9565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200060782620005da565b9050919050565b6200061981620005fa565b81146200062557600080fd5b50565b60008151905062000639816200060e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620006948262000649565b810181811067ffffffffffffffff82111715620006b657620006b56200065a565b5b80604052505050565b6000620006cb6200058b565b9050620006d9828262000689565b919050565b600067ffffffffffffffff821115620006fc57620006fb6200065a565b5b620007078262000649565b9050602081019050919050565b60005b838110156200073457808201518184015260208101905062000717565b60008484015250505050565b6000620007576200075184620006de565b620006bf565b90508281526020810184848401111562000776576200077562000644565b5b6200078384828562000714565b509392505050565b600082601f830112620007a357620007a26200063f565b5b8151620007b584826020860162000740565b91505092915050565b600060ff82169050919050565b620007d681620007be565b8114620007e257600080fd5b50565b600081519050620007f681620007cb565b92915050565b60008060008060008060c087890312156200081c576200081b62000595565b5b60006200082c89828a01620005c3565b96505060206200083f89828a0162000628565b95505060406200085289828a0162000628565b945050606087015167ffffffffffffffff8111156200087657620008756200059a565b5b6200088489828a016200078b565b935050608087015167ffffffffffffffff811115620008a857620008a76200059a565b5b620008b689828a016200078b565b92505060a0620008c989828a01620007e5565b9150509295509295509295565b620008e181620005fa565b82525050565b6000602082019050620008fe6000830184620008d6565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200095757607f821691505b6020821081036200096d576200096c6200090f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000998565b620009e3868362000998565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a2662000a2062000a1a846200059f565b620009fb565b6200059f565b9050919050565b6000819050919050565b62000a428362000a05565b62000a5a62000a518262000a2d565b848454620009a5565b825550505050565b600090565b62000a7162000a62565b62000a7e81848462000a37565b505050565b5b8181101562000aa65762000a9a60008262000a67565b60018101905062000a84565b5050565b601f82111562000af55762000abf8162000973565b62000aca8462000988565b8101602085101562000ada578190505b62000af262000ae98562000988565b83018262000a83565b50505b505050565b600082821c905092915050565b600062000b1a6000198460080262000afa565b1980831691505092915050565b600062000b35838362000b07565b9150826002028217905092915050565b62000b508262000904565b67ffffffffffffffff81111562000b6c5762000b6b6200065a565b5b62000b7882546200093e565b62000b8582828562000aaa565b600060209050601f83116001811462000bbd576000841562000ba8578287015190505b62000bb4858262000b27565b86555062000c24565b601f19841662000bcd8662000973565b60005b8281101562000bf75784890151825560018201915060208501945060208101905062000bd0565b8683101562000c17578489015162000c13601f89168262000b07565b8355505b6001600288020188555050505b505050505050565b62000c37816200059f565b82525050565b600060608201905062000c546000830186620008d6565b62000c63602083018562000c2c565b62000c72604083018462000c2c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cb6826200059f565b915062000cc3836200059f565b925082820190508082111562000cde5762000cdd62000c7a565b5b92915050565b600060208201905062000cfb600083018462000c2c565b92915050565b6000806040838503121562000d1b5762000d1a62000595565b5b600062000d2b85828601620005c3565b925050602062000d3e85828601620005c3565b9150509250929050565b600062000d55826200059f565b915062000d62836200059f565b925082820262000d72816200059f565b9150828204841483151762000d8c5762000d8b62000c7a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dcf826200059f565b915062000ddc836200059f565b92508262000def5762000dee62000d93565b5b828204905092915050565b6118e58062000e0a6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80637dc0d1d0116100ad578063d1c9678a11610071578063d1c9678a14610333578063d50619cc14610363578063dd62ed3e14610381578063f2fde38b146103b1578063f5eb42dc146103cd5761012c565b80637dc0d1d01461028d5780638da5cb5b146102ab57806395d89b41146102c95780639dc29fac146102e7578063a9059cbb146103035761012c565b8063313ce567116100f4578063313ce567146101fd57806340c10f191461021b57806370a0823114610237578063715018a6146102675780637adbf973146102715761012c565b806306fdde0314610131578063095ea7b31461014f57806310be15441461017f57806318160ddd146101af57806323b872dd146101cd575b600080fd5b6101396103fd565b60405161014691906113e8565b60405180910390f35b610169600480360381019061016491906114a3565b61048f565b60405161017691906114fe565b60405180910390f35b61019960048036038101906101949190611519565b6104c0565b6040516101a69190611555565b60405180910390f35b6101b7610579565b6040516101c49190611555565b60405180910390f35b6101e760048036038101906101e29190611570565b610611565b6040516101f491906114fe565b60405180910390f35b61020561064e565b60405161021291906115df565b60405180910390f35b610235600480360381019061023091906114a3565b610665565b005b610251600480360381019061024c91906115fa565b61067b565b60405161025e9190611555565b60405180910390f35b61026f6106cc565b005b61028b600480360381019061028691906115fa565b6106e0565b005b61029561072c565b6040516102a29190611636565b60405180910390f35b6102b3610752565b6040516102c09190611636565b60405180910390f35b6102d161077b565b6040516102de91906113e8565b60405180910390f35b61030160048036038101906102fc91906114a3565b61080d565b005b61031d600480360381019061031891906114a3565b610823565b60405161032a91906114fe565b60405180910390f35b61034d60048036038101906103489190611519565b610854565b60405161035a9190611555565b60405180910390f35b61036b61090d565b6040516103789190611555565b60405180910390f35b61039b60048036038101906103969190611651565b6109a5565b6040516103a89190611555565b60405180910390f35b6103cb60048036038101906103c691906115fa565b610a34565b005b6103e760048036038101906103e291906115fa565b610aba565b6040516103f49190611555565b60405180910390f35b60606003805461040c906116c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610438906116c0565b80156104855780601f1061045a57610100808354040283529160200191610485565b820191906000526020600020905b81548152906001019060200180831161046857829003601f168201915b5050505050905090565b60008061049a610b03565b905060006104a784610854565b90506104b4828683610b0b565b60019250505092915050565b6000806000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4e41b226040518163ffffffff1660e01b81526004016040805180830381865afa158015610531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105559190611706565b915091508082856105669190611775565b61057091906117e6565b92505050919050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebeb09736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060c9190611817565b905090565b60008061061c610b03565b9050600061062984610854565b9050610636868383610b1d565b610641868683610c24565b6001925050509392505050565b6000600560009054906101000a900460ff16905090565b61066d610d18565b6106778282610d9f565b5050565b60006106c5600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104c0565b9050919050565b6106d4610d18565b6106de6000610e21565b565b6106e8610d18565b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461078a906116c0565b80601f01602080910402602001604051908101604052809291908181526020018280546107b6906116c0565b80156108035780601f106107d857610100808354040283529160200191610803565b820191906000526020600020905b8154815290600101906020018083116107e657829003601f168201915b5050505050905090565b610815610d18565b61081f8282610ee5565b5050565b60008061082e610b03565b9050600061083b84610854565b9050610848828683610c24565b60019250505092915050565b6000806000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4e41b226040518163ffffffff1660e01b81526004016040805180830381865afa1580156108c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e99190611706565b915091508181856108fa9190611775565b61090491906117e6565b92505050919050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cbae0aaf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190611817565b905090565b6000610a2c600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104c0565b905092915050565b610a3c610d18565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610aae5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610aa59190611636565b60405180910390fd5b610ab781610e21565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b610b188383836001610f67565b505050565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c1e5781811015610c0e578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610c0593929190611844565b60405180910390fd5b610c1d84848484036000610f67565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c965760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610c8d9190611636565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d085760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610cff9190611636565b60405180910390fd5b610d1383838361114c565b505050565b610d20610b03565b73ffffffffffffffffffffffffffffffffffffffff16610d3e610752565b73ffffffffffffffffffffffffffffffffffffffff1614610d9d57610d61610b03565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d949190611636565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e115760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610e089190611636565b60405180910390fd5b610e1d6000838361114c565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f575760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610f4e9190611636565b60405180910390fd5b610f638260008361114c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610fd95760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610fd09190611636565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361104b5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110429190611636565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156111465760006110dd836104c0565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161113c9190611555565b60405180910390a3505b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611255576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561120d578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161120493929190611844565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112e05780600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112d8919061187b565b925050819055505b60006112eb826104c0565b90508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161134a9190611555565b60405180910390a350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611392578082015181840152602081019050611377565b60008484015250505050565b6000601f19601f8301169050919050565b60006113ba82611358565b6113c48185611363565b93506113d4818560208601611374565b6113dd8161139e565b840191505092915050565b6000602082019050818103600083015261140281846113af565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061143a8261140f565b9050919050565b61144a8161142f565b811461145557600080fd5b50565b60008135905061146781611441565b92915050565b6000819050919050565b6114808161146d565b811461148b57600080fd5b50565b60008135905061149d81611477565b92915050565b600080604083850312156114ba576114b961140a565b5b60006114c885828601611458565b92505060206114d98582860161148e565b9150509250929050565b60008115159050919050565b6114f8816114e3565b82525050565b600060208201905061151360008301846114ef565b92915050565b60006020828403121561152f5761152e61140a565b5b600061153d8482850161148e565b91505092915050565b61154f8161146d565b82525050565b600060208201905061156a6000830184611546565b92915050565b6000806000606084860312156115895761158861140a565b5b600061159786828701611458565b93505060206115a886828701611458565b92505060406115b98682870161148e565b9150509250925092565b600060ff82169050919050565b6115d9816115c3565b82525050565b60006020820190506115f460008301846115d0565b92915050565b6000602082840312156116105761160f61140a565b5b600061161e84828501611458565b91505092915050565b6116308161142f565b82525050565b600060208201905061164b6000830184611627565b92915050565b600080604083850312156116685761166761140a565b5b600061167685828601611458565b925050602061168785828601611458565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116d857607f821691505b6020821081036116eb576116ea611691565b5b50919050565b60008151905061170081611477565b92915050565b6000806040838503121561171d5761171c61140a565b5b600061172b858286016116f1565b925050602061173c858286016116f1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117808261146d565b915061178b8361146d565b92508282026117998161146d565b915082820484148315176117b0576117af611746565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006117f18261146d565b91506117fc8361146d565b92508261180c5761180b6117b7565b5b828204905092915050565b60006020828403121561182d5761182c61140a565b5b600061183b848285016116f1565b91505092915050565b60006060820190506118596000830186611627565b6118666020830185611546565b6118736040830184611546565b949350505050565b60006118868261146d565b91506118918361146d565b92508282019050808211156118a9576118a8611746565b5b9291505056fea26469706673582212204153b342a4aeca1a922018f41637fb002dcee53ba107f38b6064c5ef31219efa64736f6c634300081400330000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000048217cc3835f56d900af28ee508655d675ddb78800000000000000000000000052ec721ddc31b0cfef24f109d0980d744899629300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000134d6f6c6563756c6120555344206c69717569640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066d5553446c690000000000000000000000000000000000000000000000000000