[ { "inputs": [ { "internalType": "address", "name": "template", "type": "address" } ], "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": "instance", "type": "address" } ], "name": "InstanceAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "instance", "type": "address" } ], "name": "InstanceRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "vault", "type": "address" } ], "name": "addressToUint", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "stateMutability": "pure", "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": "bytes", "name": "", "type": "bytes" } ], "name": "create", "outputs": [ { "internalType": "address", "name": "vault", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "create", "outputs": [ { "internalType": "address", "name": "vault", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "salt", "type": "bytes32" } ], "name": "create2", "outputs": [ { "internalType": "address", "name": "vault", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" } ], "name": "create2", "outputs": [ { "internalType": "address", "name": "vault", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTemplate", "outputs": [ { "internalType": "address", "name": "template", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "instanceAt", "outputs": [ { "internalType": "address", "name": "instance", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "instanceCount", "outputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "instance", "type": "address" } ], "name": "isInstance", "outputs": [ { "internalType": "bool", "name": "validity", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "salt", "type": "bytes32" } ], "name": "predictCreate2Address", "outputs": [ { "internalType": "address", "name": "instance", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "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": "address", "name": "tokenURIHandler", "type": "address" } ], "name": "setTokenURIHandler", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uint256ToAddress", "outputs": [ { "internalType": "address", "name": "vault", "type": "address" } ], "stateMutability": "pure", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162002c1438038062002c14833981810160405260208110156200003757600080fd5b50516040805180820182526012815271556e6976657273616c205661756c7420763160701b602082810191909152825180840190935260088352675641554c542d763160c01b9083015290620000946301ffc9a760e01b620001c5565b8151620000a99060069060208501906200024e565b508051620000bf9060079060208401906200024e565b50620000d26380ac58cd60e01b620001c5565b620000e4635b5e139f60e01b620001c5565b620000f663780e9d6360e01b620001c5565b5060009050620001056200024a565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038116620001af576040805162461bcd60e51b815260206004820152601e60248201527f5661756c74466163746f72793a20696e76616c69642074656d706c6174650000604482015290519081900360640190fd5b60601b6001600160601b031916608052620002fa565b6001600160e01b0319808216141562000225576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002865760008555620002d1565b82601f10620002a157805160ff1916838001178555620002d1565b82800160010185558215620002d1579182015b82811115620002d1578251825591602001919060010190620002b4565b50620002df929150620002e3565b5090565b5b80821115620002df5760008155600101620002e4565b60805160601c6128ed6200032760003980610a535280610a7c5280610d7852806111cd52506128ed6000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063a22cb465116100a2578063e985e9c511610071578063e985e9c51461073d578063ec56c7161461076b578063efc81a8c14610773578063f2fde38b1461077b576101f0565b8063a22cb465146105bc578063b88d4fde146105ea578063c87b56dd146106b0578063cf5ba53f146106cd576101f0565b80638da5cb5b116100de5780638da5cb5b1461056957806392751bc71461057157806395d89b41146105975780639600f33d1461059f576101f0565b806370a08231146104ae578063715018a6146104d457806378ab7b3e146104dc5780638c0b8db2146104f9576101f0565b8063321c48f2116101875780634f6ccce7116101565780634f6ccce7146104465780636352211e146104635780636b44e6be146104805780636c0360eb146104a6576101f0565b8063321c48f2146103c557806341d1fe92146103cd57806342842e0e146103ea5780634dbf9a7314610420576101f0565b806311d8293e116101c357806311d8293e1461032c57806318160ddd1461034957806323b872dd146103635780632f745c5914610399576101f0565b806301ffc9a7146101f557806306fdde0314610248578063081812fc146102c5578063095ea7b3146102fe575b600080fd5b6102346004803603602081101561020b57600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166107a1565b604080519115158252519081900360200190f35b6102506107dc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028a578181015183820152602001610272565b50505050905090810190601f1680156102b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e2600480360360208110156102db57600080fd5b5035610872565b604080516001600160a01b039092168252519081900360200190f35b61032a6004803603604081101561031457600080fd5b506001600160a01b0381351690602001356108d4565b005b6102e26004803603602081101561034257600080fd5b50356109af565b6103516109c0565b60408051918252519081900360200190f35b61032a6004803603606081101561037957600080fd5b506001600160a01b038135811691602081013590911690604001356109d1565b610351600480360360408110156103af57600080fd5b506001600160a01b038135169060200135610a28565b6102e2610a51565b6102e2600480360360208110156103e357600080fd5b5035610a75565b61032a6004803603606081101561040057600080fd5b506001600160a01b03813581169160208101359091169060400135610aa2565b61032a6004803603602081101561043657600080fd5b50356001600160a01b0316610abd565b6103516004803603602081101561045c57600080fd5b5035610b60565b6102e26004803603602081101561047957600080fd5b5035610b76565b6102346004803603602081101561049657600080fd5b50356001600160a01b0316610b9e565b610250610bb2565b610351600480360360208110156104c457600080fd5b50356001600160a01b0316610c13565b61032a610c7b565b6102e2600480360360208110156104f257600080fd5b5035610d46565b6102e26004803603604081101561050f57600080fd5b81019060208101813564010000000081111561052a57600080fd5b82018360208201111561053c57600080fd5b8035906020019184600183028401116401000000008311171561055e57600080fd5b919350915035610df4565b6102e2610e07565b6103516004803603602081101561058757600080fd5b50356001600160a01b0316610e16565b610250610e22565b6102e2600480360360208110156105b557600080fd5b5035610e83565b61032a600480360360408110156105d257600080fd5b506001600160a01b0381351690602001351515610e86565b61032a6004803603608081101561060057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561063b57600080fd5b82018360208201111561064d57600080fd5b8035906020019184600183028401116401000000008311171561066f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f8b945050505050565b610250600480360360208110156106c657600080fd5b5035610fe9565b6102e2600480360360208110156106e357600080fd5b8101906020810181356401000000008111156106fe57600080fd5b82018360208201111561071057600080fd5b8035906020019184600183028401116401000000008311171561073257600080fd5b509092509050611159565b6102346004803603604081101561075357600080fd5b506001600160a01b0381358116916020013516611163565b610351611191565b6102e261119b565b61032a6004803603602081101561079157600080fd5b50356001600160a01b0316611246565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108685780601f1061083d57610100808354040283529160200191610868565b820191906000526020600020905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b600061087d82611368565b6108b85760405162461bcd60e51b815260040180806020018281038252602c8152602001806127e2602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006108df82610b76565b9050806001600160a01b0316836001600160a01b031614156109325760405162461bcd60e51b81526004018080602001828103825260218152602001806128666021913960400191505060405180910390fd5b806001600160a01b0316610944611375565b6001600160a01b03161480610965575061096581610960611375565b611163565b6109a05760405162461bcd60e51b81526004018080602001828103825260388152602001806127356038913960400191505060405180910390fd5b6109aa8383611379565b505050565b60006109ba82610b60565b92915050565b60006109cc60026113f4565b905090565b6109e26109dc611375565b826113ff565b610a1d5760405162461bcd60e51b81526004018080602001828103825260318152602001806128876031913960400191505060405180910390fd5b6109aa83838361149b565b6001600160a01b0382166000908152600160205260408120610a4a90836115e7565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006109ba7f000000000000000000000000000000000000000000000000000000000000000083306115f3565b6109aa83838360405180602001604052806000815250610f8b565b610ac5611375565b6001600160a01b0316610ad6610e07565b6001600160a01b031614610b31576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080610b6e600284611667565b509392505050565b60006109ba826040518060600160405280602981526020016127976029913960029190611683565b60006109ba826001600160a01b0316611368565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108685780601f1061083d57610100808354040283529160200191610868565b60006001600160a01b038216610c5a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061276d602a913960400191505060405180910390fd5b6001600160a01b03821660009081526001602052604090206109ba906113f4565b610c83611375565b6001600160a01b0316610c94610e07565b6001600160a01b031614610cef576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a805473ffffffffffffffffffffffffffffffffffffffff19169055565b6040805160048152602481019091526020810180516001600160e01b031663204a7f0760e21b179052600090610d9e907f00000000000000000000000000000000000000000000000000000000000000009084611690565b9050610db333826001600160a01b03166117e4565b604080516001600160a01b038316815290517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9181900360200190a1919050565b6000610dff82610d46565b949350505050565b600a546001600160a01b031690565b6001600160a01b031690565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108685780601f1061083d57610100808354040283529160200191610868565b90565b610e8e611375565b6001600160a01b0316826001600160a01b03161415610ef4576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610f01611375565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610f45611375565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b610f9c610f96611375565b836113ff565b610fd75760405162461bcd60e51b81526004018080602001828103825260318152602001806128876031913960400191505060405180910390fd5b610fe384848484611802565b50505050565b600b546060906001600160a01b03168061100e5761100683611854565b9150506107d7565b806001600160a01b031663301a32608461102786611368565b6040518363ffffffff1660e01b81526004018083815260200182151581526020019250505060006040518083038186803b15801561106457600080fd5b505afa158015611078573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156110a157600080fd5b81019080805160405193929190846401000000008211156110c157600080fd5b9083019060208201858111156110d657600080fd5b82516401000000008111828201881017156110f057600080fd5b82525081516020918201929091019080838360005b8381101561111d578181015183820152602001611105565b50505050905090810190601f16801561114a5780820380516001836020036101000a031916815260200191505b506040525050509150506107d7565b6000610a4a61119b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006109cc6109c0565b6040805160048152602481019091526020810180516001600160e01b031663204a7f0760e21b1790526000906111f2907f000000000000000000000000000000000000000000000000000000000000000090611ad5565b905061120733826001600160a01b03166117e4565b604080516001600160a01b038316815290517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9181900360200190a190565b61124e611375565b6001600160a01b031661125f610e07565b6001600160a01b0316146112ba576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166112ff5760405162461bcd60e51b81526004018080602001828103825260268152602001806126bf6026913960400191505060405180910390fd5b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006109ba600283611bea565b3390565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906113bb82610b76565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006109ba82611bf6565b600061140a82611368565b6114455760405162461bcd60e51b815260040180806020018281038252602c815260200180612709602c913960400191505060405180910390fd5b600061145083610b76565b9050806001600160a01b0316846001600160a01b0316148061148b5750836001600160a01b031661148084610872565b6001600160a01b0316145b80610dff5750610dff8185611163565b826001600160a01b03166114ae82610b76565b6001600160a01b0316146114f35760405162461bcd60e51b815260040180806020018281038252602981526020018061280e6029913960400191505060405180910390fd5b6001600160a01b0382166115385760405162461bcd60e51b81526004018080602001828103825260248152602001806126e56024913960400191505060405180910390fd5b6115438383836109aa565b61154e600082611379565b6001600160a01b03831660009081526001602052604090206115709082611bfa565b506001600160a01b03821660009081526001602052604090206115939082611c06565b506115a060028284611c12565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610a4a8383611c28565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b60008080806116768686611c8c565b9097909650945050505050565b6000610dff848484611d07565b600061169c8483611d94565b835190915015610a4a57600080826001600160a01b0316856040518082805190602001908083835b602083106116e35780518252601f1990920191602091820191016116c4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611745576040519150601f19603f3d011682016040523d82523d6000602084013e61174a565b606091505b50915091508181906117da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561179f578181015183820152602001611787565b50505050905090810190601f1680156117cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050509392505050565b6117fe828260405180602001604052806000815250611e50565b5050565b61180d84848461149b565b61181984848484611ea2565b610fe35760405162461bcd60e51b815260040180806020018281038252603281526020018061268d6032913960400191505060405180910390fd5b606061185f82611368565b61189a5760405162461bcd60e51b815260040180806020018281038252602f815260200180612837602f913960400191505060405180910390fd5b60008281526008602090815260408083208054825160026001831615610100026000190190921691909104601f81018590048502820185019093528281529290919083018282801561192d5780601f106119025761010080835404028352916020019161192d565b820191906000526020600020905b81548152906001019060200180831161191057829003601f168201915b50505050509050600061193e610bb2565b9050805160001415611952575090506107d7565b815115611a135780826040516020018083805190602001908083835b6020831061198d5780518252601f19909201916020918201910161196e565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106119d55780518252601f1990920191602091820191016119b6565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506107d7565b80611a1d85612022565b6040516020018083805190602001908083835b60208310611a4f5780518252601f199092019160209182019101611a30565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310611a975780518252601f199092019160209182019101611a78565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6000611ae083612131565b8251909150156109ba57600080826001600160a01b0316846040518082805190602001908083835b60208310611b275780518252601f199092019160209182019101611b08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b89576040519150601f19603f3d011682016040523d82523d6000602084013e611b8e565b606091505b5091509150818190611be15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561179f578181015183820152602001611787565b50505092915050565b6000610a4a83836121ec565b5490565b6000610a4a8383612204565b6000610a4a83836122ca565b6000610dff84846001600160a01b038516612314565b81546000908210611c6a5760405162461bcd60e51b815260040180806020018281038252602281526020018061266b6022913960400191505060405180910390fd5b826000018281548110611c7957fe5b9060005260206000200154905092915050565b815460009081908310611cd05760405162461bcd60e51b81526004018080602001828103825260228152602001806127c06022913960400191505060405180910390fd5b6000846000018481548110611ce157fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281611d655760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561179f578181015183820152602001611787565b50846000016001820381548110611d7857fe5b9060005260206000209060020201600101549150509392505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b0381166109ba576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b611e5a83836123ab565b611e676000848484611ea2565b6109aa5760405162461bcd60e51b815260040180806020018281038252603281526020018061268d6032913960400191505060405180910390fd5b6000611eb6846001600160a01b03166124d9565b611ec257506001610dff565b6000611fd0630a85bd0160e11b611ed7611375565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f3e578181015183820152602001611f26565b50505050905090810190601f168015611f6b5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505060405180606001604052806032815260200161268d603291396001600160a01b03881691906124df565b90506000818060200190516020811015611fe957600080fd5b50517fffffffff0000000000000000000000000000000000000000000000000000000016630a85bd0160e11b1492505050949350505050565b606081612063575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526107d7565b8160005b811561207b57600101600a82049150612067565b60008167ffffffffffffffff8111801561209457600080fd5b506040519080825280601f01601f1916602001820160405280156120bf576020820181803683370190505b50859350905060001982015b831561212857600a840660300160f81b828280600190039350815181106120ee57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506120cb565b50949350505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09150506001600160a01b0381166107d7576040805162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156122c0578354600019808301919081019060009087908390811061223757fe5b906000526020600020015490508087600001848154811061225457fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061228457fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109ba565b60009150506109ba565b60006122d683836121ec565b61230c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109ba565b5060006109ba565b600082815260018401602052604081205480612379575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610a4a565b8285600001600183038154811061238c57fe5b9060005260206000209060020201600101819055506000915050610a4a565b6001600160a01b038216612406576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61240f81611368565b15612461576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b61246d600083836109aa565b6001600160a01b038216600090815260016020526040902061248f9082611c06565b5061249c60028284611c12565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b3b151590565b6060610dff8484600085856124f3856124d9565b612544576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106125825780518252601f199092019160209182019101612563565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146125e4576040519150601f19603f3d011682016040523d82523d6000602084013e6125e9565b606091505b50915091506125f9828286612604565b979650505050505050565b60608315612613575081610a4a565b8251156126235782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561179f57818101518382015260200161178756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220f67a5910e0e4e20eef4535c58e7e940b8c133026d74cec604af3d632dc05bef964736f6c63430007060033000000000000000000000000c1ec9d57f5295a82e8bd24e045db83100d09f053