[ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "depositAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "dbId", "type": "uint256" } ], "name": "LockGasPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "depositAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "dbId", "type": "uint256" } ], "name": "LockGasPaidERC1155", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "NFTLockStatus", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "NFTLockStatusERC1155", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SaleMint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "depositAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "dbId", "type": "uint256" } ], "name": "UnLockGasPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "depositAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "dbId", "type": "uint256" } ], "name": "UnLockGasPaidERC1155", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "nftLockStatusERC1155", "type": "event" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "LOCKING_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "adminTransferLockedNfts", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "bulkUpdateAllowAddresses", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getAuthor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCreator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getNftLockStatus", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getRoyaltyFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "getTokensByOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256", "name": "dbId", "type": "uint256" } ], "name": "lockGas", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256", "name": "dbId", "type": "uint256" } ], "name": "lockGas", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "lockNFTBulk", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "lockNFTBulk", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "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": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "saleMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "author", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "setAuthor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_collector", "type": "address" } ], "name": "setGasCollector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setTransferApprovedForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newuri", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setlockStatusNFT", "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": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256", "name": "dbId", "type": "uint256" } ], "name": "unLockGas", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256", "name": "dbId", "type": "uint256" } ], "name": "unLockGas", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50604080518082019091526007815266139195111d595b60ca1b60208201526200003b8162000084565b506000805460ff19168155620000529033620000d7565b6200007e7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d7565b6200030a565b7ffeffaec5312afdafc3b8fb7c85361e6d0462807200cbd1283769da4134fa8d0b7ffeffaec5312afdafc3b8fb7c85361e6d0462807200cbd1283769da4134fa8d10620000d283826200023e565b505050565b60008281527fb1f71c0ba2ec939f106d7d4b15b1d8fd0d205b821e122ec2649edf3533a8ea86602081815260408084206001600160a01b03861685529091529091205460ff16620000d2576000838152602082815260408083206001600160a01b03861684529091529020805460ff19166001179055620001553390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001c557607f821691505b602082108103620001e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000d257600081815260208120601f850160051c81016020861015620002155750805b601f850160051c820191505b81811015620002365782815560010162000221565b505050505050565b81516001600160401b038111156200025a576200025a6200019a565b62000272816200026b8454620001b0565b84620001ec565b602080601f831160018114620002aa5760008415620002915750858301515b600019600386901b1c1916600185901b17855562000236565b600085815260208120601f198616915b82811015620002db57888601518255948401946001909101908401620002ba565b5085821015620002fa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61478a806200031a6000396000f3fe6080604052600436106102715760003560e01c80636f27cf641161014f578063cbc28116116100c1578063e985e9c51161007a578063e985e9c51461072a578063efde4cc61461074a578063f0c7dda01461076a578063f242432a1461078a578063f5298aca146107aa578063fdada792146107ca57600080fd5b8063cbc28116146103af578063d48e638a14610619578063d5391393146106a6578063d547741f146106c8578063d773f749146106e8578063df85afc81461070857600080fd5b806391d148541161011357806391d14854146105d9578063933a6f0d146105f95780639e2b8488146106195780639e4c014114610651578063a217fddf14610671578063a22cb4651461068657600080fd5b80636f27cf641461054f578063702f245e1461056f578063731133e91461058f5780638129fc1c146105af5780638456cb59146105c457600080fd5b8063357b8c9e116101e857806344f096fc116101ac57806344f096fc146104975780634908cdff146104b75780634e1273f4146104d75780634e59a211146104f75780635c975abb146105175780636b20c4541461052f57600080fd5b8063357b8c9e1461040257806336568abe146104225780633f4ba83a146104425780633fa264641461045757806340398d671461046a57600080fd5b80631f7fdffa1161023a5780631f7fdffa1461033b578063248a9ca31461035b578063282c51f31461037b5780632e8adc21146103af5780632eb2c2d6146103c25780632f2ff15d146103e257600080fd5b8062fdd58e1461027657806301ffc9a7146102a957806302fe5305146102d957806306cf8d10146102fb5780630e89341c1461030e575b600080fd5b34801561028257600080fd5b506102966102913660046135b0565b6107ea565b6040519081526020015b60405180910390f35b3480156102b557600080fd5b506102c96102c43660046135f0565b610892565b60405190151581526020016102a0565b3480156102e557600080fd5b506102f96102f43660046136ac565b61089d565b005b6102f9610309366004613790565b6108b5565b34801561031a57600080fd5b5061032e6103293660046137fc565b610b38565b6040516102a09190613865565b34801561034757600080fd5b506102f9610356366004613898565b610bdc565b34801561036757600080fd5b506102966103763660046137fc565b610c07565b34801561038757600080fd5b506102967f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6102f96103bd366004613930565b610c29565b3480156103ce57600080fd5b506102f96103dd366004613974565b610c62565b3480156103ee57600080fd5b506102f96103fd366004613a1d565b610db4565b34801561040e57600080fd5b506102f961041d366004613a94565b610dd5565b34801561042e57600080fd5b506102f961043d366004613a1d565b610e5c565b34801561044e57600080fd5b506102f9610ed6565b6102f9610465366004613790565b610eec565b34801561047657600080fd5b5061048a610485366004613ae6565b611171565b6040516102a09190613b3c565b3480156104a357600080fd5b506102f96104b2366004613b5f565b61117c565b3480156104c357600080fd5b506102f96104d2366004613bc3565b611214565b3480156104e357600080fd5b5061048a6104f2366004613c05565b61132b565b34801561050357600080fd5b506102f9610512366004613ccf565b611447565b34801561052357600080fd5b5060005460ff166102c9565b34801561053b57600080fd5b506102f961054a366004613cf9565b61148d565b34801561055b57600080fd5b506102f961056a366004613ae6565b6114c8565b34801561057b57600080fd5b506102f961058a366004613d6c565b611506565b34801561059b57600080fd5b506102f96105aa366004613d6c565b61157b565b3480156105bb57600080fd5b506102f96115e5565b3480156105d057600080fd5b506102f96116b8565b3480156105e557600080fd5b506102c96105f4366004613a1d565b6116cb565b34801561060557600080fd5b506102f9610614366004613dc0565b611703565b34801561062557600080fd5b506106396106343660046137fc565b61172d565b6040516001600160a01b0390911681526020016102a0565b34801561065d57600080fd5b5061029661066c3660046137fc565b611756565b34801561067d57600080fd5b50610296600081565b34801561069257600080fd5b506102f96106a1366004613ccf565b611776565b3480156106b257600080fd5b5061029660008051602061473583398151915281565b3480156106d457600080fd5b506102f96106e3366004613a1d565b6117ee565b3480156106f457600080fd5b506102f9610703366004613de2565b61180a565b34801561071457600080fd5b506102966000805160206146f583398151915281565b34801561073657600080fd5b506102c9610745366004613e3f565b611822565b34801561075657600080fd5b506102966107653660046135b0565b61186f565b34801561077657600080fd5b506102f9610785366004613e69565b6118a8565b34801561079657600080fd5b506102f96107a5366004613ee2565b611bc8565b3480156107b657600080fd5b506102f96107c5366004613f46565b611c7b565b3480156107d657600080fd5b506102f96107e5366004613f79565b611cb0565b60006001600160a01b03831661085a5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b6000805160206147158339815191526000838152602091825260408082206001600160a01b0387168352909252205490505b92915050565b600061088c82611d82565b60006108a881611da7565b6108b182611db1565b5050565b60006108bf611deb565b905060005b84518110156109ae578381815181106108df576108df613f9e565b6020026020010151826006016000336001600160a01b03166001600160a01b03168152602001908152602001600020600087848151811061092257610922613f9e565b6020026020010151815260200190815260200160002054101561099c5760405162461bcd60e51b815260206004820152602c60248201527f455243313135353a20596f7520646f6e2774206861766520656e6f756768206c60448201526b6f636b656420746f6b656e7360a01b6064820152608401610851565b806109a681613fca565b9150506108c4565b506005845111156109f85760405162461bcd60e51b81526020600482015260146024820152731b585e080d481d1bdad95b9cc8185b1b1bddd95960621b6044820152606401610851565b805461010090046001600160a01b0316610a545760405162461bcd60e51b815260206004820152601d60248201527f67617320636f6c6c6563746f722061646472657373206e6f74207365740000006044820152606401610851565b805460405160009161010090046001600160a01b03169034908381818185875af1925050503d8060008114610aa5576040519150601f19603f3d011682016040523d82523d6000602084013e610aaa565b606091505b5050905080610af25760405162461bcd60e51b8152602060048201526014602482015273636f756c646e277420726563656976652067617360601b6044820152606401610851565b7fec3c3fe913a28538024ef57cc82059e6c8f175470312d8de38a70489f9ca8a3f8585333487604051610b29959493929190613fe3565b60405180910390a15050505050565b60606000805160206147158339815191526005018054610b579061402f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b839061402f565b8015610bd05780601f10610ba557610100808354040283529160200191610bd0565b820191906000526020600020905b815481529060010190602001808311610bb357829003601f168201915b50505050509050919050565b600080516020614735833981519152610bf481611da7565b610c0085858585611e0f565b5050505050565b60009081526000805160206146d5833981519152602052604090206001015490565b60405162461bcd60e51b815260206004820152600e60248201526d1b595d1a1bd9081d5c19185d195960921b6044820152606401610851565b6000610c6c611deb565b905060005b8451811015610d9e576001600160a01b0387166000908152600683016020526040812086518290889085908110610caa57610caa613f9e565b6020026020010151815260200190815260200160002054610ce489888581518110610cd757610cd7613f9e565b60200260200101516107ea565b610cee9190614069565b9050848281518110610d0257610d02613f9e565b6020026020010151811015610d295760405162461bcd60e51b81526004016108519061407c565b33600090815260018401602052604081208751909190889085908110610d5157610d51613f9e565b60209081029190910181015182528101919091526040016000205460ff16610d8b5760405162461bcd60e51b8152600401610851906140bd565b5080610d9681613fca565b915050610c71565b50610dac8686868686611fbc565b505050505050565b610dbd82610c07565b610dc681611da7565b610dd083836120e2565b505050565b6000610de081611da7565b6000610dea611deb565b905060005b83811015610dac5785826004016000878785818110610e1057610e10613f9e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508080610e5490613fca565b915050610def565b6001600160a01b0381163314610ecc5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610851565b6108b18282612176565b6000610ee181611da7565b610ee96121eb565b50565b6000610ef6611deb565b905060005b8451811015610ff657336000908152600683016020526040812086518290889085908110610f2b57610f2b613f9e565b6020026020010151815260200190815260200160002054610f5833888581518110610cd757610cd7613f9e565b610f629190614069565b9050848281518110610f7657610f76613f9e565b6020026020010151811015610fe35760405162461bcd60e51b815260206004820152602d60248201527f455243313135353a20596f7520646f6e2774206f776e20656e6f75676820756e60448201526c6c6f636b656420746f6b656e7360981b6064820152608401610851565b5080610fee81613fca565b915050610efb565b506005845111156110405760405162461bcd60e51b81526020600482015260146024820152731b585e080d481d1bdad95b9cc8185b1b1bddd95960621b6044820152606401610851565b805461010090046001600160a01b031661109c5760405162461bcd60e51b815260206004820152601d60248201527f67617320636f6c6c6563746f722061646472657373206e6f74207365740000006044820152606401610851565b805460405160009161010090046001600160a01b03169034908381818185875af1925050503d80600081146110ed576040519150601f19603f3d011682016040523d82523d6000602084013e6110f2565b606091505b505090508061113a5760405162461bcd60e51b8152602060048201526014602482015273636f756c646e277420726563656976652067617360601b6044820152606401610851565b7f8f6af0c2ee6c8b7a0bf4375da7c4b49628979ccb4171d1f3926c7cd7266516cd8585333487604051610b29959493929190613fe3565b606061088c8261223d565b600061118781611da7565b6000611191611deb565b905060005b8481101561120b576001600160a01b0387166000908152600183016020526040812085918888858181106111cc576111cc613f9e565b90506020020135815260200190815260200160002060006101000a81548160ff021916908315150217905550808061120390613fca565b915050611196565b50505050505050565b600061121f81611da7565b6000611229611deb565b6001600160a01b038716600090815260068201602090815260408083208884529091529020549091508311156112955760405162461bcd60e51b81526020600482015260116024820152701b9bdd08195b9bdd59da081b1bd8dad959607a1b6044820152606401610851565b336000818152600183810160209081526040808420898552909152909120805460ff1916821790556112c89188916122dc565b6001600160a01b03861660009081526006820160209081526040808320878452909152812080548592906112fd908490614069565b92505081905550610dac8686868660405180604001604052806002815260200161060f60f31b815250611bc8565b606081518351146113905760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610851565b600083516001600160401b038111156113ab576113ab61360d565b6040519080825280602002602001820160405280156113d4578160200160208202803683370190505b50905060005b845181101561143f576114128582815181106113f8576113f8613f9e565b6020026020010151858381518110610cd757610cd7613f9e565b82828151811061142457611424613f9e565b602090810291909101015261143881613fca565b90506113da565b509392505050565b600061145281611da7565b600061145c611deb565b6001600160a01b03949094166000908152600290940160205250506040909120805460ff1916911515919091179055565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8486114b781611da7565b6114c28484846123ee565b50505050565b60006114d381611da7565b60006114dd611deb565b80546001600160a01b0390941661010002610100600160a81b0319909416939093179092555050565b60008051602061473583398151915261151e81611da7565b61152a858585856125c8565b60408051858152602081018590526001600160a01b0387169160009133917f09787a221f13a68fc81552e6f8c4d3e9ba7c108a82df83f4362461d3ffbbed3e91015b60405180910390a45050505050565b60008051602061473583398151915261159381611da7565b61159f858585856125c8565b60408051858152602081018590526001600160a01b0387169160009133917fc0025304673122449dd60b9b0093874b0e2fd6fe57af1c7c2fbfee0ccf5ead58910161156c565b60006115ef611deb565b805490915060ff16151560010361163e5760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610851565b6116496000336120e2565b611661600080516020614735833981519152336120e2565b61169f6040518060400160405280601a81526020017f68747470733a2f2f6e66746475656c2e6e65742f746f6b656e2f00000000000081525061089d565b60006116a9611deb565b805460ff191660011790555050565b60006116c381611da7565b610ee96126cb565b60009182526000805160206146d5833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061170e81611da7565b6000611718611deb565b60009485526005016020525050604090912055565b600080611738611deb565b6000938452600401602052505060409020546001600160a01b031690565b600080611761611deb565b60009384526005016020525050604090205490565b6000611780611deb565b6001600160a01b038416600090815260028201602052604090205490915060ff166117e45760405162461bcd60e51b81526020600482015260146024820152731859191c995cdcc81b9bdd08185c1c1c9bdd995960621b6044820152606401610851565b610dd08383612708565b6117f782610c07565b61180081611da7565b610dd08383612176565b6000805160206146f5833981519152610c2981611da7565b6001600160a01b0391821660009081527ffeffaec5312afdafc3b8fb7c85361e6d0462807200cbd1283769da4134fa8d0c6020908152604080832093909416825291909152205460ff1690565b60008061187a611deb565b6001600160a01b03949094166000908152600690940160209081526040808620948652939052505090205490565b6000805160206146f58339815191526118c081611da7565b60006118ca611deb565b905060005b8651811015611b82578315611a36576001600160a01b03851660009081526006830160205260408120885182908a908590811061190e5761190e613f9e565b602002602001015181526020019081526020016000205461193b878a8581518110610cd757610cd7613f9e565b6119459190614069565b905086828151811061195957611959613f9e565b60200260200101518110156119b05760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f75676820746f6b656e7320756e6c6f636b65640000000000006044820152606401610851565b8682815181106119c2576119c2613f9e565b6020026020010151836006016000886001600160a01b03166001600160a01b0316815260200190815260200160002060008a8581518110611a0557611a05613f9e565b602002602001015181526020019081526020016000206000828254611a2a91906140f4565b90915550611b70915050565b858181518110611a4857611a48613f9e565b6020026020010151826006016000876001600160a01b03166001600160a01b031681526020019081526020016000206000898481518110611a8b57611a8b613f9e565b60200260200101518152602001908152602001600020541015611af05760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f75676820746f6b656e73206c6f636b656400000000000000006044820152606401610851565b858181518110611b0257611b02613f9e565b6020026020010151826006016000876001600160a01b03166001600160a01b031681526020019081526020016000206000898481518110611b4557611b45613f9e565b602002602001015181526020019081526020016000206000828254611b6a9190614069565b90915550505b80611b7a81613fca565b9150506118cf565b507f2f4739bc27c30361994daa94926ddb8cc764cf9282103789db38d751ebfbe57586868686604051611bb89493929190614107565b60405180910390a1505050505050565b6000611bd2611deb565b6001600160a01b0387166000908152600682016020908152604080832088845290915281205491925090611c0688876107ea565b611c109190614069565b905083811015611c325760405162461bcd60e51b81526004016108519061407c565b336000908152600183016020908152604080832088845290915290205460ff16611c6e5760405162461bcd60e51b8152600401610851906140bd565b61120b8787878787612713565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848611ca581611da7565b6114c28484846127cf565b6000805160206146f5833981519152611cc881611da7565b6000611cd2611deb565b6001600160a01b0385166000908152600382016020908152604080832089845290915290205490915083151560ff909116151503611d475760405162461bcd60e51b81526020600482015260126024820152711cdd185d1d5cc8185b1c9958591e481cd95d60721b6044820152606401610851565b6001600160a01b0393909316600090815260039093016020908152604080852095855294905250919020805460ff1916911515919091179055565b60006001600160e01b03198216637965db0b60e01b148061088c575061088c826128f6565b610ee98133612946565b6000805160206147158339815191527ffeffaec5312afdafc3b8fb7c85361e6d0462807200cbd1283769da4134fa8d10610dd08382614194565b7faeb043e2a8111212f1c09ca2632f2801ead1528ff2639da5ccfcfef86aebdb7190565b6001600160a01b038416611e355760405162461bcd60e51b815260040161085190614253565b8151835114611e565760405162461bcd60e51b815260040161085190614294565b60008051602061471583398151915233611e758160008888888861299f565b60005b8551811015611f1357848181518110611e9357611e93613f9e565b6020026020010151836000016000888481518110611eb357611eb3613f9e565b602002602001015181526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000828254611efb91906140f4565b90915550819050611f0b81613fca565b915050611e78565b50856001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8888604051611f649291906142dc565b60405180910390a4611f7b816000888888886129ac565b60005b855181101561120b57611faa87878381518110611f9d57611f9d613f9e565b6020026020010151612b07565b80611fb481613fca565b915050611f7e565b6000611fc6611deb565b905060005b84518110156120d45733600090815260038301602052604081208651909190879084908110611ffc57611ffc613f9e565b60209081029190910181015182528101919091526040016000205460ff16156120605760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d4d4e88139195081a5cc81b1bd8dad95960521b6044820152606401610851565b3360009081526001830160205260408120865190919087908490811061208857612088613f9e565b60209081029190910181015182528101919091526040016000205460ff166120c25760405162461bcd60e51b8152600401610851906140bd565b806120cc81613fca565b915050611fcb565b50610dac8686868686612dc0565b6000805160206146d58339815191526120fb83836116cb565b610dd0576000838152602082815260408083206001600160a01b03861684529091529020805460ff191660011790556121313390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4505050565b6000805160206146d583398151915261218f83836116cb565b15610dd0576000838152602082815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4505050565b6121f3612e4f565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03811660009081527ffeffaec5312afdafc3b8fb7c85361e6d0462807200cbd1283769da4134fa8d0d6020908152604091829020805483518184028101840190945280845260609360008051602061471583398151915293909291908301828280156122cf57602002820191906000526020600020905b8154815260200190600101908083116122bb575b5050505050915050919050565b816001600160a01b0316836001600160a01b03160361234f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610851565b6001600160a01b0383811660008181527ffeffaec5312afdafc3b8fb7c85361e6d0462807200cbd1283769da4134fa8d0c6020908152604080832094871680845294825291829020805460ff1916861515908117909155825190815291516000805160206147158339815191529493927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3192908290030190a350505050565b6000805160206147158339815191526001600160a01b0384166124235760405162461bcd60e51b81526004016108519061430a565b81518351146124445760405162461bcd60e51b815260040161085190614294565b60003390506124678186600087876040518060200160405280600081525061299f565b60005b845181101561252c57600085828151811061248757612487613f9e565b6020026020010151905060008583815181106124a5576124a5613f9e565b602090810291909101810151600084815287835260408082206001600160a01b038d1683529093529190912054909150818110156124f55760405162461bcd60e51b81526004016108519061434d565b6000928352602086815260408085206001600160a01b038c168652909152909220910390558061252481613fca565b91505061246a565b5060006001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161257d9291906142dc565b60405180910390a460408051602081019091526000905260005b8451811015610dac576125b686868381518110611f9d57611f9d613f9e565b806125c081613fca565b915050612597565b6001600160a01b0384166125ee5760405162461bcd60e51b815260040161085190614253565b60008051602061471583398151915233600061260986612e9a565b9050600061261686612e9a565b90506126278360008a85858a61299f565b6000878152602085815260408083206001600160a01b038c168452909152812080548892906126579084906140f4565b909155505060408051888152602081018890526001600160a01b03808b1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46126b78360008a8a8a8a612ee5565b6126c18888612b07565b5050505050505050565b6126d3612fa0565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586122203390565b6108b13383836122dc565b600061271d611deb565b336000908152600382016020908152604080832088845290915290205490915060ff16156127865760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d4d4e88139195081a5cc81b1bd8dad95960521b6044820152606401610851565b336000908152600182016020908152604080832087845290915290205460ff166127c25760405162461bcd60e51b8152600401610851906140bd565b610dac8686868686612fe6565b6001600160a01b0383166127f55760405162461bcd60e51b81526004016108519061430a565b60008051602061471583398151915233600061281085612e9a565b9050600061281d85612e9a565b905061283d8388600085856040518060200160405280600081525061299f565b6000868152602085815260408083206001600160a01b038b1684529091529020548581101561287e5760405162461bcd60e51b81526004016108519061434d565b6000878152602086815260408083206001600160a01b038c81168086529184528285208b8703905582518c81529384018b90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090526126b7565b60006001600160e01b03198216636cdb3d1360e11b148061292757506001600160e01b031982166303a24d0760e21b145b8061088c57506301ffc9a760e01b6001600160e01b031983161461088c565b61295082826116cb565b6108b15761295d8161303f565b612968836020613051565b604051602001612979929190614391565b60408051601f198184030181529082905262461bcd60e51b825261085191600401613865565b6129a7612fa0565b610dac565b6001600160a01b0384163b15610dac5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906129f09089908990889088908890600401614406565b6020604051808303816000875af1925050508015612a2b575060408051601f3d908101601f19168201909252612a2891810190614464565b60015b612ad757612a37614481565b806308c379a003612a705750612a4b61449d565b80612a565750612a72565b8060405162461bcd60e51b81526004016108519190613865565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610851565b6001600160e01b0319811663bc197c8160e01b1461120b5760405162461bcd60e51b815260040161085190614526565b6000818152600080516020614715833981519152602081815260408084206001600160a01b03871685529091529091205415801590612b6c57506001600160a01b0383166000908152600482016020908152604080832085845290915290205460ff16155b15612bfc576001600160a01b03831660008181526002830160209081526040822080546001818101835582855292842001869055929091529054612bb09190614069565b6001600160a01b0384166000818152600384016020908152604080832087845282528083209490945591815260048401825282812085825290915220805460ff19166001179055505050565b6000828152602082815260408083206001600160a01b0387168452909152902054158015612c4f57506001600160a01b0383166000908152600482016020908152604080832085845290915290205460ff165b15610dd0576001600160a01b038316600081815260048301602090815260408083208684528252808320805460ff19169055928252600284019052208054612c9990600190614069565b81548110612ca957612ca9613f9e565b60009182526020808320909101546001600160a01b038616835260028401825260408084206003860184528185208786529093529092205481548110612cf157612cf1613f9e565b60009182526020808320909101929092556001600160a01b038516808252600384018352604080832086845280855281842054928452600286019094528220805491939291612d4290600190614069565b81548110612d5257612d52613f9e565b9060005260206000200154815260200190815260200160002081905550806002016000846001600160a01b03166001600160a01b03168152602001908152602001600020805480612da557612da561456e565b60019003818190600052602060002001600090559055505050565b6001600160a01b038516331480612ddc5750612ddc8533611822565b612df85760405162461bcd60e51b815260040161085190614584565b612e0585858585856131f3565b60005b8351811015610dac57612e2785858381518110611f9d57611f9d613f9e565b612e3d86858381518110611f9d57611f9d613f9e565b80612e4781613fca565b915050612e08565b60005460ff16612e985760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610851565b565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ed457612ed4613f9e565b602090810291909101015292915050565b6001600160a01b0384163b15610dac5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612f2990899089908890889088906004016145d2565b6020604051808303816000875af1925050508015612f64575060408051601f3d908101601f19168201909252612f6191810190614464565b60015b612f7057612a37614481565b6001600160e01b0319811663f23a6e6160e01b1461120b5760405162461bcd60e51b815260040161085190614526565b60005460ff1615612e985760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610851565b6001600160a01b03851633148061300257506130028533611822565b61301e5760405162461bcd60e51b815260040161085190614584565b61302b8585858585613438565b6130358484612b07565b610c008584612b07565b606061088c6001600160a01b03831660145b60606000613060836002614617565b61306b9060026140f4565b6001600160401b038111156130825761308261360d565b6040519080825280601f01601f1916602001820160405280156130ac576020820181803683370190505b509050600360fc1b816000815181106130c7576130c7613f9e565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106130f6576130f6613f9e565b60200101906001600160f81b031916908160001a905350600061311a846002614617565b6131259060016140f4565b90505b600181111561319d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061315957613159613f9e565b1a60f81b82828151811061316f5761316f613f9e565b60200101906001600160f81b031916908160001a90535060049490941c936131968161462e565b9050613128565b5083156131ec5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610851565b9392505050565b81518351146132145760405162461bcd60e51b815260040161085190614294565b6001600160a01b03841661323a5760405162461bcd60e51b815260040161085190614645565b6000805160206147158339815191523361325881888888888861299f565b60005b855181101561338857600086828151811061327857613278613f9e565b60200260200101519050600086838151811061329657613296613f9e565b602090810291909101810151600084815287835260408082206001600160a01b038f1683529093529190912054909150818110156132e65760405162461bcd60e51b81526004016108519061468a565b81810386600001600085815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020819055508186600001600085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461336d91906140f4565b925050819055505050508061338190613fca565b905061325b565b50856001600160a01b0316876001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb88886040516133d89291906142dc565b60405180910390a46133ee8188888888886129ac565b60005b85518110156126c15761341087878381518110611f9d57611f9d613f9e565b61342688878381518110611f9d57611f9d613f9e565b8061343081613fca565b9150506133f1565b6001600160a01b03841661345e5760405162461bcd60e51b815260040161085190614645565b60008051602061471583398151915233600061347986612e9a565b9050600061348686612e9a565b9050613496838a8a85858a61299f565b6000878152602085815260408083206001600160a01b038d168452909152902054868110156134d75760405162461bcd60e51b81526004016108519061468a565b6000888152602086815260408083206001600160a01b038e8116855292528083208a85039055908b168252812080548992906135149084906140f4565b909155505060408051898152602081018990526001600160a01b03808c16928d821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4613574848b8b8b8b8b612ee5565b61357e8989612b07565b6135888a89612b07565b50505050505050505050565b80356001600160a01b03811681146135ab57600080fd5b919050565b600080604083850312156135c357600080fd5b6135cc83613594565b946020939093013593505050565b6001600160e01b031981168114610ee957600080fd5b60006020828403121561360257600080fd5b81356131ec816135da565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156136485761364861360d565b6040525050565b60006001600160401b038311156136685761366861360d565b60405161367f601f8501601f191660200182613623565b80915083815284848401111561369457600080fd5b83836020830137600060208583010152509392505050565b6000602082840312156136be57600080fd5b81356001600160401b038111156136d457600080fd5b8201601f810184136136e557600080fd5b6136f48482356020840161364f565b949350505050565b60006001600160401b038211156137155761371561360d565b5060051b60200190565b600082601f83011261373057600080fd5b8135602061373d826136fc565b60405161374a8282613623565b83815260059390931b850182019282810191508684111561376a57600080fd5b8286015b84811015613785578035835291830191830161376e565b509695505050505050565b6000806000606084860312156137a557600080fd5b83356001600160401b03808211156137bc57600080fd5b6137c88783880161371f565b945060208601359150808211156137de57600080fd5b506137eb8682870161371f565b925050604084013590509250925092565b60006020828403121561380e57600080fd5b5035919050565b60005b83811015613830578181015183820152602001613818565b50506000910152565b60008151808452613851816020860160208601613815565b601f01601f19169290920160200192915050565b6020815260006131ec6020830184613839565b600082601f83011261388957600080fd5b6131ec8383356020850161364f565b600080600080608085870312156138ae57600080fd5b6138b785613594565b935060208501356001600160401b03808211156138d357600080fd5b6138df8883890161371f565b945060408701359150808211156138f557600080fd5b6139018883890161371f565b9350606087013591508082111561391757600080fd5b5061392487828801613878565b91505092959194509250565b6000806040838503121561394357600080fd5b82356001600160401b0381111561395957600080fd5b6139658582860161371f565b95602094909401359450505050565b600080600080600060a0868803121561398c57600080fd5b61399586613594565b94506139a360208701613594565b935060408601356001600160401b03808211156139bf57600080fd5b6139cb89838a0161371f565b945060608801359150808211156139e157600080fd5b6139ed89838a0161371f565b93506080880135915080821115613a0357600080fd5b50613a1088828901613878565b9150509295509295909350565b60008060408385031215613a3057600080fd5b82359150613a4060208401613594565b90509250929050565b60008083601f840112613a5b57600080fd5b5081356001600160401b03811115613a7257600080fd5b6020830191508360208260051b8501011115613a8d57600080fd5b9250929050565b600080600060408486031215613aa957600080fd5b613ab284613594565b925060208401356001600160401b03811115613acd57600080fd5b613ad986828701613a49565b9497909650939450505050565b600060208284031215613af857600080fd5b6131ec82613594565b600081518084526020808501945080840160005b83811015613b3157815187529582019590820190600101613b15565b509495945050505050565b6020815260006131ec6020830184613b01565b803580151581146135ab57600080fd5b60008060008060608587031215613b7557600080fd5b613b7e85613594565b935060208501356001600160401b03811115613b9957600080fd5b613ba587828801613a49565b9094509250613bb8905060408601613b4f565b905092959194509250565b60008060008060808587031215613bd957600080fd5b613be285613594565b9350613bf060208601613594565b93969395505050506040820135916060013590565b60008060408385031215613c1857600080fd5b82356001600160401b0380821115613c2f57600080fd5b818501915085601f830112613c4357600080fd5b81356020613c50826136fc565b604051613c5d8282613623565b83815260059390931b8501820192828101915089841115613c7d57600080fd5b948201945b83861015613ca257613c9386613594565b82529482019490820190613c82565b96505086013592505080821115613cb857600080fd5b50613cc58582860161371f565b9150509250929050565b60008060408385031215613ce257600080fd5b613ceb83613594565b9150613a4060208401613b4f565b600080600060608486031215613d0e57600080fd5b613d1784613594565b925060208401356001600160401b0380821115613d3357600080fd5b613d3f8783880161371f565b93506040860135915080821115613d5557600080fd5b50613d628682870161371f565b9150509250925092565b60008060008060808587031215613d8257600080fd5b613d8b85613594565b9350602085013592506040850135915060608501356001600160401b03811115613db457600080fd5b61392487828801613878565b60008060408385031215613dd357600080fd5b50508035926020909101359150565b600080600060608486031215613df757600080fd5b83356001600160401b03811115613e0d57600080fd5b613e198682870161371f565b935050613e2860208501613594565b9150613e3660408501613b4f565b90509250925092565b60008060408385031215613e5257600080fd5b613e5b83613594565b9150613a4060208401613594565b60008060008060808587031215613e7f57600080fd5b84356001600160401b0380821115613e9657600080fd5b613ea28883890161371f565b95506020870135915080821115613eb857600080fd5b50613ec58782880161371f565b935050613ed460408601613594565b9150613bb860608601613b4f565b600080600080600060a08688031215613efa57600080fd5b613f0386613594565b9450613f1160208701613594565b9350604086013592506060860135915060808601356001600160401b03811115613f3a57600080fd5b613a1088828901613878565b600080600060608486031215613f5b57600080fd5b613f6484613594565b95602085013595506040909401359392505050565b600080600060608486031215613f8e57600080fd5b83359250613e2860208501613594565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613fdc57613fdc613fb4565b5060010190565b60a081526000613ff660a0830188613b01565b82810360208401526140088188613b01565b6001600160a01b039690961660408401525050606081019290925260809091015292915050565b600181811c9082168061404357607f821691505b60208210810361406357634e487b7160e01b600052602260045260246000fd5b50919050565b8181038181111561088c5761088c613fb4565b60208082526021908201527f455243313135353a204e6f7420656e6f756768206e66747320756e6c6f636b656040820152601960fa1b606082015260800190565b6020808252601d908201527f455243313135353a207472616e73666572206e6f7420616c6c6f776564000000604082015260600190565b8082018082111561088c5761088c613fb4565b60808152600061411a6080830187613b01565b828103602084015261412c8187613b01565b6001600160a01b03959095166040840152505090151560609091015292915050565b601f821115610dd057600081815260208120601f850160051c810160208610156141755750805b601f850160051c820191505b81811015610dac57828155600101614181565b81516001600160401b038111156141ad576141ad61360d565b6141c1816141bb845461402f565b8461414e565b602080601f8311600181146141f657600084156141de5750858301515b600019600386901b1c1916600185901b178555610dac565b600085815260208120601f198616915b8281101561422557888601518255948401946001909101908401614206565b50858210156142435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6040815260006142ef6040830185613b01565b82810360208401526143018185613b01565b95945050505050565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516143c9816017850160208801613815565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516143fa816028840160208801613815565b01602801949350505050565b6001600160a01b0386811682528516602082015260a06040820181905260009061443290830186613b01565b82810360608401526144448186613b01565b905082810360808401526144588185613839565b98975050505050505050565b60006020828403121561447657600080fd5b81516131ec816135da565b600060033d111561449a5760046000803e5060005160e01c5b90565b600060443d10156144ab5790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156144da57505050505090565b82850191508151818111156144f25750505050505090565b843d870101602082850101111561450c5750505050505090565b61451b60208286010187613623565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061460c90830184613839565b979650505050505050565b808202811582820484141761088c5761088c613fb4565b60008161463d5761463d613fb4565b506000190190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b60608201526080019056feb1f71c0ba2ec939f106d7d4b15b1d8fd0d205b821e122ec2649edf3533a8ea86378b359774aac882f78964142dd690d159dc5d5f4fe7ea2b5538a36a4cedfd3efeffaec5312afdafc3b8fb7c85361e6d0462807200cbd1283769da4134fa8d0b9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220e6c1098a33b288d047c6e1d92793e7abb7f0586e0180eae2370d4bd32cc94e5964736f6c63430008110033