[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "initialSpotToMint", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20ExceededCap", "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": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20InvalidCap", "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" }, { "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_MAKER", "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": [], "name": "cap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "grantMinterRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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" } ]
60a060405234801562000010575f80fd5b506040516200275138038062002751833981810160405281019062000036919062000915565b6b033b2e3c9fd0803ce80000008383816003908162000056919062000bda565b50806004908162000068919062000bda565b5050505f8103620000b2575f6040517f392e1e27000000000000000000000000000000000000000000000000000000008152600401620000a9919062000cff565b60405180910390fd5b806080818152505050620000cd3382620001f460201b60201c565b620000ff7fb07a22a5a49a5a536854325d51f6d29f5884ea57ef092edee3e5d11ccbd76f34336200027e60201b60201c565b50620001345f801b7fb07a22a5a49a5a536854325d51f6d29f5884ea57ef092edee3e5d11ccbd76f346200037a60201b60201c565b620001667fb07a22a5a49a5a536854325d51f6d29f5884ea57ef092edee3e5d11ccbd76f34806200037a60201b60201c565b620001b87ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc97fb07a22a5a49a5a536854325d51f6d29f5884ea57ef092edee3e5d11ccbd76f346200037a60201b60201c565b620001ea7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9336200027e60201b60201c565b5050505062000e71565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000267575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200025e919062000d5d565b60405180910390fd5b6200027a5f8383620003db60201b60201c565b5050565b5f6200029183836200049a60201b60201c565b6200037057600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200030c620004fe60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905062000374565b5f90505b92915050565b5f6200038c836200050560201b60201c565b90508160055f8581526020019081526020015f20600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b620003ee8383836200052260201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000495575f620004336200074660201b60201c565b90505f620004466200074f60201b60201c565b905081811115620004925780826040517f9e79f8540000000000000000000000000000000000000000000000000000000081526004016200048992919062000d89565b60405180910390fd5b50505b505050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b5f60055f8381526020019081526020015f20600101549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000576578060025f82825462000569919062000de1565b9250508190555062000647565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000602578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620005f99392919062000e1b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000690578060025f8282540392505081905550620006da565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000739919062000e56565b60405180910390a3505050565b5f608051905090565b5f600254905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620007b98262000771565b810181811067ffffffffffffffff82111715620007db57620007da62000781565b5b80604052505050565b5f620007ef62000758565b9050620007fd8282620007ae565b919050565b5f67ffffffffffffffff8211156200081f576200081e62000781565b5b6200082a8262000771565b9050602081019050919050565b5f5b838110156200085657808201518184015260208101905062000839565b5f8484015250505050565b5f62000877620008718462000802565b620007e4565b9050828152602081018484840111156200089657620008956200076d565b5b620008a384828562000837565b509392505050565b5f82601f830112620008c257620008c162000769565b5b8151620008d484826020860162000861565b91505092915050565b5f819050919050565b620008f181620008dd565b8114620008fc575f80fd5b50565b5f815190506200090f81620008e6565b92915050565b5f805f606084860312156200092f576200092e62000761565b5b5f84015167ffffffffffffffff8111156200094f576200094e62000765565b5b6200095d86828701620008ab565b935050602084015167ffffffffffffffff81111562000981576200098062000765565b5b6200098f86828701620008ab565b9250506040620009a286828701620008ff565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009fb57607f821691505b60208210810362000a115762000a10620009b6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a38565b62000a81868362000a38565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000ac262000abc62000ab684620008dd565b62000a99565b620008dd565b9050919050565b5f819050919050565b62000add8362000aa2565b62000af562000aec8262000ac9565b84845462000a44565b825550505050565b5f90565b62000b0b62000afd565b62000b1881848462000ad2565b505050565b5b8181101562000b3f5762000b335f8262000b01565b60018101905062000b1e565b5050565b601f82111562000b8e5762000b588162000a17565b62000b638462000a29565b8101602085101562000b73578190505b62000b8b62000b828562000a29565b83018262000b1d565b50505b505050565b5f82821c905092915050565b5f62000bb05f198460080262000b93565b1980831691505092915050565b5f62000bca838362000b9f565b9150826002028217905092915050565b62000be582620009ac565b67ffffffffffffffff81111562000c015762000c0062000781565b5b62000c0d8254620009e3565b62000c1a82828562000b43565b5f60209050601f83116001811462000c50575f841562000c3b578287015190505b62000c47858262000bbd565b86555062000cb6565b601f19841662000c608662000a17565b5f5b8281101562000c895784890151825560018201915060208501945060208101905062000c62565b8683101562000ca9578489015162000ca5601f89168262000b9f565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b5f62000ce762000ce162000cdb8462000cbe565b62000a99565b620008dd565b9050919050565b62000cf98162000cc7565b82525050565b5f60208201905062000d145f83018462000cee565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d458262000d1a565b9050919050565b62000d578162000d39565b82525050565b5f60208201905062000d725f83018462000d4c565b92915050565b62000d8381620008dd565b82525050565b5f60408201905062000d9e5f83018562000d78565b62000dad602083018462000d78565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ded82620008dd565b915062000dfa83620008dd565b925082820190508082111562000e155762000e1462000db4565b5b92915050565b5f60608201905062000e305f83018662000d4c565b62000e3f602083018562000d78565b62000e4e604083018462000d78565b949350505050565b5f60208201905062000e6b5f83018462000d78565b92915050565b6080516118c762000e8a5f395f61062e01526118c75ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c80633dd1eb61116100b6578063a0712d681161007a578063a0712d681461038a578063a217fddf146103ba578063a9059cbb146103d8578063d547741f14610408578063dd62ed3e14610424578063fe6d81241461045457610140565b80633dd1eb61146102d257806352a94acf146102ee57806370a082311461030c57806391d148541461033c57806395d89b411461036c57610140565b8063248a9ca311610108578063248a9ca3146102105780632f2ff15d14610240578063313ce5671461025c57806332cb6b0c1461027a578063355274ea1461029857806336568abe146102b657610140565b806301ffc9a71461014457806306fdde0314610174578063095ea7b31461019257806318160ddd146101c257806323b872dd146101e0575b5f80fd5b61015e60048036038101906101599190611352565b610472565b60405161016b9190611397565b60405180910390f35b61017c6104eb565b604051610189919061143a565b60405180910390f35b6101ac60048036038101906101a791906114e7565b61057b565b6040516101b99190611397565b60405180910390f35b6101ca61059d565b6040516101d79190611534565b60405180910390f35b6101fa60048036038101906101f5919061154d565b6105a6565b6040516102079190611397565b60405180910390f35b61022a600480360381019061022591906115d0565b6105d4565b604051610237919061160a565b60405180910390f35b61025a60048036038101906102559190611623565b6105f1565b005b610264610613565b604051610271919061167c565b60405180910390f35b61028261061b565b60405161028f9190611534565b60405180910390f35b6102a061062b565b6040516102ad9190611534565b60405180910390f35b6102d060048036038101906102cb9190611623565b610652565b005b6102ec60048036038101906102e79190611695565b6106cd565b005b6102f6610726565b604051610303919061160a565b60405180910390f35b61032660048036038101906103219190611695565b61074a565b6040516103339190611534565b60405180910390f35b61035660048036038101906103519190611623565b61078f565b6040516103639190611397565b60405180910390f35b6103746107f3565b604051610381919061143a565b60405180910390f35b6103a4600480360381019061039f91906116c0565b610883565b6040516103b19190611397565b60405180910390f35b6103c26108c2565b6040516103cf919061160a565b60405180910390f35b6103f260048036038101906103ed91906114e7565b6108c8565b6040516103ff9190611397565b60405180910390f35b610422600480360381019061041d9190611623565b6108ea565b005b61043e600480360381019061043991906116eb565b61090c565b60405161044b9190611534565b60405180910390f35b61045c61098e565b604051610469919061160a565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104e457506104e3826109b2565b5b9050919050565b6060600380546104fa90611756565b80601f016020809104026020016040519081016040528092919081815260200182805461052690611756565b80156105715780601f1061054857610100808354040283529160200191610571565b820191905f5260205f20905b81548152906001019060200180831161055457829003601f168201915b5050505050905090565b5f80610585610a1b565b9050610592818585610a22565b600191505092915050565b5f600254905090565b5f806105b0610a1b565b90506105bd858285610a34565b6105c8858585610ac6565b60019150509392505050565b5f60055f8381526020019081526020015f20600101549050919050565b6105fa826105d4565b61060381610bb6565b61060d8383610bca565b50505050565b5f6012905090565b6b033b2e3c9fd0803ce800000081565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b61065a610a1b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106be576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106c88282610cb4565b505050565b7fb07a22a5a49a5a536854325d51f6d29f5884ea57ef092edee3e5d11ccbd76f346106f781610bb6565b6107217ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc983610bca565b505050565b7fb07a22a5a49a5a536854325d51f6d29f5884ea57ef092edee3e5d11ccbd76f3481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60606004805461080290611756565b80601f016020809104026020016040519081016040528092919081815260200182805461082e90611756565b80156108795780601f1061085057610100808354040283529160200191610879565b820191905f5260205f20905b81548152906001019060200180831161085c57829003601f168201915b5050505050905090565b5f7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc96108ae81610bb6565b6108b83384610d9e565b6001915050919050565b5f801b81565b5f806108d2610a1b565b90506108df818585610ac6565b600191505092915050565b6108f3826105d4565b6108fc81610bb6565b6109068383610cb4565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b610a2f8383836001610e1d565b505050565b5f610a3f848461090c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ac05781811015610ab1578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610aa893929190611795565b60405180910390fd5b610abf84848484035f610e1d565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b36575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610b2d91906117ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ba6575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610b9d91906117ca565b60405180910390fd5b610bb1838383610fec565b505050565b610bc781610bc2610a1b565b61108f565b50565b5f610bd5838361078f565b610caa57600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610c47610a1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610cae565b5f90505b92915050565b5f610cbf838361078f565b15610d94575f60055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610d31610a1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050610d98565b5f90505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e0e575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610e0591906117ca565b60405180910390fd5b610e195f8383610fec565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e8d575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610e8491906117ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610efd575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610ef491906117ca565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610fe6578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fdd9190611534565b60405180910390a35b50505050565b610ff78383836110e0565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361108a575f61103361062b565b90505f61103e61059d565b9050818111156110875780826040517f9e79f85400000000000000000000000000000000000000000000000000000000815260040161107e9291906117e3565b60405180910390fd5b50505b505050565b611099828261078f565b6110dc5780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016110d392919061180a565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611130578060025f828254611124919061185e565b925050819055506111fe565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156111b9578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016111b093929190611795565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611245578060025f828254039250508190555061128f565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112ec9190611534565b60405180910390a3505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611331816112fd565b811461133b575f80fd5b50565b5f8135905061134c81611328565b92915050565b5f60208284031215611367576113666112f9565b5b5f6113748482850161133e565b91505092915050565b5f8115159050919050565b6113918161137d565b82525050565b5f6020820190506113aa5f830184611388565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156113e75780820151818401526020810190506113cc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61140c826113b0565b61141681856113ba565b93506114268185602086016113ca565b61142f816113f2565b840191505092915050565b5f6020820190508181035f8301526114528184611402565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114838261145a565b9050919050565b61149381611479565b811461149d575f80fd5b50565b5f813590506114ae8161148a565b92915050565b5f819050919050565b6114c6816114b4565b81146114d0575f80fd5b50565b5f813590506114e1816114bd565b92915050565b5f80604083850312156114fd576114fc6112f9565b5b5f61150a858286016114a0565b925050602061151b858286016114d3565b9150509250929050565b61152e816114b4565b82525050565b5f6020820190506115475f830184611525565b92915050565b5f805f60608486031215611564576115636112f9565b5b5f611571868287016114a0565b9350506020611582868287016114a0565b9250506040611593868287016114d3565b9150509250925092565b5f819050919050565b6115af8161159d565b81146115b9575f80fd5b50565b5f813590506115ca816115a6565b92915050565b5f602082840312156115e5576115e46112f9565b5b5f6115f2848285016115bc565b91505092915050565b6116048161159d565b82525050565b5f60208201905061161d5f8301846115fb565b92915050565b5f8060408385031215611639576116386112f9565b5b5f611646858286016115bc565b9250506020611657858286016114a0565b9150509250929050565b5f60ff82169050919050565b61167681611661565b82525050565b5f60208201905061168f5f83018461166d565b92915050565b5f602082840312156116aa576116a96112f9565b5b5f6116b7848285016114a0565b91505092915050565b5f602082840312156116d5576116d46112f9565b5b5f6116e2848285016114d3565b91505092915050565b5f8060408385031215611701576117006112f9565b5b5f61170e858286016114a0565b925050602061171f858286016114a0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061176d57607f821691505b6020821081036117805761177f611729565b5b50919050565b61178f81611479565b82525050565b5f6060820190506117a85f830186611786565b6117b56020830185611525565b6117c26040830184611525565b949350505050565b5f6020820190506117dd5f830184611786565b92915050565b5f6040820190506117f65f830185611525565b6118036020830184611525565b9392505050565b5f60408201905061181d5f830185611786565b61182a60208301846115fb565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611868826114b4565b9150611873836114b4565b925082820190508082111561188b5761188a611831565b5b9291505056fea2646970667358221220f8d39c01c2658d87200bcdd366d28de7dbe23d7c31b05bccc45548358bee838d64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084465666973706f74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000453504f5400000000000000000000000000000000000000000000000000000000