- Contract name:
- NFTImplementation
- Optimization enabled
- false
- Compiler version
- v0.5.1+commit.c8a2cb62
- EVM Version
- default
- Verified at
- 2023-08-22T12:04:28.630793Z
Contract source code
// File: @openzeppelin/upgrades/contracts/Initializable.solpragma solidity 0.5.1;/*** @title Initializable** @dev Helper contract to support initializer functions. To use it, replace* the constructor with a function that has the 'initializer' modifier.* WARNING: Unlike constructors, initializer functions must be manually* invoked. This applies both to deploying an Initializable contract, as well* as extending an Initializable contract via inheritance.* WARNING: When used with inheritance, manual care must be taken to not invoke* a parent initializer twice, or ensure that all initializers are idempotent,* because this is not dealt with automatically as with constructors.*/contract Initializable {/*** @dev Indicates that the contract has been initialized.*/bool private initialized;/*** @dev Indicates that the contract is in the process of being initialized.*/bool private initializing;/*** @dev Modifier to use in the initializer function of a contract.*/modifier initializer() {require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");bool isTopLevelCall = !initializing;if (isTopLevelCall) {initializing = true;initialized = true;}
Contract ABI
[{"type":"constructor","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"addMinter","inputs":[{"type":"address","name":"account"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"approve","inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"constant":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":""}],"name":"balanceOf","inputs":[{"type":"address","name":"owner"}],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":""}],"name":"baseURI","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"tokenId"}],"constant":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":""}],"name":"getApproved","inputs":[{"type":"uint256","name":"tokenId"}],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":""}],"name":"getOwner","inputs":[],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":""}],"name":"hasMinted","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"string","name":"name"},{"type":"string","name":"symbol"},{"type":"address","name":"sender"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"string","name":"name"},{"type":"string","name":"symbol"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"address","name":"sender"}],"constant":false},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":""}],"name":"isApprovedForAll","inputs":[{"type":"address","name":"owner"},{"type":"address","name":"operator"}],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":""}],"name":"isMinter","inputs":[{"type":"address","name":"account"}],"constant":true},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":""}],"name":"mint","inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256[]","name":""}],"name":"mintMultiple","inputs":[{"type":"address[]","name":"to"},{"type":"string","name":"tokenURI"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256[]","name":""}],"name":"mintMultiple","inputs":[{"type":"address","name":"to"},{"type":"string","name":"tokenURI"},{"type":"uint256","name":"total"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"uint256","name":""}],"name":"mintSingle","inputs":[{"type":"address","name":"to"},{"type":"string","name":"tokenURI"}],"constant":false},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":""}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":""}],"name":"ownerOf","inputs":[{"type":"uint256","name":"tokenId"}],"constant":true},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"removeMinter","inputs":[{"type":"address","name":"minter"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceMinter","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":""}],"name":"safeMint","inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"},{"type":"bytes","name":"_data"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":""}],"name":"safeMint","inputs":[{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransferFrom","inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransferFrom","inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"},{"type":"bytes","name":"_data"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setApprovalForAll","inputs":[{"type":"address","name":"to"},{"type":"bool","name":"approved"}],"constant":false},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":""}],"name":"supportsInterface","inputs":[{"type":"bytes4","name":"interfaceId"}],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":""}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":""}],"name":"tokenByIndex","inputs":[{"type":"uint256","name":"index"}],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":""}],"name":"tokenOfOwnerByIndex","inputs":[{"type":"address","name":"owner"},{"type":"uint256","name":"index"}],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":""}],"name":"tokenURI","inputs":[{"type":"uint256","name":"tokenId"}],"constant":true},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":""}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferFrom","inputs":[{"type":"address","name":"from"},{"type":"address","name":"to"},{"type":"uint256","name":"tokenId"}],"constant":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferMultiple","inputs":[{"type":"address[]","name":"to"},{"type":"uint256[]","name":"tokenIds"}],"constant":false},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":""}],"name":"version","inputs":[],"constant":true},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"approved","indexed":true},{"type":"uint256","name":"tokenId","indexed":true}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"operator","indexed":true},{"type":"bool","name":"approved","indexed":false}],"anonymous":false},{"type":"event","name":"MinterAdded","inputs":[{"type":"address","name":"account","indexed":true}],"anonymous":false},{"type":"event","name":"MinterRemoved","inputs":[{"type":"address","name":"account","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"tokenId","indexed":true}],"anonymous":false}]
Deployed ByteCode
0x6080604052600436106101bc576000357c01000000000000000000000000000000000000000000000000000000009004806301ffc9a7146101c157806306fdde0314610233578063077f224a146102c3578063081812fc14610442578063095ea7b3146104bd5780630d9cc27514610518578063130899fb1461061457806318160ddd1461074457806323b872dd1461076f5780632f745c59146107ea5780633092afd51461085957806338e21cce146108aa5780633f1bc49d1461091357806340c10f1914610a1857806342842e0e14610a8b57806342966c6814610b065780634cd88b7614610b415780634f6ccce714610ca057806354fd4d5014610cef5780636352211e14610d205780636c0360eb14610d9b57806370a0823114610e2b5780638129fc1c14610e905780638832e6e314610ea7578063893d20e814610fb157806395d89b4114611008578063983b2d561461109857806398650275146110e9578063a05fccef14611100578063a1448194146111db578063a22cb4651461124e578063aa271e1a146112ab578063b88d4fde14611314578063c4d66de814611426578063c87b56dd14611477578063e985e9c51461152b575b600080fd5b3480156101cd57600080fd5b50610219600480360360208110156101e457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506115b4565b604051808215151515815260200191505060405180910390f35b34801561023f57600080fd5b5061024861161c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028857808201518184015260208101905061026d565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102cf57600080fd5b50610440600480360360608110156102e657600080fd5b810190808035906020019064010000000081111561030357600080fd5b82018360208201111561031557600080fd5b8035906020019184600183028401116401000000008311171561033757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561039a57600080fd5b8201836020820111156103ac57600080fd5b803590602001918460018302840111640100000000831117156103ce57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116be565b005b34801561044e57600080fd5b5061047b6004803603602081101561046557600080fd5b81019080803590602001909291905050506118f0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104c957600080fd5b50610516600480360360408110156104e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119d0565b005b34801561052457600080fd5b506105fe6004803603604081101561053b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561057857600080fd5b82018360208201111561058a57600080fd5b803590602001918460018302840111640100000000831117156105ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611c41565b6040518082815260200191505060405180910390f35b34801561062057600080fd5b506106ed6004803603604081101561063757600080fd5b810190808035906020019064010000000081111561065457600080fd5b82018360208201111561066657600080fd5b8035906020019184602083028401116401000000008311171561068857600080fd5b9091929391929390803590602001906401000000008111156106a957600080fd5b8201836020820111156106bb57600080fd5b803590602001918460018302840111640100000000831117156106dd57600080fd5b9091929391929390505050611dde565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610730578082015181840152602081019050610715565b505050509050019250505060405180910390f35b34801561075057600080fd5b50610759611f88565b6040518082815260200191505060405180910390f35b34801561077b57600080fd5b506107e86004803603606081101561079257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f95565b005b3480156107f657600080fd5b506108436004803603604081101561080d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612050565b6040518082815260200191505060405180910390f35b34801561086557600080fd5b506108a86004803603602081101561087c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612156565b005b3480156108b657600080fd5b506108f9600480360360208110156108cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061223d565b604051808215151515815260200191505060405180910390f35b34801561091f57600080fd5b506109c16004803603606081101561093657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561097357600080fd5b82018360208201111561098557600080fd5b803590602001918460018302840111640100000000831117156109a757600080fd5b90919293919293908035906020019092919050505061225e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a045780820151818401526020810190506109e9565b505050509050019250505060405180910390f35b348015610a2457600080fd5b50610a7160048036036040811015610a3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123d5565b604051808215151515815260200191505060405180910390f35b348015610a9757600080fd5b50610b0460048036036060811015610aae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124b1565b005b348015610b1257600080fd5b50610b3f60048036036020811015610b2957600080fd5b81019080803590602001909291905050506124d2565b005b348015610b4d57600080fd5b50610c9e60048036036040811015610b6457600080fd5b8101908080359060200190640100000000811115610b8157600080fd5b820183602082011115610b9357600080fd5b80359060200191846001830284011164010000000083111715610bb557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c1857600080fd5b820183602082011115610c2a57600080fd5b80359060200191846001830284011164010000000083111715610c4c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506125a4565b005b348015610cac57600080fd5b50610cd960048036036020811015610cc357600080fd5b8101908080359060200190929190505050612757565b6040518082815260200191505060405180910390f35b348015610cfb57600080fd5b50610d0461281e565b604051808260ff1660ff16815260200191505060405180910390f35b348015610d2c57600080fd5b50610d5960048036036020811015610d4357600080fd5b8101908080359060200190929190505050612827565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610da757600080fd5b50610db0612934565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df0578082015181840152602081019050610dd5565b50505050905090810190601f168015610e1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e3757600080fd5b50610e7a60048036036020811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d6565b6040518082815260200191505060405180910390f35b348015610e9c57600080fd5b50610ea5612af0565b005b348015610eb357600080fd5b50610f9760048036036060811015610eca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610f1157600080fd5b820183602082011115610f2357600080fd5b80359060200191846001830284011164010000000083111715610f4557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612c73565b604051808215151515815260200191505060405180910390f35b348015610fbd57600080fd5b50610fc6612d35565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561101457600080fd5b5061101d612d60565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561105d578082015181840152602081019050611042565b50505050905090810190601f16801561108a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156110a457600080fd5b506110e7600480360360208110156110bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e02565b005b3480156110f557600080fd5b506110fe612eb8565b005b34801561110c57600080fd5b506111d96004803603604081101561112357600080fd5b810190808035906020019064010000000081111561114057600080fd5b82018360208201111561115257600080fd5b8035906020019184602083028401116401000000008311171561117457600080fd5b90919293919293908035906020019064010000000081111561119557600080fd5b8201836020820111156111a757600080fd5b803590602001918460208302840111640100000000831117156111c957600080fd5b9091929391929390505050612eca565b005b3480156111e757600080fd5b50611234600480360360408110156111fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061300a565b604051808215151515815260200191505060405180910390f35b34801561125a57600080fd5b506112a96004803603604081101561127157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506130ca565b005b3480156112b757600080fd5b506112fa600480360360208110156112ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613284565b604051808215151515815260200191505060405180910390f35b34801561132057600080fd5b506114246004803603608081101561133757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561139e57600080fd5b8201836020820111156113b057600080fd5b803590602001918460018302840111640100000000831117156113d257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506132a2565b005b34801561143257600080fd5b506114756004803603602081101561144957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061335f565b005b34801561148357600080fd5b506114b06004803603602081101561149a57600080fd5b81019080803590602001909291905050506134c0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156114f05780820151818401526020810190506114d5565b50505050905090810190601f16801561151d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561153757600080fd5b5061159a6004803603604081101561154e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061370a565b604051808215151515815260200191505060405180910390f35b600060336000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060d28054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116b45780601f10611689576101008083540402835291602001916116b4565b820191906000526020600020905b81548152906001019060200180831161169757829003601f168201915b5050505050905090565b600060019054906101000a900460ff16806116dd57506116dc61379e565b5b806116f457506000809054906101000a900460ff16155b151561178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b60008060019054906101000a900460ff1615905080156117de576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6101a160009054906101000a900460ff16151515611864576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b61186c6137b5565b61187684846125a4565b61187e612af0565b6118878261335f565b3361019f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156118ea5760008060016101000a81548160ff0219169083151502179055505b50505050565b60006118fb8261392d565b1515611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4552433732313a20617070726f76656420717565727920666f72206e6f6e657881526020017f697374656e7420746f6b656e000000000000000000000000000000000000000081525060400191505060405180910390fd5b6067600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006119db82612827565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611aa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6581526020017f720000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611ac661399f565b73ffffffffffffffffffffffffffffffffffffffff161480611af55750611af481611aef61399f565b61370a565b5b1515611b8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7781526020017f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000081525060400191505060405180910390fd5b826067600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611c53611c4e61399f565b613284565b1515611ced576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b611cf861019e6139a7565b6000611d0561019e6139bd565b9050611d1184826139cb565b611d1b81846139ec565b60016101a06000611d2a61399f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016101a060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508091505092915050565b6060611df0611deb61399f565b613284565b1515611e8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b6000858590509050606081604051908082528060200260200182016040528015611ec35781602001602082028038833980820191505090505b50905060008060008090505b84811015611f7857611f4f8a8a838181101515611ee857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1689898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613abb565b8482815181101515611f5d57fe5b90602001906020020181815250508080600101915050611ecf565b5082945050505050949350505050565b6000609e80549050905090565b611fa6611fa061399f565b82613b03565b1515612040576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f81526020017f776e6572206e6f7220617070726f76656400000000000000000000000000000081525060400191505060405180910390fd5b61204b838383613c3c565b505050565b600061205b836129d6565b821015156120f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f455243373231456e756d657261626c653a206f776e657220696e646578206f7581526020017f74206f6620626f756e647300000000000000000000000000000000000000000081525060400191505060405180910390fd5b609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561214357fe5b9060005260206000200154905092915050565b61019f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561221c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6f7420616c6c6f77656420746f2063616c6c2074686973206d6574686f640081525060200191505060405180910390fd5b61222581613284565b15156122305761223a565b61223981613c60565b5b50565b6101a06020528060005260406000206000915054906101000a900460ff1681565b606061227061226b61399f565b613284565b151561230a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b60608260405190808252806020026020018201604052801561233b5781602001602082028038833980820191505090505b50905060008060008090505b858110156123c65761239d8989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613abb565b84828151811015156123ab57fe5b90602001906020020181815250508080600101915050612347565b50829350505050949350505050565b600061019f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561249d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6f7420616c6c6f77656420746f2063616c6c2074686973206d6574686f640081525060200191505060405180910390fd5b6124a783836139cb565b6001905092915050565b6124cd83838360206040519081016040528060008152506132a2565b505050565b61019f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6f7420616c6c6f77656420746f2063616c6c2074686973206d6574686f640081525060200191505060405180910390fd5b6125a181613cbb565b50565b600060019054906101000a900460ff16806125c357506125c261379e565b5b806125da57506000809054906101000a900460ff16155b1515612674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b60008060019054906101000a900460ff1615905080156126c4576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6126cc613cd0565b15156126d757600080fd5b8260d290805190602001906126ed929190615945565b508160d39080519060200190612704929190615945565b50612731635b5e139f7c010000000000000000000000000000000000000000000000000000000002613d03565b80156127525760008060016101000a81548160ff0219169083151502179055505b505050565b6000612761611f88565b821015156127fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f81526020017f7574206f6620626f756e6473000000000000000000000000000000000000000081525060400191505060405180910390fd5b609e8281548110151561280c57fe5b90600052602060002001549050919050565b60006003905090565b6000806066600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561292b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4552433732313a206f776e657220717565727920666f72206e6f6e657869737481526020017f656e7420746f6b656e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80915050919050565b606060d58054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129cc5780601f106129a1576101008083540402835291602001916129cc565b820191906000526020600020905b8154815290600101906020018083116129af57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612aa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4552433732313a2062616c616e636520717565727920666f7220746865207a6581526020017f726f20616464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b612ae9606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206139bd565b9050919050565b600060019054906101000a900460ff1680612b0f5750612b0e61379e565b5b80612b2657506000809054906101000a900460ff16155b1515612bc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b60008060019054906101000a900460ff161590508015612c10576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b612c18613cd0565b1515612c2357600080fd5b612c4f63780e9d637c010000000000000000000000000000000000000000000000000000000002613d03565b8015612c705760008060016101000a81548160ff0219169083151502179055505b50565b6000612c85612c8061399f565b613284565b1515612d1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b612d2a848484613e2a565b600190509392505050565b600061019f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060d38054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612df85780601f10612dcd57610100808354040283529160200191612df8565b820191906000526020600020905b815481529060010190602001808311612ddb57829003601f168201915b5050505050905090565b612e12612e0d61399f565b613284565b1515612eac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b612eb581613ee0565b50565b612ec8612ec361399f565b613c60565b565b6000612f1733848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050613f3b565b905060011515811515141515612f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6e6f74206f776e6572206f6620616c6c20746865736520746f6b656e7300000081525060200191505060405180910390fd5b600083839050905060008090505b8181101561300157612ff4338888848181101515612fbd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168787858181101515612fe857fe5b905060200201356124b1565b8080600101915050612fa3565b50505050505050565b600061301c61301761399f565b613284565b15156130b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b6130c08383613fd0565b6001905092915050565b6130d261399f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613175576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806069600061318261399f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661322f61399f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b600061329b82610139613fef90919063ffffffff16565b9050919050565b6132b36132ad61399f565b83613b03565b151561334d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f81526020017f776e6572206e6f7220617070726f76656400000000000000000000000000000081525060400191505060405180910390fd5b61335984848484614112565b50505050565b600060019054906101000a900460ff168061337e575061337d61379e565b5b8061339557506000809054906101000a900460ff16155b151561342f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561347f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b613487613cd0565b151561349257600080fd5b61349b826141c9565b80156134bc5760008060016101000a81548160ff0219169083151502179055505b5050565b60606134cb8261392d565b1515613565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001807f4552433732314d657461646174613a2055524920717565727920666f72206e6f81526020017f6e6578697374656e7420746f6b656e000000000000000000000000000000000081525060400191505060405180910390fd5b606060d460008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561360e5780601f106135e35761010080835404028352916020019161360e565b820191906000526020600020905b8154815290600101906020018083116135f157829003601f168201915b50505050509050600081511415613638576020604051908101604052806000815250915050613705565b60d58160405160200180838054600181600116156101000203166002900480156136995780601f10613677576101008083540402835291820191613699565b820191906000526020600020905b815481529060010190602001808311613685575b505082805190602001908083835b6020831015156136cc57805182526020820191506020810190506020830392506136a7565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000606960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000803090506000813b9050600081149250505090565b600060019054906101000a900460ff16806137d457506137d361379e565b5b806137eb57506000809054906101000a900460ff16155b1515613885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b60008060019054906101000a900460ff1615905080156138d5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6138dd614327565b6139096380ac58cd7c010000000000000000000000000000000000000000000000000000000002613d03565b801561392a5760008060016101000a81548160ff0219169083151502179055505b50565b6000806066600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6001816000016000828254019250508190555050565b600081600001549050919050565b6139d58282614497565b6139df82826146b3565b6139e88161477a565b5050565b6139f58261392d565b1515613a8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4552433732314d657461646174613a2055524920736574206f66206e6f6e657881526020017f697374656e7420746f6b656e000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060d460008481526020019081526020016000209080519060200190613ab6929190615945565b505050565b6000806060613acb61019e6139a7565b613ad661019e6139bd565b9150613ae285836139cb565b613aec84836147c6565b9050613af882826139ec565b819250505092915050565b6000613b0e8261392d565b1515613ba8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657881526020017f697374656e7420746f6b656e000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000613bb383612827565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613c2257508373ffffffffffffffffffffffffffffffffffffffff16613c0a846118f0565b73ffffffffffffffffffffffffffffffffffffffff16145b80613c335750613c32818561370a565b5b91505092915050565b613c4783838361489a565b613c518382614b7f565b613c5b82826146b3565b505050565b613c7581610139614d2390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b613ccd613cc782612827565b82614e25565b50565b6000613cfe6380ac58cd7c0100000000000000000000000000000000000000000000000000000000026115b4565b905090565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515613dbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b600160336000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b613e3483836139cb565b613e416000848484614e84565b1515613edb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581526020017f63656976657220696d706c656d656e746572000000000000000000000000000081525060400191505060405180910390fd5b505050565b613ef58161013961524190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b60008082519050600080600090505b82811015613fc257613f728582815181101515613f6357fe5b90602001906020020151612827565b91508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515613fb55760009350505050613fca565b8080600101915050613f4a565b506001925050505b92915050565b613feb82826020604051908101604052806000815250613e2a565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156140bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61411d848484613c3c565b61412984848484614e84565b15156141c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581526020017f63656976657220696d706c656d656e746572000000000000000000000000000081525060400191505060405180910390fd5b50505050565b600060019054906101000a900460ff16806141e857506141e761379e565b5b806141ff57506000809054906101000a900460ff16155b1515614299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b60008060019054906101000a900460ff1615905080156142e9576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6142f282613284565b15156143025761430182613ee0565b5b80156143235760008060016101000a81548160ff0219169083151502179055505b5050565b600060019054906101000a900460ff1680614346575061434561379e565b5b8061435d57506000809054906101000a900460ff16155b15156143f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b60008060019054906101000a900460ff161590508015614447576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6144736301ffc9a77c010000000000000000000000000000000000000000000000000000000002613d03565b80156144945760008060016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561453c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6145458161392d565b1515156145ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816066600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614653606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206139a7565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050609d600083815260200190815260200160002081905550609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b609e80549050609f600083815260200190815260200160002081905550609e81908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b6060826147d28361531e565b6040516020018083805190602001908083835b60208310151561480a57805182526020820191506020810190506020830392506147e5565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310151561485d5780518252602082019150602081019050602083039250614838565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b8273ffffffffffffffffffffffffffffffffffffffff166148ba82612827565b73ffffffffffffffffffffffffffffffffffffffff1614151561496b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4552433732313a207472616e73666572206f6620746f6b656e2074686174206981526020017f73206e6f74206f776e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614a36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4552433732313a207472616e7366657220746f20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b614a3f8161543e565b614a86606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206154fe565b614acd606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206139a7565b816066600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000614bd76001609c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061552190919063ffffffff16565b90506000609d60008481526020019081526020016000205490508181141515614cca576000609c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515614c4857fe5b9060005260206000200154905080609c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515614ca257fe5b906000526020600020018190555081609d600083815260200190815260200160002081905550505b609c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003614d1c91906159c5565b5050505050565b614d2d8282613fef565b1515614dc7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b614e2f828261556b565b600060d46000838152602001908152602001600020805460018160011615610100020316600290049050141515614e805760d460008281526020019081526020016000206000614e7f91906159f1565b5b5050565b6000614ea58473ffffffffffffffffffffffffffffffffffffffff166155a5565b1515614eb45760019050615239565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a0290507c010000000000000000000000000000000000000000000000000000000002614f1461399f565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614fc4578082015181840152602081019050614fa9565b50505050905090810190601f168015614ff15780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310151561508b5780518252602082019150602081019050602083039250615066565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146150ed576040519150601f19603f3d011682016040523d82523d6000602084013e6150f2565b606091505b50915091508115156151a5576000815111156151115780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581526020017f63656976657220696d706c656d656e746572000000000000000000000000000081525060400191505060405180910390fd5b60008180602001905160208110156151bc57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b61524b8282613fef565b1515156152c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060008211156154005760605b60008311156153f7576030600a8481151561534357fe5b060181604051602001808360ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010182805190602001908083835b6020831015156153ac5780518252602082019150602081019050602083039250615387565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050600a838115156153ef57fe5b04925061532c565b80915050615439565b6040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090505b919050565b600073ffffffffffffffffffffffffffffffffffffffff166067600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156154fb5760006067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6155166001826000015461552190919063ffffffff16565b816000018190555050565b600061556383836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506155f1565b905092915050565b61557582826156b3565b61557f8282614b7f565b6000609d6000838152602001908152602001600020819055506155a181615887565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706001029050833f91508082141580156155e8575060006001028214155b92505050919050565b600083831115829015156156a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561566557808201518184015260208101905061564a565b50505050905090810190601f1680156156925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff166156d382612827565b73ffffffffffffffffffffffffffffffffffffffff16141515615784576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4552433732313a206275726e206f6620746f6b656e2074686174206973206e6f81526020017f74206f776e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61578d8161543e565b6157d4606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206154fe565b60006066600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006158a26001609e8054905061552190919063ffffffff16565b90506000609f60008481526020019081526020016000205490506000609e838154811015156158cd57fe5b9060005260206000200154905080609e838154811015156158ea57fe5b906000526020600020018190555081609f600083815260200190815260200160002081905550609e80548091906001900361592591906159c5565b506000609f60008681526020019081526020016000208190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061598657805160ff19168380011785556159b4565b828001600101855582156159b4579182015b828111156159b3578251825591602001919060010190615998565b5b5090506159c19190615a39565b5090565b8154818355818111156159ec578183600052602060002091820191016159eb9190615a39565b5b505050565b50805460018160011615610100020316600290046000825580601f10615a175750615a36565b601f016020900490600052602060002090810190615a359190615a39565b5b50565b615a5b91905b80821115615a57576000816000905550600101615a3f565b5090565b9056fea165627a7a72305820bf2dc9d4a22a4f8cd0f2c0a9303ed7620053652a6df4642f117eb94d029101740029