[ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_imx", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "blueprint", "type": "bytes" } ], "name": "AssetMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "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": "", "type": "uint256" } ], "name": "blueprints", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "imx", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "bytes", "name": "mintingBlob", "type": "bytes" } ], "name": "mintFor", "outputs": [], "stateMutability": "nonpayable", "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": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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" } ]
60806040523480156200001157600080fd5b50604051620040153803806200401583398181016040528101906200003791906200051e565b83818484816000908051906020019062000053929190620003e5565b5080600190805190602001906200006c929190620003e5565b505050600062000081620001f160201b60201c565b905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001cb9062000653565b60405180910390fd5b620001e582620001f960201b60201c565b50505050505062000907565b600033905090565b62000209620001f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200022f620003bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000288576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027f9062000675565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620002fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f29062000631565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003f39062000771565b90600052602060002090601f01602090048101928262000417576000855562000463565b82601f106200043257805160ff191683800117855562000463565b8280016001018555821562000463579182015b828111156200046257825182559160200191906001019062000445565b5b50905062000472919062000476565b5090565b5b808211156200049157600081600090555060010162000477565b5090565b6000620004ac620004a684620006c0565b62000697565b905082815260208101848484011115620004c557600080fd5b620004d28482856200073b565b509392505050565b600081519050620004eb81620008ed565b92915050565b600082601f8301126200050357600080fd5b81516200051584826020860162000495565b91505092915050565b600080600080608085870312156200053557600080fd5b60006200054587828801620004da565b945050602085015167ffffffffffffffff8111156200056357600080fd5b6200057187828801620004f1565b935050604085015167ffffffffffffffff8111156200058f57600080fd5b6200059d87828801620004f1565b9250506060620005b087828801620004da565b91505092959194509250565b6000620005cb602683620006f6565b9150620005d8826200084c565b604082019050919050565b6000620005f2601783620006f6565b9150620005ff826200089b565b602082019050919050565b600062000619602083620006f6565b91506200062682620008c4565b602082019050919050565b600060208201905081810360008301526200064c81620005bc565b9050919050565b600060208201905081810360008301526200066e81620005e3565b9050919050565b6000602082019050818103600083015262000690816200060a565b9050919050565b6000620006a3620006b6565b9050620006b18282620007a7565b919050565b6000604051905090565b600067ffffffffffffffff821115620006de57620006dd6200080c565b5b620006e9826200083b565b9050602081019050919050565b600082825260208201905092915050565b600062000714826200071b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156200075b5780820151818401526020810190506200073e565b838111156200076b576000848401525b50505050565b600060028204905060018216806200078a57607f821691505b60208210811415620007a157620007a0620007dd565b5b50919050565b620007b2826200083b565b810181811067ffffffffffffffff82111715620007d457620007d36200080c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e6572206d757374206e6f7420626520656d707479000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620008f88162000707565b81146200090457600080fd5b50565b6136fe80620009176000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806366bf33be116100ad578063a22cb46511610071578063a22cb46514610308578063b88d4fde14610324578063c87b56dd14610340578063e985e9c514610370578063f2fde38b146103a057610121565b806366bf33be1461026257806370a0823114610292578063715018a6146102c25780638da5cb5b146102cc57806395d89b41146102ea57610121565b80630f08025f116100f45780630f08025f146101c057806319ee6e3f146101de57806323b872dd146101fa57806342842e0e146102165780636352211e1461023257610121565b806301ffc9a71461012657806306fdde0314610156578063081812fc14610174578063095ea7b3146101a4575b600080fd5b610140600480360381019061013b9190612519565b6103bc565b60405161014d91906129e9565b60405180910390f35b61015e61049e565b60405161016b9190612a26565b60405180910390f35b61018e6004803603810190610189919061256b565b610530565b60405161019b9190612944565b60405180910390f35b6101be60048036038101906101b99190612471565b6105b5565b005b6101c86106cd565b6040516101d59190612944565b60405180910390f35b6101f860048036038101906101f391906124ad565b6106f3565b005b610214600480360381019061020f919061236b565b61088a565b005b610230600480360381019061022b919061236b565b6108ea565b005b61024c6004803603810190610247919061256b565b61090a565b6040516102599190612944565b60405180910390f35b61027c6004803603810190610277919061256b565b6109bc565b6040516102899190612a04565b60405180910390f35b6102ac60048036038101906102a79190612306565b610a5c565b6040516102b99190612cc8565b60405180910390f35b6102ca610b14565b005b6102d4610c51565b6040516102e19190612944565b60405180910390f35b6102f2610c7b565b6040516102ff9190612a26565b60405180910390f35b610322600480360381019061031d9190612435565b610d0d565b005b61033e600480360381019061033991906123ba565b610e8e565b005b61035a6004803603810190610355919061256b565b610ef0565b6040516103679190612a26565b60405180910390f35b61038a6004803603810190610385919061232f565b610f97565b60405161039791906129e9565b60405180910390f35b6103ba60048036038101906103b59190612306565b61102b565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104975750610496826111d7565b5b9050919050565b6060600080546104ad90612f7a565b80601f01602080910402602001604051908101604052809291908181526020018280546104d990612f7a565b80156105265780601f106104fb57610100808354040283529160200191610526565b820191906000526020600020905b81548152906001019060200180831161050957829003601f168201915b5050505050905090565b600061053b82611241565b61057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057190612bc8565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006105c08261090a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890612c48565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106506112ad565b73ffffffffffffffffffffffffffffffffffffffff16148061067f575061067e816106796112ad565b610f97565b5b6106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b590612b48565b60405180910390fd5b6106c883836112b5565b505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107815750610752610c51565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6107c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b790612ca8565b60405180910390fd5b60018314610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90612b08565b60405180910390fd5b600080610810848461136e565b9150915061081f868383611583565b80600860008481526020019081526020016000209080519060200190610846929190612148565b507f31e594f6b36b98ec520a91cbbba7b8724b1cec27393f86d8f0f6aa6084db0aaf86838360405161087a939291906129ab565b60405180910390a1505050505050565b61089b6108956112ad565b82611592565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190612c88565b60405180910390fd5b6108e5838383611670565b505050565b61090583838360405180602001604052806000815250610e8e565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90612b88565b60405180910390fd5b80915050919050565b600860205280600052604060002060009150905080546109db90612f7a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0790612f7a565b8015610a545780601f10610a2957610100808354040283529160200191610a54565b820191906000526020600020905b815481529060010190602001808311610a3757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac490612b68565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b1c6112ad565b73ffffffffffffffffffffffffffffffffffffffff16610b3a610c51565b73ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790612be8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c8a90612f7a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb690612f7a565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b5050505050905090565b610d156112ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90612ae8565b60405180910390fd5b8060056000610d906112ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610e3d6112ad565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610e8291906129e9565b60405180910390a35050565b610e9f610e996112ad565b83611592565b610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590612c88565b60405180910390fd5b610eea848484846118cc565b50505050565b6060610efb82611241565b610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612c28565b60405180910390fd5b6000610f44611928565b90506000815111610f645760405180602001604052806000815250610f8f565b80610f6e8461193f565b604051602001610f7f929190612920565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6110336112ad565b73ffffffffffffffffffffffffffffffffffffffff16611051610c51565b73ffffffffffffffffffffffffffffffffffffffff16146110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612be8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110e90612a88565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166113288361090a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000606060006113f985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506040518060400160405280600181526020017f3a000000000000000000000000000000000000000000000000000000000000008152506000611aec565b9050600081121561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143690612c68565b60405180910390fd5b60006114ab86866001906001866114569190612e90565b9261146393929190612d7c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611c56565b90506000600383888890506114c09190612e90565b6114ca9190612e90565b905060008114156114f25781604051806020016040528060008152509450945050505061157c565b36600088886002876115049190612daf565b9060018c8c90506115159190612e90565b9261152293929190612d7c565b9150915083828281818080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905090509650965050505050505b9250929050565b61158d8383611d52565b505050565b600061159d82611241565b6115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d390612b28565b60405180910390fd5b60006115e78361090a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061165657508373ffffffffffffffffffffffffffffffffffffffff1661163e84610530565b73ffffffffffffffffffffffffffffffffffffffff16145b8061166757506116668185610f97565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166116908261090a565b73ffffffffffffffffffffffffffffffffffffffff16146116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90612c08565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174d90612ac8565b60405180910390fd5b611761838383611d70565b61176c6000826112b5565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117bc9190612e90565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118139190612daf565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6118d7848484611670565b6118e384848484611d75565b611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990612a68565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000821415611987576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611ae7565b600082905060005b600082146119b95780806119a290612fdd565b915050600a826119b29190612e05565b915061198f565b60008167ffffffffffffffff8111156119fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a2d5781602001600182028036833780820191505090505b5090505b60008514611ae057600182611a469190612e90565b9150600a85611a559190613026565b6030611a619190612daf565b60f81b818381518110611a9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611ad99190612e05565b9450611a31565b8093505050505b919050565b6000808390506001815114611b2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008390505b8551811015611c295781600081518110611b73577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916868281518110611bd9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415611c16578092505050611c4f565b8080611c2190612fdd565b915050611b30565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b9392505050565b6000806000905060005b8351811015611d48576000848281518110611ca4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16905060308110158015611cc9575060398111155b15611cf957603081611cdb9190612e90565b600a84611ce89190612e36565b611cf29190612daf565b9250611d34565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b90612a48565b60405180910390fd5b508080611d4090612fdd565b915050611c60565b5080915050919050565b611d6c828260405180602001604052806000815250611f0c565b5050565b505050565b6000611d968473ffffffffffffffffffffffffffffffffffffffff16611f67565b15611eff578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611dbf6112ad565b8786866040518563ffffffff1660e01b8152600401611de1949392919061295f565b602060405180830381600087803b158015611dfb57600080fd5b505af1925050508015611e2c57506040513d601f19601f82011682018060405250810190611e299190612542565b60015b611eaf573d8060008114611e5c576040519150601f19603f3d011682016040523d82523d6000602084013e611e61565b606091505b50600081511415611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90612a68565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611f04565b600190505b949350505050565b611f168383611f7a565b611f236000848484611d75565b611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990612a68565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe190612ba8565b60405180910390fd5b611ff381611241565b15612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90612aa8565b60405180910390fd5b61203f60008383611d70565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461208f9190612daf565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b82805461215490612f7a565b90600052602060002090601f01602090048101928261217657600085556121bd565b82601f1061218f57805160ff19168380011785556121bd565b828001600101855582156121bd579182015b828111156121bc5782518255916020019190600101906121a1565b5b5090506121ca91906121ce565b5090565b5b808211156121e75760008160009055506001016121cf565b5090565b60006121fe6121f984612d08565b612ce3565b90508281526020810184848401111561221657600080fd5b612221848285612f38565b509392505050565b6000813590506122388161366c565b92915050565b60008135905061224d81613683565b92915050565b6000813590506122628161369a565b92915050565b6000815190506122778161369a565b92915050565b60008083601f84011261228f57600080fd5b8235905067ffffffffffffffff8111156122a857600080fd5b6020830191508360018202830111156122c057600080fd5b9250929050565b600082601f8301126122d857600080fd5b81356122e88482602086016121eb565b91505092915050565b600081359050612300816136b1565b92915050565b60006020828403121561231857600080fd5b600061232684828501612229565b91505092915050565b6000806040838503121561234257600080fd5b600061235085828601612229565b925050602061236185828601612229565b9150509250929050565b60008060006060848603121561238057600080fd5b600061238e86828701612229565b935050602061239f86828701612229565b92505060406123b0868287016122f1565b9150509250925092565b600080600080608085870312156123d057600080fd5b60006123de87828801612229565b94505060206123ef87828801612229565b9350506040612400878288016122f1565b925050606085013567ffffffffffffffff81111561241d57600080fd5b612429878288016122c7565b91505092959194509250565b6000806040838503121561244857600080fd5b600061245685828601612229565b92505060206124678582860161223e565b9150509250929050565b6000806040838503121561248457600080fd5b600061249285828601612229565b92505060206124a3858286016122f1565b9150509250929050565b600080600080606085870312156124c357600080fd5b60006124d187828801612229565b94505060206124e2878288016122f1565b935050604085013567ffffffffffffffff8111156124ff57600080fd5b61250b8782880161227d565b925092505092959194509250565b60006020828403121561252b57600080fd5b600061253984828501612253565b91505092915050565b60006020828403121561255457600080fd5b600061256284828501612268565b91505092915050565b60006020828403121561257d57600080fd5b600061258b848285016122f1565b91505092915050565b61259d81612ec4565b82525050565b6125ac81612ed6565b82525050565b60006125bd82612d39565b6125c78185612d4f565b93506125d7818560208601612f47565b6125e081613113565b840191505092915050565b60006125f682612d44565b6126008185612d60565b9350612610818560208601612f47565b61261981613113565b840191505092915050565b600061262f82612d44565b6126398185612d71565b9350612649818560208601612f47565b80840191505092915050565b6000612662602383612d60565b915061266d82613124565b604082019050919050565b6000612685603283612d60565b915061269082613173565b604082019050919050565b60006126a8602683612d60565b91506126b3826131c2565b604082019050919050565b60006126cb601c83612d60565b91506126d682613211565b602082019050919050565b60006126ee602483612d60565b91506126f98261323a565b604082019050919050565b6000612711601983612d60565b915061271c82613289565b602082019050919050565b6000612734601a83612d60565b915061273f826132b2565b602082019050919050565b6000612757602c83612d60565b9150612762826132db565b604082019050919050565b600061277a603883612d60565b91506127858261332a565b604082019050919050565b600061279d602a83612d60565b91506127a882613379565b604082019050919050565b60006127c0602983612d60565b91506127cb826133c8565b604082019050919050565b60006127e3602083612d60565b91506127ee82613417565b602082019050919050565b6000612806602c83612d60565b915061281182613440565b604082019050919050565b6000612829602083612d60565b91506128348261348f565b602082019050919050565b600061284c602983612d60565b9150612857826134b8565b604082019050919050565b600061286f602f83612d60565b915061287a82613507565b604082019050919050565b6000612892602183612d60565b915061289d82613556565b604082019050919050565b60006128b5601483612d60565b91506128c0826135a5565b602082019050919050565b60006128d8603183612d60565b91506128e3826135ce565b604082019050919050565b60006128fb602b83612d60565b91506129068261361d565b604082019050919050565b61291a81612f2e565b82525050565b600061292c8285612624565b91506129388284612624565b91508190509392505050565b60006020820190506129596000830184612594565b92915050565b60006080820190506129746000830187612594565b6129816020830186612594565b61298e6040830185612911565b81810360608301526129a081846125b2565b905095945050505050565b60006060820190506129c06000830186612594565b6129cd6020830185612911565b81810360408301526129df81846125b2565b9050949350505050565b60006020820190506129fe60008301846125a3565b92915050565b60006020820190508181036000830152612a1e81846125b2565b905092915050565b60006020820190508181036000830152612a4081846125eb565b905092915050565b60006020820190508181036000830152612a6181612655565b9050919050565b60006020820190508181036000830152612a8181612678565b9050919050565b60006020820190508181036000830152612aa18161269b565b9050919050565b60006020820190508181036000830152612ac1816126be565b9050919050565b60006020820190508181036000830152612ae1816126e1565b9050919050565b60006020820190508181036000830152612b0181612704565b9050919050565b60006020820190508181036000830152612b2181612727565b9050919050565b60006020820190508181036000830152612b418161274a565b9050919050565b60006020820190508181036000830152612b618161276d565b9050919050565b60006020820190508181036000830152612b8181612790565b9050919050565b60006020820190508181036000830152612ba1816127b3565b9050919050565b60006020820190508181036000830152612bc1816127d6565b9050919050565b60006020820190508181036000830152612be1816127f9565b9050919050565b60006020820190508181036000830152612c018161281c565b9050919050565b60006020820190508181036000830152612c218161283f565b9050919050565b60006020820190508181036000830152612c4181612862565b9050919050565b60006020820190508181036000830152612c6181612885565b9050919050565b60006020820190508181036000830152612c81816128a8565b9050919050565b60006020820190508181036000830152612ca1816128cb565b9050919050565b60006020820190508181036000830152612cc1816128ee565b9050919050565b6000602082019050612cdd6000830184612911565b92915050565b6000612ced612cfe565b9050612cf98282612fac565b919050565b6000604051905090565b600067ffffffffffffffff821115612d2357612d226130e4565b5b612d2c82613113565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60008085851115612d8c57600080fd5b83861115612d9957600080fd5b6001850283019150848603905094509492505050565b6000612dba82612f2e565b9150612dc583612f2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612dfa57612df9613057565b5b828201905092915050565b6000612e1082612f2e565b9150612e1b83612f2e565b925082612e2b57612e2a613086565b5b828204905092915050565b6000612e4182612f2e565b9150612e4c83612f2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e8557612e84613057565b5b828202905092915050565b6000612e9b82612f2e565b9150612ea683612f2e565b925082821015612eb957612eb8613057565b5b828203905092915050565b6000612ecf82612f0e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612f65578082015181840152602081019050612f4a565b83811115612f74576000848401525b50505050565b60006002820490506001821680612f9257607f821691505b60208210811415612fa657612fa56130b5565b5b50919050565b612fb582613113565b810181811067ffffffffffffffff82111715612fd457612fd36130e4565b5b80604052505050565b6000612fe882612f2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561301b5761301a613057565b5b600182019050919050565b600061303182612f2e565b915061303c83612f2e565b92508261304c5761304b613086565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f696e76616c696420696e7075742c206f6e6c79206e756d6265727320616c6c6f60008201527f7765640000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4d696e7461626c653a20696e76616c6964207175616e74697479000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f536570617261746f72206d757374206578697374000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f46756e6374696f6e2063616e206f6e6c792062652063616c6c6564206279206f60008201527f776e6572206f7220494d58000000000000000000000000000000000000000000602082015250565b61367581612ec4565b811461368057600080fd5b50565b61368c81612ed6565b811461369757600080fd5b50565b6136a381612ee2565b81146136ae57600080fd5b50565b6136ba81612f2e565b81146136c557600080fd5b5056fea26469706673582212201ca41aeacf97f9f6c198fa9fb441cd4d5701ed210bc87c84b13f6e63fa4abc7764736f6c63430008040033000000000000000000000000606de01d44530fb8fabaaa204af17c6911bb9075000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000005fdcca53617f4d2b9134b29090c87d01058e27e9000000000000000000000000000000000000000000000000000000000000000f6d6f6f6e7061792074657374696e67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d4e505400000000000000000000000000000000000000000000000000000000