[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_baseTokenURI", "type": "string" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": 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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_wallets", "type": "address[]" } ], "name": "addToWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "burnBach", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "burnedUsers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_specialUser", "type": "address" }, { "internalType": "uint256", "name": "_specialUserAllocation", "type": "uint256" } ], "name": "defineSpecialUser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "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": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_wallets", "type": "address[]" } ], "name": "removeFromWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_baseTokenURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "specialUser", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "specialUserAllocation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506040516200601a3803806200601a8339818101604052810190620000379190620002d9565b8383816000908051906020019062000051929190620001a0565b5080600190805190602001906200006a929190620001a0565b5050506200008d62000081620000d260201b60201c565b620000da60201b60201c565b6000600d60006101000a81548160ff02191690831515021790555081600f9080519060200190620000c0929190620001a0565b50806010819055505050505062000524565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001ae906200042f565b90600052602060002090601f016020900481019282620001d257600085556200021e565b82601f10620001ed57805160ff19168380011785556200021e565b828001600101855582156200021e579182015b828111156200021d57825182559160200191906001019062000200565b5b5090506200022d919062000231565b5090565b5b808211156200024c57600081600090555060010162000232565b5090565b6000620002676200026184620003b9565b62000390565b9050828152602081018484840111156200028057600080fd5b6200028d848285620003f9565b509392505050565b600082601f830112620002a757600080fd5b8151620002b984826020860162000250565b91505092915050565b600081519050620002d3816200050a565b92915050565b60008060008060808587031215620002f057600080fd5b600085015167ffffffffffffffff8111156200030b57600080fd5b620003198782880162000295565b945050602085015167ffffffffffffffff8111156200033757600080fd5b620003458782880162000295565b935050604085015167ffffffffffffffff8111156200036357600080fd5b620003718782880162000295565b92505060606200038487828801620002c2565b91505092959194509250565b60006200039c620003af565b9050620003aa828262000465565b919050565b6000604051905090565b600067ffffffffffffffff821115620003d757620003d6620004ca565b5b620003e282620004f9565b9050602081019050919050565b6000819050919050565b60005b8381101562000419578082015181840152602081019050620003fc565b8381111562000429576000848401525b50505050565b600060028204905060018216806200044857607f821691505b602082108114156200045f576200045e6200049b565b5b50919050565b6200047082620004f9565b810181811067ffffffffffffffff82111715620004925762000491620004ca565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6200051581620003ef565b81146200052157600080fd5b50565b615ae680620005346000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80636871ee4011610151578063a217fddf116100c3578063d547741f11610087578063d547741f14610746578063d5abeb0114610762578063d5cc2d8b14610780578063e985e9c51461079e578063f2fde38b146107ce578063fd870dbc146107ea57610269565b8063a217fddf14610690578063a22cb465146106ae578063b88d4fde146106ca578063c87b56dd146106e6578063ca15c8731461071657610269565b80638456cb59116101155780638456cb59146105ba5780638da5cb5b146105c45780639010d07c146105e257806391d148541461061257806395d89b41146106425780639b19251a1461066057610269565b80636871ee401461053c57806370a0823114610546578063715018a614610576578063771282f6146105805780637f6497831461059e57610269565b80633f4ba83a116101ea5780634f6ccce7116101ae5780634f6ccce714610468578063548db1741461049857806355f804b3146104b45780635c975abb146104d05780636352211e146104ee5780636530c3d21461051e57610269565b80633f4ba83a146103da578063401454c1146103e457806342842e0e1461040057806342966c681461041c57806347b6839a1461043857610269565b806323b872dd1161023157806323b872dd14610326578063248a9ca3146103425780632f2ff15d146103725780632f745c591461038e57806336568abe146103be57610269565b806301ffc9a71461026e57806306fdde031461029e578063081812fc146102bc578063095ea7b3146102ec57806318160ddd14610308575b600080fd5b61028860048036038101906102839190614363565b610806565b60405161029591906149ff565b60405180910390f35b6102a6610818565b6040516102b39190614a35565b60405180910390f35b6102d660048036038101906102d191906143f6565b6108aa565b6040516102e39190614998565b60405180910390f35b61030660048036038101906103019190614204565b61092f565b005b610310610a47565b60405161031d9190614db7565b60405180910390f35b610340600480360381019061033b91906140fe565b610a54565b005b61035c600480360381019061035791906142c2565b610ab4565b6040516103699190614a1a565b60405180910390f35b61038c600480360381019061038791906142eb565b610ad4565b005b6103a860048036038101906103a39190614204565b610afd565b6040516103b59190614db7565b60405180910390f35b6103d860048036038101906103d391906142eb565b610ba2565b005b6103e2610c25565b005b6103fe60048036038101906103f99190614204565b610cab565b005b61041a600480360381019061041591906140fe565b610d9e565b005b610436600480360381019061043191906143f6565b610dbe565b005b610452600480360381019061044d9190614099565b610e72565b60405161045f91906149ff565b60405180910390f35b610482600480360381019061047d91906143f6565b610e92565b60405161048f9190614db7565b60405180910390f35b6104b260048036038101906104ad9190614240565b610f29565b005b6104ce60048036038101906104c991906143b5565b611011565b005b6104d86110a7565b6040516104e591906149ff565b60405180910390f35b610508600480360381019061050391906143f6565b6110be565b6040516105159190614998565b60405180910390f35b610526611170565b6040516105339190614998565b60405180910390f35b610544611196565b005b610560600480360381019061055b9190614099565b6113a6565b60405161056d9190614db7565b60405180910390f35b61057e61145e565b005b6105886114e6565b6040516105959190614db7565b60405180910390f35b6105b860048036038101906105b39190614240565b6114f7565b005b6105c26115df565b005b6105cc611665565b6040516105d99190614998565b60405180910390f35b6105fc60048036038101906105f79190614327565b61168f565b6040516106099190614998565b60405180910390f35b61062c600480360381019061062791906142eb565b6116be565b60405161063991906149ff565b60405180910390f35b61064a611729565b6040516106579190614a35565b60405180910390f35b61067a60048036038101906106759190614099565b6117bb565b60405161068791906149ff565b60405180910390f35b6106986117db565b6040516106a59190614a1a565b60405180910390f35b6106c860048036038101906106c391906141c8565b6117e2565b005b6106e460048036038101906106df919061414d565b6117f8565b005b61070060048036038101906106fb91906143f6565b61185a565b60405161070d9190614a35565b60405180910390f35b610730600480360381019061072b91906142c2565b61188b565b60405161073d9190614db7565b60405180910390f35b610760600480360381019061075b91906142eb565b6118af565b005b61076a6118d8565b6040516107779190614db7565b60405180910390f35b6107886118e2565b6040516107959190614db7565b60405180910390f35b6107b860048036038101906107b391906140c2565b6118e8565b6040516107c591906149ff565b60405180910390f35b6107e860048036038101906107e39190614099565b61197c565b005b61080460048036038101906107ff9190614281565b611a74565b005b600061081182611bc8565b9050919050565b606060008054610827906150f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610853906150f3565b80156108a05780601f10610875576101008083540402835291602001916108a0565b820191906000526020600020905b81548152906001019060200180831161088357829003601f168201915b5050505050905090565b60006108b582611c42565b6108f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108eb90614c97565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061093a826110be565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a290614cf7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109ca611cae565b73ffffffffffffffffffffffffffffffffffffffff1614806109f957506109f8816109f3611cae565b6118e8565b5b610a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2f90614c17565b60405180910390fd5b610a428383611cb6565b505050565b6000600b80549050905090565b610a65610a5f611cae565b82611d6f565b610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b90614d17565b60405180910390fd5b610aaf838383611e4d565b505050565b600060076000838152602001908152602001600020600101549050919050565b610add82610ab4565b610aee81610ae9611cae565b6120b4565b610af88383612151565b505050565b6000610b08836113a6565b8210610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090614ab7565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610baa611cae565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e90614d97565b60405180910390fd5b610c218282612185565b5050565b610c2d611cae565b73ffffffffffffffffffffffffffffffffffffffff16610c4b611665565b73ffffffffffffffffffffffffffffffffffffffff1614610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890614cb7565b60405180910390fd5b610ca96121b9565b565b610cb3611cae565b73ffffffffffffffffffffffffffffffffffffffff16610cd1611665565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90614cb7565b60405180910390fd5b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601381905550610d9a601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661225b565b5050565b610db9838383604051806020016040528060008152506117f8565b505050565b610dcf610dc9611cae565b82611d6f565b610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0590614d77565b60405180910390fd5b610e17816122b6565b6001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000610e9c610a47565b8210610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490614d57565b60405180910390fd5b600b8281548110610f17577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610f31611cae565b73ffffffffffffffffffffffffffffffffffffffff16610f4f611665565b73ffffffffffffffffffffffffffffffffffffffff1614610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c90614cb7565b60405180910390fd5b60005b815181101561100d57610ffa828281518110610fed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516123d3565b808061100590615156565b915050610fa8565b5050565b611019611cae565b73ffffffffffffffffffffffffffffffffffffffff16611037611665565b73ffffffffffffffffffffffffffffffffffffffff161461108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490614cb7565b60405180910390fd5b80600f90805190602001906110a3929190613d7c565b5050565b6000600d60009054906101000a900460ff16905090565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115e90614c57565b60405180910390fd5b80915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121990614b77565b60405180910390fd5b60105461122f600e61242e565b1061126f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126690614d37565b60405180910390fd5b600061127b600e61242e565b9050611287600e61243c565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611339576000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611399565b60006013541161137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590614b17565b60405180910390fd5b6001601360008282546113919190614fd5565b925050819055505b6113a33382612452565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90614c37565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611466611cae565b73ffffffffffffffffffffffffffffffffffffffff16611484611665565b73ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d190614cb7565b60405180910390fd5b6114e46000612470565b565b60006114f2600e61242e565b905090565b6114ff611cae565b73ffffffffffffffffffffffffffffffffffffffff1661151d611665565b73ffffffffffffffffffffffffffffffffffffffff1614611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a90614cb7565b60405180910390fd5b60005b81518110156115db576115c88282815181106115bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015161225b565b80806115d390615156565b915050611576565b5050565b6115e7611cae565b73ffffffffffffffffffffffffffffffffffffffff16611605611665565b73ffffffffffffffffffffffffffffffffffffffff161461165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165290614cb7565b60405180910390fd5b611663612536565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006116b682600860008681526020019081526020016000206125d990919063ffffffff16565b905092915050565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054611738906150f3565b80601f0160208091040260200160405190810160405280929190818152602001828054611764906150f3565b80156117b15780601f10611786576101008083540402835291602001916117b1565b820191906000526020600020905b81548152906001019060200180831161179457829003601f168201915b5050505050905090565b60116020528060005260406000206000915054906101000a900460ff1681565b6000801b81565b6117f46117ed611cae565b83836125f3565b5050565b611809611803611cae565b83611d6f565b611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90614d17565b60405180910390fd5b61185484848484612760565b50505050565b6060611865826127bc565b604051602001611875919061493c565b6040516020818303038152906040529050919050565b60006118a860086000848152602001908152602001600020612863565b9050919050565b6118b882610ab4565b6118c9816118c4611cae565b6120b4565b6118d38383612185565b505050565b6000601054905090565b60135481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611984611cae565b73ffffffffffffffffffffffffffffffffffffffff166119a2611665565b73ffffffffffffffffffffffffffffffffffffffff16146119f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ef90614cb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f90614af7565b60405180910390fd5b611a7181612470565b50565b60005b8151811015611b6c57611ad1611a8b611cae565b838381518110611ac4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611d6f565b611b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0790614d77565b60405180910390fd5b611b59828281518110611b4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516122b6565b8080611b6490615156565b915050611a77565b506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c3b5750611c3a82612878565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d29836110be565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611d7a82611c42565b611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db090614bd7565b60405180910390fd5b6000611dc4836110be565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e3357508373ffffffffffffffffffffffffffffffffffffffff16611e1b846108aa565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e445750611e4381856118e8565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e6d826110be565b73ffffffffffffffffffffffffffffffffffffffff1614611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90614b37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90614b97565b60405180910390fd5b611f3e8383836128f2565b611f49600082611cb6565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f999190614fd5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ff09190614ef4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120af838383612902565b505050565b6120be82826116be565b61214d576120e38173ffffffffffffffffffffffffffffffffffffffff166014612907565b6120f18360001c6020612907565b60405160200161210292919061495e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449190614a35565b60405180910390fd5b5050565b61215b8282612c01565b6121808160086000858152602001908152602001600020612ce290919063ffffffff16565b505050565b61218f8282612d12565b6121b48160086000858152602001908152602001600020612df490919063ffffffff16565b505050565b6121c16110a7565b612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f790614a97565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612244611cae565b6040516122519190614998565b60405180910390a1565b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006122c1826110be565b90506122cf816000846128f2565b6122da600083611cb6565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461232a9190614fd5565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123cf81600084612902565b5050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600081600001549050919050565b6001816000016000828254019250508190555050565b61246c828260405180602001604052806000815250612e24565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61253e6110a7565b1561257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590614bf7565b60405180910390fd5b6001600d60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586125c2611cae565b6040516125cf9190614998565b60405180910390a1565b60006125e88360000183612e7f565b60001c905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265990614bb7565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161275391906149ff565b60405180910390a3505050565b61276b848484611e4d565b61277784848484612ed0565b6127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614ad7565b60405180910390fd5b50505050565b60606127c782611c42565b612806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fd90614cd7565b60405180910390fd5b6000612810613067565b90506000815111612830576040518060200160405280600081525061285b565b8061283a846130f9565b60405160200161284b929190614918565b6040516020818303038152906040525b915050919050565b6000612871826000016132a6565b9050919050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806128eb57506128ea826132b7565b5b9050919050565b6128fd838383613331565b505050565b505050565b60606000600283600261291a9190614f7b565b6129249190614ef4565b67ffffffffffffffff811115612963577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156129955781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106129f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612a7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612abd9190614f7b565b612ac79190614ef4565b90505b6001811115612bb3577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110612b6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612bac906150c9565b9050612aca565b5060008414612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90614a57565b60405180910390fd5b8091505092915050565b612c0b82826116be565b612cde5760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612c83611cae565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000612d0a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613389565b905092915050565b612d1c82826116be565b15612df05760006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612d95611cae565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612e1c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6133f9565b905092915050565b612e2e838361357f565b612e3b6000848484612ed0565b612e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7190614ad7565b60405180910390fd5b505050565b6000826000018281548110612ebd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b6000612ef18473ffffffffffffffffffffffffffffffffffffffff16613759565b1561305a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612f1a611cae565b8786866040518563ffffffff1660e01b8152600401612f3c94939291906149b3565b602060405180830381600087803b158015612f5657600080fd5b505af1925050508015612f8757506040513d601f19601f82011682018060405250810190612f84919061438c565b60015b61300a573d8060008114612fb7576040519150601f19603f3d011682016040523d82523d6000602084013e612fbc565b606091505b50600081511415613002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff990614ad7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061305f565b600190505b949350505050565b6060600f8054613076906150f3565b80601f01602080910402602001604051908101604052809291908181526020018280546130a2906150f3565b80156130ef5780601f106130c4576101008083540402835291602001916130ef565b820191906000526020600020905b8154815290600101906020018083116130d257829003601f168201915b5050505050905090565b60606000821415613141576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506132a1565b600082905060005b6000821461317357808061315c90615156565b915050600a8261316c9190614f4a565b9150613149565b60008167ffffffffffffffff8111156131b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156131e75781602001600182028036833780820191505090505b5090505b6000851461329a576001826132009190614fd5565b9150600a8561320f919061519f565b603061321b9190614ef4565b60f81b818381518110613257577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856132939190614f4a565b94506131eb565b8093505050505b919050565b600081600001805490509050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061332a57506133298261377c565b5b9050919050565b61333c83838361385e565b6133446110a7565b15613384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337b90614a77565b60405180910390fd5b505050565b60006133958383613972565b6133ee5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506133f3565b600090505b92915050565b6000808360010160008481526020019081526020016000205490506000811461357357600060018261342b9190614fd5565b90506000600186600001805490506134439190614fd5565b90508181146134fe57600086600001828154811061348a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050808760000184815481106134d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613538577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613579565b60009150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e690614c77565b60405180910390fd5b6135f881611c42565b15613638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362f90614b57565b60405180910390fd5b613644600083836128f2565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136949190614ef4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461375560008383612902565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061384757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613857575061385682613995565b5b9050919050565b6138698383836139ff565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156138ac576138a781613a04565b6138eb565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146138ea576138e98382613a4d565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561392e5761392981613bba565b61396d565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461396c5761396b8282613cfd565b5b5b505050565b600080836001016000848152602001908152602001600020541415905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600b80549050600c600083815260200190815260200160002081905550600b81908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001613a5a846113a6565b613a649190614fd5565b90506000600a6000848152602001908152602001600020549050818114613b49576000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000208190555081600a600083815260200190815260200160002081905550505b600a600084815260200190815260200160002060009055600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600b80549050613bce9190614fd5565b90506000600c60008481526020019081526020016000205490506000600b8381548110613c24577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600b8381548110613c6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600c600083815260200190815260200160002081905550600c600085815260200190815260200160002060009055600b805480613ce1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000613d08836113a6565b905081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080600a600084815260200190815260200160002081905550505050565b828054613d88906150f3565b90600052602060002090601f016020900481019282613daa5760008555613df1565b82601f10613dc357805160ff1916838001178555613df1565b82800160010185558215613df1579182015b82811115613df0578251825591602001919060010190613dd5565b5b509050613dfe9190613e02565b5090565b5b80821115613e1b576000816000905550600101613e03565b5090565b6000613e32613e2d84614df7565b614dd2565b90508083825260208201905082856020860282011115613e5157600080fd5b60005b85811015613e815781613e678882613f73565b845260208401935060208301925050600181019050613e54565b5050509392505050565b6000613e9e613e9984614e23565b614dd2565b90508083825260208201905082856020860282011115613ebd57600080fd5b60005b85811015613eed5781613ed38882614084565b845260208401935060208301925050600181019050613ec0565b5050509392505050565b6000613f0a613f0584614e4f565b614dd2565b905082815260208101848484011115613f2257600080fd5b613f2d848285615087565b509392505050565b6000613f48613f4384614e80565b614dd2565b905082815260208101848484011115613f6057600080fd5b613f6b848285615087565b509392505050565b600081359050613f8281615a3d565b92915050565b600082601f830112613f9957600080fd5b8135613fa9848260208601613e1f565b91505092915050565b600082601f830112613fc357600080fd5b8135613fd3848260208601613e8b565b91505092915050565b600081359050613feb81615a54565b92915050565b60008135905061400081615a6b565b92915050565b60008135905061401581615a82565b92915050565b60008151905061402a81615a82565b92915050565b600082601f83011261404157600080fd5b8135614051848260208601613ef7565b91505092915050565b600082601f83011261406b57600080fd5b813561407b848260208601613f35565b91505092915050565b60008135905061409381615a99565b92915050565b6000602082840312156140ab57600080fd5b60006140b984828501613f73565b91505092915050565b600080604083850312156140d557600080fd5b60006140e385828601613f73565b92505060206140f485828601613f73565b9150509250929050565b60008060006060848603121561411357600080fd5b600061412186828701613f73565b935050602061413286828701613f73565b925050604061414386828701614084565b9150509250925092565b6000806000806080858703121561416357600080fd5b600061417187828801613f73565b945050602061418287828801613f73565b935050604061419387828801614084565b925050606085013567ffffffffffffffff8111156141b057600080fd5b6141bc87828801614030565b91505092959194509250565b600080604083850312156141db57600080fd5b60006141e985828601613f73565b92505060206141fa85828601613fdc565b9150509250929050565b6000806040838503121561421757600080fd5b600061422585828601613f73565b925050602061423685828601614084565b9150509250929050565b60006020828403121561425257600080fd5b600082013567ffffffffffffffff81111561426c57600080fd5b61427884828501613f88565b91505092915050565b60006020828403121561429357600080fd5b600082013567ffffffffffffffff8111156142ad57600080fd5b6142b984828501613fb2565b91505092915050565b6000602082840312156142d457600080fd5b60006142e284828501613ff1565b91505092915050565b600080604083850312156142fe57600080fd5b600061430c85828601613ff1565b925050602061431d85828601613f73565b9150509250929050565b6000806040838503121561433a57600080fd5b600061434885828601613ff1565b925050602061435985828601614084565b9150509250929050565b60006020828403121561437557600080fd5b600061438384828501614006565b91505092915050565b60006020828403121561439e57600080fd5b60006143ac8482850161401b565b91505092915050565b6000602082840312156143c757600080fd5b600082013567ffffffffffffffff8111156143e157600080fd5b6143ed8482850161405a565b91505092915050565b60006020828403121561440857600080fd5b600061441684828501614084565b91505092915050565b61442881615009565b82525050565b6144378161501b565b82525050565b61444681615027565b82525050565b600061445782614eb1565b6144618185614ec7565b9350614471818560208601615096565b61447a8161528c565b840191505092915050565b600061449082614ebc565b61449a8185614ed8565b93506144aa818560208601615096565b6144b38161528c565b840191505092915050565b60006144c982614ebc565b6144d38185614ee9565b93506144e3818560208601615096565b80840191505092915050565b60006144fc602083614ed8565b91506145078261529d565b602082019050919050565b600061451f602b83614ed8565b915061452a826152c6565b604082019050919050565b6000614542601483614ed8565b915061454d82615315565b602082019050919050565b6000614565602b83614ed8565b91506145708261533e565b604082019050919050565b6000614588603283614ed8565b91506145938261538d565b604082019050919050565b60006145ab602683614ed8565b91506145b6826153dc565b604082019050919050565b60006145ce602383614ed8565b91506145d98261542b565b604082019050919050565b60006145f1602583614ed8565b91506145fc8261547a565b604082019050919050565b6000614614601c83614ed8565b915061461f826154c9565b602082019050919050565b6000614637602683614ed8565b9150614642826154f2565b604082019050919050565b600061465a602483614ed8565b915061466582615541565b604082019050919050565b600061467d601983614ed8565b915061468882615590565b602082019050919050565b60006146a0602c83614ed8565b91506146ab826155b9565b604082019050919050565b60006146c3601083614ed8565b91506146ce82615608565b602082019050919050565b60006146e6603883614ed8565b91506146f182615631565b604082019050919050565b6000614709602a83614ed8565b915061471482615680565b604082019050919050565b600061472c602983614ed8565b9150614737826156cf565b604082019050919050565b600061474f602083614ed8565b915061475a8261571e565b602082019050919050565b6000614772602c83614ed8565b915061477d82615747565b604082019050919050565b6000614795600583614ee9565b91506147a082615796565b600582019050919050565b60006147b8602083614ed8565b91506147c3826157bf565b602082019050919050565b60006147db602f83614ed8565b91506147e6826157e8565b604082019050919050565b60006147fe602183614ed8565b915061480982615837565b604082019050919050565b6000614821603183614ed8565b915061482c82615886565b604082019050919050565b6000614844601283614ed8565b915061484f826158d5565b602082019050919050565b6000614867602c83614ed8565b9150614872826158fe565b604082019050919050565b600061488a601783614ee9565b91506148958261594d565b601782019050919050565b60006148ad603083614ed8565b91506148b882615976565b604082019050919050565b60006148d0601183614ee9565b91506148db826159c5565b601182019050919050565b60006148f3602f83614ed8565b91506148fe826159ee565b604082019050919050565b6149128161507d565b82525050565b600061492482856144be565b915061493082846144be565b91508190509392505050565b600061494882846144be565b915061495382614788565b915081905092915050565b60006149698261487d565b915061497582856144be565b9150614980826148c3565b915061498c82846144be565b91508190509392505050565b60006020820190506149ad600083018461441f565b92915050565b60006080820190506149c8600083018761441f565b6149d5602083018661441f565b6149e26040830185614909565b81810360608301526149f4818461444c565b905095945050505050565b6000602082019050614a14600083018461442e565b92915050565b6000602082019050614a2f600083018461443d565b92915050565b60006020820190508181036000830152614a4f8184614485565b905092915050565b60006020820190508181036000830152614a70816144ef565b9050919050565b60006020820190508181036000830152614a9081614512565b9050919050565b60006020820190508181036000830152614ab081614535565b9050919050565b60006020820190508181036000830152614ad081614558565b9050919050565b60006020820190508181036000830152614af08161457b565b9050919050565b60006020820190508181036000830152614b108161459e565b9050919050565b60006020820190508181036000830152614b30816145c1565b9050919050565b60006020820190508181036000830152614b50816145e4565b9050919050565b60006020820190508181036000830152614b7081614607565b9050919050565b60006020820190508181036000830152614b908161462a565b9050919050565b60006020820190508181036000830152614bb08161464d565b9050919050565b60006020820190508181036000830152614bd081614670565b9050919050565b60006020820190508181036000830152614bf081614693565b9050919050565b60006020820190508181036000830152614c10816146b6565b9050919050565b60006020820190508181036000830152614c30816146d9565b9050919050565b60006020820190508181036000830152614c50816146fc565b9050919050565b60006020820190508181036000830152614c708161471f565b9050919050565b60006020820190508181036000830152614c9081614742565b9050919050565b60006020820190508181036000830152614cb081614765565b9050919050565b60006020820190508181036000830152614cd0816147ab565b9050919050565b60006020820190508181036000830152614cf0816147ce565b9050919050565b60006020820190508181036000830152614d10816147f1565b9050919050565b60006020820190508181036000830152614d3081614814565b9050919050565b60006020820190508181036000830152614d5081614837565b9050919050565b60006020820190508181036000830152614d708161485a565b9050919050565b60006020820190508181036000830152614d90816148a0565b9050919050565b60006020820190508181036000830152614db0816148e6565b9050919050565b6000602082019050614dcc6000830184614909565b92915050565b6000614ddc614ded565b9050614de88282615125565b919050565b6000604051905090565b600067ffffffffffffffff821115614e1257614e1161525d565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614e3e57614e3d61525d565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614e6a57614e6961525d565b5b614e738261528c565b9050602081019050919050565b600067ffffffffffffffff821115614e9b57614e9a61525d565b5b614ea48261528c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614eff8261507d565b9150614f0a8361507d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f3f57614f3e6151d0565b5b828201905092915050565b6000614f558261507d565b9150614f608361507d565b925082614f7057614f6f6151ff565b5b828204905092915050565b6000614f868261507d565b9150614f918361507d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fca57614fc96151d0565b5b828202905092915050565b6000614fe08261507d565b9150614feb8361507d565b925082821015614ffe57614ffd6151d0565b5b828203905092915050565b60006150148261505d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156150b4578082015181840152602081019050615099565b838111156150c3576000848401525b50505050565b60006150d48261507d565b915060008214156150e8576150e76151d0565b5b600182039050919050565b6000600282049050600182168061510b57607f821691505b6020821081141561511f5761511e61522e565b5b50919050565b61512e8261528c565b810181811067ffffffffffffffff8211171561514d5761514c61525d565b5b80604052505050565b60006151618261507d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615194576151936151d0565b5b600182019050919050565b60006151aa8261507d565b91506151b58361507d565b9250826151c5576151c46151ff565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f4552433732315061757361626c653a20746f6b656e207472616e73666572207760008201527f68696c6520706175736564000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5370656369616c207573657220686173206e6f20616c6c6f636174696f6e206c60008201527f6566740000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f596f7520646f206e6f7420686176652072696768747320746f206d696e74207460008201527f6f6b656e732e0000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b615a4681615009565b8114615a5157600080fd5b50565b615a5d8161501b565b8114615a6857600080fd5b50565b615a7481615027565b8114615a7f57600080fd5b50565b615a8b81615031565b8114615a9657600080fd5b50565b615aa28161507d565b8114615aad57600080fd5b5056fea264697066735822122048a50ec2355840ea224279bad9338a9c60849385fa4be00448243216a5b5768464736f6c63430008040033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000e484320426f737320576561706f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044843425700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b68747470733a2f2f686362772e73332e65752d63656e7472616c2d312e616d617a6f6e6177732e636f6d2f000000000000000000000000000000000000000000