[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "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": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "initilize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isInitilize", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "string", "name": "url", "type": "string" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newuri", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "supplyOfID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801562000010575f80fd5b5060405180602001604052805f81525062000031816200005160201b60201c565b505f600a5f6101000a81548160ff021916908315150217905550620003ae565b8060099081620000629190620002ca565b5050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620000e257607f821691505b602082108103620000f857620000f76200009d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200015c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200011f565b6200016886836200011f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620001b2620001ac620001a68462000180565b62000189565b62000180565b9050919050565b5f819050919050565b620001cd8362000192565b620001e5620001dc82620001b9565b8484546200012b565b825550505050565b5f90565b620001fb620001ed565b62000208818484620001c2565b505050565b5b818110156200022f57620002235f82620001f1565b6001810190506200020e565b5050565b601f8211156200027e576200024881620000fe565b620002538462000110565b8101602085101562000263578190505b6200027b620002728562000110565b8301826200020d565b50505b505050565b5f82821c905092915050565b5f620002a05f198460080262000283565b1980831691505092915050565b5f620002ba83836200028f565b9150826002028217905092915050565b620002d58262000066565b67ffffffffffffffff811115620002f157620002f062000070565b5b620002fd8254620000ca565b6200030a82828562000233565b5f60209050601f83116001811462000340575f84156200032b578287015190505b620003378582620002ad565b865550620003a6565b601f1984166200035086620000fe565b5f5b82811015620003795784890151825560018201915060208501945060208101905062000352565b8683101562000399578489015162000395601f8916826200028f565b8355505b6001600288020188555050505b505050505050565b613ef180620003bc5f395ff3fe608060405234801561000f575f80fd5b5060043610610204575f3560e01c80636352211e11610118578063a22cb465116100ab578063d53913931161007a578063d5391393146105d2578063d547741f146105f0578063e63ab1e91461060c578063e985e9c51461062a578063eefffef61461065a57610204565b8063a22cb4651461054e578063b88d4fde1461056a578063c192a8c014610586578063c87b56dd146105a257610204565b806391d14854116100e757806391d14854146104c457806395d89b41146104f45780639abc832014610512578063a217fddf1461053057610204565b80636352211e1461042a57806370a082311461045a5780637d84b8631461048a5780638456cb59146104ba57610204565b80632f2ff15d1161019b57806342842e0e1161016a57806342842e0e1461038857806342966c68146103a4578063510b5158146103c057806355f804b3146103f05780635c975abb1461040c57610204565b80632f2ff15d146103285780632f4670f31461034457806336568abe146103625780633f4ba83a1461037e57610204565b8063095ea7b3116101d7578063095ea7b3146102a257806318160ddd146102be57806323b872dd146102dc578063248a9ca3146102f857610204565b806301ffc9a71461020857806302fe53051461023857806306fdde0314610254578063081812fc14610272575b5f80fd5b610222600480360381019061021d91906128aa565b61068a565b60405161022f91906128ef565b60405180910390f35b610252600480360381019061024d9190612a44565b61069b565b005b61025c6106b4565b6040516102699190612b05565b60405180910390f35b61028c60048036038101906102879190612b58565b610740565b6040516102999190612bc2565b60405180910390f35b6102bc60048036038101906102b79190612c05565b610782565b005b6102c6610898565b6040516102d39190612c52565b60405180910390f35b6102f660048036038101906102f19190612c6b565b6108a1565b005b610312600480360381019061030d9190612cee565b610901565b60405161031f9190612d28565b60405180910390f35b610342600480360381019061033d9190612d41565b61091e565b005b61034c61093f565b60405161035991906128ef565b60405180910390f35b61037c60048036038101906103779190612d41565b610951565b005b6103866109d4565b005b6103a2600480360381019061039d9190612c6b565b610a09565b005b6103be60048036038101906103b99190612b58565b610a28565b005b6103da60048036038101906103d59190612b58565b610a84565b6040516103e79190612bc2565b60405180910390f35b61040a60048036038101906104059190612a44565b610ab4565b005b610414610ad3565b60405161042191906128ef565b60405180910390f35b610444600480360381019061043f9190612b58565b610ae8565b6040516104519190612bc2565b60405180910390f35b610474600480360381019061046f9190612d7f565b610b6c565b6040516104819190612c52565b60405180910390f35b6104a4600480360381019061049f9190612daa565b610c20565b6040516104b191906128ef565b60405180910390f35b6104c2610c66565b005b6104de60048036038101906104d99190612d41565b610c9b565b6040516104eb91906128ef565b60405180910390f35b6104fc610cff565b6040516105099190612b05565b60405180910390f35b61051a610d8b565b6040516105279190612b05565b60405180910390f35b610538610e1a565b6040516105459190612d28565b60405180910390f35b61056860048036038101906105639190612e67565b610e20565b005b610584600480360381019061057f9190612f43565b610e36565b005b6105a0600480360381019061059b9190612fc3565b610e98565b005b6105bc60048036038101906105b79190612b58565b610f86565b6040516105c99190612b05565b60405180910390f35b6105da611030565b6040516105e79190612d28565b60405180910390f35b61060a60048036038101906106059190612d41565b611054565b005b610614611075565b6040516106219190612d28565b60405180910390f35b610644600480360381019061063f919061304b565b611099565b60405161065191906128ef565b60405180910390f35b610674600480360381019061066f9190612b58565b611127565b6040516106819190612c52565b60405180910390f35b5f6106948261113c565b9050919050565b5f801b6106a7816111b5565b6106b0826111c9565b5050565b600c80546106c1906130b6565b80601f01602080910402602001604051908101604052809291908181526020018280546106ed906130b6565b80156107385780601f1061070f57610100808354040283529160200191610738565b820191905f5260205f20905b81548152906001019060200180831161071b57829003601f168201915b505050505081565b5f61074a826111dc565b60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61078c82610ae8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390613156565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661081b611227565b73ffffffffffffffffffffffffffffffffffffffff16148061084a575061084981610844611227565b611099565b5b610889576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610880906131e4565b60405180910390fd5b610893838361122e565b505050565b5f600154905090565b6108b26108ac611227565b826112e4565b6108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890613272565b60405180910390fd5b6108fc838383611378565b505050565b5f600b5f8381526020019081526020015f20600101549050919050565b61092782610901565b610930816111b5565b61093a8383611664565b505050565b600e5f9054906101000a900460ff1681565b610959611227565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bd90613300565b60405180910390fd5b6109d0828261173f565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109fe816111b5565b610a0661181a565b50565b610a2383838360405180602001604052805f815250610e36565b505050565b610a39610a33611227565b826112e4565b610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f90613272565b60405180910390fd5b610a818161187b565b50565b6006602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f801b610ac0816111b5565b815f9081610ace91906134bb565b505050565b5f600a5f9054906101000a900460ff16905090565b5f80610af3836119bc565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a906135d4565b60405180910390fd5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290613662565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610c4b816111b5565b610c5887878787876119f5565b600191505095945050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c90816111b5565b610c98611a18565b50565b5f600b5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b600d8054610d0c906130b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610d38906130b6565b8015610d835780601f10610d5a57610100808354040283529160200191610d83565b820191905f5260205f20905b815481529060010190602001808311610d6657829003601f168201915b505050505081565b60605f8054610d99906130b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc5906130b6565b8015610e105780601f10610de757610100808354040283529160200191610e10565b820191905f5260205f20905b815481529060010190602001808311610df357829003601f168201915b5050505050905090565b5f801b81565b610e32610e2b611227565b8383611a7a565b5050565b610e47610e41611227565b836112e4565b610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90613272565b60405180910390fd5b610e9284848484611be1565b50505050565b600e5f9054906101000a900460ff1615610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede906136ca565b60405180910390fd5b6001600e5f6101000a81548160ff02191690831515021790555082600c9081610f1091906134bb565b5081600d9081610f2091906134bb565b50610f2d5f801b82611664565b610f577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a82611664565b610f817f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611664565b505050565b6060610f91826111dc565b60055f8381526020019081526020015f208054610fad906130b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd9906130b6565b80156110245780601f10610ffb57610100808354040283529160200191611024565b820191905f5260205f20905b81548152906001019060200180831161100757829003601f168201915b50505050509050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61105d82610901565b611066816111b5565b611070838361173f565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6007602052805f5260405f205f915090505481565b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111ae57506111ad82611c3d565b5b9050919050565b6111c6816111c1611227565b611d1e565b50565b80600990816111d891906134bb565b5050565b6111e581611da2565b611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b906135d4565b60405180910390fd5b50565b5f33905090565b8160045f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661129e83610ae8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f806112ef83610ae8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061133157506113308185611099565b5b8061136f57508373ffffffffffffffffffffffffffffffffffffffff1661135784610740565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661139882610ae8565b73ffffffffffffffffffffffffffffffffffffffff16146113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590613758565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361145c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611453906137e6565b60405180910390fd5b6114698383836001611de2565b8273ffffffffffffffffffffffffffffffffffffffff1661148982610ae8565b73ffffffffffffffffffffffffffffffffffffffff16146114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d690613758565b60405180910390fd5b60045f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540392505081905550600160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160025f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461165f8383836001611dfc565b505050565b61166e8282610c9b565b61173b576001600b5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506116e0611227565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6117498282610c9b565b15611816575f600b5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506117bb611227565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b611822611e02565b5f600a5f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611864611227565b6040516118719190612bc2565b60405180910390a1565b5f61188582610ae8565b9050611894815f846001611de2565b61189d82610ae8565b905060045f8381526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254039250508190555060025f8381526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055815f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46119b8815f846001611dfc565b5050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611a118585858560405180602001604052805f81525086611e4b565b5050505050565b611a20611ec9565b6001600a5f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a63611227565b604051611a709190612bc2565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf9061384e565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611bd491906128ef565b60405180910390a3505050565b611bec848484611378565b611bf884848484611f13565b611c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2e906138dc565b60405180910390fd5b50505050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d0757507fc87b56dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611d175750611d1682612095565b5b9050919050565b611d288282610c9b565b611d9e57611d35816120fe565b611d42835f1c602061212b565b604051602001611d539291906139c8565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d959190612b05565b60405180910390fd5b5050565b5f8073ffffffffffffffffffffffffffffffffffffffff16611dc3836119bc565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611dea611ec9565b611df684848484612360565b50505050565b50505050565b611e0a610ad3565b611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090613a4b565b60405180910390fd5b565b611e578686868661247e565b8060055f8681526020019081526020015f209081611e7591906134bb565b50611e825f868685611f13565b611ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb8906138dc565b60405180910390fd5b505050505050565b611ed1610ad3565b15611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613ab3565b60405180910390fd5b565b5f611f338473ffffffffffffffffffffffffffffffffffffffff16612822565b15612088578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f5c611227565b8786866040518563ffffffff1660e01b8152600401611f7e9493929190613b23565b6020604051808303815f875af1925050508015611fb957506040513d601f19601f82011682018060405250810190611fb69190613b81565b60015b612038573d805f8114611fe7576040519150601f19603f3d011682016040523d82523d5f602084013e611fec565b606091505b505f815103612030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612027906138dc565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061208d565b600190505b949350505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606121248273ffffffffffffffffffffffffffffffffffffffff16601460ff1661212b565b9050919050565b60605f600283600261213d9190613bd9565b6121479190613c1a565b67ffffffffffffffff8111156121605761215f612920565b5b6040519080825280601f01601f1916602001820160405280156121925781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106121c9576121c8613c4d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061222c5761222b613c4d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f600184600261226a9190613bd9565b6122749190613c1a565b90505b6001811115612313577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106122b6576122b5613c4d565b5b1a60f81b8282815181106122cd576122cc613c4d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c94508061230c90613c7a565b9050612277565b505f8414612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90613ceb565b60405180910390fd5b8091505092915050565b6001811115612478575f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146123f0578060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123e89190613d09565b925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612477578060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461246f9190613c1a565b925050819055505b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e390613d86565b60405180910390fd5b6124f582611da2565b15612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252c90613dee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660065f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036125e8578360065f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8373ffffffffffffffffffffffffffffffffffffffff1660065f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d90613e56565b60405180910390fd5b6126935f84846001611de2565b61269c82611da2565b156126dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d390613dee565b60405180910390fd5b600160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508260025f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015f81548092919061278890613e74565b91905055508060075f8481526020019081526020015f205f8282546127ad9190613c1a565b92505081905550818373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461281c5f84846001611dfc565b50505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61288981612855565b8114612893575f80fd5b50565b5f813590506128a481612880565b92915050565b5f602082840312156128bf576128be61284d565b5b5f6128cc84828501612896565b91505092915050565b5f8115159050919050565b6128e9816128d5565b82525050565b5f6020820190506129025f8301846128e0565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61295682612910565b810181811067ffffffffffffffff8211171561297557612974612920565b5b80604052505050565b5f612987612844565b9050612993828261294d565b919050565b5f67ffffffffffffffff8211156129b2576129b1612920565b5b6129bb82612910565b9050602081019050919050565b828183375f83830152505050565b5f6129e86129e384612998565b61297e565b905082815260208101848484011115612a0457612a0361290c565b5b612a0f8482856129c8565b509392505050565b5f82601f830112612a2b57612a2a612908565b5b8135612a3b8482602086016129d6565b91505092915050565b5f60208284031215612a5957612a5861284d565b5b5f82013567ffffffffffffffff811115612a7657612a75612851565b5b612a8284828501612a17565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612ac2578082015181840152602081019050612aa7565b5f8484015250505050565b5f612ad782612a8b565b612ae18185612a95565b9350612af1818560208601612aa5565b612afa81612910565b840191505092915050565b5f6020820190508181035f830152612b1d8184612acd565b905092915050565b5f819050919050565b612b3781612b25565b8114612b41575f80fd5b50565b5f81359050612b5281612b2e565b92915050565b5f60208284031215612b6d57612b6c61284d565b5b5f612b7a84828501612b44565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bac82612b83565b9050919050565b612bbc81612ba2565b82525050565b5f602082019050612bd55f830184612bb3565b92915050565b612be481612ba2565b8114612bee575f80fd5b50565b5f81359050612bff81612bdb565b92915050565b5f8060408385031215612c1b57612c1a61284d565b5b5f612c2885828601612bf1565b9250506020612c3985828601612b44565b9150509250929050565b612c4c81612b25565b82525050565b5f602082019050612c655f830184612c43565b92915050565b5f805f60608486031215612c8257612c8161284d565b5b5f612c8f86828701612bf1565b9350506020612ca086828701612bf1565b9250506040612cb186828701612b44565b9150509250925092565b5f819050919050565b612ccd81612cbb565b8114612cd7575f80fd5b50565b5f81359050612ce881612cc4565b92915050565b5f60208284031215612d0357612d0261284d565b5b5f612d1084828501612cda565b91505092915050565b612d2281612cbb565b82525050565b5f602082019050612d3b5f830184612d19565b92915050565b5f8060408385031215612d5757612d5661284d565b5b5f612d6485828601612cda565b9250506020612d7585828601612bf1565b9150509250929050565b5f60208284031215612d9457612d9361284d565b5b5f612da184828501612bf1565b91505092915050565b5f805f805f60a08688031215612dc357612dc261284d565b5b5f612dd088828901612bf1565b9550506020612de188828901612bf1565b9450506040612df288828901612b44565b9350506060612e0388828901612b44565b925050608086013567ffffffffffffffff811115612e2457612e23612851565b5b612e3088828901612a17565b9150509295509295909350565b612e46816128d5565b8114612e50575f80fd5b50565b5f81359050612e6181612e3d565b92915050565b5f8060408385031215612e7d57612e7c61284d565b5b5f612e8a85828601612bf1565b9250506020612e9b85828601612e53565b9150509250929050565b5f67ffffffffffffffff821115612ebf57612ebe612920565b5b612ec882612910565b9050602081019050919050565b5f612ee7612ee284612ea5565b61297e565b905082815260208101848484011115612f0357612f0261290c565b5b612f0e8482856129c8565b509392505050565b5f82601f830112612f2a57612f29612908565b5b8135612f3a848260208601612ed5565b91505092915050565b5f805f8060808587031215612f5b57612f5a61284d565b5b5f612f6887828801612bf1565b9450506020612f7987828801612bf1565b9350506040612f8a87828801612b44565b925050606085013567ffffffffffffffff811115612fab57612faa612851565b5b612fb787828801612f16565b91505092959194509250565b5f805f60608486031215612fda57612fd961284d565b5b5f84013567ffffffffffffffff811115612ff757612ff6612851565b5b61300386828701612a17565b935050602084013567ffffffffffffffff81111561302457613023612851565b5b61303086828701612a17565b925050604061304186828701612bf1565b9150509250925092565b5f80604083850312156130615761306061284d565b5b5f61306e85828601612bf1565b925050602061307f85828601612bf1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130cd57607f821691505b6020821081036130e0576130df613089565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f613140602183612a95565b915061314b826130e6565b604082019050919050565b5f6020820190508181035f83015261316d81613134565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f5f8201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b5f6131ce603d83612a95565b91506131d982613174565b604082019050919050565b5f6020820190508181035f8301526131fb816131c2565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e655f8201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b5f61325c602d83612a95565b915061326782613202565b604082019050919050565b5f6020820190508181035f83015261328981613250565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e63655f8201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b5f6132ea602f83612a95565b91506132f582613290565b604082019050919050565b5f6020820190508181035f830152613317816132de565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261337a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261333f565b613384868361333f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6133bf6133ba6133b584612b25565b61339c565b612b25565b9050919050565b5f819050919050565b6133d8836133a5565b6133ec6133e4826133c6565b84845461334b565b825550505050565b5f90565b6134006133f4565b61340b8184846133cf565b505050565b5b8181101561342e576134235f826133f8565b600181019050613411565b5050565b601f821115613473576134448161331e565b61344d84613330565b8101602085101561345c578190505b61347061346885613330565b830182613410565b50505b505050565b5f82821c905092915050565b5f6134935f1984600802613478565b1980831691505092915050565b5f6134ab8383613484565b9150826002028217905092915050565b6134c482612a8b565b67ffffffffffffffff8111156134dd576134dc612920565b5b6134e782546130b6565b6134f2828285613432565b5f60209050601f831160018114613523575f8415613511578287015190505b61351b85826134a0565b865550613582565b601f1984166135318661331e565b5f5b8281101561355857848901518255600182019150602085019450602081019050613533565b868310156135755784890151613571601f891682613484565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e20494400000000000000005f82015250565b5f6135be601883612a95565b91506135c98261358a565b602082019050919050565b5f6020820190508181035f8301526135eb816135b2565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f7420612076615f8201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b5f61364c602983612a95565b9150613657826135f2565b604082019050919050565b5f6020820190508181035f83015261367981613640565b9050919050565b7f41490000000000000000000000000000000000000000000000000000000000005f82015250565b5f6136b4600283612a95565b91506136bf82613680565b602082019050919050565b5f6020820190508181035f8301526136e1816136a8565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f7272656374205f8201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b5f613742602583612a95565b915061374d826136e8565b604082019050919050565b5f6020820190508181035f83015261376f81613736565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6137d0602483612a95565b91506137db82613776565b604082019050919050565b5f6020820190508181035f8301526137fd816137c4565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c6572000000000000005f82015250565b5f613838601983612a95565b915061384382613804565b602082019050919050565b5f6020820190508181035f8301526138658161382c565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e2045524337323152655f8201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b5f6138c6603283612a95565b91506138d18261386c565b604082019050919050565b5f6020820190508181035f8301526138f3816138ba565b9050919050565b5f81905092915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000005f82015250565b5f6139386017836138fa565b915061394382613904565b601782019050919050565b5f61395882612a8b565b61396281856138fa565b9350613972818560208601612aa5565b80840191505092915050565b7f206973206d697373696e6720726f6c65200000000000000000000000000000005f82015250565b5f6139b26011836138fa565b91506139bd8261397e565b601182019050919050565b5f6139d28261392c565b91506139de828561394e565b91506139e9826139a6565b91506139f5828461394e565b91508190509392505050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f613a35601483612a95565b9150613a4082613a01565b602082019050919050565b5f6020820190508181035f830152613a6281613a29565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f613a9d601083612a95565b9150613aa882613a69565b602082019050919050565b5f6020820190508181035f830152613aca81613a91565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f613af582613ad1565b613aff8185613adb565b9350613b0f818560208601612aa5565b613b1881612910565b840191505092915050565b5f608082019050613b365f830187612bb3565b613b436020830186612bb3565b613b506040830185612c43565b8181036060830152613b628184613aeb565b905095945050505050565b5f81519050613b7b81612880565b92915050565b5f60208284031215613b9657613b9561284d565b5b5f613ba384828501613b6d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613be382612b25565b9150613bee83612b25565b9250828202613bfc81612b25565b91508282048414831517613c1357613c12613bac565b5b5092915050565b5f613c2482612b25565b9150613c2f83612b25565b9250828201905080821115613c4757613c46613bac565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613c8482612b25565b91505f8203613c9657613c95613bac565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f613cd5602083612a95565b9150613ce082613ca1565b602082019050919050565b5f6020820190508181035f830152613d0281613cc9565b9050919050565b5f613d1382612b25565b9150613d1e83612b25565b9250828203905081811115613d3657613d35613bac565b5b92915050565b7f4552433732313a206d696e7420746f20746865207a65726f20616464726573735f82015250565b5f613d70602083612a95565b9150613d7b82613d3c565b602082019050919050565b5f6020820190508181035f830152613d9d81613d64565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e746564000000005f82015250565b5f613dd8601c83612a95565b9150613de382613da4565b602082019050919050565b5f6020820190508181035f830152613e0581613dcc565b9050919050565b7f696e76616c69642063726561746f7200000000000000000000000000000000005f82015250565b5f613e40600f83612a95565b9150613e4b82613e0c565b602082019050919050565b5f6020820190508181035f830152613e6d81613e34565b9050919050565b5f613e7e82612b25565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eb057613eaf613bac565b5b60018201905091905056fea2646970667358221220669d5e2da6d8b3521d7e62bd75ba0543ba3794e14a6b5ea65dfbb17021d5b9ef64736f6c63430008140033