{ "contractName": "ERC721BasicToken", "abi": [ { "constant": true, "inputs": [ { "name": "_interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "InterfaceId_ERC165", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "_from", "type": "address" }, { "indexed": true, "name": "_to", "type": "address" }, { "indexed": true, "name": "_tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "_owner", "type": "address" }, { "indexed": true, "name": "_approved", "type": "address" }, { "indexed": true, "name": "_tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "_owner", "type": "address" }, { "indexed": true, "name": "_operator", "type": "address" }, { "indexed": false, "name": "_approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_tokenId", "type": "uint256" } ], "name": "exists", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" }, { "name": "_operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_tokenId", "type": "uint256" }, { "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b5061004c6301ffc9a77c0100000000000000000000000000000000000000000000000000000000026100c7640100000000026401000000009004565b6100876380ac58cd7c0100000000000000000000000000000000000000000000000000000000026100c7640100000000026401000000009004565b6100c2634f558e797c0100000000000000000000000000000000000000000000000000000000026100c7640100000000026401000000009004565b610184565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415151561011857600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611305806101936000396000f3006080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100bf578063081812fc14610123578063095ea7b31461019057806319fa8f50146101dd57806323b872dd1461024657806342842e0e146102b35780634f558e79146103205780636352211e1461036557806370a08231146103d2578063a22cb46514610429578063b88d4fde14610478578063e985e9c51461052b575b600080fd5b3480156100cb57600080fd5b5061010960048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506105a6565b604051808215151515815260200191505060405180910390f35b34801561012f57600080fd5b5061014e6004803603810190808035906020019092919050505061060d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019c57600080fd5b506101db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061064a565b005b3480156101e957600080fd5b506101f261078f565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561025257600080fd5b506102b1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b6565b005b3480156102bf57600080fd5b5061031e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108c1565b005b34801561032c57600080fd5b5061034b600480360381019080803590602001909291905050506108e2565b604051808215151515815260200191505060405180910390f35b34801561037157600080fd5b5061039060048036038101908080359060200190929190505050610954565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103de57600080fd5b50610413600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d2565b6040518082815260200191505060405180910390f35b34801561043557600080fd5b50610476600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610a56565b005b34801561048457600080fd5b50610529600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b92565b005b34801561053757600080fd5b5061058c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bba565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061065582610954565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561069257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106d257506106d18133610bba565b5b15156106dd57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6301ffc9a77c01000000000000000000000000000000000000000000000000000000000281565b6107c03382610c4e565b15156107cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561080757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561084357600080fd5b61084d8382610ce3565b6108578382610de6565b6108618282610f15565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6108dd8383836020604051908101604052806000815250610b92565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156109c957600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a0f57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a9157600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610b9d8484846107b6565b610ba98484848461106f565b1515610bb457600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080610c5a83610954565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610cc957508373ffffffffffffffffffffffffffffffffffffffff16610cb18461060d565b73ffffffffffffffffffffffffffffffffffffffff16145b80610cda5750610cd98185610bba565b5b91505092915050565b8173ffffffffffffffffffffffffffffffffffffffff16610d0382610954565b73ffffffffffffffffffffffffffffffffffffffff16141515610d2557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610de25760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b8173ffffffffffffffffffffffffffffffffffffffff16610e0682610954565b73ffffffffffffffffffffffffffffffffffffffff16141515610e2857600080fd5b610e7b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f8357600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110286001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112aa90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000806110918573ffffffffffffffffffffffffffffffffffffffff166112c6565b15156110a05760019150611288565b8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561119557808201518184015260208101905061117a565b50505050905090810190601f1680156111c25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156111e457600080fd5b505af11580156111f8573d6000803e3d6000fd5b505050506040513d602081101561120e57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b600082821115151561129f57fe5b818303905092915050565b600081830190508281101515156112bd57fe5b80905092915050565b600080823b9050600081119150509190505600a165627a7a723058209219a5265d82c49cbf8b571af36209e58b75fe7e2d835e65c8734de57ee975760029", "deployedBytecode": "0x6080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100bf578063081812fc14610123578063095ea7b31461019057806319fa8f50146101dd57806323b872dd1461024657806342842e0e146102b35780634f558e79146103205780636352211e1461036557806370a08231146103d2578063a22cb46514610429578063b88d4fde14610478578063e985e9c51461052b575b600080fd5b3480156100cb57600080fd5b5061010960048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506105a6565b604051808215151515815260200191505060405180910390f35b34801561012f57600080fd5b5061014e6004803603810190808035906020019092919050505061060d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019c57600080fd5b506101db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061064a565b005b3480156101e957600080fd5b506101f261078f565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561025257600080fd5b506102b1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b6565b005b3480156102bf57600080fd5b5061031e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108c1565b005b34801561032c57600080fd5b5061034b600480360381019080803590602001909291905050506108e2565b604051808215151515815260200191505060405180910390f35b34801561037157600080fd5b5061039060048036038101908080359060200190929190505050610954565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103de57600080fd5b50610413600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d2565b6040518082815260200191505060405180910390f35b34801561043557600080fd5b50610476600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610a56565b005b34801561048457600080fd5b50610529600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b92565b005b34801561053757600080fd5b5061058c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bba565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061065582610954565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561069257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106d257506106d18133610bba565b5b15156106dd57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6301ffc9a77c01000000000000000000000000000000000000000000000000000000000281565b6107c03382610c4e565b15156107cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561080757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561084357600080fd5b61084d8382610ce3565b6108578382610de6565b6108618282610f15565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6108dd8383836020604051908101604052806000815250610b92565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156109c957600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a0f57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a9157600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610b9d8484846107b6565b610ba98484848461106f565b1515610bb457600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080610c5a83610954565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610cc957508373ffffffffffffffffffffffffffffffffffffffff16610cb18461060d565b73ffffffffffffffffffffffffffffffffffffffff16145b80610cda5750610cd98185610bba565b5b91505092915050565b8173ffffffffffffffffffffffffffffffffffffffff16610d0382610954565b73ffffffffffffffffffffffffffffffffffffffff16141515610d2557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610de25760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b8173ffffffffffffffffffffffffffffffffffffffff16610e0682610954565b73ffffffffffffffffffffffffffffffffffffffff16141515610e2857600080fd5b610e7b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f8357600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110286001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112aa90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000806110918573ffffffffffffffffffffffffffffffffffffffff166112c6565b15156110a05760019150611288565b8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561119557808201518184015260208101905061117a565b50505050905090810190601f1680156111c25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156111e457600080fd5b505af11580156111f8573d6000803e3d6000fd5b505050506040513d602081101561120e57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b600082821115151561129f57fe5b818303905092915050565b600081830190508281101515156112bd57fe5b80905092915050565b600080823b9050600081119150509190505600a165627a7a723058209219a5265d82c49cbf8b571af36209e58b75fe7e2d835e65c8734de57ee975760029", "sourceMap": "363:10428:9:-;;;1152:199;8:9:-1;5:2;;;30:1;27;20:12;5:2;1152:199:9;649:38:5;274:10;668:18;;649;;;:38;;;:::i;:::-;1258::9;293:10:8;1277:18:9;;1258;;;:38;;;:::i;:::-;1302:44;935:10:8;1321:24:9;;1302:18;;;:44;;;:::i;:::-;363:10428;;987:156:5;1081:10;1065:26;;:12;:26;;;;;1057:35;;;;;;;;1134:4;1098:19;:33;1118:12;1098:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;987:156;:::o;363:10428:9:-;;;;;;;", "deployedSourceMap": "363:10428:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:142:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;775:142:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:111:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3289:111:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2785:277;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2785:277:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;230:54:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:54:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4780:370:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4780:370:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5766:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5766:199:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2240:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2240:140:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1898:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1898:164:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1543:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1543:142:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3680:205;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3680:205:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6647:276;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6647:276:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4194:168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4194:168:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:142:5;858:4;879:19;:33;899:12;879:33;;;;;;;;;;;;;;;;;;;;;;;;;;;872:40;;775:142;;;:::o;3289:111:9:-;3349:7;3371:14;:24;3386:8;3371:24;;;;;;;;;;;;;;;;;;;;;3364:31;;3289:111;;;:::o;2785:277::-;2846:13;2862:17;2870:8;2862:7;:17::i;:::-;2846:33;;2900:5;2893:12;;:3;:12;;;;2885:21;;;;;;;;2934:5;2920:19;;:10;:19;;;:58;;;;2943:35;2960:5;2967:10;2943:16;:35::i;:::-;2920:58;2912:67;;;;;;;;3013:3;2986:14;:24;3001:8;2986:24;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;3048:8;3043:3;3027:30;;3036:5;3027:30;;;;;;;;;;;;2785:277;;;:::o;230:54:5:-;274:10;230:54;;;:::o;4780:370:9:-;4891:39;4909:10;4921:8;4891:17;:39::i;:::-;4883:48;;;;;;;;4962:1;4945:19;;:5;:19;;;;4937:28;;;;;;;;4994:1;4979:17;;:3;:17;;;;4971:26;;;;;;;;5004:30;5018:5;5025:8;5004:13;:30::i;:::-;5040:32;5056:5;5063:8;5040:15;:32::i;:::-;5078:25;5089:3;5094:8;5078:10;:25::i;:::-;5136:8;5131:3;5115:30;;5124:5;5115:30;;;;;;;;;;;;4780:370;;;:::o;5766:199::-;5918:42;5935:5;5942:3;5947:8;5918:42;;;;;;;;;;;;;:16;:42::i;:::-;5766:199;;;:::o;2240:140::-;2295:4;2307:13;2323:10;:20;2334:8;2323:20;;;;;;;;;;;;;;;;;;;;;2307:36;;2373:1;2356:19;;:5;:19;;;;2349:26;;2240:140;;;;:::o;1898:164::-;1954:7;1969:13;1985:10;:20;1996:8;1985:20;;;;;;;;;;;;;;;;;;;;;1969:36;;2036:1;2019:19;;:5;:19;;;;2011:28;;;;;;;;2052:5;2045:12;;1898:164;;;;:::o;1543:142::-;1599:7;1640:1;1622:20;;:6;:20;;;;1614:29;;;;;;;;1656:16;:24;1673:6;1656:24;;;;;;;;;;;;;;;;1649:31;;1543:142;;;:::o;3680:205::-;3764:10;3757:17;;:3;:17;;;;3749:26;;;;;;;;3818:9;3781:17;:29;3799:10;3781:29;;;;;;;;;;;;;;;:34;3811:3;3781:34;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3865:3;3838:42;;3853:10;3838:42;;;3870:9;3838:42;;;;;;;;;;;;;;;;;;;;;;3680:205;;:::o;6647:276::-;6771:34;6784:5;6791:3;6796:8;6771:12;:34::i;:::-;6864:53;6889:5;6896:3;6901:8;6911:5;6864:24;:53::i;:::-;6856:62;;;;;;;;6647:276;;;;:::o;4194:168::-;4300:4;4321:17;:25;4339:6;4321:25;;;;;;;;;;;;;;;:36;4347:9;4321:36;;;;;;;;;;;;;;;;;;;;;;;;;4314:43;;4194:168;;;;:::o;7270:438::-;7380:4;7394:13;7410:17;7418:8;7410:7;:17::i;:::-;7394:33;;7606:5;7594:17;;:8;:17;;;:60;;;;7646:8;7621:33;;:21;7633:8;7621:11;:21::i;:::-;:33;;;7594:60;:103;;;;7664:33;7681:5;7688:8;7664:16;:33::i;:::-;7594:103;7579:124;;7270:438;;;;;:::o;8762:214::-;8863:6;8842:27;;:17;8850:8;8842:7;:17::i;:::-;:27;;;8834:36;;;;;;;;8916:1;8880:38;;:14;:24;8895:8;8880:24;;;;;;;;;;;;;;;;;;;;;:38;;;;8876:96;;;8963:1;8928:14;:24;8943:8;8928:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8876:96;8762:214;;:::o;9722:::-;9824:5;9803:26;;:17;9811:8;9803:7;:17::i;:::-;:26;;;9795:35;;;;;;;;9862:30;9890:1;9862:16;:23;9879:5;9862:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;9836:16;:23;9853:5;9836:23;;;;;;;;;;;;;;;:56;;;;9929:1;9898:10;:20;9909:8;9898:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;9722:214;;:::o;9239:204::-;9345:1;9313:34;;:10;:20;9324:8;9313:20;;;;;;;;;;;;;;;;;;;;;:34;;;9305:43;;;;;;;;9377:3;9354:10;:20;9365:8;9354:20;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9410:28;9436:1;9410:16;:21;9427:3;9410:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;9386:16;:21;9403:3;9386:21;;;;;;;;;;;;;;;:52;;;;9239:204;;:::o;10442:347::-;10581:4;10649:13;10600:16;:3;:14;;;:16::i;:::-;10599:17;10595:49;;;10633:4;10626:11;;;;10595:49;10680:3;10665:36;;;10709:10;10721:5;10728:8;10738:5;10665:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10665:79:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10665:79:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10665:79:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10665:79:9;;;;;;;;;;;;;;;;10649:95;;712:10;10768:15;;10758:25;;;:6;:25;;;;10750:34;;10442:347;;;;;;;;:::o;1060:116:6:-;1120:7;1148:2;1142;:8;;1135:16;;;;;;1169:2;1164;:7;1157:14;;1060:116;;;;:::o;1238:128::-;1298:9;1324:2;1319;:7;1315:11;;1344:2;1339:1;:7;;1332:15;;;;;;1360:1;1353:8;;1238:128;;;;:::o;438:578:3:-;496:4;508:12;983:5;971:18;963:26;;1010:1;1003:4;:8;996:15;;438:578;;;;:::o", "source": "pragma solidity ^0.4.24;\n\nimport \"./ERC721Basic.sol\";\nimport \"./ERC721Receiver.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../AddressUtils.sol\";\nimport \"../../introspection/SupportsInterfaceWithLookup.sol\";\n\n\n/**\n * @title ERC721 Non-Fungible Token Standard basic implementation\n * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n */\ncontract ERC721BasicToken is SupportsInterfaceWithLookup, ERC721Basic {\n\n using SafeMath for uint256;\n using AddressUtils for address;\n\n // Equals to `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n // which can be also obtained as `ERC721Receiver(0).onERC721Received.selector`\n bytes4 private constant ERC721_RECEIVED = 0x150b7a02;\n\n // Mapping from token ID to owner\n mapping (uint256 => address) internal tokenOwner;\n\n // Mapping from token ID to approved address\n mapping (uint256 => address) internal tokenApprovals;\n\n // Mapping from owner to number of owned token\n mapping (address => uint256) internal ownedTokensCount;\n\n // Mapping from owner to operator approvals\n mapping (address => mapping (address => bool)) internal operatorApprovals;\n\n constructor()\n public\n {\n // register the supported interfaces to conform to ERC721 via ERC165\n _registerInterface(InterfaceId_ERC721);\n _registerInterface(InterfaceId_ERC721Exists);\n }\n\n /**\n * @dev Gets the balance of the specified address\n * @param _owner address to query the balance of\n * @return uint256 representing the amount owned by the passed address\n */\n function balanceOf(address _owner) public view returns (uint256) {\n require(_owner != address(0));\n return ownedTokensCount[_owner];\n }\n\n /**\n * @dev Gets the owner of the specified token ID\n * @param _tokenId uint256 ID of the token to query the owner of\n * @return owner address currently marked as the owner of the given token ID\n */\n function ownerOf(uint256 _tokenId) public view returns (address) {\n address owner = tokenOwner[_tokenId];\n require(owner != address(0));\n return owner;\n }\n\n /**\n * @dev Returns whether the specified token exists\n * @param _tokenId uint256 ID of the token to query the existence of\n * @return whether the token exists\n */\n function exists(uint256 _tokenId) public view returns (bool) {\n address owner = tokenOwner[_tokenId];\n return owner != address(0);\n }\n\n /**\n * @dev Approves another address to transfer the given token ID\n * The zero address indicates there is no approved address.\n * There can only be one approved address per token at a given time.\n * Can only be called by the token owner or an approved operator.\n * @param _to address to be approved for the given token ID\n * @param _tokenId uint256 ID of the token to be approved\n */\n function approve(address _to, uint256 _tokenId) public {\n address owner = ownerOf(_tokenId);\n require(_to != owner);\n require(msg.sender == owner || isApprovedForAll(owner, msg.sender));\n\n tokenApprovals[_tokenId] = _to;\n emit Approval(owner, _to, _tokenId);\n }\n\n /**\n * @dev Gets the approved address for a token ID, or zero if no address set\n * @param _tokenId uint256 ID of the token to query the approval of\n * @return address currently approved for the given token ID\n */\n function getApproved(uint256 _tokenId) public view returns (address) {\n return tokenApprovals[_tokenId];\n }\n\n /**\n * @dev Sets or unsets the approval of a given operator\n * An operator is allowed to transfer all tokens of the sender on their behalf\n * @param _to operator address to set the approval\n * @param _approved representing the status of the approval to be set\n */\n function setApprovalForAll(address _to, bool _approved) public {\n require(_to != msg.sender);\n operatorApprovals[msg.sender][_to] = _approved;\n emit ApprovalForAll(msg.sender, _to, _approved);\n }\n\n /**\n * @dev Tells whether an operator is approved by a given owner\n * @param _owner owner address which you want to query the approval of\n * @param _operator operator address which you want to query the approval of\n * @return bool whether the given operator is approved by the given owner\n */\n function isApprovedForAll(\n address _owner,\n address _operator\n )\n public\n view\n returns (bool)\n {\n return operatorApprovals[_owner][_operator];\n }\n\n /**\n * @dev Transfers the ownership of a given token ID to another address\n * Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n * Requires the msg sender to be the owner, approved, or operator\n * @param _from current owner of the token\n * @param _to address to receive the ownership of the given token ID\n * @param _tokenId uint256 ID of the token to be transferred\n */\n function transferFrom(\n address _from,\n address _to,\n uint256 _tokenId\n )\n public\n {\n require(isApprovedOrOwner(msg.sender, _tokenId));\n require(_from != address(0));\n require(_to != address(0));\n\n clearApproval(_from, _tokenId);\n removeTokenFrom(_from, _tokenId);\n addTokenTo(_to, _tokenId);\n\n emit Transfer(_from, _to, _tokenId);\n }\n\n /**\n * @dev Safely transfers the ownership of a given token ID to another address\n * If the target address is a contract, it must implement `onERC721Received`,\n * which is called upon a safe transfer, and return the magic value\n * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n * the transfer is reverted.\n *\n * Requires the msg sender to be the owner, approved, or operator\n * @param _from current owner of the token\n * @param _to address to receive the ownership of the given token ID\n * @param _tokenId uint256 ID of the token to be transferred\n */\n function safeTransferFrom(\n address _from,\n address _to,\n uint256 _tokenId\n )\n public\n {\n // solium-disable-next-line arg-overflow\n safeTransferFrom(_from, _to, _tokenId, \"\");\n }\n\n /**\n * @dev Safely transfers the ownership of a given token ID to another address\n * If the target address is a contract, it must implement `onERC721Received`,\n * which is called upon a safe transfer, and return the magic value\n * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n * the transfer is reverted.\n * Requires the msg sender to be the owner, approved, or operator\n * @param _from current owner of the token\n * @param _to address to receive the ownership of the given token ID\n * @param _tokenId uint256 ID of the token to be transferred\n * @param _data bytes data to send along with a safe transfer check\n */\n function safeTransferFrom(\n address _from,\n address _to,\n uint256 _tokenId,\n bytes _data\n )\n public\n {\n transferFrom(_from, _to, _tokenId);\n // solium-disable-next-line arg-overflow\n require(checkAndCallSafeTransfer(_from, _to, _tokenId, _data));\n }\n\n /**\n * @dev Returns whether the given spender can transfer a given token ID\n * @param _spender address of the spender to query\n * @param _tokenId uint256 ID of the token to be transferred\n * @return bool whether the msg.sender is approved for the given token ID,\n * is an operator of the owner, or is the owner of the token\n */\n function isApprovedOrOwner(\n address _spender,\n uint256 _tokenId\n )\n internal\n view\n returns (bool)\n {\n address owner = ownerOf(_tokenId);\n // Disable solium check because of\n // https://github.com/duaraghav8/Solium/issues/175\n // solium-disable-next-line operator-whitespace\n return (\n _spender == owner ||\n getApproved(_tokenId) == _spender ||\n isApprovedForAll(owner, _spender)\n );\n }\n\n /**\n * @dev Internal function to mint a new token\n * Reverts if the given token ID already exists\n * @param _to The address that will own the minted token\n * @param _tokenId uint256 ID of the token to be minted by the msg.sender\n */\n function _mint(address _to, uint256 _tokenId) internal {\n require(_to != address(0));\n addTokenTo(_to, _tokenId);\n emit Transfer(address(0), _to, _tokenId);\n }\n\n /**\n * @dev Internal function to burn a specific token\n * Reverts if the token does not exist\n * @param _tokenId uint256 ID of the token being burned by the msg.sender\n */\n function _burn(address _owner, uint256 _tokenId) internal {\n clearApproval(_owner, _tokenId);\n removeTokenFrom(_owner, _tokenId);\n emit Transfer(_owner, address(0), _tokenId);\n }\n\n /**\n * @dev Internal function to clear current approval of a given token ID\n * Reverts if the given address is not indeed the owner of the token\n * @param _owner owner of the token\n * @param _tokenId uint256 ID of the token to be transferred\n */\n function clearApproval(address _owner, uint256 _tokenId) internal {\n require(ownerOf(_tokenId) == _owner);\n if (tokenApprovals[_tokenId] != address(0)) {\n tokenApprovals[_tokenId] = address(0);\n }\n }\n\n /**\n * @dev Internal function to add a token ID to the list of a given address\n * @param _to address representing the new owner of the given token ID\n * @param _tokenId uint256 ID of the token to be added to the tokens list of the given address\n */\n function addTokenTo(address _to, uint256 _tokenId) internal {\n require(tokenOwner[_tokenId] == address(0));\n tokenOwner[_tokenId] = _to;\n ownedTokensCount[_to] = ownedTokensCount[_to].add(1);\n }\n\n /**\n * @dev Internal function to remove a token ID from the list of a given address\n * @param _from address representing the previous owner of the given token ID\n * @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address\n */\n function removeTokenFrom(address _from, uint256 _tokenId) internal {\n require(ownerOf(_tokenId) == _from);\n ownedTokensCount[_from] = ownedTokensCount[_from].sub(1);\n tokenOwner[_tokenId] = address(0);\n }\n\n /**\n * @dev Internal function to invoke `onERC721Received` on a target address\n * The call is not executed if the target address is not a contract\n * @param _from address representing the previous owner of the given token ID\n * @param _to target address that will receive the tokens\n * @param _tokenId uint256 ID of the token to be transferred\n * @param _data bytes optional data to send along with the call\n * @return whether the call correctly returned the expected magic value\n */\n function checkAndCallSafeTransfer(\n address _from,\n address _to,\n uint256 _tokenId,\n bytes _data\n )\n internal\n returns (bool)\n {\n if (!_to.isContract()) {\n return true;\n }\n bytes4 retval = ERC721Receiver(_to).onERC721Received(\n msg.sender, _from, _tokenId, _data);\n return (retval == ERC721_RECEIVED);\n }\n}\n", "sourcePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/token/ERC721/ERC721BasicToken.sol", "ast": { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/token/ERC721/ERC721BasicToken.sol", "exportedSymbols": { "ERC721BasicToken": [ 1349 ] }, "id": 1350, "nodeType": "SourceUnit", "nodes": [ { "id": 803, "literals": [ "solidity", "^", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:24:9" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/token/ERC721/ERC721Basic.sol", "file": "./ERC721Basic.sol", "id": 804, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 802, "src": "26:27:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/token/ERC721/ERC721Receiver.sol", "file": "./ERC721Receiver.sol", "id": 805, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 1369, "src": "54:30:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", "id": 806, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 626, "src": "85:33:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/AddressUtils.sol", "file": "../../AddressUtils.sol", "id": 807, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 471, "src": "119:32:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/introspection/SupportsInterfaceWithLookup.sol", "file": "../../introspection/SupportsInterfaceWithLookup.sol", "id": 808, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 532, "src": "152:61:9", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 809, "name": "SupportsInterfaceWithLookup", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 531, "src": "392:27:9", "typeDescriptions": { "typeIdentifier": "t_contract$_SupportsInterfaceWithLookup_$531", "typeString": "contract SupportsInterfaceWithLookup" } }, "id": 810, "nodeType": "InheritanceSpecifier", "src": "392:27:9" }, { "arguments": null, "baseName": { "contractScope": null, "id": 811, "name": "ERC721Basic", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 801, "src": "421:11:9", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC721Basic_$801", "typeString": "contract ERC721Basic" } }, "id": 812, "nodeType": "InheritanceSpecifier", "src": "421:11:9" } ], "contractDependencies": [ 480, 531, 801 ], "contractKind": "contract", "documentation": "@title ERC721 Non-Fungible Token Standard basic implementation\n@dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", "fullyImplemented": true, "id": 1349, "linearizedBaseContracts": [ 1349, 801, 531, 480 ], "name": "ERC721BasicToken", "nodeType": "ContractDefinition", "nodes": [ { "id": 815, "libraryName": { "contractScope": null, "id": 813, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 625, "src": "444:8:9", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$625", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "438:27:9", "typeName": { "id": 814, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "457:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "id": 818, "libraryName": { "contractScope": null, "id": 816, "name": "AddressUtils", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 470, "src": "474:12:9", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressUtils_$470", "typeString": "library AddressUtils" } }, "nodeType": "UsingForDirective", "src": "468:31:9", "typeName": { "id": 817, "name": "address", "nodeType": "ElementaryTypeName", "src": "491:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "constant": true, "id": 821, "name": "ERC721_RECEIVED", "nodeType": "VariableDeclaration", "scope": 1349, "src": "670:52:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 819, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "670:6:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": { "argumentTypes": null, "hexValue": "30783135306237613032", "id": 820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "712:10:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_353073666_by_1", "typeString": "int_const 353073666" }, "value": "0x150b7a02" }, "visibility": "private" }, { "constant": false, "id": 825, "name": "tokenOwner", "nodeType": "VariableDeclaration", "scope": 1349, "src": "763:48:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 824, "keyType": { "id": 822, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "772:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "763:28:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 823, "name": "address", "nodeType": "ElementaryTypeName", "src": "783:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 829, "name": "tokenApprovals", "nodeType": "VariableDeclaration", "scope": 1349, "src": "863:52:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 828, "keyType": { "id": 826, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "872:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "863:28:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 827, "name": "address", "nodeType": "ElementaryTypeName", "src": "883:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 833, "name": "ownedTokensCount", "nodeType": "VariableDeclaration", "scope": 1349, "src": "969:54:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 832, "keyType": { "id": 830, "name": "address", "nodeType": "ElementaryTypeName", "src": "978:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "969:28:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 831, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "989:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 839, "name": "operatorApprovals", "nodeType": "VariableDeclaration", "scope": 1349, "src": "1074:73:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "typeName": { "id": 838, "keyType": { "id": 834, "name": "address", "nodeType": "ElementaryTypeName", "src": "1083:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1074:46:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "valueType": { "id": 837, "keyType": { "id": 835, "name": "address", "nodeType": "ElementaryTypeName", "src": "1103:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1094:25:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 836, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1114:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } } }, "value": null, "visibility": "internal" }, { "body": { "id": 850, "nodeType": "Block", "src": "1179:172:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 843, "name": "InterfaceId_ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 687, "src": "1277:18:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } ], "id": 842, "name": "_registerInterface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 530, "src": "1258:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4)" } }, "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1258:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 845, "nodeType": "ExpressionStatement", "src": "1258:38:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 847, "name": "InterfaceId_ERC721Exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 690, "src": "1321:24:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } ], "id": 846, "name": "_registerInterface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 530, "src": "1302:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4)" } }, "id": 848, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1302:44:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 849, "nodeType": "ExpressionStatement", "src": "1302:44:9" } ] }, "documentation": null, "id": 851, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 840, "nodeType": "ParameterList", "parameters": [], "src": "1163:2:9" }, "payable": false, "returnParameters": { "id": 841, "nodeType": "ParameterList", "parameters": [], "src": "1179:0:9" }, "scope": 1349, "src": "1152:199:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 870, "nodeType": "Block", "src": "1608:77:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 863, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 859, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, "src": "1622:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1640:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 860, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1632:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1632:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1622:20:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 858, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "1614:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 864, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1614:29:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 865, "nodeType": "ExpressionStatement", "src": "1614:29:9" }, { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 866, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "1656:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 868, "indexExpression": { "argumentTypes": null, "id": 867, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, "src": "1673:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1656:24:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 857, "id": 869, "nodeType": "Return", "src": "1649:31:9" } ] }, "documentation": "@dev Gets the balance of the specified address\n@param _owner address to query the balance of\n@return uint256 representing the amount owned by the passed address", "id": 871, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { "id": 854, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 853, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 871, "src": "1562:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 852, "name": "address", "nodeType": "ElementaryTypeName", "src": "1562:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1561:16:9" }, "payable": false, "returnParameters": { "id": 857, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 856, "name": "", "nodeType": "VariableDeclaration", "scope": 871, "src": "1599:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 855, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1599:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1598:9:9" }, "scope": 1349, "src": "1543:142:9", "stateMutability": "view", "superFunction": 727, "visibility": "public" }, { "body": { "id": 894, "nodeType": "Block", "src": "1963:99:9", "statements": [ { "assignments": [ 879 ], "declarations": [ { "constant": false, "id": 879, "name": "owner", "nodeType": "VariableDeclaration", "scope": 895, "src": "1969:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 878, "name": "address", "nodeType": "ElementaryTypeName", "src": "1969:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 883, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 880, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "1985:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 882, "indexExpression": { "argumentTypes": null, "id": 881, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 873, "src": "1996:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1985:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1969:36:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 885, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "2019:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 887, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2036:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2028:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2028:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2019:19:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 884, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "2011:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 890, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2011:28:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 891, "nodeType": "ExpressionStatement", "src": "2011:28:9" }, { "expression": { "argumentTypes": null, "id": 892, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "2052:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 877, "id": 893, "nodeType": "Return", "src": "2045:12:9" } ] }, "documentation": "@dev Gets the owner of the specified token ID\n@param _tokenId uint256 ID of the token to query the owner of\n@return owner address currently marked as the owner of the given token ID", "id": 895, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "ownerOf", "nodeType": "FunctionDefinition", "parameters": { "id": 874, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 873, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 895, "src": "1915:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 872, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1915:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1914:18:9" }, "payable": false, "returnParameters": { "id": 877, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 876, "name": "", "nodeType": "VariableDeclaration", "scope": 895, "src": "1954:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 875, "name": "address", "nodeType": "ElementaryTypeName", "src": "1954:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1953:9:9" }, "scope": 1349, "src": "1898:164:9", "stateMutability": "view", "superFunction": 734, "visibility": "public" }, { "body": { "id": 914, "nodeType": "Block", "src": "2301:79:9", "statements": [ { "assignments": [ 903 ], "declarations": [ { "constant": false, "id": 903, "name": "owner", "nodeType": "VariableDeclaration", "scope": 915, "src": "2307:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 902, "name": "address", "nodeType": "ElementaryTypeName", "src": "2307:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 907, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 904, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "2323:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 906, "indexExpression": { "argumentTypes": null, "id": 905, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 897, "src": "2334:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2323:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2307:36:9" }, { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 908, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "2356:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 910, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2373:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 909, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2365:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2365:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2356:19:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 901, "id": 913, "nodeType": "Return", "src": "2349:26:9" } ] }, "documentation": "@dev Returns whether the specified token exists\n@param _tokenId uint256 ID of the token to query the existence of\n@return whether the token exists", "id": 915, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "exists", "nodeType": "FunctionDefinition", "parameters": { "id": 898, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 897, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 915, "src": "2256:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 896, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2256:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2255:18:9" }, "payable": false, "returnParameters": { "id": 901, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 900, "name": "", "nodeType": "VariableDeclaration", "scope": 915, "src": "2295:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 899, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2295:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "2294:6:9" }, "scope": 1349, "src": "2240:140:9", "stateMutability": "view", "superFunction": 741, "visibility": "public" }, { "body": { "id": 959, "nodeType": "Block", "src": "2840:222:9", "statements": [ { "assignments": [ 923 ], "declarations": [ { "constant": false, "id": 923, "name": "owner", "nodeType": "VariableDeclaration", "scope": 960, "src": "2846:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 922, "name": "address", "nodeType": "ElementaryTypeName", "src": "2846:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 927, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 925, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "2870:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 924, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [ 895 ], "referencedDeclaration": 895, "src": "2862:7:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 926, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2862:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2846:33:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 929, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 917, "src": "2893:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 930, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "2900:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2893:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 928, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "2885:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2885:21:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 933, "nodeType": "ExpressionStatement", "src": "2885:21:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 938, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 935, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "2920:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2920:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 937, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "2934:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2920:19:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 940, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "2960:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 941, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "2967:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2967:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 939, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [ 1019 ], "referencedDeclaration": 1019, "src": "2943:16:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)" } }, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2943:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2920:58:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 934, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "2912:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 945, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2912:67:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 946, "nodeType": "ExpressionStatement", "src": "2912:67:9" }, { "expression": { "argumentTypes": null, "id": 951, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 947, "name": "tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "2986:14:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 949, "indexExpression": { "argumentTypes": null, "id": 948, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "3001:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2986:24:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 950, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 917, "src": "3013:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2986:30:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 952, "nodeType": "ExpressionStatement", "src": "2986:30:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 954, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "3036:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 955, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 917, "src": "3043:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 956, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "3048:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 953, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 712, "src": "3027:8:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3027:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 958, "nodeType": "EmitStatement", "src": "3022:35:9" } ] }, "documentation": "@dev Approves another address to transfer the given token ID\nThe zero address indicates there is no approved address.\nThere can only be one approved address per token at a given time.\nCan only be called by the token owner or an approved operator.\n@param _to address to be approved for the given token ID\n@param _tokenId uint256 ID of the token to be approved", "id": 960, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": { "id": 920, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 917, "name": "_to", "nodeType": "VariableDeclaration", "scope": 960, "src": "2802:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 916, "name": "address", "nodeType": "ElementaryTypeName", "src": "2802:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 919, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 960, "src": "2815:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 918, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2815:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2801:31:9" }, "payable": false, "returnParameters": { "id": 921, "nodeType": "ParameterList", "parameters": [], "src": "2840:0:9" }, "scope": 1349, "src": "2785:277:9", "stateMutability": "nonpayable", "superFunction": 748, "visibility": "public" }, { "body": { "id": 971, "nodeType": "Block", "src": "3358:42:9", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 967, "name": "tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "3371:14:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 969, "indexExpression": { "argumentTypes": null, "id": 968, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 962, "src": "3386:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3371:24:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 966, "id": 970, "nodeType": "Return", "src": "3364:31:9" } ] }, "documentation": "@dev Gets the approved address for a token ID, or zero if no address set\n@param _tokenId uint256 ID of the token to query the approval of\n@return address currently approved for the given token ID", "id": 972, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getApproved", "nodeType": "FunctionDefinition", "parameters": { "id": 963, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 962, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 972, "src": "3310:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 961, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3310:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3309:18:9" }, "payable": false, "returnParameters": { "id": 966, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 965, "name": "", "nodeType": "VariableDeclaration", "scope": 972, "src": "3349:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 964, "name": "address", "nodeType": "ElementaryTypeName", "src": "3349:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3348:9:9" }, "scope": 1349, "src": "3289:111:9", "stateMutability": "view", "superFunction": 755, "visibility": "public" }, { "body": { "id": 1002, "nodeType": "Block", "src": "3743:142:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 980, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "3757:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 981, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "3764:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3764:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3757:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 979, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "3749:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3749:26:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 985, "nodeType": "ExpressionStatement", "src": "3749:26:9" }, { "expression": { "argumentTypes": null, "id": 993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 986, "name": "operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "3781:17:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" } }, "id": 990, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 987, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "3799:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3799:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3781:29:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 991, "indexExpression": { "argumentTypes": null, "id": 989, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "3811:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3781:34:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 992, "name": "_approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 976, "src": "3818:9:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3781:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 994, "nodeType": "ExpressionStatement", "src": "3781:46:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 996, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "3853:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3853:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 998, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "3865:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 999, "name": "_approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 976, "src": "3870:9:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 995, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 720, "src": "3838:14:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)" } }, "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3838:42:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1001, "nodeType": "EmitStatement", "src": "3833:47:9" } ] }, "documentation": "@dev Sets or unsets the approval of a given operator\nAn operator is allowed to transfer all tokens of the sender on their behalf\n@param _to operator address to set the approval\n@param _approved representing the status of the approval to be set", "id": 1003, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setApprovalForAll", "nodeType": "FunctionDefinition", "parameters": { "id": 977, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 974, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1003, "src": "3707:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 973, "name": "address", "nodeType": "ElementaryTypeName", "src": "3707:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 976, "name": "_approved", "nodeType": "VariableDeclaration", "scope": 1003, "src": "3720:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 975, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3720:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3706:29:9" }, "payable": false, "returnParameters": { "id": 978, "nodeType": "ParameterList", "parameters": [], "src": "3743:0:9" }, "scope": 1349, "src": "3680:205:9", "stateMutability": "nonpayable", "superFunction": 762, "visibility": "public" }, { "body": { "id": 1018, "nodeType": "Block", "src": "4308:54:9", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1012, "name": "operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "4321:17:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" } }, "id": 1014, "indexExpression": { "argumentTypes": null, "id": 1013, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1005, "src": "4339:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4321:25:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1016, "indexExpression": { "argumentTypes": null, "id": 1015, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1007, "src": "4347:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4321:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1011, "id": 1017, "nodeType": "Return", "src": "4314:43:9" } ] }, "documentation": "@dev Tells whether an operator is approved by a given owner\n@param _owner owner address which you want to query the approval of\n@param _operator operator address which you want to query the approval of\n@return bool whether the given operator is approved by the given owner", "id": 1019, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isApprovedForAll", "nodeType": "FunctionDefinition", "parameters": { "id": 1008, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1005, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 1019, "src": "4225:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1004, "name": "address", "nodeType": "ElementaryTypeName", "src": "4225:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1007, "name": "_operator", "nodeType": "VariableDeclaration", "scope": 1019, "src": "4245:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1006, "name": "address", "nodeType": "ElementaryTypeName", "src": "4245:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4219:47:9" }, "payable": false, "returnParameters": { "id": 1011, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1010, "name": "", "nodeType": "VariableDeclaration", "scope": 1019, "src": "4300:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1009, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4300:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4299:6:9" }, "scope": 1349, "src": "4194:168:9", "stateMutability": "view", "superFunction": 771, "visibility": "public" }, { "body": { "id": 1073, "nodeType": "Block", "src": "4877:273:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1030, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "4909:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4909:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1032, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "4921:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1029, "name": "isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "4891:17:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)" } }, "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4891:39:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1028, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "4883:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1034, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4883:48:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1035, "nodeType": "ExpressionStatement", "src": "4883:48:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1037, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "4945:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1039, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4962:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1038, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4954:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1040, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4954:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4945:19:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1036, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "4937:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4937:28:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1043, "nodeType": "ExpressionStatement", "src": "4937:28:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1045, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1023, "src": "4979:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1047, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4994:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1046, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4986:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1048, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4986:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4979:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1044, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "4971:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4971:26:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1051, "nodeType": "ExpressionStatement", "src": "4971:26:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1053, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "5018:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1054, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "5025:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1052, "name": "clearApproval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "5004:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5004:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1056, "nodeType": "ExpressionStatement", "src": "5004:30:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1058, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "5056:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1059, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "5063:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1057, "name": "removeTokenFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1308, "src": "5040:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5040:32:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1061, "nodeType": "ExpressionStatement", "src": "5040:32:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1063, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1023, "src": "5089:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1064, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "5094:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1062, "name": "addTokenTo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1273, "src": "5078:10:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1065, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5078:25:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1066, "nodeType": "ExpressionStatement", "src": "5078:25:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1068, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "5124:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1069, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1023, "src": "5131:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1070, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "5136:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1067, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "5115:8:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5115:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1072, "nodeType": "EmitStatement", "src": "5110:35:9" } ] }, "documentation": "@dev Transfers the ownership of a given token ID to another address\nUsage of this method is discouraged, use `safeTransferFrom` whenever possible\nRequires the msg sender to be the owner, approved, or operator\n@param _from current owner of the token\n@param _to address to receive the ownership of the given token ID\n@param _tokenId uint256 ID of the token to be transferred", "id": 1074, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { "id": 1026, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1021, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1074, "src": "4807:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1020, "name": "address", "nodeType": "ElementaryTypeName", "src": "4807:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1023, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1074, "src": "4826:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1022, "name": "address", "nodeType": "ElementaryTypeName", "src": "4826:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1025, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1074, "src": "4843:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1024, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4843:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4801:62:9" }, "payable": false, "returnParameters": { "id": 1027, "nodeType": "ParameterList", "parameters": [], "src": "4877:0:9" }, "scope": 1349, "src": "4780:370:9", "stateMutability": "nonpayable", "superFunction": 780, "visibility": "public" }, { "body": { "id": 1090, "nodeType": "Block", "src": "5867:98:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1084, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1076, "src": "5935:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1085, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1078, "src": "5942:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1086, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1080, "src": "5947:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 1087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5957:2:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "id": 1083, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [ 1091, 1118 ], "referencedDeclaration": 1118, "src": "5918:16:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 1088, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5918:42:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1089, "nodeType": "ExpressionStatement", "src": "5918:42:9" } ] }, "documentation": "@dev Safely transfers the ownership of a given token ID to another address\nIf the target address is a contract, it must implement `onERC721Received`,\nwhich is called upon a safe transfer, and return the magic value\n`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\nthe transfer is reverted.\n * Requires the msg sender to be the owner, approved, or operator\n@param _from current owner of the token\n@param _to address to receive the ownership of the given token ID\n@param _tokenId uint256 ID of the token to be transferred", "id": 1091, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { "id": 1081, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1076, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1091, "src": "5797:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", "src": "5797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1078, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1091, "src": "5816:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1077, "name": "address", "nodeType": "ElementaryTypeName", "src": "5816:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1080, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1091, "src": "5833:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1079, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5833:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5791:62:9" }, "payable": false, "returnParameters": { "id": 1082, "nodeType": "ParameterList", "parameters": [], "src": "5867:0:9" }, "scope": 1349, "src": "5766:199:9", "stateMutability": "nonpayable", "superFunction": 789, "visibility": "public" }, { "body": { "id": 1117, "nodeType": "Block", "src": "6765:158:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1103, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1093, "src": "6784:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1104, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1095, "src": "6791:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1105, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1097, "src": "6796:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1102, "name": "transferFrom", "nodeType": "Identifier", "overloadedDeclarations": [ 1074 ], "referencedDeclaration": 1074, "src": "6771:12:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6771:34:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1107, "nodeType": "ExpressionStatement", "src": "6771:34:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1110, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1093, "src": "6889:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1111, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1095, "src": "6896:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1112, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1097, "src": "6901:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1113, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1099, "src": "6911:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1109, "name": "checkAndCallSafeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "6864:24:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)" } }, "id": 1114, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6864:53:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1108, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "6856:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6856:62:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1116, "nodeType": "ExpressionStatement", "src": "6856:62:9" } ] }, "documentation": "@dev Safely transfers the ownership of a given token ID to another address\nIf the target address is a contract, it must implement `onERC721Received`,\nwhich is called upon a safe transfer, and return the magic value\n`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\nthe transfer is reverted.\nRequires the msg sender to be the owner, approved, or operator\n@param _from current owner of the token\n@param _to address to receive the ownership of the given token ID\n@param _tokenId uint256 ID of the token to be transferred\n@param _data bytes data to send along with a safe transfer check", "id": 1118, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { "id": 1100, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1093, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1118, "src": "6678:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1092, "name": "address", "nodeType": "ElementaryTypeName", "src": "6678:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1095, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1118, "src": "6697:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1094, "name": "address", "nodeType": "ElementaryTypeName", "src": "6697:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1097, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1118, "src": "6714:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1096, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6714:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1099, "name": "_data", "nodeType": "VariableDeclaration", "scope": 1118, "src": "6736:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1098, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6736:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "6672:79:9" }, "payable": false, "returnParameters": { "id": 1101, "nodeType": "ParameterList", "parameters": [], "src": "6765:0:9" }, "scope": 1349, "src": "6647:276:9", "stateMutability": "nonpayable", "superFunction": 800, "visibility": "public" }, { "body": { "id": 1149, "nodeType": "Block", "src": "7388:320:9", "statements": [ { "assignments": [ 1128 ], "declarations": [ { "constant": false, "id": 1128, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1150, "src": "7394:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1127, "name": "address", "nodeType": "ElementaryTypeName", "src": "7394:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1132, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1130, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "7418:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1129, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [ 895 ], "referencedDeclaration": 895, "src": "7410:7:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 1131, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7410:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "7394:33:9" }, { "expression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1133, "name": "_spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1120, "src": "7594:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1134, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1128, "src": "7606:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7594:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1137, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "7633:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1136, "name": "getApproved", "nodeType": "Identifier", "overloadedDeclarations": [ 972 ], "referencedDeclaration": 972, "src": "7621:11:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 1138, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7621:21:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1139, "name": "_spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1120, "src": "7646:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7621:33:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7594:60:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1143, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1128, "src": "7681:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1144, "name": "_spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1120, "src": "7688:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1142, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [ 1019 ], "referencedDeclaration": 1019, "src": "7664:16:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)" } }, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7664:33:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7594:103:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 1147, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7586:117:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1126, "id": 1148, "nodeType": "Return", "src": "7579:124:9" } ] }, "documentation": "@dev Returns whether the given spender can transfer a given token ID\n@param _spender address of the spender to query\n@param _tokenId uint256 ID of the token to be transferred\n@return bool whether the msg.sender is approved for the given token ID,\n is an operator of the owner, or is the owner of the token", "id": 1150, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isApprovedOrOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1123, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1120, "name": "_spender", "nodeType": "VariableDeclaration", "scope": 1150, "src": "7302:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1119, "name": "address", "nodeType": "ElementaryTypeName", "src": "7302:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1122, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1150, "src": "7324:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1121, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7324:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7296:48:9" }, "payable": false, "returnParameters": { "id": 1126, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1125, "name": "", "nodeType": "VariableDeclaration", "scope": 1150, "src": "7380:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1124, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7380:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "7379:6:9" }, "scope": 1349, "src": "7270:438:9", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1178, "nodeType": "Block", "src": "8012:114:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1158, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1152, "src": "8026:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1160, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8041:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1159, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8033:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8033:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8026:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1157, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "8018:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8018:26:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1164, "nodeType": "ExpressionStatement", "src": "8018:26:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1166, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1152, "src": "8061:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1167, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1154, "src": "8066:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1165, "name": "addTokenTo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1273, "src": "8050:10:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8050:25:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1169, "nodeType": "ExpressionStatement", "src": "8050:25:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8103:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1171, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8095:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1173, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8095:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1174, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1152, "src": "8107:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1175, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1154, "src": "8112:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1170, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "8086:8:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8086:35:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1177, "nodeType": "EmitStatement", "src": "8081:40:9" } ] }, "documentation": "@dev Internal function to mint a new token\nReverts if the given token ID already exists\n@param _to The address that will own the minted token\n@param _tokenId uint256 ID of the token to be minted by the msg.sender", "id": 1179, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "_mint", "nodeType": "FunctionDefinition", "parameters": { "id": 1155, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1152, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1179, "src": "7972:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1151, "name": "address", "nodeType": "ElementaryTypeName", "src": "7972:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1154, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1179, "src": "7985:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1153, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7985:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7971:31:9" }, "payable": false, "returnParameters": { "id": 1156, "nodeType": "ParameterList", "parameters": [], "src": "8012:0:9" }, "scope": 1349, "src": "7957:169:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1204, "nodeType": "Block", "src": "8370:130:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1187, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "8390:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1188, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1183, "src": "8398:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1186, "name": "clearApproval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "8376:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8376:31:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1190, "nodeType": "ExpressionStatement", "src": "8376:31:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1192, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "8429:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1193, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1183, "src": "8437:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1191, "name": "removeTokenFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1308, "src": "8413:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8413:33:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1195, "nodeType": "ExpressionStatement", "src": "8413:33:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1197, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "8466:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8482:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1198, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8474:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8474:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1201, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1183, "src": "8486:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1196, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "8457:8:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8457:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1203, "nodeType": "EmitStatement", "src": "8452:43:9" } ] }, "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\n@param _tokenId uint256 ID of the token being burned by the msg.sender", "id": 1205, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "_burn", "nodeType": "FunctionDefinition", "parameters": { "id": 1184, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1181, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 1205, "src": "8327:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1180, "name": "address", "nodeType": "ElementaryTypeName", "src": "8327:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1183, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1205, "src": "8343:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1182, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8343:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8326:34:9" }, "payable": false, "returnParameters": { "id": 1185, "nodeType": "ParameterList", "parameters": [], "src": "8370:0:9" }, "scope": 1349, "src": "8312:188:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1237, "nodeType": "Block", "src": "8828:148:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1214, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1209, "src": "8850:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1213, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [ 895 ], "referencedDeclaration": 895, "src": "8842:7:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8842:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1216, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1207, "src": "8863:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8842:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1212, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "8834:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1218, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8834:36:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1219, "nodeType": "ExpressionStatement", "src": "8834:36:9" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1220, "name": "tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "8880:14:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1222, "indexExpression": { "argumentTypes": null, "id": 1221, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1209, "src": "8895:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8880:24:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1224, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8916:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8908:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8908:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8880:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1236, "nodeType": "IfStatement", "src": "8876:96:9", "trueBody": { "id": 1235, "nodeType": "Block", "src": "8920:52:9", "statements": [ { "expression": { "argumentTypes": null, "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1227, "name": "tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "8928:14:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1229, "indexExpression": { "argumentTypes": null, "id": 1228, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1209, "src": "8943:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8928:24:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8963:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1230, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8955:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1232, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8955:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8928:37:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1234, "nodeType": "ExpressionStatement", "src": "8928:37:9" } ] } } ] }, "documentation": "@dev Internal function to clear current approval of a given token ID\nReverts if the given address is not indeed the owner of the token\n@param _owner owner of the token\n@param _tokenId uint256 ID of the token to be transferred", "id": 1238, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "clearApproval", "nodeType": "FunctionDefinition", "parameters": { "id": 1210, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1207, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 1238, "src": "8785:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1206, "name": "address", "nodeType": "ElementaryTypeName", "src": "8785:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1209, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1238, "src": "8801:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1208, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8801:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8784:34:9" }, "payable": false, "returnParameters": { "id": 1211, "nodeType": "ParameterList", "parameters": [], "src": "8828:0:9" }, "scope": 1349, "src": "8762:214:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1272, "nodeType": "Block", "src": "9299:144:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1246, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "9313:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1248, "indexExpression": { "argumentTypes": null, "id": 1247, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1242, "src": "9324:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9313:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9345:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1249, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9337:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9337:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9313:34:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1245, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "9305:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9305:43:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1254, "nodeType": "ExpressionStatement", "src": "9305:43:9" }, { "expression": { "argumentTypes": null, "id": 1259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1255, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "9354:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1257, "indexExpression": { "argumentTypes": null, "id": 1256, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1242, "src": "9365:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9354:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1258, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1240, "src": "9377:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9354:26:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1260, "nodeType": "ExpressionStatement", "src": "9354:26:9" }, { "expression": { "argumentTypes": null, "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1261, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "9386:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1263, "indexExpression": { "argumentTypes": null, "id": 1262, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1240, "src": "9403:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9386:21:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "31", "id": 1268, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9436:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1264, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "9410:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1266, "indexExpression": { "argumentTypes": null, "id": 1265, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1240, "src": "9427:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9410:21:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 624, "src": "9410:25:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9410:28:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9386:52:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1271, "nodeType": "ExpressionStatement", "src": "9386:52:9" } ] }, "documentation": "@dev Internal function to add a token ID to the list of a given address\n@param _to address representing the new owner of the given token ID\n@param _tokenId uint256 ID of the token to be added to the tokens list of the given address", "id": 1273, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "addTokenTo", "nodeType": "FunctionDefinition", "parameters": { "id": 1243, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1240, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1273, "src": "9259:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1239, "name": "address", "nodeType": "ElementaryTypeName", "src": "9259:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1242, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1273, "src": "9272:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1241, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9272:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "9258:31:9" }, "payable": false, "returnParameters": { "id": 1244, "nodeType": "ParameterList", "parameters": [], "src": "9299:0:9" }, "scope": 1349, "src": "9239:204:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1307, "nodeType": "Block", "src": "9789:147:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1282, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "9811:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1281, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [ 895 ], "referencedDeclaration": 895, "src": "9803:7:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9803:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1284, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "9824:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9803:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1280, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "9795:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9795:35:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1287, "nodeType": "ExpressionStatement", "src": "9795:35:9" }, { "expression": { "argumentTypes": null, "id": 1297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1288, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "9836:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1290, "indexExpression": { "argumentTypes": null, "id": 1289, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "9853:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9836:23:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "31", "id": 1295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9890:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1291, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "9862:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1293, "indexExpression": { "argumentTypes": null, "id": 1292, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "9879:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9862:23:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 600, "src": "9862:27:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1296, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9862:30:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9836:56:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1298, "nodeType": "ExpressionStatement", "src": "9836:56:9" }, { "expression": { "argumentTypes": null, "id": 1305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1299, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "9898:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1301, "indexExpression": { "argumentTypes": null, "id": 1300, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "9909:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9898:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9929:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1302, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9921:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9921:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9898:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1306, "nodeType": "ExpressionStatement", "src": "9898:33:9" } ] }, "documentation": "@dev Internal function to remove a token ID from the list of a given address\n@param _from address representing the previous owner of the given token ID\n@param _tokenId uint256 ID of the token to be removed from the tokens list of the given address", "id": 1308, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "removeTokenFrom", "nodeType": "FunctionDefinition", "parameters": { "id": 1278, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1275, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1308, "src": "9747:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1274, "name": "address", "nodeType": "ElementaryTypeName", "src": "9747:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1277, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1308, "src": "9762:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1276, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9762:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "9746:33:9" }, "payable": false, "returnParameters": { "id": 1279, "nodeType": "ParameterList", "parameters": [], "src": "9789:0:9" }, "scope": 1349, "src": "9722:214:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1347, "nodeType": "Block", "src": "10589:200:9", "statements": [ { "condition": { "argumentTypes": null, "id": 1324, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "10599:17:9", "subExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 1321, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "10600:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1322, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 469, "src": "10600:14:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)" } }, "id": 1323, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10600:16:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1328, "nodeType": "IfStatement", "src": "10595:49:9", "trueBody": { "id": 1327, "nodeType": "Block", "src": "10618:26:9", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1325, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10633:4:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1320, "id": 1326, "nodeType": "Return", "src": "10626:11:9" } ] } }, { "assignments": [ 1330 ], "declarations": [ { "constant": false, "id": 1330, "name": "retval", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10649:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1329, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "10649:6:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": null, "visibility": "internal" } ], "id": 1341, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1335, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "10709:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10709:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1337, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1310, "src": "10721:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1338, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "10728:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1339, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1316, "src": "10738:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1332, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "10680:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1331, "name": "ERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1368, "src": "10665:14:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721Receiver_$1368_$", "typeString": "type(contract ERC721Receiver)" } }, "id": 1333, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10665:19:9", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC721Receiver_$1368", "typeString": "contract ERC721Receiver" } }, "id": 1334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1367, "src": "10665:36:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" } }, "id": 1340, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10665:79:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "VariableDeclarationStatement", "src": "10649:95:9" }, { "expression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1342, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1330, "src": "10758:6:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1343, "name": "ERC721_RECEIVED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "10768:15:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "10758:25:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 1345, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10757:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1320, "id": 1346, "nodeType": "Return", "src": "10750:34:9" } ] }, "documentation": "@dev Internal function to invoke `onERC721Received` on a target address\nThe call is not executed if the target address is not a contract\n@param _from address representing the previous owner of the given token ID\n@param _to target address that will receive the tokens\n@param _tokenId uint256 ID of the token to be transferred\n@param _data bytes optional data to send along with the call\n@return whether the call correctly returned the expected magic value", "id": 1348, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "checkAndCallSafeTransfer", "nodeType": "FunctionDefinition", "parameters": { "id": 1317, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1310, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10481:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1309, "name": "address", "nodeType": "ElementaryTypeName", "src": "10481:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1312, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10500:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1311, "name": "address", "nodeType": "ElementaryTypeName", "src": "10500:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1314, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10517:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1313, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10517:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1316, "name": "_data", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10539:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1315, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10539:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "10475:79:9" }, "payable": false, "returnParameters": { "id": 1320, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1319, "name": "", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10581:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1318, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10581:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "10580:6:9" }, "scope": 1349, "src": "10442:347:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], "scope": 1350, "src": "363:10428:9" } ], "src": "0:10792:9" }, "legacyAST": { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/token/ERC721/ERC721BasicToken.sol", "exportedSymbols": { "ERC721BasicToken": [ 1349 ] }, "id": 1350, "nodeType": "SourceUnit", "nodes": [ { "id": 803, "literals": [ "solidity", "^", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:24:9" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/token/ERC721/ERC721Basic.sol", "file": "./ERC721Basic.sol", "id": 804, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 802, "src": "26:27:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/token/ERC721/ERC721Receiver.sol", "file": "./ERC721Receiver.sol", "id": 805, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 1369, "src": "54:30:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", "id": 806, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 626, "src": "85:33:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/AddressUtils.sol", "file": "../../AddressUtils.sol", "id": 807, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 471, "src": "119:32:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/willpark/Desktop/bookwork-klaytn/project_codes/nftbapp/backend-nftdapp/node_modules/zeppelin-solidity/contracts/introspection/SupportsInterfaceWithLookup.sol", "file": "../../introspection/SupportsInterfaceWithLookup.sol", "id": 808, "nodeType": "ImportDirective", "scope": 1350, "sourceUnit": 532, "src": "152:61:9", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 809, "name": "SupportsInterfaceWithLookup", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 531, "src": "392:27:9", "typeDescriptions": { "typeIdentifier": "t_contract$_SupportsInterfaceWithLookup_$531", "typeString": "contract SupportsInterfaceWithLookup" } }, "id": 810, "nodeType": "InheritanceSpecifier", "src": "392:27:9" }, { "arguments": null, "baseName": { "contractScope": null, "id": 811, "name": "ERC721Basic", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 801, "src": "421:11:9", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC721Basic_$801", "typeString": "contract ERC721Basic" } }, "id": 812, "nodeType": "InheritanceSpecifier", "src": "421:11:9" } ], "contractDependencies": [ 480, 531, 801 ], "contractKind": "contract", "documentation": "@title ERC721 Non-Fungible Token Standard basic implementation\n@dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", "fullyImplemented": true, "id": 1349, "linearizedBaseContracts": [ 1349, 801, 531, 480 ], "name": "ERC721BasicToken", "nodeType": "ContractDefinition", "nodes": [ { "id": 815, "libraryName": { "contractScope": null, "id": 813, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 625, "src": "444:8:9", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$625", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "438:27:9", "typeName": { "id": 814, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "457:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "id": 818, "libraryName": { "contractScope": null, "id": 816, "name": "AddressUtils", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 470, "src": "474:12:9", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressUtils_$470", "typeString": "library AddressUtils" } }, "nodeType": "UsingForDirective", "src": "468:31:9", "typeName": { "id": 817, "name": "address", "nodeType": "ElementaryTypeName", "src": "491:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "constant": true, "id": 821, "name": "ERC721_RECEIVED", "nodeType": "VariableDeclaration", "scope": 1349, "src": "670:52:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 819, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "670:6:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": { "argumentTypes": null, "hexValue": "30783135306237613032", "id": 820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "712:10:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_353073666_by_1", "typeString": "int_const 353073666" }, "value": "0x150b7a02" }, "visibility": "private" }, { "constant": false, "id": 825, "name": "tokenOwner", "nodeType": "VariableDeclaration", "scope": 1349, "src": "763:48:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 824, "keyType": { "id": 822, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "772:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "763:28:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 823, "name": "address", "nodeType": "ElementaryTypeName", "src": "783:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 829, "name": "tokenApprovals", "nodeType": "VariableDeclaration", "scope": 1349, "src": "863:52:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 828, "keyType": { "id": 826, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "872:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "863:28:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 827, "name": "address", "nodeType": "ElementaryTypeName", "src": "883:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 833, "name": "ownedTokensCount", "nodeType": "VariableDeclaration", "scope": 1349, "src": "969:54:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 832, "keyType": { "id": 830, "name": "address", "nodeType": "ElementaryTypeName", "src": "978:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "969:28:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 831, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "989:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 839, "name": "operatorApprovals", "nodeType": "VariableDeclaration", "scope": 1349, "src": "1074:73:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "typeName": { "id": 838, "keyType": { "id": 834, "name": "address", "nodeType": "ElementaryTypeName", "src": "1083:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1074:46:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "valueType": { "id": 837, "keyType": { "id": 835, "name": "address", "nodeType": "ElementaryTypeName", "src": "1103:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1094:25:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 836, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1114:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } } }, "value": null, "visibility": "internal" }, { "body": { "id": 850, "nodeType": "Block", "src": "1179:172:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 843, "name": "InterfaceId_ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 687, "src": "1277:18:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } ], "id": 842, "name": "_registerInterface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 530, "src": "1258:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4)" } }, "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1258:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 845, "nodeType": "ExpressionStatement", "src": "1258:38:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 847, "name": "InterfaceId_ERC721Exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 690, "src": "1321:24:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } ], "id": 846, "name": "_registerInterface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 530, "src": "1302:18:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4)" } }, "id": 848, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1302:44:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 849, "nodeType": "ExpressionStatement", "src": "1302:44:9" } ] }, "documentation": null, "id": 851, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 840, "nodeType": "ParameterList", "parameters": [], "src": "1163:2:9" }, "payable": false, "returnParameters": { "id": 841, "nodeType": "ParameterList", "parameters": [], "src": "1179:0:9" }, "scope": 1349, "src": "1152:199:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 870, "nodeType": "Block", "src": "1608:77:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 863, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 859, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, "src": "1622:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1640:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 860, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1632:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1632:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1622:20:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 858, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "1614:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 864, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1614:29:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 865, "nodeType": "ExpressionStatement", "src": "1614:29:9" }, { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 866, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "1656:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 868, "indexExpression": { "argumentTypes": null, "id": 867, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, "src": "1673:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1656:24:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 857, "id": 869, "nodeType": "Return", "src": "1649:31:9" } ] }, "documentation": "@dev Gets the balance of the specified address\n@param _owner address to query the balance of\n@return uint256 representing the amount owned by the passed address", "id": 871, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { "id": 854, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 853, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 871, "src": "1562:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 852, "name": "address", "nodeType": "ElementaryTypeName", "src": "1562:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1561:16:9" }, "payable": false, "returnParameters": { "id": 857, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 856, "name": "", "nodeType": "VariableDeclaration", "scope": 871, "src": "1599:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 855, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1599:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1598:9:9" }, "scope": 1349, "src": "1543:142:9", "stateMutability": "view", "superFunction": 727, "visibility": "public" }, { "body": { "id": 894, "nodeType": "Block", "src": "1963:99:9", "statements": [ { "assignments": [ 879 ], "declarations": [ { "constant": false, "id": 879, "name": "owner", "nodeType": "VariableDeclaration", "scope": 895, "src": "1969:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 878, "name": "address", "nodeType": "ElementaryTypeName", "src": "1969:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 883, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 880, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "1985:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 882, "indexExpression": { "argumentTypes": null, "id": 881, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 873, "src": "1996:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1985:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1969:36:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 885, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "2019:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 887, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2036:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2028:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2028:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2019:19:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 884, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "2011:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 890, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2011:28:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 891, "nodeType": "ExpressionStatement", "src": "2011:28:9" }, { "expression": { "argumentTypes": null, "id": 892, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 879, "src": "2052:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 877, "id": 893, "nodeType": "Return", "src": "2045:12:9" } ] }, "documentation": "@dev Gets the owner of the specified token ID\n@param _tokenId uint256 ID of the token to query the owner of\n@return owner address currently marked as the owner of the given token ID", "id": 895, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "ownerOf", "nodeType": "FunctionDefinition", "parameters": { "id": 874, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 873, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 895, "src": "1915:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 872, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1915:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1914:18:9" }, "payable": false, "returnParameters": { "id": 877, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 876, "name": "", "nodeType": "VariableDeclaration", "scope": 895, "src": "1954:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 875, "name": "address", "nodeType": "ElementaryTypeName", "src": "1954:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1953:9:9" }, "scope": 1349, "src": "1898:164:9", "stateMutability": "view", "superFunction": 734, "visibility": "public" }, { "body": { "id": 914, "nodeType": "Block", "src": "2301:79:9", "statements": [ { "assignments": [ 903 ], "declarations": [ { "constant": false, "id": 903, "name": "owner", "nodeType": "VariableDeclaration", "scope": 915, "src": "2307:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 902, "name": "address", "nodeType": "ElementaryTypeName", "src": "2307:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 907, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 904, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "2323:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 906, "indexExpression": { "argumentTypes": null, "id": 905, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 897, "src": "2334:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2323:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2307:36:9" }, { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 908, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "2356:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 910, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2373:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 909, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2365:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2365:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2356:19:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 901, "id": 913, "nodeType": "Return", "src": "2349:26:9" } ] }, "documentation": "@dev Returns whether the specified token exists\n@param _tokenId uint256 ID of the token to query the existence of\n@return whether the token exists", "id": 915, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "exists", "nodeType": "FunctionDefinition", "parameters": { "id": 898, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 897, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 915, "src": "2256:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 896, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2256:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2255:18:9" }, "payable": false, "returnParameters": { "id": 901, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 900, "name": "", "nodeType": "VariableDeclaration", "scope": 915, "src": "2295:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 899, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2295:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "2294:6:9" }, "scope": 1349, "src": "2240:140:9", "stateMutability": "view", "superFunction": 741, "visibility": "public" }, { "body": { "id": 959, "nodeType": "Block", "src": "2840:222:9", "statements": [ { "assignments": [ 923 ], "declarations": [ { "constant": false, "id": 923, "name": "owner", "nodeType": "VariableDeclaration", "scope": 960, "src": "2846:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 922, "name": "address", "nodeType": "ElementaryTypeName", "src": "2846:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 927, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 925, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "2870:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 924, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [ 895 ], "referencedDeclaration": 895, "src": "2862:7:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 926, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2862:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2846:33:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 929, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 917, "src": "2893:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 930, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "2900:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2893:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 928, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "2885:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2885:21:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 933, "nodeType": "ExpressionStatement", "src": "2885:21:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 938, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 935, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "2920:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2920:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 937, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "2934:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2920:19:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 940, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "2960:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 941, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "2967:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2967:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 939, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [ 1019 ], "referencedDeclaration": 1019, "src": "2943:16:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)" } }, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2943:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2920:58:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 934, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "2912:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 945, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2912:67:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 946, "nodeType": "ExpressionStatement", "src": "2912:67:9" }, { "expression": { "argumentTypes": null, "id": 951, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 947, "name": "tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "2986:14:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 949, "indexExpression": { "argumentTypes": null, "id": 948, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "3001:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2986:24:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 950, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 917, "src": "3013:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2986:30:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 952, "nodeType": "ExpressionStatement", "src": "2986:30:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 954, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "3036:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 955, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 917, "src": "3043:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 956, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "3048:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 953, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 712, "src": "3027:8:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3027:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 958, "nodeType": "EmitStatement", "src": "3022:35:9" } ] }, "documentation": "@dev Approves another address to transfer the given token ID\nThe zero address indicates there is no approved address.\nThere can only be one approved address per token at a given time.\nCan only be called by the token owner or an approved operator.\n@param _to address to be approved for the given token ID\n@param _tokenId uint256 ID of the token to be approved", "id": 960, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": { "id": 920, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 917, "name": "_to", "nodeType": "VariableDeclaration", "scope": 960, "src": "2802:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 916, "name": "address", "nodeType": "ElementaryTypeName", "src": "2802:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 919, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 960, "src": "2815:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 918, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2815:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2801:31:9" }, "payable": false, "returnParameters": { "id": 921, "nodeType": "ParameterList", "parameters": [], "src": "2840:0:9" }, "scope": 1349, "src": "2785:277:9", "stateMutability": "nonpayable", "superFunction": 748, "visibility": "public" }, { "body": { "id": 971, "nodeType": "Block", "src": "3358:42:9", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 967, "name": "tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "3371:14:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 969, "indexExpression": { "argumentTypes": null, "id": 968, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 962, "src": "3386:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3371:24:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 966, "id": 970, "nodeType": "Return", "src": "3364:31:9" } ] }, "documentation": "@dev Gets the approved address for a token ID, or zero if no address set\n@param _tokenId uint256 ID of the token to query the approval of\n@return address currently approved for the given token ID", "id": 972, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getApproved", "nodeType": "FunctionDefinition", "parameters": { "id": 963, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 962, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 972, "src": "3310:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 961, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3310:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3309:18:9" }, "payable": false, "returnParameters": { "id": 966, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 965, "name": "", "nodeType": "VariableDeclaration", "scope": 972, "src": "3349:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 964, "name": "address", "nodeType": "ElementaryTypeName", "src": "3349:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3348:9:9" }, "scope": 1349, "src": "3289:111:9", "stateMutability": "view", "superFunction": 755, "visibility": "public" }, { "body": { "id": 1002, "nodeType": "Block", "src": "3743:142:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 980, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "3757:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 981, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "3764:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3764:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3757:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 979, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "3749:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3749:26:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 985, "nodeType": "ExpressionStatement", "src": "3749:26:9" }, { "expression": { "argumentTypes": null, "id": 993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 986, "name": "operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "3781:17:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" } }, "id": 990, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 987, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "3799:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3799:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3781:29:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 991, "indexExpression": { "argumentTypes": null, "id": 989, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "3811:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3781:34:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 992, "name": "_approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 976, "src": "3818:9:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3781:46:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 994, "nodeType": "ExpressionStatement", "src": "3781:46:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 996, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "3853:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3853:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 998, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "3865:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 999, "name": "_approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 976, "src": "3870:9:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 995, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 720, "src": "3838:14:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)" } }, "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3838:42:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1001, "nodeType": "EmitStatement", "src": "3833:47:9" } ] }, "documentation": "@dev Sets or unsets the approval of a given operator\nAn operator is allowed to transfer all tokens of the sender on their behalf\n@param _to operator address to set the approval\n@param _approved representing the status of the approval to be set", "id": 1003, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "setApprovalForAll", "nodeType": "FunctionDefinition", "parameters": { "id": 977, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 974, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1003, "src": "3707:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 973, "name": "address", "nodeType": "ElementaryTypeName", "src": "3707:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 976, "name": "_approved", "nodeType": "VariableDeclaration", "scope": 1003, "src": "3720:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 975, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3720:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3706:29:9" }, "payable": false, "returnParameters": { "id": 978, "nodeType": "ParameterList", "parameters": [], "src": "3743:0:9" }, "scope": 1349, "src": "3680:205:9", "stateMutability": "nonpayable", "superFunction": 762, "visibility": "public" }, { "body": { "id": 1018, "nodeType": "Block", "src": "4308:54:9", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1012, "name": "operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 839, "src": "4321:17:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" } }, "id": 1014, "indexExpression": { "argumentTypes": null, "id": 1013, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1005, "src": "4339:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4321:25:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1016, "indexExpression": { "argumentTypes": null, "id": 1015, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1007, "src": "4347:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4321:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1011, "id": 1017, "nodeType": "Return", "src": "4314:43:9" } ] }, "documentation": "@dev Tells whether an operator is approved by a given owner\n@param _owner owner address which you want to query the approval of\n@param _operator operator address which you want to query the approval of\n@return bool whether the given operator is approved by the given owner", "id": 1019, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isApprovedForAll", "nodeType": "FunctionDefinition", "parameters": { "id": 1008, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1005, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 1019, "src": "4225:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1004, "name": "address", "nodeType": "ElementaryTypeName", "src": "4225:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1007, "name": "_operator", "nodeType": "VariableDeclaration", "scope": 1019, "src": "4245:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1006, "name": "address", "nodeType": "ElementaryTypeName", "src": "4245:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4219:47:9" }, "payable": false, "returnParameters": { "id": 1011, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1010, "name": "", "nodeType": "VariableDeclaration", "scope": 1019, "src": "4300:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1009, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4300:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4299:6:9" }, "scope": 1349, "src": "4194:168:9", "stateMutability": "view", "superFunction": 771, "visibility": "public" }, { "body": { "id": 1073, "nodeType": "Block", "src": "4877:273:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1030, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "4909:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4909:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1032, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "4921:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1029, "name": "isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "4891:17:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)" } }, "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4891:39:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1028, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "4883:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1034, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4883:48:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1035, "nodeType": "ExpressionStatement", "src": "4883:48:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1037, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "4945:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1039, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4962:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1038, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4954:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1040, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4954:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4945:19:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1036, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "4937:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4937:28:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1043, "nodeType": "ExpressionStatement", "src": "4937:28:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1045, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1023, "src": "4979:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1047, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4994:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1046, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4986:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1048, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4986:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4979:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1044, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "4971:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4971:26:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1051, "nodeType": "ExpressionStatement", "src": "4971:26:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1053, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "5018:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1054, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "5025:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1052, "name": "clearApproval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "5004:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5004:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1056, "nodeType": "ExpressionStatement", "src": "5004:30:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1058, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "5056:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1059, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "5063:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1057, "name": "removeTokenFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1308, "src": "5040:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5040:32:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1061, "nodeType": "ExpressionStatement", "src": "5040:32:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1063, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1023, "src": "5089:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1064, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "5094:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1062, "name": "addTokenTo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1273, "src": "5078:10:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1065, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5078:25:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1066, "nodeType": "ExpressionStatement", "src": "5078:25:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1068, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1021, "src": "5124:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1069, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1023, "src": "5131:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1070, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1025, "src": "5136:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1067, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "5115:8:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5115:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1072, "nodeType": "EmitStatement", "src": "5110:35:9" } ] }, "documentation": "@dev Transfers the ownership of a given token ID to another address\nUsage of this method is discouraged, use `safeTransferFrom` whenever possible\nRequires the msg sender to be the owner, approved, or operator\n@param _from current owner of the token\n@param _to address to receive the ownership of the given token ID\n@param _tokenId uint256 ID of the token to be transferred", "id": 1074, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { "id": 1026, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1021, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1074, "src": "4807:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1020, "name": "address", "nodeType": "ElementaryTypeName", "src": "4807:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1023, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1074, "src": "4826:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1022, "name": "address", "nodeType": "ElementaryTypeName", "src": "4826:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1025, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1074, "src": "4843:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1024, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4843:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4801:62:9" }, "payable": false, "returnParameters": { "id": 1027, "nodeType": "ParameterList", "parameters": [], "src": "4877:0:9" }, "scope": 1349, "src": "4780:370:9", "stateMutability": "nonpayable", "superFunction": 780, "visibility": "public" }, { "body": { "id": 1090, "nodeType": "Block", "src": "5867:98:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1084, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1076, "src": "5935:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1085, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1078, "src": "5942:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1086, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1080, "src": "5947:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 1087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5957:2:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "id": 1083, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [ 1091, 1118 ], "referencedDeclaration": 1118, "src": "5918:16:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 1088, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5918:42:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1089, "nodeType": "ExpressionStatement", "src": "5918:42:9" } ] }, "documentation": "@dev Safely transfers the ownership of a given token ID to another address\nIf the target address is a contract, it must implement `onERC721Received`,\nwhich is called upon a safe transfer, and return the magic value\n`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\nthe transfer is reverted.\n * Requires the msg sender to be the owner, approved, or operator\n@param _from current owner of the token\n@param _to address to receive the ownership of the given token ID\n@param _tokenId uint256 ID of the token to be transferred", "id": 1091, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { "id": 1081, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1076, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1091, "src": "5797:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", "src": "5797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1078, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1091, "src": "5816:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1077, "name": "address", "nodeType": "ElementaryTypeName", "src": "5816:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1080, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1091, "src": "5833:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1079, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5833:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5791:62:9" }, "payable": false, "returnParameters": { "id": 1082, "nodeType": "ParameterList", "parameters": [], "src": "5867:0:9" }, "scope": 1349, "src": "5766:199:9", "stateMutability": "nonpayable", "superFunction": 789, "visibility": "public" }, { "body": { "id": 1117, "nodeType": "Block", "src": "6765:158:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1103, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1093, "src": "6784:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1104, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1095, "src": "6791:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1105, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1097, "src": "6796:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1102, "name": "transferFrom", "nodeType": "Identifier", "overloadedDeclarations": [ 1074 ], "referencedDeclaration": 1074, "src": "6771:12:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6771:34:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1107, "nodeType": "ExpressionStatement", "src": "6771:34:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1110, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1093, "src": "6889:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1111, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1095, "src": "6896:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1112, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1097, "src": "6901:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1113, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1099, "src": "6911:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 1109, "name": "checkAndCallSafeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1348, "src": "6864:24:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)" } }, "id": 1114, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6864:53:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1108, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "6856:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6856:62:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1116, "nodeType": "ExpressionStatement", "src": "6856:62:9" } ] }, "documentation": "@dev Safely transfers the ownership of a given token ID to another address\nIf the target address is a contract, it must implement `onERC721Received`,\nwhich is called upon a safe transfer, and return the magic value\n`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\nthe transfer is reverted.\nRequires the msg sender to be the owner, approved, or operator\n@param _from current owner of the token\n@param _to address to receive the ownership of the given token ID\n@param _tokenId uint256 ID of the token to be transferred\n@param _data bytes data to send along with a safe transfer check", "id": 1118, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { "id": 1100, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1093, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1118, "src": "6678:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1092, "name": "address", "nodeType": "ElementaryTypeName", "src": "6678:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1095, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1118, "src": "6697:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1094, "name": "address", "nodeType": "ElementaryTypeName", "src": "6697:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1097, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1118, "src": "6714:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1096, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6714:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1099, "name": "_data", "nodeType": "VariableDeclaration", "scope": 1118, "src": "6736:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1098, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6736:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "6672:79:9" }, "payable": false, "returnParameters": { "id": 1101, "nodeType": "ParameterList", "parameters": [], "src": "6765:0:9" }, "scope": 1349, "src": "6647:276:9", "stateMutability": "nonpayable", "superFunction": 800, "visibility": "public" }, { "body": { "id": 1149, "nodeType": "Block", "src": "7388:320:9", "statements": [ { "assignments": [ 1128 ], "declarations": [ { "constant": false, "id": 1128, "name": "owner", "nodeType": "VariableDeclaration", "scope": 1150, "src": "7394:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1127, "name": "address", "nodeType": "ElementaryTypeName", "src": "7394:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1132, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1130, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "7418:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1129, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [ 895 ], "referencedDeclaration": 895, "src": "7410:7:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 1131, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7410:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "7394:33:9" }, { "expression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1133, "name": "_spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1120, "src": "7594:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1134, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1128, "src": "7606:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7594:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1137, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "7633:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1136, "name": "getApproved", "nodeType": "Identifier", "overloadedDeclarations": [ 972 ], "referencedDeclaration": 972, "src": "7621:11:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 1138, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7621:21:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1139, "name": "_spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1120, "src": "7646:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7621:33:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7594:60:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1143, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1128, "src": "7681:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1144, "name": "_spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1120, "src": "7688:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1142, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [ 1019 ], "referencedDeclaration": 1019, "src": "7664:16:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)" } }, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7664:33:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7594:103:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 1147, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7586:117:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1126, "id": 1148, "nodeType": "Return", "src": "7579:124:9" } ] }, "documentation": "@dev Returns whether the given spender can transfer a given token ID\n@param _spender address of the spender to query\n@param _tokenId uint256 ID of the token to be transferred\n@return bool whether the msg.sender is approved for the given token ID,\n is an operator of the owner, or is the owner of the token", "id": 1150, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "isApprovedOrOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 1123, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1120, "name": "_spender", "nodeType": "VariableDeclaration", "scope": 1150, "src": "7302:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1119, "name": "address", "nodeType": "ElementaryTypeName", "src": "7302:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1122, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1150, "src": "7324:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1121, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7324:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7296:48:9" }, "payable": false, "returnParameters": { "id": 1126, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1125, "name": "", "nodeType": "VariableDeclaration", "scope": 1150, "src": "7380:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1124, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7380:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "7379:6:9" }, "scope": 1349, "src": "7270:438:9", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1178, "nodeType": "Block", "src": "8012:114:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1158, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1152, "src": "8026:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1160, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8041:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1159, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8033:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8033:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8026:17:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1157, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "8018:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8018:26:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1164, "nodeType": "ExpressionStatement", "src": "8018:26:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1166, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1152, "src": "8061:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1167, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1154, "src": "8066:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1165, "name": "addTokenTo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1273, "src": "8050:10:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8050:25:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1169, "nodeType": "ExpressionStatement", "src": "8050:25:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8103:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1171, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8095:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1173, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8095:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1174, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1152, "src": "8107:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1175, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1154, "src": "8112:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1170, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "8086:8:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8086:35:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1177, "nodeType": "EmitStatement", "src": "8081:40:9" } ] }, "documentation": "@dev Internal function to mint a new token\nReverts if the given token ID already exists\n@param _to The address that will own the minted token\n@param _tokenId uint256 ID of the token to be minted by the msg.sender", "id": 1179, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "_mint", "nodeType": "FunctionDefinition", "parameters": { "id": 1155, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1152, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1179, "src": "7972:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1151, "name": "address", "nodeType": "ElementaryTypeName", "src": "7972:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1154, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1179, "src": "7985:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1153, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7985:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7971:31:9" }, "payable": false, "returnParameters": { "id": 1156, "nodeType": "ParameterList", "parameters": [], "src": "8012:0:9" }, "scope": 1349, "src": "7957:169:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1204, "nodeType": "Block", "src": "8370:130:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1187, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "8390:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1188, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1183, "src": "8398:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1186, "name": "clearApproval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, "src": "8376:13:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8376:31:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1190, "nodeType": "ExpressionStatement", "src": "8376:31:9" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1192, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "8429:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1193, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1183, "src": "8437:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1191, "name": "removeTokenFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1308, "src": "8413:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8413:33:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1195, "nodeType": "ExpressionStatement", "src": "8413:33:9" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1197, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "8466:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8482:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1198, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8474:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8474:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1201, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1183, "src": "8486:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1196, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "8457:8:9", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8457:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1203, "nodeType": "EmitStatement", "src": "8452:43:9" } ] }, "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\n@param _tokenId uint256 ID of the token being burned by the msg.sender", "id": 1205, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "_burn", "nodeType": "FunctionDefinition", "parameters": { "id": 1184, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1181, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 1205, "src": "8327:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1180, "name": "address", "nodeType": "ElementaryTypeName", "src": "8327:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1183, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1205, "src": "8343:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1182, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8343:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8326:34:9" }, "payable": false, "returnParameters": { "id": 1185, "nodeType": "ParameterList", "parameters": [], "src": "8370:0:9" }, "scope": 1349, "src": "8312:188:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1237, "nodeType": "Block", "src": "8828:148:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1214, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1209, "src": "8850:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1213, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [ 895 ], "referencedDeclaration": 895, "src": "8842:7:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8842:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1216, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1207, "src": "8863:6:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8842:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1212, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "8834:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1218, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8834:36:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1219, "nodeType": "ExpressionStatement", "src": "8834:36:9" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1220, "name": "tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "8880:14:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1222, "indexExpression": { "argumentTypes": null, "id": 1221, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1209, "src": "8895:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8880:24:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1224, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8916:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8908:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8908:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8880:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1236, "nodeType": "IfStatement", "src": "8876:96:9", "trueBody": { "id": 1235, "nodeType": "Block", "src": "8920:52:9", "statements": [ { "expression": { "argumentTypes": null, "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1227, "name": "tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "8928:14:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1229, "indexExpression": { "argumentTypes": null, "id": 1228, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1209, "src": "8943:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8928:24:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8963:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1230, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8955:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1232, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8955:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8928:37:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1234, "nodeType": "ExpressionStatement", "src": "8928:37:9" } ] } } ] }, "documentation": "@dev Internal function to clear current approval of a given token ID\nReverts if the given address is not indeed the owner of the token\n@param _owner owner of the token\n@param _tokenId uint256 ID of the token to be transferred", "id": 1238, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "clearApproval", "nodeType": "FunctionDefinition", "parameters": { "id": 1210, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1207, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 1238, "src": "8785:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1206, "name": "address", "nodeType": "ElementaryTypeName", "src": "8785:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1209, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1238, "src": "8801:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1208, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8801:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8784:34:9" }, "payable": false, "returnParameters": { "id": 1211, "nodeType": "ParameterList", "parameters": [], "src": "8828:0:9" }, "scope": 1349, "src": "8762:214:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1272, "nodeType": "Block", "src": "9299:144:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1246, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "9313:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1248, "indexExpression": { "argumentTypes": null, "id": 1247, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1242, "src": "9324:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9313:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9345:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1249, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9337:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9337:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9313:34:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1245, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "9305:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9305:43:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1254, "nodeType": "ExpressionStatement", "src": "9305:43:9" }, { "expression": { "argumentTypes": null, "id": 1259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1255, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "9354:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1257, "indexExpression": { "argumentTypes": null, "id": 1256, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1242, "src": "9365:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9354:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1258, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1240, "src": "9377:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9354:26:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1260, "nodeType": "ExpressionStatement", "src": "9354:26:9" }, { "expression": { "argumentTypes": null, "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1261, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "9386:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1263, "indexExpression": { "argumentTypes": null, "id": 1262, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1240, "src": "9403:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9386:21:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "31", "id": 1268, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9436:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1264, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "9410:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1266, "indexExpression": { "argumentTypes": null, "id": 1265, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1240, "src": "9427:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9410:21:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 624, "src": "9410:25:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9410:28:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9386:52:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1271, "nodeType": "ExpressionStatement", "src": "9386:52:9" } ] }, "documentation": "@dev Internal function to add a token ID to the list of a given address\n@param _to address representing the new owner of the given token ID\n@param _tokenId uint256 ID of the token to be added to the tokens list of the given address", "id": 1273, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "addTokenTo", "nodeType": "FunctionDefinition", "parameters": { "id": 1243, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1240, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1273, "src": "9259:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1239, "name": "address", "nodeType": "ElementaryTypeName", "src": "9259:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1242, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1273, "src": "9272:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1241, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9272:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "9258:31:9" }, "payable": false, "returnParameters": { "id": 1244, "nodeType": "ParameterList", "parameters": [], "src": "9299:0:9" }, "scope": 1349, "src": "9239:204:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1307, "nodeType": "Block", "src": "9789:147:9", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1282, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "9811:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1281, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [ 895 ], "referencedDeclaration": 895, "src": "9803:7:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9803:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1284, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "9824:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9803:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 1280, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 1759, 1760 ], "referencedDeclaration": 1759, "src": "9795:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9795:35:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1287, "nodeType": "ExpressionStatement", "src": "9795:35:9" }, { "expression": { "argumentTypes": null, "id": 1297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1288, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "9836:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1290, "indexExpression": { "argumentTypes": null, "id": 1289, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "9853:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9836:23:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "31", "id": 1295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9890:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1291, "name": "ownedTokensCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "9862:16:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1293, "indexExpression": { "argumentTypes": null, "id": 1292, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1275, "src": "9879:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9862:23:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 600, "src": "9862:27:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1296, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9862:30:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9836:56:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1298, "nodeType": "ExpressionStatement", "src": "9836:56:9" }, { "expression": { "argumentTypes": null, "id": 1305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1299, "name": "tokenOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 825, "src": "9898:10:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 1301, "indexExpression": { "argumentTypes": null, "id": 1300, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1277, "src": "9909:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9898:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9929:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1302, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9921:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 1304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9921:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9898:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1306, "nodeType": "ExpressionStatement", "src": "9898:33:9" } ] }, "documentation": "@dev Internal function to remove a token ID from the list of a given address\n@param _from address representing the previous owner of the given token ID\n@param _tokenId uint256 ID of the token to be removed from the tokens list of the given address", "id": 1308, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "removeTokenFrom", "nodeType": "FunctionDefinition", "parameters": { "id": 1278, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1275, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1308, "src": "9747:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1274, "name": "address", "nodeType": "ElementaryTypeName", "src": "9747:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1277, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1308, "src": "9762:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1276, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9762:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "9746:33:9" }, "payable": false, "returnParameters": { "id": 1279, "nodeType": "ParameterList", "parameters": [], "src": "9789:0:9" }, "scope": 1349, "src": "9722:214:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 1347, "nodeType": "Block", "src": "10589:200:9", "statements": [ { "condition": { "argumentTypes": null, "id": 1324, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "10599:17:9", "subExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 1321, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "10600:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1322, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 469, "src": "10600:14:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)" } }, "id": 1323, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10600:16:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1328, "nodeType": "IfStatement", "src": "10595:49:9", "trueBody": { "id": 1327, "nodeType": "Block", "src": "10618:26:9", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1325, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10633:4:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1320, "id": 1326, "nodeType": "Return", "src": "10626:11:9" } ] } }, { "assignments": [ 1330 ], "declarations": [ { "constant": false, "id": 1330, "name": "retval", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10649:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 1329, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "10649:6:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "value": null, "visibility": "internal" } ], "id": 1341, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1335, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1756, "src": "10709:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10709:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1337, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1310, "src": "10721:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1338, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1314, "src": "10728:8:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1339, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1316, "src": "10738:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1332, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "10680:3:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1331, "name": "ERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1368, "src": "10665:14:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721Receiver_$1368_$", "typeString": "type(contract ERC721Receiver)" } }, "id": 1333, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10665:19:9", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC721Receiver_$1368", "typeString": "contract ERC721Receiver" } }, "id": 1334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1367, "src": "10665:36:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" } }, "id": 1340, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10665:79:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "VariableDeclarationStatement", "src": "10649:95:9" }, { "expression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1342, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1330, "src": "10758:6:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1343, "name": "ERC721_RECEIVED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "10768:15:9", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "10758:25:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 1345, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10757:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 1320, "id": 1346, "nodeType": "Return", "src": "10750:34:9" } ] }, "documentation": "@dev Internal function to invoke `onERC721Received` on a target address\nThe call is not executed if the target address is not a contract\n@param _from address representing the previous owner of the given token ID\n@param _to target address that will receive the tokens\n@param _tokenId uint256 ID of the token to be transferred\n@param _data bytes optional data to send along with the call\n@return whether the call correctly returned the expected magic value", "id": 1348, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "checkAndCallSafeTransfer", "nodeType": "FunctionDefinition", "parameters": { "id": 1317, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1310, "name": "_from", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10481:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1309, "name": "address", "nodeType": "ElementaryTypeName", "src": "10481:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1312, "name": "_to", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10500:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1311, "name": "address", "nodeType": "ElementaryTypeName", "src": "10500:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1314, "name": "_tokenId", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10517:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1313, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10517:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1316, "name": "_data", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10539:11:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1315, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "10539:5:9", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "10475:79:9" }, "payable": false, "returnParameters": { "id": 1320, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1319, "name": "", "nodeType": "VariableDeclaration", "scope": 1348, "src": "10581:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1318, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10581:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "10580:6:9" }, "scope": 1349, "src": "10442:347:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], "scope": 1350, "src": "363:10428:9" } ], "src": "0:10792:9" }, "compiler": { "name": "solc", "version": "0.4.25+commit.59dbf8f1.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.2", "updatedAt": "2020-03-25T02:14:16.791Z" }