[ { "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": 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": [], "name": "MAX_NFT_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_PURCHASABLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PLUNDER_PRICE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RESERVED_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getChest", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getFoot", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getHand", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getHead", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getNeck", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getWeapon", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "uint256", "name": "amountToMint", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "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": "ownerClaim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "retrievePrice", "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": "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": "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": [], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" } ]
6080604052670de0b6b3a7640000600c55604051806101c001604052806040518060400160405280600b81526020017f53686f72742053776f726400000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f4c6f6e672053776f72640000000000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f4652415869756d2053776f72640000000000000000000000000000000000000081525081526020016040518060400160405280601181526020017f53757368694368656620436c656176657200000000000000000000000000000081525081526020016040518060400160405280600d81526020017f436c696d62696e67205069636b0000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f537461666600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f4d494d205370656c6c2057616e6400000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f53686f7274626f7700000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f4c6f6e67626f770000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f536c696e6700000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f43726f7373626f7700000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f446167676572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f50616e676f6c696e20436c61777300000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f50726f746f666972652057686970000000000000000000000000000000000000815250815250600d90600e6200036692919062001d04565b50604051806101e001604052806040518060400160405280600e81526020017f436861696e6c696e6b204d61696c00000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f506c6174652041726d6f7200000000000000000000000000000000000000000081525081526020016040518060400160405280601181526020017f447261676f6e7363616c652041726d6f7200000000000000000000000000000081525081526020016040518060400160405280601581526020017f536572676579277320426c756520466c616e6e656c000000000000000000000081525081526020016040518060400160405280600f81526020017f537573686943686566204170726f6e000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f4d616e6174687265616420526f6265000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f417263616e652041726d6f72000000000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f50616e676f6c696e2041726d6f7200000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f4c6561746865722041726d6f720000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f447261676f6e686964652056657374000000000000000000000000000000000081525081526020016040518060400160405280601581526020017f576f6e6465726c616e6420436c6f776e20436f6174000000000000000000000081525081526020016040518060400160405280600e81526020017f4a6f652773204f766572616c6c7300000000000000000000000000000000000081525081526020016040518060400160405280601181526020017f46726f6e74696572736d616e20436f617400000000000000000000000000000081525081526020016040518060400160405280600d81526020017f536865727061204f75746669740000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f516920526f626573000000000000000000000000000000000000000000000000815250815250600e90600f620006f892919062001d6b565b50604051806101e001604052806040518060400160405280600481526020017f486f6f640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f42756c6c2773204865616400000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f46756c6c2048656c6d000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f59616b2048656c6d65740000000000000000000000000000000000000000000081525081526020016040518060400160405280601281526020017f4d61726b72277320537065637461636c6573000000000000000000000000000081525081526020016040518060400160405280600581526020017f43726f776e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601181526020017f576f726b6d616e2773204861726468617400000000000000000000000000000081525081526020016040518060400160405280601281526020017f53657220446578616c6f7427732048656c6d000000000000000000000000000081525081526020016040518060400160405280600b81526020017f417661417065204d61736b00000000000000000000000000000000000000000081525081526020016040518060400160405280601581526020017f576f6e6465726c616e6420436c6f776e204d61736b000000000000000000000081525081526020016040518060400160405280600e81526020017f4d616e617468726561642048617400000000000000000000000000000000000081525081526020016040518060400160405280601581526020017f4e6f7264636f7572742056696b696e672048656c6d000000000000000000000081525081526020016040518060400160405280600e81526020017f447261676f6e686964652043617000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f536865727061204861740000000000000000000000000000000000000000000081525081526020016040518060400160405280601381526020017f50726f666573736f72277320476c617373657300000000000000000000000000815250815250600f90600f62000a8a92919062001d6b565b50604051806101a001604052806040518060400160405280600d81526020017f4c65617468657220426f6f74730000000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f52696e676d61696c20426f6f747300000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f49726f6e2047726561766573000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f53616e64616c730000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f53657267657927732053686f657300000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f4176616c61756e636820426f6f7473000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f536e6f7720426f6f74730000000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f417263616e6520426f6f7473000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4a6f65277320426f6f747300000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f4d616e6174687265616420426f6f74730000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f546869656627732054726561647300000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f447261676f6e6869646520426f6f74730000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f436861696e6c696e6b20426f6f74730000000000000000000000000000000000815250815250601090600d62000da692919062001dd2565b506040518061018001604052806040518060400160405280601181526020017f4d616e6174687265616420476c6f76657300000000000000000000000000000081525081526020016040518060400160405280600f81526020017f537465656c204761756e746c657473000000000000000000000000000000000081525081526020016040518060400160405280601581526020017f447261676f6e7363616c65204761756e746c657473000000000000000000000081525081526020016040518060400160405280601081526020017f5370696b6564204761756e746c6574730000000000000000000000000000000081525081526020016040518060400160405280601181526020017f447261676f6e736b696e20476c6f76657300000000000000000000000000000081525081526020016040518060400160405280600e81526020017f4c65617468657220476c6f76657300000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f417263616e6520476c6f7665730000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f53696c6b20476c6f76657300000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f576f6f6c20476c6f76657300000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f4c696e656e20476c6f766573000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f436861696e6c696e6b20476c6f7665730000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f49726f6e204761756e746c657473000000000000000000000000000000000000815250815250601190600c6200108792919062001e39565b506040518060c001604052806040518060400160405280600881526020017f4e65636b6c61636500000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f416d756c6574000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f50656e64616e740000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f436861696e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f536361726600000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f5370696b656420436f6c6c61720000000000000000000000000000000000000081525081525060129060066200120592919062001ea0565b50604051806101e001604052806040518060400160405280600881526020017f6f6620506f77657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6f6620476f64730000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f6f6620546974616e73000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f6f6620536b696c6c00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f6f662050657266656374696f6e0000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f6f66204272696c6c69616e63650000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f6f662050726f74656374696f6e0000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f6f6620536861646f77000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6f6620526167650000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f6f662074686520576f6c6600000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f6f6620537465616c74680000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f6f662074686520466f780000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f6f6620446566656e63650000000000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f6f66205265666c656374696f6e0000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f6f662074686520546f7765720000000000000000000000000000000000000000815250815250601390600f6200159792919062001d6b565b50604051806101c001604052806040518060400160405280600581526020017f426561737400000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f426c6f6f6400000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f696e0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f446561746800000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f446f67650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f446f6f6d0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4e68617a6172274f76000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f4d697261636c650000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4d6f72626964000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f50756e6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f536f756c0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f537573686900000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f547261646500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f576861732d536965000000000000000000000000000000000000000000000000815250815250601490600e620018ee92919062001d04565b506040518061014001604052806040518060400160405280600481526020017f42616e650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f426974650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f526f61720000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f477261737000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f42656e646572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f536861646f77000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f47726f776c00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f546561720000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f53756e000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4d6f6f6e00000000000000000000000000000000000000000000000000000000815250815250601590600a62001b5992919062001f07565b5034801562001b6757600080fd5b506040518060400160405280600781526020017f506c756e646572000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f504c445200000000000000000000000000000000000000000000000000000000815250816000908051906020019062001bec92919062001f6e565b50806001908051906020019062001c0592919062001f6e565b5050506001600a8190555062001c3062001c2462001c3660201b60201c565b62001c3e60201b60201c565b620020f1565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b82805482825590600052602060002090810192821562001d58579160200282015b8281111562001d5757825182908051906020019062001d4692919062001f6e565b509160200191906001019062001d25565b5b50905062001d67919062001fff565b5090565b82805482825590600052602060002090810192821562001dbf579160200282015b8281111562001dbe57825182908051906020019062001dad92919062001f6e565b509160200191906001019062001d8c565b5b50905062001dce919062001fff565b5090565b82805482825590600052602060002090810192821562001e26579160200282015b8281111562001e2557825182908051906020019062001e1492919062001f6e565b509160200191906001019062001df3565b5b50905062001e35919062001fff565b5090565b82805482825590600052602060002090810192821562001e8d579160200282015b8281111562001e8c57825182908051906020019062001e7b92919062001f6e565b509160200191906001019062001e5a565b5b50905062001e9c919062001fff565b5090565b82805482825590600052602060002090810192821562001ef4579160200282015b8281111562001ef357825182908051906020019062001ee292919062001f6e565b509160200191906001019062001ec1565b5b50905062001f03919062001fff565b5090565b82805482825590600052602060002090810192821562001f5b579160200282015b8281111562001f5a57825182908051906020019062001f4992919062001f6e565b509160200191906001019062001f28565b5b50905062001f6a919062001fff565b5090565b82805462001f7c906200208c565b90600052602060002090601f01602090048101928262001fa0576000855562001fec565b82601f1062001fbb57805160ff191683800117855562001fec565b8280016001018555821562001fec579182015b8281111562001feb57825182559160200191906001019062001fce565b5b50905062001ffb919062002027565b5090565b5b8082111562002023576000818162002019919062002046565b5060010162002000565b5090565b5b808211156200204257600081600090555060010162002028565b5090565b50805462002054906200208c565b6000825580601f1062002068575062002089565b601f01602090049060005260206000209081019062002088919062002027565b5b50565b60006002820490506001821680620020a557607f821691505b60208210811415620020bc57620020bb620020c2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61596880620021016000396000f3fe6080604052600436106101ee5760003560e01c806370a082311161010d578063b5077f44116100a0578063e02539c81161006f578063e02539c81461072f578063e1683b221461075a578063e985e9c514610785578063ef68075a146107c2578063f2fde38b146107ff576101ee565b8063b5077f4414610661578063b88d4fde1461068c578063c87b56dd146106b5578063d47f269e146106f2576101ee565b80639720c969116100dc5780639720c969146105a25780639e41b73f146105df578063a0712d681461061c578063a22cb46514610638576101ee565b806370a08231146104f8578063715018a6146105355780638da5cb5b1461054c57806395d89b4114610577576101ee565b80632f745c5911610185578063434f48c411610154578063434f48c4146104185780634f6ccce7146104415780636352211e1461047e57806367209aa8146104bb576101ee565b80632f745c591461037d57806331a53e9a146103ba5780633ccfd60b146103e557806342842e0e146103ef576101ee565b80630e99990d116101c15780630e99990d146102c1578063119e4398146102fe57806318160ddd1461032957806323b872dd14610354576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190614011565b610828565b6040516102279190614834565b60405180910390f35b34801561023c57600080fd5b506102456108a2565b604051610252919061484f565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190614063565b610934565b60405161028f91906147cd565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190613fd5565b6109b9565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190614063565b610ad1565b6040516102f5919061484f565b60405180910390f35b34801561030a57600080fd5b50610313610beb565b6040516103209190614ab1565b60405180910390f35b34801561033557600080fd5b5061033e610bf0565b60405161034b9190614ab1565b60405180910390f35b34801561036057600080fd5b5061037b60048036038101906103769190613ecf565b610bfd565b005b34801561038957600080fd5b506103a4600480360381019061039f9190613fd5565b610c5d565b6040516103b19190614ab1565b60405180910390f35b3480156103c657600080fd5b506103cf610d02565b6040516103dc9190614ab1565b60405180910390f35b6103ed610d07565b005b3480156103fb57600080fd5b5061041660048036038101906104119190613ecf565b610dc3565b005b34801561042457600080fd5b5061043f600480360381019061043a9190614063565b610de3565b005b34801561044d57600080fd5b5061046860048036038101906104639190614063565b610ef8565b6040516104759190614ab1565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a09190614063565b610f8f565b6040516104b291906147cd565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190614063565b611041565b6040516104ef919061484f565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a9190613e6a565b61115b565b60405161052c9190614ab1565b60405180910390f35b34801561054157600080fd5b5061054a611213565b005b34801561055857600080fd5b5061056161129b565b60405161056e91906147cd565b60405180910390f35b34801561058357600080fd5b5061058c6112c5565b604051610599919061484f565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190614063565b611357565b6040516105d6919061484f565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190614063565b611471565b604051610613919061484f565b60405180910390f35b61063660048036038101906106319190614063565b61158b565b005b34801561064457600080fd5b5061065f600480360381019061065a9190613f99565b611654565b005b34801561066d57600080fd5b506106766117d5565b6040516106839190614ab1565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae9190613f1e565b6117db565b005b3480156106c157600080fd5b506106dc60048036038101906106d79190614063565b61183d565b6040516106e9919061484f565b60405180910390f35b3480156106fe57600080fd5b5061071960048036038101906107149190614063565b61219e565b604051610726919061484f565b60405180910390f35b34801561073b57600080fd5b506107446122b8565b6040516107519190614ab1565b60405180910390f35b34801561076657600080fd5b5061076f6122c2565b60405161077c9190614ab1565b60405180910390f35b34801561079157600080fd5b506107ac60048036038101906107a79190613e93565b6122c8565b6040516107b99190614834565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e49190614063565b61235c565b6040516107f6919061484f565b60405180910390f35b34801561080b57600080fd5b5061082660048036038101906108219190613e6a565b612476565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089b575061089a8261256e565b5b9050919050565b6060600080546108b190614d45565b80601f01602080910402602001604051908101604052809291908181526020018280546108dd90614d45565b801561092a5780601f106108ff5761010080835404028352916020019161092a565b820191906000526020600020905b81548152906001019060200180831161090d57829003601f168201915b5050505050905090565b600061093f82612650565b61097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610975906149d1565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109c482610f8f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90614a31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a546126bc565b73ffffffffffffffffffffffffffffffffffffffff161480610a835750610a8281610a7d6126bc565b6122c8565b5b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990614951565b60405180910390fd5b610acc83836126c4565b505050565b6060610be4826040518060400160405280600481526020017f464f4f54000000000000000000000000000000000000000000000000000000008152506010805480602002602001604051908101604052809291908181526020016000905b82821015610bdb578382906000526020600020018054610b4e90614d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7a90614d45565b8015610bc75780601f10610b9c57610100808354040283529160200191610bc7565b820191906000526020600020905b815481529060010190602001808311610baa57829003601f168201915b505050505081526020019060010190610b2f565b5050505061277d565b9050919050565b601e81565b6000600880549050905090565b610c0e610c086126bc565b82612c4e565b610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490614a51565b60405180910390fd5b610c58838383612d2c565b505050565b6000610c688361115b565b8210610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090614871565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b606481565b610d0f6126bc565b73ffffffffffffffffffffffffffffffffffffffff16610d2d61129b565b73ffffffffffffffffffffffffffffffffffffffff1614610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a906149f1565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610dc157600080fd5b565b610dde838383604051806020016040528060008152506117db565b505050565b6002600a541415610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2090614a91565b60405180910390fd5b6002600a81905550610e396126bc565b73ffffffffffffffffffffffffffffffffffffffff16610e5761129b565b73ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea4906149f1565b60405180910390fd5b610ec36064612710612f8890919063ffffffff16565b8110158015610ed3575061271081105b610edc57600080fd5b610eed610ee761129b565b82612f9e565b6001600a8190555050565b6000610f02610bf0565b8210610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90614a71565b60405180910390fd5b60088281548110610f7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90614991565b60405180910390fd5b80915050919050565b6060611154826040518060400160405280600481526020017f4e45434b000000000000000000000000000000000000000000000000000000008152506012805480602002602001604051908101604052809291908181526020016000905b8282101561114b5783829060005260206000200180546110be90614d45565b80601f01602080910402602001604051908101604052809291908181526020018280546110ea90614d45565b80156111375780601f1061110c57610100808354040283529160200191611137565b820191906000526020600020905b81548152906001019060200180831161111a57829003601f168201915b50505050508152602001906001019061109f565b5050505061277d565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390614971565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61121b6126bc565b73ffffffffffffffffffffffffffffffffffffffff1661123961129b565b73ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611286906149f1565b60405180910390fd5b6112996000612fbc565b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546112d490614d45565b80601f016020809104026020016040519081016040528092919081815260200182805461130090614d45565b801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b5050505050905090565b606061146a826040518060400160405280600481526020017f4845414400000000000000000000000000000000000000000000000000000000815250600f805480602002602001604051908101604052809291908181526020016000905b828210156114615783829060005260206000200180546113d490614d45565b80601f016020809104026020016040519081016040528092919081815260200182805461140090614d45565b801561144d5780601f106114225761010080835404028352916020019161144d565b820191906000526020600020905b81548152906001019060200180831161143057829003601f168201915b5050505050815260200190600101906113b5565b5050505061277d565b9050919050565b6060611584826040518060400160405280600681526020017f574541504f4e0000000000000000000000000000000000000000000000000000815250600d805480602002602001604051908101604052809291908181526020016000905b8282101561157b5783829060005260206000200180546114ee90614d45565b80601f016020809104026020016040519081016040528092919081815260200182805461151a90614d45565b80156115675780601f1061153c57610100808354040283529160200191611567565b820191906000526020600020905b81548152906001019060200180831161154a57829003601f168201915b5050505050815260200190600101906114cf565b5050505061277d565b9050919050565b6115a16064612710612f8890919063ffffffff16565b6115a9610bf0565b106115b357600080fd5b600081116115c057600080fd5b601e8111156115ce57600080fd5b6115e46064612710612f8890919063ffffffff16565b816115ed610bf0565b6115f79190614b7a565b111561160257600080fd5b3481600c546116119190614c01565b1461161b57600080fd5b60005b81811015611650576000611630610bf0565b905061163c3382612f9e565b50808061164890614da8565b91505061161e565b5050565b61165c6126bc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c190614911565b60405180910390fd5b80600560006116d76126bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117846126bc565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117c99190614834565b60405180910390a35050565b61271081565b6117ec6117e66126bc565b83612c4e565b61182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290614a51565b60405180910390fd5b61183784848484613082565b50505050565b6060611847613d4a565b604051806101e001604052806101bf815260200161574b6101bf9139816000600f811061189d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506118ae83611471565b816001600f81106118e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060600160405280602881526020016155d860289139816002600f8110611943577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506119548361235c565b816003600f811061198e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060600160405280602981526020016156b960299139816004600f81106119e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506119fa83611357565b816005600f8110611a34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180606001604052806029815260200161569060299139816006600f8110611a8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250611aa083610ad1565b816007600f8110611ada577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180606001604052806029815260200161572260299139816008600f8110611b35577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250611b468361219e565b816009600f8110611b80577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060405180606001604052806029815260200161590a6029913981600a600f8110611bdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250611bec83611041565b81600b600f8110611c26577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060600160405280602881526020016155b06028913981600c600f8110611c81577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250611c92836130de565b81600d600f8110611ccc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060c00160405280609081526020016156006090913981600e600f8110611d27577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506000816000600f8110611d6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151826001600f8110611daa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836002600f8110611de9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846003600f8110611e28577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856004600f8110611e67577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151866005600f8110611ea6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151876006600f8110611ee5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151886007600f8110611f24577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151896008600f8110611f63577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151604051602001611f8099989796959493929190614609565b604051602081830303815290604052905080826009600f8110611fcc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015183600a600f811061200b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015184600b600f811061204a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015185600c600f8110612089577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015186600d600f81106120c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015187600e600f8110612107577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015160405160200161212297969594939291906145a4565b6040516020818303038152906040529050600061216f612141866130de565b61214a8461328b565b60405160200161215b929190614766565b60405160208183030381529060405261328b565b90508060405160200161218291906147ab565b6040516020818303038152906040529150819350505050919050565b60606122b1826040518060400160405280600481526020017f48414e44000000000000000000000000000000000000000000000000000000008152506011805480602002602001604051908101604052809291908181526020016000905b828210156122a857838290600052602060002001805461221b90614d45565b80601f016020809104026020016040519081016040528092919081815260200182805461224790614d45565b80156122945780601f1061226957610100808354040283529160200191612294565b820191906000526020600020905b81548152906001019060200180831161227757829003601f168201915b5050505050815260200190600101906121fc565b5050505061277d565b9050919050565b6000600c54905090565b600c5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606061246f826040518060400160405280600581526020017f4348455354000000000000000000000000000000000000000000000000000000815250600e805480602002602001604051908101604052809291908181526020016000905b828210156124665783829060005260206000200180546123d990614d45565b80601f016020809104026020016040519081016040528092919081815260200182805461240590614d45565b80156124525780601f1061242757610100808354040283529160200191612452565b820191906000526020600020905b81548152906001019060200180831161243557829003601f168201915b5050505050815260200190600101906123ba565b5050505061277d565b9050919050565b61247e6126bc565b73ffffffffffffffffffffffffffffffffffffffff1661249c61129b565b73ffffffffffffffffffffffffffffffffffffffff16146124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e9906149f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612559906148b1565b60405180910390fd5b61256b81612fbc565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061263957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612649575061264882613449565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661273783610f8f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b606060006127b38461278e876130de565b60405160200161279f929190614580565b6040516020818303038152906040526134b3565b90506000838451836127c59190614df1565b815181106127fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060006065836128159190614df1565b9050604f811115612897578160138080549050856128339190614df1565b8154811061286a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001604051602001612885929190614688565b60405160208183030381529060405291505b60598110612c41576128a7613d72565b60148080549050856128b99190614df1565b815481106128f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001805461290590614d45565b80601f016020809104026020016040519081016040528092919081815260200182805461293190614d45565b801561297e5780601f106129535761010080835404028352916020019161297e565b820191906000526020600020905b81548152906001019060200180831161296157829003601f168201915b5050505050816000600281106129bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060158080549050856129d79190614df1565b81548110612a0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018054612a2390614d45565b80601f0160208091040260200160405190810160405280929190818152602001828054612a4f90614d45565b8015612a9c5780601f10612a7157610100808354040283529160200191612a9c565b820191906000526020600020905b815481529060010190602001808311612a7f57829003601f168201915b505050505081600160028110612adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506061821415612b935780600060028110612b26577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015181600160028110612b65577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015184604051602001612b7d93929190614709565b6040516020818303038152906040529250612c3f565b605f8210612c3e5780600060028110612bd5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015181600160028110612c14577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015184604051602001612c2c939291906146b7565b60405160208183030381529060405292505b5b505b8193505050509392505050565b6000612c5982612650565b612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f90614931565b60405180910390fd5b6000612ca383610f8f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d1257508373ffffffffffffffffffffffffffffffffffffffff16612cfa84610934565b73ffffffffffffffffffffffffffffffffffffffff16145b80612d235750612d2281856122c8565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612d4c82610f8f565b73ffffffffffffffffffffffffffffffffffffffff1614612da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9990614a11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e09906148f1565b60405180910390fd5b612e1d8383836134e6565b612e286000826126c4565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e789190614c5b565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ecf9190614b7a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008183612f969190614c5b565b905092915050565b612fb88282604051806020016040528060008152506135fa565b5050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61308d848484612d2c565b61309984848484613655565b6130d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cf90614891565b60405180910390fd5b50505050565b60606000821415613126576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613286565b600082905060005b6000821461315857808061314190614da8565b915050600a826131519190614bd0565b915061312e565b60008167ffffffffffffffff81111561319a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156131cc5781602001600182028036833780820191505090505b5090505b6000851461327f576001826131e59190614c5b565b9150600a856131f49190614df1565b60306132009190614b7a565b60f81b81838151811061323c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856132789190614bd0565b94506131d0565b8093505050505b919050565b606060008251905060008114156132b45760405180602001604052806000815250915050613444565b600060036002836132c59190614b7a565b6132cf9190614bd0565b60046132db9190614c01565b905060006020826132ec9190614b7a565b67ffffffffffffffff81111561332b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561335d5781602001600182028036833780820191505090505b50905060006040518060600160405280604081526020016156e2604091399050600181016020830160005b868110156134015760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050613388565b50600386066001811461341b576002811461342b57613436565b613d3d60f01b6002830352613436565b603d60f81b60018303525b508484525050819450505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000816040516020016134c69190614569565b6040516020818303038152906040528051906020012060001c9050919050565b6134f18383836137ec565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135345761352f816137f1565b613573565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461357257613571838261383a565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135b6576135b1816139a7565b6135f5565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146135f4576135f38282613aea565b5b5b505050565b6136048383613b69565b6136116000848484613655565b613650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364790614891565b60405180910390fd5b505050565b60006136768473ffffffffffffffffffffffffffffffffffffffff16613d37565b156137df578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261369f6126bc565b8786866040518563ffffffff1660e01b81526004016136c194939291906147e8565b602060405180830381600087803b1580156136db57600080fd5b505af192505050801561370c57506040513d601f19601f82011682018060405250810190613709919061403a565b60015b61378f573d806000811461373c576040519150601f19603f3d011682016040523d82523d6000602084013e613741565b606091505b50600081511415613787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377e90614891565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506137e4565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016138478461115b565b6138519190614c5b565b9050600060076000848152602001908152602001600020549050818114613936576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506139bb9190614c5b565b9050600060096000848152602001908152602001600020549050600060088381548110613a11577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110613a59577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613ace577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000613af58361115b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bd0906149b1565b60405180910390fd5b613be281612650565b15613c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c19906148d1565b60405180910390fd5b613c2e600083836134e6565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c7e9190614b7a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b604051806101e00160405280600f905b6060815260200190600190039081613d5a5790505090565b60405180604001604052806002905b6060815260200190600190039081613d815790505090565b6000613dac613da784614af1565b614acc565b905082815260208101848484011115613dc457600080fd5b613dcf848285614d03565b509392505050565b600081359050613de681615553565b92915050565b600081359050613dfb8161556a565b92915050565b600081359050613e1081615581565b92915050565b600081519050613e2581615581565b92915050565b600082601f830112613e3c57600080fd5b8135613e4c848260208601613d99565b91505092915050565b600081359050613e6481615598565b92915050565b600060208284031215613e7c57600080fd5b6000613e8a84828501613dd7565b91505092915050565b60008060408385031215613ea657600080fd5b6000613eb485828601613dd7565b9250506020613ec585828601613dd7565b9150509250929050565b600080600060608486031215613ee457600080fd5b6000613ef286828701613dd7565b9350506020613f0386828701613dd7565b9250506040613f1486828701613e55565b9150509250925092565b60008060008060808587031215613f3457600080fd5b6000613f4287828801613dd7565b9450506020613f5387828801613dd7565b9350506040613f6487828801613e55565b925050606085013567ffffffffffffffff811115613f8157600080fd5b613f8d87828801613e2b565b91505092959194509250565b60008060408385031215613fac57600080fd5b6000613fba85828601613dd7565b9250506020613fcb85828601613dec565b9150509250929050565b60008060408385031215613fe857600080fd5b6000613ff685828601613dd7565b925050602061400785828601613e55565b9150509250929050565b60006020828403121561402357600080fd5b600061403184828501613e01565b91505092915050565b60006020828403121561404c57600080fd5b600061405a84828501613e16565b91505092915050565b60006020828403121561407557600080fd5b600061408384828501613e55565b91505092915050565b61409581614c8f565b82525050565b6140a481614ca1565b82525050565b60006140b582614b37565b6140bf8185614b4d565b93506140cf818560208601614d12565b6140d881614ede565b840191505092915050565b60006140ee82614b42565b6140f88185614b5e565b9350614108818560208601614d12565b61411181614ede565b840191505092915050565b600061412782614b42565b6141318185614b6f565b9350614141818560208601614d12565b80840191505092915050565b6000815461415a81614d45565b6141648186614b6f565b9450600182166000811461417f5760018114614190576141c3565b60ff198316865281860193506141c3565b61419985614b22565b60005b838110156141bb5781548189015260018201915060208101905061419c565b838801955050505b50505092915050565b60006141d9604183614b6f565b91506141e482614eef565b604182019050919050565b60006141fc602b83614b5e565b915061420782614f64565b604082019050919050565b600061421f603283614b5e565b915061422a82614fb3565b604082019050919050565b6000614242602683614b5e565b915061424d82615002565b604082019050919050565b6000614265601c83614b5e565b915061427082615051565b602082019050919050565b6000614288602483614b5e565b91506142938261507a565b604082019050919050565b60006142ab601983614b5e565b91506142b6826150c9565b602082019050919050565b60006142ce600283614b6f565b91506142d9826150f2565b600282019050919050565b60006142f1602c83614b5e565b91506142fc8261511b565b604082019050919050565b6000614314600183614b6f565b915061431f8261516a565b600182019050919050565b6000614337603883614b5e565b915061434282615193565b604082019050919050565b600061435a600183614b6f565b9150614365826151e2565b600182019050919050565b600061437d601383614b6f565b91506143888261520b565b601382019050919050565b60006143a0602a83614b5e565b91506143ab82615234565b604082019050919050565b60006143c3602983614b5e565b91506143ce82615283565b604082019050919050565b60006143e6600283614b6f565b91506143f1826152d2565b600282019050919050565b6000614409602083614b5e565b9150614414826152fb565b602082019050919050565b600061442c602c83614b5e565b915061443782615324565b604082019050919050565b600061444f602083614b5e565b915061445a82615373565b602082019050919050565b6000614472602983614b5e565b915061447d8261539c565b604082019050919050565b6000614495602183614b5e565b91506144a0826153eb565b604082019050919050565b60006144b8601d83614b6f565b91506144c38261543a565b601d82019050919050565b60006144db600383614b6f565b91506144e682615463565b600382019050919050565b60006144fe603183614b5e565b91506145098261548c565b604082019050919050565b6000614521602c83614b5e565b915061452c826154db565b604082019050919050565b6000614544601f83614b5e565b915061454f8261552a565b602082019050919050565b61456381614cf9565b82525050565b6000614575828461411c565b915081905092915050565b600061458c828561411c565b9150614598828461411c565b91508190509392505050565b60006145b0828a61411c565b91506145bc828961411c565b91506145c8828861411c565b91506145d4828761411c565b91506145e0828661411c565b91506145ec828561411c565b91506145f8828461411c565b915081905098975050505050505050565b6000614615828c61411c565b9150614621828b61411c565b915061462d828a61411c565b9150614639828961411c565b9150614645828861411c565b9150614651828761411c565b915061465d828661411c565b9150614669828561411c565b9150614675828461411c565b91508190509a9950505050505050505050565b6000614694828561411c565b915061469f82614307565b91506146ab828461414d565b91508190509392505050565b60006146c28261434d565b91506146ce828661411c565b91506146d982614307565b91506146e5828561411c565b91506146f0826142c1565b91506146fc828461411c565b9150819050949350505050565b60006147148261434d565b9150614720828661411c565b915061472b82614307565b9150614737828561411c565b9150614742826142c1565b915061474e828461411c565b9150614759826144ce565b9150819050949350505050565b600061477182614370565b915061477d828561411c565b9150614788826141cc565b9150614794828461411c565b915061479f826143d9565b91508190509392505050565b60006147b6826144ab565b91506147c2828461411c565b915081905092915050565b60006020820190506147e2600083018461408c565b92915050565b60006080820190506147fd600083018761408c565b61480a602083018661408c565b614817604083018561455a565b818103606083015261482981846140aa565b905095945050505050565b6000602082019050614849600083018461409b565b92915050565b6000602082019050818103600083015261486981846140e3565b905092915050565b6000602082019050818103600083015261488a816141ef565b9050919050565b600060208201905081810360008301526148aa81614212565b9050919050565b600060208201905081810360008301526148ca81614235565b9050919050565b600060208201905081810360008301526148ea81614258565b9050919050565b6000602082019050818103600083015261490a8161427b565b9050919050565b6000602082019050818103600083015261492a8161429e565b9050919050565b6000602082019050818103600083015261494a816142e4565b9050919050565b6000602082019050818103600083015261496a8161432a565b9050919050565b6000602082019050818103600083015261498a81614393565b9050919050565b600060208201905081810360008301526149aa816143b6565b9050919050565b600060208201905081810360008301526149ca816143fc565b9050919050565b600060208201905081810360008301526149ea8161441f565b9050919050565b60006020820190508181036000830152614a0a81614442565b9050919050565b60006020820190508181036000830152614a2a81614465565b9050919050565b60006020820190508181036000830152614a4a81614488565b9050919050565b60006020820190508181036000830152614a6a816144f1565b9050919050565b60006020820190508181036000830152614a8a81614514565b9050919050565b60006020820190508181036000830152614aaa81614537565b9050919050565b6000602082019050614ac6600083018461455a565b92915050565b6000614ad6614ae7565b9050614ae28282614d77565b919050565b6000604051905090565b600067ffffffffffffffff821115614b0c57614b0b614eaf565b5b614b1582614ede565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614b8582614cf9565b9150614b9083614cf9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614bc557614bc4614e22565b5b828201905092915050565b6000614bdb82614cf9565b9150614be683614cf9565b925082614bf657614bf5614e51565b5b828204905092915050565b6000614c0c82614cf9565b9150614c1783614cf9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c5057614c4f614e22565b5b828202905092915050565b6000614c6682614cf9565b9150614c7183614cf9565b925082821015614c8457614c83614e22565b5b828203905092915050565b6000614c9a82614cd9565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614d30578082015181840152602081019050614d15565b83811115614d3f576000848401525b50505050565b60006002820490506001821680614d5d57607f821691505b60208210811415614d7157614d70614e80565b5b50919050565b614d8082614ede565b810181811067ffffffffffffffff82111715614d9f57614d9e614eaf565b5b80604052505050565b6000614db382614cf9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614de657614de5614e22565b5b600182019050919050565b6000614dfc82614cf9565b9150614e0783614cf9565b925082614e1757614e16614e51565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f222c20226465736372697074696f6e223a2022506c756e646572222c2022696d60008201527f616765223a2022646174613a696d6167652f7376672b786d6c3b62617365363460208201527f2c00000000000000000000000000000000000000000000000000000000000000604082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f2220000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2000000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f2200000000000000000000000000000000000000000000000000000000000000600082015250565b7f7b226e616d65223a2022506c756e646572202300000000000000000000000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f202b310000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61555c81614c8f565b811461556757600080fd5b50565b61557381614ca1565b811461557e57600080fd5b50565b61558a81614cad565b811461559557600080fd5b50565b6155a181614cf9565b81146155ac57600080fd5b5056fe3c2f746578743e3c7465787420783d223238302220793d2235302220636c6173733d226964223e233c2f746578743e3c7465787420783d2232352220793d2239302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d223235302220793d223330302220636c6173733d227469746c65223e506c756e6465723c2f746578743e3c6c696e652078313d22313735222079313d22333035222078323d22333130222079323d2233303522207374796c653d227374726f6b653a236261336534613b7374726f6b652d77696474683a31222f3e3c2f7376673e3c2f746578743e3c7465787420783d2232352220793d223133302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2232352220793d223131302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c2f746578743e3c7465787420783d2232352220793d223135302220636c6173733d2262617365223e3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e626173652c202e7469746c652c202e6964207b66696c6c3a20233136313430613b20666f6e742d66616d696c793a206e6f637475726e652d73657269662c20224e6f637475726e65205365726966222c2073657269663b20666f6e742d73697a653a20392e3770783b20666f6e742d7765696768743a203530303b7d202e7469746c657b666f6e742d73697a653a313670783b7d202e69647b666f6e742d73697a653a313270783b2066696c6c3a20236261336534613b7d3c2f7374796c653e3c7374796c653e40696d706f72742075726c282268747470733a2f2f7573652e747970656b69742e6e65742f6e6c6e307173702e63737322293b3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d222362666236376622202f3e3c7465787420783d2232352220793d2237302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2232352220793d223137302220636c6173733d2262617365223ea26469706673582212201a40c3e3d0d1573901935ab6e42186a21f07f5c0b6c6ef079fe97071fb1469e664736f6c63430008040033