[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "uint256", "name": "maxTotalSupplyERC721_", "type": "uint256" }, { "internalType": "string", "name": "baseTokenURI_", "type": "string" }, { "internalType": "address", "name": "initialOwner_", "type": "address" }, { "internalType": "address", "name": "initialMintRecipient_", "type": "address" }, { "internalType": "address", "name": "uniswapV3SwapRouter_", "type": "address" }, { "internalType": "address", "name": "uniswapV3NonfungiblePositionManager_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyExists", "type": "error" }, { "inputs": [], "name": "DecimalsTooLow", "type": "error" }, { "inputs": [], "name": "ERC404UniswapV3ExemptFactoryMismatch", "type": "error" }, { "inputs": [], "name": "ERC404UniswapV3ExemptWETH9Mismatch", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InvalidApproval", "type": "error" }, { "inputs": [], "name": "InvalidExemption", "type": "error" }, { "inputs": [], "name": "InvalidOperator", "type": "error" }, { "inputs": [], "name": "InvalidRecipient", "type": "error" }, { "inputs": [], "name": "InvalidSender", "type": "error" }, { "inputs": [], "name": "InvalidSigner", "type": "error" }, { "inputs": [], "name": "InvalidSpender", "type": "error" }, { "inputs": [], "name": "InvalidTokenId", "type": "error" }, { "inputs": [], "name": "MintLimitReached", "type": "error" }, { "inputs": [], "name": "NotFound", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnedIndexOverflow", "type": "error" }, { "inputs": [], "name": "PermitDeadlineExpired", "type": "error" }, { "inputs": [], "name": "QueueEmpty", "type": "error" }, { "inputs": [], "name": "QueueFull", "type": "error" }, { "inputs": [], "name": "QueueOutOfBounds", "type": "error" }, { "inputs": [], "name": "RecipientIsERC721TransferExempt", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnsafeRecipient", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "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": "id", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ID_ENCODING_PREFIX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "receivers", "type": "address[]" } ], "name": "airdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "receivers", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "airdropWithAmounts", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "erc20Approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "erc20BalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc20TotalSupply", "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": "value_", "type": "uint256" } ], "name": "erc20TransferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "erc721Approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "erc721BalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc721TotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "erc721TransferExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "erc721TransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getERC721QueueLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "start_", "type": "uint256" }, { "internalType": "uint256", "name": "count_", "type": "uint256" } ], "name": "getERC721TokensInQueue", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "owned", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "erc721Owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" }, { "internalType": "uint256", "name": "deadline_", "type": "uint256" }, { "internalType": "uint8", "name": "v_", "type": "uint8" }, { "internalType": "bytes32", "name": "r_", "type": "bytes32" }, { "internalType": "bytes32", "name": "s_", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "boxAddress", "type": "address" }, { "internalType": "uint256", "name": "from", "type": "uint256" }, { "internalType": "uint256", "name": "to", "type": "uint256" } ], "name": "reveal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "id_", "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": "id_", "type": "uint256" }, { "internalType": "bytes", "name": "data_", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator_", "type": "address" }, { "internalType": "bool", "name": "approved_", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account_", "type": "address" }, { "internalType": "bool", "name": "value_", "type": "bool" } ], "name": "setERC721TransferExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "state_", "type": "bool" } ], "name": "setSelfERC721TransferExempt", "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": "id_", "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": "to_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "units", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
6101006040523480156200001257600080fd5b5060405162007c5238038062007c52833981810160405281019062000038919062001ea8565b81818a8a8a88600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b35760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000aa919062001ff5565b60405180910390fd5b620000c4816200063260201b60201c565b508260039081620000d6919062002253565b508160049081620000e8919062002253565b5060128160ff16101562000128576040517f98790fd500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060ff1660808160ff1681525050608051600a620001479190620024bd565b60a081815250504660c0818152505062000166620006f660201b60201c565b60e081815250505050506000829050620001888360016200078660201b60201c565b6000829050620001a08360016200078660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021291906200250e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029a91906200250e565b73ffffffffffffffffffffffffffffffffffffffff1614620002e8576040517f3338041700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035a91906200250e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e291906200250e565b73ffffffffffffffffffffffffffffffffffffffff161462000430576040517f76a731bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060800160405280606462ffffff1662ffffff1681526020016101f462ffffff1662ffffff168152602001610bb862ffffff1662ffffff16815260200161271062ffffff1662ffffff16815250905060005b6004811015620005c4576000620005a28573ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050991906200250e565b8673ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057b91906200250e565b85856004811062000591576200059062002540565b5b60200201516200087860201b60201c565b9050620005b78160016200078660201b60201c565b8160010191505062000487565b50505050505084600f9081620005db919062002253565b50620005ef8460016200078660201b60201c565b620006028360016200078660201b60201c565b620006238360a051886200061791906200256f565b6200092a60201b60201c565b50505050505050505062002a48565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60036040516200072a919062002669565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200076b959493929190620026ae565b60405160208183030381529060405280519060200120905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007ed576040517fa41e3d3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156200080b57620008058262000a1460201b60201c565b6200081d565b6200081c8262000a5760201b60201c565b5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000803090506000808573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620008bd578583620008c0565b82865b9150915086828287604051602001620008dc939291906200272b565b604051602081830303815290604052805190602001206040516020016200090592919062002888565b6040516020818303038152906040528051906020012060001c93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000991576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f800000000000000000000000000000000000000000000000000000000000000081600554620009c29190620028d2565b1115620009fb576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000a0f6000838362000acc60201b60201c565b505050565b600062000a278262000e4b60201b60201c565b905060005b8181101562000a525762000a468362000e9760201b60201c565b80600101905062000a2c565b505050565b600060a05162000a6d8362000fdf60201b60201c565b62000a7991906200293c565b9050600062000a8e8362000e4b60201b60201c565b905060005b818362000aa1919062002974565b81101562000ac65762000aba846200102860201b60201c565b80600101905062000a93565b50505050565b60008062000ae08562000fdf60201b60201c565b9050600062000af58562000fdf60201b60201c565b905062000b0a868686620011fd60201b60201c565b600062000b1d876200136560201b60201c565b9050600062000b32876200136560201b60201c565b905081801562000b3f5750805b62000e3c57811562000beb57600060a0518462000b5d91906200293c565b60a051600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000bac91906200293c565b62000bb8919062002974565b905060005b8181101562000be35762000bd7896200102860201b60201c565b80600101905062000bbd565b505062000e3b565b801562000c9257600060a051600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c4391906200293c565b60a0518662000c5391906200293c565b62000c5f919062002974565b905060005b8181101562000c8a5762000c7e8a62000e9760201b60201c565b80600101905062000c64565b505062000e3a565b600060a0518762000ca491906200293c565b905060005b8181101562000d8b5760006001600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905062000d05919062002974565b90506000600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811062000d5d5762000d5c62002540565b5b9060005260206000200154905062000d7d8c8c83620013f260201b60201c565b826001019250505062000ca9565b508060a05162000da18b62000fdf60201b60201c565b62000dad91906200293c565b60a0518762000dbd91906200293c565b62000dc9919062002974565b111562000de25762000de18962000e9760201b60201c565b5b8060a0518562000df391906200293c565b60a05162000e078b62000fdf60201b60201c565b62000e1391906200293c565b62000e1f919062002974565b111562000e385762000e37886200102860201b60201c565b5b505b5b5b60019450505050509392505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000efe576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905062000f90919062002974565b8154811062000fa45762000fa362002540565b5b9060005260206000200154905062000fc582600083620013f260201b60201c565b62000fdb8160016200179b60201b90919060201c565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200108f576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620010a36001620018bf60201b60201c565b620010c257620010ba60016200192f60201b60201c565b905062001169565b600660008154620010d390620029af565b919050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6006540362001136576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006547f8000000000000000000000000000000000000000000000000000000000000000620011669190620028d2565b90505b60006200117c8262001a9460201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620011e5576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620011f8818484620013f260201b60201c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362001253578060056000828254620012469190620028d2565b92505081905550620012ac565b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620012a4919062002974565b925050819055505b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620013589190620029fc565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620013eb5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146200160e576009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050620014ef919062002974565b8154811062001503576200150262002540565b5b90600052602060002001549050818114620015a45760006200152b8362001acc60201b60201c565b905081600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811062001582576200158162002540565b5b9060005260206000200181905550620015a2828262001af160201b60201c565b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480620015f657620015f562002a19565b5b60019003818190600052602060002001600090559055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620017235762001655818362001bc560201b60201c565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150556200171d816001600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905062001711919062002974565b62001af160201b60201c565b6200173b565b600b6000828152602001908152602001600020600090555b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600060018360000160009054906101000a90046fffffffffffffffffffffffffffffffff160390508260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff160362001841576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81836001016000836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808360000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b60008160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16149050919050565b6000808260000160109054906101000a90046fffffffffffffffffffffffffffffffff1690508260000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1603620019d3576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600190039050826001016000826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001908152602001600020549150826001016000826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002060009055808360000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050919050565b600080600b600084815260200190815260200160002054905073ffffffffffffffffffffffffffffffffffffffff8116915050919050565b600080600b60008481526020019081526020016000205490508060a01c915050919050565b6000600b600084815260200190815260200160002054905060a07fffffffffffffffffffffffff0000000000000000000000000000000000000000901c82111562001b68576040517ffcb3438c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffff00000000000000000000000000000000000000008260a01b1673ffffffffffffffffffffffffffffffffffffffff821601905080600b600085815260200190815260200160002081905550505050565b6000600b600084815260200190815260200160002054905073ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff0000000000000000000000000000000000000000821601905080600b600085815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62001ca08262001c55565b810181811067ffffffffffffffff8211171562001cc25762001cc162001c66565b5b80604052505050565b600062001cd762001c37565b905062001ce5828262001c95565b919050565b600067ffffffffffffffff82111562001d085762001d0762001c66565b5b62001d138262001c55565b9050602081019050919050565b60005b8381101562001d4057808201518184015260208101905062001d23565b60008484015250505050565b600062001d6362001d5d8462001cea565b62001ccb565b90508281526020810184848401111562001d825762001d8162001c50565b5b62001d8f84828562001d20565b509392505050565b600082601f83011262001daf5762001dae62001c4b565b5b815162001dc184826020860162001d4c565b91505092915050565b600060ff82169050919050565b62001de28162001dca565b811462001dee57600080fd5b50565b60008151905062001e028162001dd7565b92915050565b6000819050919050565b62001e1d8162001e08565b811462001e2957600080fd5b50565b60008151905062001e3d8162001e12565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001e708262001e43565b9050919050565b62001e828162001e63565b811462001e8e57600080fd5b50565b60008151905062001ea28162001e77565b92915050565b60008060008060008060008060006101208a8c03121562001ece5762001ecd62001c41565b5b60008a015167ffffffffffffffff81111562001eef5762001eee62001c46565b5b62001efd8c828d0162001d97565b99505060208a015167ffffffffffffffff81111562001f215762001f2062001c46565b5b62001f2f8c828d0162001d97565b985050604062001f428c828d0162001df1565b975050606062001f558c828d0162001e2c565b96505060808a015167ffffffffffffffff81111562001f795762001f7862001c46565b5b62001f878c828d0162001d97565b95505060a062001f9a8c828d0162001e91565b94505060c062001fad8c828d0162001e91565b93505060e062001fc08c828d0162001e91565b92505061010062001fd48c828d0162001e91565b9150509295985092959850929598565b62001fef8162001e63565b82525050565b60006020820190506200200c600083018462001fe4565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200206557607f821691505b6020821081036200207b576200207a6200201d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620020e57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620020a6565b620020f18683620020a6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620021346200212e620021288462001e08565b62002109565b62001e08565b9050919050565b6000819050919050565b620021508362002113565b620021686200215f826200213b565b848454620020b3565b825550505050565b600090565b6200217f62002170565b6200218c81848462002145565b505050565b5b81811015620021b457620021a860008262002175565b60018101905062002192565b5050565b601f8211156200220357620021cd8162002081565b620021d88462002096565b81016020851015620021e8578190505b62002200620021f78562002096565b83018262002191565b50505b505050565b600082821c905092915050565b6000620022286000198460080262002208565b1980831691505092915050565b600062002243838362002215565b9150826002028217905092915050565b6200225e8262002012565b67ffffffffffffffff8111156200227a576200227962001c66565b5b6200228682546200204c565b62002293828285620021b8565b600060209050601f831160018114620022cb5760008415620022b6578287015190505b620022c2858262002235565b86555062002332565b601f198416620022db8662002081565b60005b828110156200230557848901518255600182019150602085019450602081019050620022de565b8683101562002325578489015162002321601f89168262002215565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620023c857808604811115620023a0576200239f6200233a565b5b6001851615620023b05780820291505b8081029050620023c08562002369565b945062002380565b94509492505050565b600082620023e35760019050620024b6565b81620023f35760009050620024b6565b81600181146200240c576002811462002417576200244d565b6001915050620024b6565b60ff8411156200242c576200242b6200233a565b5b8360020a9150848211156200244657620024456200233a565b5b50620024b6565b5060208310610133831016604e8410600b8410161715620024875782820a9050838111156200248157620024806200233a565b5b620024b6565b62002496848484600162002376565b92509050818404811115620024b057620024af6200233a565b5b81810290505b9392505050565b6000620024ca8262001e08565b9150620024d78362001dca565b9250620025067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620023d1565b905092915050565b60006020828403121562002527576200252662001c41565b5b6000620025378482850162001e91565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006200257c8262001e08565b9150620025898362001e08565b9250828202620025998162001e08565b91508282048414831517620025b357620025b26200233a565b5b5092915050565b600081905092915050565b60008190508160005260206000209050919050565b60008154620025e9816200204c565b620025f58186620025ba565b94506001821660008114620026135760018114620026295762002660565b60ff198316865281151582028601935062002660565b6200263485620025c5565b60005b83811015620026585781548189015260018201915060208101905062002637565b838801955050505b50505092915050565b6000620026778284620025da565b915081905092915050565b6000819050919050565b620026978162002682565b82525050565b620026a88162001e08565b82525050565b600060a082019050620026c560008301886200268c565b620026d460208301876200268c565b620026e360408301866200268c565b620026f260608301856200269d565b62002701608083018462001fe4565b9695505050505050565b600062ffffff82169050919050565b62002725816200270b565b82525050565b600060608201905062002742600083018662001fe4565b62002751602083018562001fe4565b6200276060408301846200271a565b949350505050565b600081905092915050565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6000620027ab60018362002768565b9150620027b88262002773565b600182019050919050565b60008160601b9050919050565b6000620027dd82620027c3565b9050919050565b6000620027f182620027d0565b9050919050565b6200280d620028078262001e63565b620027e4565b82525050565b6000819050919050565b620028326200282c8262002682565b62002813565b82525050565b7fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54600082015250565b60006200287060208362002768565b91506200287d8262002838565b602082019050919050565b600062002895826200279c565b9150620028a38285620027f8565b601482019150620028b582846200281d565b602082019150620028c68262002861565b91508190509392505050565b6000620028df8262001e08565b9150620028ec8362001e08565b92508282019050808211156200290757620029066200233a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620029498262001e08565b9150620029568362001e08565b9250826200296957620029686200290d565b5b828204905092915050565b6000620029818262001e08565b91506200298e8362001e08565b9250828203905081811115620029a957620029a86200233a565b5b92915050565b6000620029bc8262001e08565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620029f157620029f06200233a565b5b600182019050919050565b600060208201905062002a1360008301846200269d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60805160a05160c05160e05161516e62002ae46000396000610d1501526000610ce1015260008181610c7a0152818161105a0152818161117f01528181611777015281816120f30152818161284d015281816128790152818161291e01528181612989015281816129e901528181612aef01528181612b2301528181612b6a01528181612b96015261327f01526000610bda015261516e6000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806389fb4c661161015c578063c6e672b9116100ce578063dd62ed3e11610087578063dd62ed3e146107fc578063dd6376991461082c578063dfabc03314610848578063e985e9c514610864578063f2fde38b14610894578063f780bc1a146108b05761027f565b8063c6e672b91461072a578063c87b56dd14610746578063cd560f4814610776578063d505accf14610792578063d547cfb7146107ae578063d96ca0b9146107cc5761027f565b8063a22cb46511610120578063a22cb46514610644578063a9059cbb14610660578063b1ab931714610690578063b3f9ea34146106c0578063b88d4fde146106f0578063c5ab3ba61461070c5761027f565b806389fb4c66146105b05780638a696e50146105ce5780638da5cb5b146105ea57806395d89b4114610608578063976a8435146106265761027f565b80633644e515116101f55780636352211e116101b95780636352211e146104dc5780636e8f624b1461050c57806370a082311461052a578063715018a61461055a578063729ad39e146105645780637ecebe00146105805761027f565b80633644e5151461043857806342842e0e146104565780634d966072146104725780634f02c420146104a257806355f804b3146104c05761027f565b806309674eb01161024757806309674eb01461036257806309f0ef651461038057806318160ddd146103b057806323b872dd146103ce578063313ce567146103fe578063348d501c1461041c5761027f565b806301ffc9a71461028457806302519da3146102b457806306fdde03146102e4578063081812fc14610302578063095ea7b314610332575b600080fd5b61029e60048036038101906102999190613bf4565b6108e0565b6040516102ab9190613c3c565b60405180910390f35b6102ce60048036038101906102c99190613cb5565b6109b2565b6040516102db9190613cfb565b60405180910390f35b6102ec6109fb565b6040516102f99190613da6565b60405180910390f35b61031c60048036038101906103179190613df4565b610a89565b6040516103299190613e30565b60405180910390f35b61034c60048036038101906103479190613e4b565b610abc565b6040516103599190613c3c565b60405180910390f35b61036a610af7565b6040516103779190613cfb565b60405180910390f35b61039a60048036038101906103959190613cb5565b610b08565b6040516103a79190613c3c565b60405180910390f35b6103b8610b94565b6040516103c59190613cfb565b60405180910390f35b6103e860048036038101906103e39190613e8b565b610b9a565b6040516103f59190613c3c565b60405180910390f35b610406610bd8565b6040516104139190613efa565b60405180910390f35b61043660048036038101906104319190614120565b610bfc565b005b610440610cdd565b60405161044d91906141b1565b60405180910390f35b610470600480360381019061046b9190613e8b565b610d3a565b005b61048c60048036038101906104879190613e4b565b610d5a565b6040516104999190613c3c565b60405180910390f35b6104aa610eb1565b6040516104b79190613cfb565b60405180910390f35b6104da60048036038101906104d59190614227565b610eb7565b005b6104f660048036038101906104f19190613df4565b610ed5565b6040516105039190613e30565b60405180910390f35b610514610f8c565b6040516105219190613cfb565b60405180910390f35b610544600480360381019061053f9190613cb5565b610fb0565b6040516105519190613cfb565b60405180910390f35b610562610fc8565b005b61057e60048036038101906105799190614274565b610fdc565b005b61059a60048036038101906105959190613cb5565b611097565b6040516105a79190613cfb565b60405180910390f35b6105b86110af565b6040516105c59190613cfb565b60405180910390f35b6105e860048036038101906105e391906142e9565b6110b9565b005b6105f26110c6565b6040516105ff9190613e30565b60405180910390f35b6106106110ef565b60405161061d9190613da6565b60405180910390f35b61062e61117d565b60405161063b9190613cfb565b60405180910390f35b61065e60048036038101906106599190614316565b6111a1565b005b61067a60048036038101906106759190613e4b565b611304565b6040516106879190613c3c565b60405180910390f35b6106aa60048036038101906106a59190613cb5565b61137e565b6040516106b79190614414565b60405180910390f35b6106da60048036038101906106d59190613cb5565b611415565b6040516106e79190613cfb565b60405180910390f35b61070a600480360381019061070591906144eb565b611461565b005b6107146115d7565b6040516107219190613cfb565b60405180910390f35b610744600480360381019061073f9190614316565b6115e1565b005b610760600480360381019061075b9190613df4565b6115f7565b60405161076d9190613da6565b60405180910390f35b610790600480360381019061078b919061456e565b61162b565b005b6107ac60048036038101906107a79190614619565b6117b7565b005b6107b6611b44565b6040516107c39190613da6565b60405180910390f35b6107e660048036038101906107e19190613e8b565b611bd2565b6040516107f39190613c3c565b60405180910390f35b610816600480360381019061081191906146bb565b611de9565b6040516108239190613cfb565b60405180910390f35b61084660048036038101906108419190613e8b565b611e0e565b005b610862600480360381019061085d9190613e4b565b612127565b005b61087e600480360381019061087991906146bb565b6122e0565b60405161088b9190613c3c565b60405180910390f35b6108ae60048036038101906108a99190613cb5565b61230f565b005b6108ca60048036038101906108c591906146fb565b612395565b6040516108d79190614414565b60405180910390f35b60007fcaf91ff5000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ab57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60038054610a089061476a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a349061476a565b8015610a815780601f10610a5657610100808354040283529160200191610a81565b820191906000526020600020905b815481529060010190602001808311610a6457829003601f168201915b505050505081565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ac782612451565b15610adb57610ad68383612127565b610aec565b610ae58383610d5a565b9050610af1565b600190505b92915050565b6000610b0360016124a9565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610b8d5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b60055481565b6000610ba582612451565b15610bba57610bb5848484611e0e565b610bcc565b610bc5848484611bd2565b9050610bd1565b600190505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610c04612507565b600182511015610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c40906147e7565b60405180910390fd5b60005b8251811015610cd8576000838281518110610c6a57610c69614807565b5b60200260200101519050610cc3817f0000000000000000000000000000000000000000000000000000000000000000858581518110610cac57610cab614807565b5b6020026020010151610cbe9190614865565b611304565b50508080610cd0906148a7565b915050610c4c565b505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610d1357610d0e61258e565b610d35565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b610d5583838360405180602001604052806000815250611461565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dc1576040517f5461585f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e9f9190613cfb565b60405180910390a36001905092915050565b60065481565b610ebf612507565b8181600f9182610ed0929190614aa6565b505050565b6000610ee08261261a565b9050610eeb82612451565b610f21576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f87576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b7f800000000000000000000000000000000000000000000000000000000000000081565b60076020528060005260406000206000915090505481565b610fd0612507565b610fda6000612652565b565b610fe4612507565b600181511015611029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611020906147e7565b60405180910390fd5b60005b815181101561109357600082828151811061104a57611049614807565b5b6020026020010151905061107e817f0000000000000000000000000000000000000000000000000000000000000000611304565b5050808061108b906148a7565b91505061102c565b5050565b600e6020528060005260406000206000915090505481565b6000600554905090565b6110c33382612716565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600480546110fc9061476a565b80601f01602080910402602001604051908101604052809291908181526020018280546111289061476a565b80156111755780601f1061114a57610100808354040283529160200191611175565b820191906000526020600020905b81548152906001019060200180831161115857829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611207576040517fccea9e6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112f89190613c3c565b60405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361136b576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113763384846127f5565b905092915050565b6060600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561140957602002820191906000526020600020905b8154815260200190600101908083116113f5575b50505050509050919050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b61146a82612451565b6114a0576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ab848484610b9a565b5060008373ffffffffffffffffffffffffffffffffffffffff163b1415801561159a575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016115359493929190614bcb565b6020604051808303816000875af1158015611554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115789190614c2c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156115d1576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000600654905090565b6115e9612507565b6115f38282612716565b5050565b6060600f61160483612bf5565b604051602001611615929190614d18565b6040516020818303038152906040529050919050565b611633612507565b818111611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90614d88565b60405180910390fd5b600083905060008390505b828110156117b05760008273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016116c39190613cfb565b602060405180830381865afa1580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117049190614dbd565b90508273ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b815260040161173f9190613cfb565b600060405180830381600087803b15801561175957600080fd5b505af115801561176d573d6000803e3d6000fd5b5050505061179b817f0000000000000000000000000000000000000000000000000000000000000000611304565b505080806117a8906148a7565b915050611680565b5050505050565b428410156117f1576040517f05787bdf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fa85612451565b15611831576040517f1f3e0de800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611897576040517f5461585f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060016118a3610cdd565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600e60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b60405160200161192b96959493929190614dea565b60405160208183030381529060405280519060200120604051602001611952929190614eb8565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516119889493929190614eef565b6020604051602081039080840390855afa1580156119aa573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611a1d57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611a54576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611b339190613cfb565b60405180910390a350505050505050565b600f8054611b519061476a565b80601f0160208091040260200160405190810160405280929190818152602001828054611b7d9061476a565b8015611bca5780601f10611b9f57610100808354040283529160200191611bca565b820191906000526020600020905b815481529060010190602001808311611bad57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c39576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c9f576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611dd4578281611d539190614f34565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611ddf8585856127f5565b9150509392505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e74576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eda576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ee38161261a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f47576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561200a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207557506009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156120ac576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120b582610b08565b156120ec576040517f5ce7539700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61211783837f0000000000000000000000000000000000000000000000000000000000000000612cc3565b612122838383612e23565b505050565b60006121328261261a565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121f75750600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561222e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b612317612507565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123895760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016123809190613e30565b60405180910390fd5b61239281612652565b50565b606060008267ffffffffffffffff8111156123b3576123b2613f1a565b5b6040519080825280602002602001820160405280156123e15781602001602082028036833780820191505090505b50905060008490505b83856123f69190614f68565b8110156124465761241181600161319b90919063ffffffff16565b82868361241e9190614f34565b8151811061242f5761242e614807565b5b6020026020010181815250508060010190506123ea565b508091505092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000821180156124a257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b9050919050565b60008160000160009054906101000a90046fffffffffffffffffffffffffffffffff168260000160109054906101000a90046fffffffffffffffffffffffffffffffff16036fffffffffffffffffffffffffffffffff169050919050565b61250f613242565b73ffffffffffffffffffffffffffffffffffffffff1661252d6110c6565b73ffffffffffffffffffffffffffffffffffffffff161461258c57612550613242565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016125839190613e30565b60405180910390fd5b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60036040516125c0919061503f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016125ff959493929190615056565b60405160208183030381529060405280519060200120905090565b600080600b600084815260200190815260200160002054905073ffffffffffffffffffffffffffffffffffffffff8116915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361277c576040517fa41e3d3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156127905761278b8261324a565b61279a565b6127998261327b565b5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080612801856109b2565b9050600061280e856109b2565b905061281b868686612cc3565b600061282687610b08565b9050600061283387610b08565b905081801561283f5750805b612be65781156129145760007f00000000000000000000000000000000000000000000000000000000000000008461287791906150d8565b7f0000000000000000000000000000000000000000000000000000000000000000600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e291906150d8565b6128ec9190614f34565b905060005b8181101561290d57612902896132f0565b8060010190506128f1565b5050612be5565b80156129e55760007f0000000000000000000000000000000000000000000000000000000000000000600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298791906150d8565b7f0000000000000000000000000000000000000000000000000000000000000000866129b391906150d8565b6129bd9190614f34565b905060005b818110156129de576129d38a61349c565b8060010190506129c2565b5050612be4565b60007f000000000000000000000000000000000000000000000000000000000000000087612a1391906150d8565b905060005b81811015612aeb5760006001600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612a719190614f34565b90506000600c60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110612ac657612ac5614807565b5b90600052602060002001549050612ade8c8c83612e23565b8260010192505050612a18565b50807f0000000000000000000000000000000000000000000000000000000000000000612b178b6109b2565b612b2191906150d8565b7f000000000000000000000000000000000000000000000000000000000000000087612b4d91906150d8565b612b579190614f34565b1115612b6757612b668961349c565b5b807f000000000000000000000000000000000000000000000000000000000000000085612b9491906150d8565b7f0000000000000000000000000000000000000000000000000000000000000000612bbe8b6109b2565b612bc891906150d8565b612bd29190614f34565b1115612be257612be1886132f0565b5b505b5b5b60019450505050509392505050565b606060006001612c04846135d4565b01905060008167ffffffffffffffff811115612c2357612c22613f1a565b5b6040519080825280601f01601f191660200182016040528015612c555781602001600182028036833780820191505090505b509050600082602001820190505b600115612cb8578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612cac57612cab6150a9565b5b04945060008503612c63575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d15578060056000828254612d099190614f68565b92505081905550612d6c565b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d649190614f34565b925050819055505b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e169190613cfb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613022576009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612f1d9190614f34565b81548110612f2e57612f2d614807565b5b90600052602060002001549050818114612fbb576000612f4d83613727565b905081600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110612fa157612fa0614807565b5b9060005260206000200181905550612fb9828261374c565b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061300a57613009615109565b5b60019003818190600052602060002001600090559055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461312357613060818361381f565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505060019003906000526020600020016000909190919091505561311e816001600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506131199190614f34565b61374c565b61313b565b600b6000828152602001908152602001600020600090555b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006131a6836124a9565b82106131de576040517f580821e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001016000838560000160009054906101000a90046fffffffffffffffffffffffffffffffff16016fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600061325582611415565b905060005b818110156132765761326b8361349c565b80600101905061325a565b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006132a7836109b2565b6132b191906150d8565b905060006132be83611415565b905060005b81836132cf9190614f34565b8110156132ea576132df846132f0565b8060010190506132c3565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613356576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006133626001613891565b613377576133706001613901565b9050613419565b600660008154613386906148a7565b919050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600654036133e8576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006547f80000000000000000000000000000000000000000000000000000000000000006134169190614f68565b90505b60006134248261261a565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461348c576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613497818484612e23565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613502576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506135929190614f34565b815481106135a3576135a2614807565b5b906000526020600020015490506135bc82600083612e23565b6135d0816001613a6590919063ffffffff16565b5050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613632577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613628576136276150a9565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061366f576d04ee2d6d415b85acef81000000008381613665576136646150a9565b5b0492506020810190505b662386f26fc10000831061369e57662386f26fc100008381613694576136936150a9565b5b0492506010810190505b6305f5e10083106136c7576305f5e10083816136bd576136bc6150a9565b5b0492506008810190505b61271083106136ec5761271083816136e2576136e16150a9565b5b0492506004810190505b6064831061370f5760648381613705576137046150a9565b5b0492506002810190505b600a831061371e576001810190505b80915050919050565b600080600b60008481526020019081526020016000205490508060a01c915050919050565b6000600b600084815260200190815260200160002054905060a07fffffffffffffffffffffffff0000000000000000000000000000000000000000901c8211156137c2576040517ffcb3438c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffff00000000000000000000000000000000000000008260a01b1673ffffffffffffffffffffffffffffffffffffffff821601905080600b600085815260200190815260200160002081905550505050565b6000600b600084815260200190815260200160002054905073ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff0000000000000000000000000000000000000000821601905080600b600085815260200190815260200160002081905550505050565b60008160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16149050919050565b6000808260000160109054906101000a90046fffffffffffffffffffffffffffffffff1690508260000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16036139a4576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600190039050826001016000826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001908152602001600020549150826001016000826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002060009055808360000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050919050565b600060018360000160009054906101000a90046fffffffffffffffffffffffffffffffff160390508260000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1603613b0a576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81836001016000836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808360000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613bd181613b9c565b8114613bdc57600080fd5b50565b600081359050613bee81613bc8565b92915050565b600060208284031215613c0a57613c09613b92565b5b6000613c1884828501613bdf565b91505092915050565b60008115159050919050565b613c3681613c21565b82525050565b6000602082019050613c516000830184613c2d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c8282613c57565b9050919050565b613c9281613c77565b8114613c9d57600080fd5b50565b600081359050613caf81613c89565b92915050565b600060208284031215613ccb57613cca613b92565b5b6000613cd984828501613ca0565b91505092915050565b6000819050919050565b613cf581613ce2565b82525050565b6000602082019050613d106000830184613cec565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d50578082015181840152602081019050613d35565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d7882613d16565b613d828185613d21565b9350613d92818560208601613d32565b613d9b81613d5c565b840191505092915050565b60006020820190508181036000830152613dc08184613d6d565b905092915050565b613dd181613ce2565b8114613ddc57600080fd5b50565b600081359050613dee81613dc8565b92915050565b600060208284031215613e0a57613e09613b92565b5b6000613e1884828501613ddf565b91505092915050565b613e2a81613c77565b82525050565b6000602082019050613e456000830184613e21565b92915050565b60008060408385031215613e6257613e61613b92565b5b6000613e7085828601613ca0565b9250506020613e8185828601613ddf565b9150509250929050565b600080600060608486031215613ea457613ea3613b92565b5b6000613eb286828701613ca0565b9350506020613ec386828701613ca0565b9250506040613ed486828701613ddf565b9150509250925092565b600060ff82169050919050565b613ef481613ede565b82525050565b6000602082019050613f0f6000830184613eeb565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f5282613d5c565b810181811067ffffffffffffffff82111715613f7157613f70613f1a565b5b80604052505050565b6000613f84613b88565b9050613f908282613f49565b919050565b600067ffffffffffffffff821115613fb057613faf613f1a565b5b602082029050602081019050919050565b600080fd5b6000613fd9613fd484613f95565b613f7a565b90508083825260208201905060208402830185811115613ffc57613ffb613fc1565b5b835b8181101561402557806140118882613ca0565b845260208401935050602081019050613ffe565b5050509392505050565b600082601f83011261404457614043613f15565b5b8135614054848260208601613fc6565b91505092915050565b600067ffffffffffffffff82111561407857614077613f1a565b5b602082029050602081019050919050565b600061409c6140978461405d565b613f7a565b905080838252602082019050602084028301858111156140bf576140be613fc1565b5b835b818110156140e857806140d48882613ddf565b8452602084019350506020810190506140c1565b5050509392505050565b600082601f83011261410757614106613f15565b5b8135614117848260208601614089565b91505092915050565b6000806040838503121561413757614136613b92565b5b600083013567ffffffffffffffff81111561415557614154613b97565b5b6141618582860161402f565b925050602083013567ffffffffffffffff81111561418257614181613b97565b5b61418e858286016140f2565b9150509250929050565b6000819050919050565b6141ab81614198565b82525050565b60006020820190506141c660008301846141a2565b92915050565b600080fd5b60008083601f8401126141e7576141e6613f15565b5b8235905067ffffffffffffffff811115614204576142036141cc565b5b6020830191508360018202830111156142205761421f613fc1565b5b9250929050565b6000806020838503121561423e5761423d613b92565b5b600083013567ffffffffffffffff81111561425c5761425b613b97565b5b614268858286016141d1565b92509250509250929050565b60006020828403121561428a57614289613b92565b5b600082013567ffffffffffffffff8111156142a8576142a7613b97565b5b6142b48482850161402f565b91505092915050565b6142c681613c21565b81146142d157600080fd5b50565b6000813590506142e3816142bd565b92915050565b6000602082840312156142ff576142fe613b92565b5b600061430d848285016142d4565b91505092915050565b6000806040838503121561432d5761432c613b92565b5b600061433b85828601613ca0565b925050602061434c858286016142d4565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61438b81613ce2565b82525050565b600061439d8383614382565b60208301905092915050565b6000602082019050919050565b60006143c182614356565b6143cb8185614361565b93506143d683614372565b8060005b838110156144075781516143ee8882614391565b97506143f9836143a9565b9250506001810190506143da565b5085935050505092915050565b6000602082019050818103600083015261442e81846143b6565b905092915050565b600080fd5b600067ffffffffffffffff82111561445657614455613f1a565b5b61445f82613d5c565b9050602081019050919050565b82818337600083830152505050565b600061448e6144898461443b565b613f7a565b9050828152602081018484840111156144aa576144a9614436565b5b6144b584828561446c565b509392505050565b600082601f8301126144d2576144d1613f15565b5b81356144e284826020860161447b565b91505092915050565b6000806000806080858703121561450557614504613b92565b5b600061451387828801613ca0565b945050602061452487828801613ca0565b935050604061453587828801613ddf565b925050606085013567ffffffffffffffff81111561455657614555613b97565b5b614562878288016144bd565b91505092959194509250565b60008060006060848603121561458757614586613b92565b5b600061459586828701613ca0565b93505060206145a686828701613ddf565b92505060406145b786828701613ddf565b9150509250925092565b6145ca81613ede565b81146145d557600080fd5b50565b6000813590506145e7816145c1565b92915050565b6145f681614198565b811461460157600080fd5b50565b600081359050614613816145ed565b92915050565b600080600080600080600060e0888a03121561463857614637613b92565b5b60006146468a828b01613ca0565b97505060206146578a828b01613ca0565b96505060406146688a828b01613ddf565b95505060606146798a828b01613ddf565b945050608061468a8a828b016145d8565b93505060a061469b8a828b01614604565b92505060c06146ac8a828b01614604565b91505092959891949750929550565b600080604083850312156146d2576146d1613b92565b5b60006146e085828601613ca0565b92505060206146f185828601613ca0565b9150509250929050565b6000806040838503121561471257614711613b92565b5b600061472085828601613ddf565b925050602061473185828601613ddf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061478257607f821691505b6020821081036147955761479461473b565b5b50919050565b7f44554e453430343a206174206c65617374203120726563656976657200000000600082015250565b60006147d1601c83613d21565b91506147dc8261479b565b602082019050919050565b60006020820190508181036000830152614800816147c4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061487082613ce2565b915061487b83613ce2565b925082820261488981613ce2565b915082820484148315176148a05761489f614836565b5b5092915050565b60006148b282613ce2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148e4576148e3614836565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261495c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261491f565b614966868361491f565b95508019841693508086168417925050509392505050565b6000819050919050565b60006149a361499e61499984613ce2565b61497e565b613ce2565b9050919050565b6000819050919050565b6149bd83614988565b6149d16149c9826149aa565b84845461492c565b825550505050565b600090565b6149e66149d9565b6149f18184846149b4565b505050565b5b81811015614a1557614a0a6000826149de565b6001810190506149f7565b5050565b601f821115614a5a57614a2b816148fa565b614a348461490f565b81016020851015614a43578190505b614a57614a4f8561490f565b8301826149f6565b50505b505050565b600082821c905092915050565b6000614a7d60001984600802614a5f565b1980831691505092915050565b6000614a968383614a6c565b9150826002028217905092915050565b614ab083836148ef565b67ffffffffffffffff811115614ac957614ac8613f1a565b5b614ad3825461476a565b614ade828285614a19565b6000601f831160018114614b0d5760008415614afb578287013590505b614b058582614a8a565b865550614b6d565b601f198416614b1b866148fa565b60005b82811015614b4357848901358255600182019150602085019450602081019050614b1e565b86831015614b605784890135614b5c601f891682614a6c565b8355505b6001600288020188555050505b50505050505050565b600081519050919050565b600082825260208201905092915050565b6000614b9d82614b76565b614ba78185614b81565b9350614bb7818560208601613d32565b614bc081613d5c565b840191505092915050565b6000608082019050614be06000830187613e21565b614bed6020830186613e21565b614bfa6040830185613cec565b8181036060830152614c0c8184614b92565b905095945050505050565b600081519050614c2681613bc8565b92915050565b600060208284031215614c4257614c41613b92565b5b6000614c5084828501614c17565b91505092915050565b600081905092915050565b60008154614c718161476a565b614c7b8186614c59565b94506001821660008114614c965760018114614cab57614cde565b60ff1983168652811515820286019350614cde565b614cb4856148fa565b60005b83811015614cd657815481890152600182019150602081019050614cb7565b838801955050505b50505092915050565b6000614cf282613d16565b614cfc8185614c59565b9350614d0c818560208601613d32565b80840191505092915050565b6000614d248285614c64565b9150614d308284614ce7565b91508190509392505050565b7f44554e453430343a20696e76616c696420696e70757400000000000000000000600082015250565b6000614d72601683613d21565b9150614d7d82614d3c565b602082019050919050565b60006020820190508181036000830152614da181614d65565b9050919050565b600081519050614db781613c89565b92915050565b600060208284031215614dd357614dd2613b92565b5b6000614de184828501614da8565b91505092915050565b600060c082019050614dff60008301896141a2565b614e0c6020830188613e21565b614e196040830187613e21565b614e266060830186613cec565b614e336080830185613cec565b614e4060a0830184613cec565b979650505050505050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614e81600283614c59565b9150614e8c82614e4b565b600282019050919050565b6000819050919050565b614eb2614ead82614198565b614e97565b82525050565b6000614ec382614e74565b9150614ecf8285614ea1565b602082019150614edf8284614ea1565b6020820191508190509392505050565b6000608082019050614f0460008301876141a2565b614f116020830186613eeb565b614f1e60408301856141a2565b614f2b60608301846141a2565b95945050505050565b6000614f3f82613ce2565b9150614f4a83613ce2565b9250828203905081811115614f6257614f61614836565b5b92915050565b6000614f7382613ce2565b9150614f7e83613ce2565b9250828201905080821115614f9657614f95614836565b5b92915050565b600081905092915050565b60008190508160005260206000209050919050565b60008154614fc98161476a565b614fd38186614f9c565b94506001821660008114614fee576001811461500357615036565b60ff1983168652811515820286019350615036565b61500c85614fa7565b60005b8381101561502e5781548189015260018201915060208101905061500f565b838801955050505b50505092915050565b600061504b8284614fbc565b915081905092915050565b600060a08201905061506b60008301886141a2565b61507860208301876141a2565b61508560408301866141a2565b6150926060830185613cec565b61509f6080830184613e21565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006150e382613ce2565b91506150ee83613ce2565b9250826150fe576150fd6150a9565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122050e1bd4f153a5c7b0809a13e1a10a0160509013940d03614a40396b7c733d75f64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000061bc19ffc7e4ce685200f7a227b4d4c49083c51400000000000000000000000022a52c2f353ab84a834ffa71926904c10e8204220000000000000000000000002626664c2603336e57b271c5c0b26f421741e48100000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f1000000000000000000000000000000000000000000000000000000000000000744554e4534303400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000444554e4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f6170692e64756e653430342e636f6d2f6d657461646174612f00000000000000000000000000000000000000000000000000000000000000