[
[
"Object",
"object"
],
[
"Whitespace",
" "
],
[
"LiteralString",
"\"Token\""
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Code",
"code"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"LineComment",
"// Store the creator in slot zero."
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"sstore"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"caller"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n\n "
],
[
"LineComment",
"// Deploy the contract"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"datacopy"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"dataoffset"
],
[
"ParenOpen",
"("
],
[
"LiteralString",
"\"runtime\""
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"datasize"
],
[
"ParenOpen",
"("
],
[
"LiteralString",
"\"runtime\""
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"return"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"datasize"
],
[
"ParenOpen",
"("
],
[
"LiteralString",
"\"runtime\""
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Object",
"object"
],
[
"Whitespace",
" "
],
[
"LiteralString",
"\"runtime\""
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Code",
"code"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"LineComment",
"// Protection against sending Ether"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"require"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"iszero"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"callvalue"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n\n "
],
[
"LineComment",
"// Dispatcher"
],
[
"Whitespace",
"\n "
],
[
"Switch",
"switch"
],
[
"Whitespace",
" "
],
[
"Identifier",
"selector"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Case",
"case"
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x70a08231"
],
[
"Whitespace",
" "
],
[
"BlockComment",
"/* \"balanceOf(address)\" */"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"returnUint"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"balanceOf"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Case",
"case"
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x18160ddd"
],
[
"Whitespace",
" "
],
[
"BlockComment",
"/* \"totalSupply()\" */"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"returnUint"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"totalSupply"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Case",
"case"
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0xa9059cbb"
],
[
"Whitespace",
" "
],
[
"BlockComment",
"/* \"transfer(address,uint256)\" */"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"transfer"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsUint"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"1"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"returnTrue"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Case",
"case"
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x23b872dd"
],
[
"Whitespace",
" "
],
[
"BlockComment",
"/* \"transferFrom(address,address,uint256)\" */"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"transferFrom"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"1"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsUint"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"2"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"returnTrue"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Case",
"case"
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x095ea7b3"
],
[
"Whitespace",
" "
],
[
"BlockComment",
"/* \"approve(address,uint256)\" */"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"approve"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsUint"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"1"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"returnTrue"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Case",
"case"
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0xdd62ed3e"
],
[
"Whitespace",
" "
],
[
"BlockComment",
"/* \"allowance(address,address)\" */"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"returnUint"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"allowance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"1"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Case",
"case"
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x40c10f19"
],
[
"Whitespace",
" "
],
[
"BlockComment",
"/* \"mint(address,uint256)\" */"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"mint"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsUint"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"1"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"returnTrue"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Default",
"default"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"revert"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"mint"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"require"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"calledByOwner"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n\n "
],
[
"Identifier",
"mintTokens"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"addToBalance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"emitTransfer"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"transfer"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"executeTransfer"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"caller"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"approve"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"spender"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"revertIfZeroAddress"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"spender"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"setAllowance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"caller"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"emitApproval"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"caller"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"transferFrom"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"decreaseAllowanceBy"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"caller"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"executeTransfer"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"executeTransfer"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"revertIfZeroAddress"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"to"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"deductFromBalance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"addToBalance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"emitTransfer"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n\n\n "
],
[
"BlockComment",
"/* ---------- calldata decoding functions ----------- */"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"selector"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"s"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"s"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"div"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"calldataload"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x100000000000000000000000000000000000000000000000000000000"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsAddress"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"v"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"v"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsUint"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"If",
"if"
],
[
"Whitespace",
" "
],
[
"Identifier",
"iszero"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"iszero"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"and"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"v"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"not"
],
[
"ParenOpen",
"("
],
[
"LiteralHex",
"0xffffffffffffffffffffffffffffffffffffffff"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"revert"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"decodeAsUint"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"v"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Let",
"let"
],
[
"Whitespace",
" "
],
[
"Identifier",
"pos"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"add"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"4"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"mul"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x20"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"If",
"if"
],
[
"Whitespace",
" "
],
[
"Identifier",
"lt"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"calldatasize"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"add"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"pos"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x20"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"revert"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"v"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"calldataload"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"pos"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"BlockComment",
"/* ---------- calldata encoding functions ---------- */"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"returnUint"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"v"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"mstore"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"v"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"return"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x20"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"returnTrue"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"returnUint"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"1"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n\n "
],
[
"BlockComment",
"/* -------- events ---------- */"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"emitTransfer"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Let",
"let"
],
[
"Whitespace",
" "
],
[
"Identifier",
"signatureHash"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"emitEvent"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"signatureHash"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"to"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"emitApproval"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Let",
"let"
],
[
"Whitespace",
" "
],
[
"Identifier",
"signatureHash"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"emitEvent"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"signatureHash"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"from"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"emitEvent"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"signatureHash"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"indexed1"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"indexed2"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"nonIndexed"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"mstore"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"nonIndexed"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"log3"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x20"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"signatureHash"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"indexed1"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"indexed2"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n\n "
],
[
"BlockComment",
"/* -------- storage layout ---------- */"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"ownerPos"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"p"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
" "
],
[
"Identifier",
"p"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"LiteralInt",
"0"
],
[
"Whitespace",
" "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"totalSupplyPos"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"p"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
" "
],
[
"Identifier",
"p"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"LiteralInt",
"1"
],
[
"Whitespace",
" "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"accountToStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"offset"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"offset"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"add"
],
[
"ParenOpen",
"("
],
[
"LiteralHex",
"0x1000"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"account"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"allowanceStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"offset"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"offset"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"accountToStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"mstore"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"offset"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"mstore"
],
[
"ParenOpen",
"("
],
[
"LiteralHex",
"0x20"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"offset"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"keccak256"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralHex",
"0x40"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n\n "
],
[
"BlockComment",
"/* -------- storage access ---------- */"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"owner"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"o"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"o"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"sload"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"ownerPos"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"totalSupply"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"supply"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"supply"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"sload"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"totalSupplyPos"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"mintTokens"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"sstore"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"totalSupplyPos"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"safeAdd"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"totalSupply"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"balanceOf"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"bal"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"bal"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"sload"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"accountToStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"addToBalance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Let",
"let"
],
[
"Whitespace",
" "
],
[
"Identifier",
"offset"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"accountToStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"sstore"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"safeAdd"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"sload"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"deductFromBalance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Let",
"let"
],
[
"Whitespace",
" "
],
[
"Identifier",
"offset"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"accountToStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Let",
"let"
],
[
"Whitespace",
" "
],
[
"Identifier",
"bal"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"sload"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"require"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"lte"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"amount"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"bal"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"sstore"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"sub"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"bal"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"allowance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"amount"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"sload"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"allowanceStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"setAllowance"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"sstore"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"allowanceStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"decreaseAllowanceBy"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Let",
"let"
],
[
"Whitespace",
" "
],
[
"Identifier",
"offset"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"allowanceStorageOffset"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"account"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"spender"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Let",
"let"
],
[
"Whitespace",
" "
],
[
"Identifier",
"currentAllowance"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"sload"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"require"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"lte"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"amount"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"currentAllowance"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"sstore"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"offset"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"sub"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"currentAllowance"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"amount"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n\n "
],
[
"BlockComment",
"/* ---------- utility functions ---------- */"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"lte"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"a"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"b"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"r"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"r"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"iszero"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"gt"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"a"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"b"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"gte"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"a"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"b"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"r"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"r"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"iszero"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"lt"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"a"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"b"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"safeAdd"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"a"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"b"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"r"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"r"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"add"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"a"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"b"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"If",
"if"
],
[
"Whitespace",
" "
],
[
"Identifier",
"or"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"lt"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"r"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"a"
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"lt"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"r"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"b"
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
" "
],
[
"Identifier",
"revert"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"calledByOwner"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"Returns",
"->"
],
[
"Whitespace",
" "
],
[
"Identifier",
"cbo"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"cbo"
],
[
"Whitespace",
" "
],
[
"Assign",
":="
],
[
"Whitespace",
" "
],
[
"Identifier",
"eq"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"owner"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"Identifier",
"caller"
],
[
"ParenOpen",
"("
],
[
"ParenClose",
")"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"revertIfZeroAddress"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"addr"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"Identifier",
"require"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"addr"
],
[
"ParenClose",
")"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"Function",
"function"
],
[
"Whitespace",
" "
],
[
"Identifier",
"require"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"condition"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
"\n "
],
[
"If",
"if"
],
[
"Whitespace",
" "
],
[
"Identifier",
"iszero"
],
[
"ParenOpen",
"("
],
[
"Identifier",
"condition"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceOpen",
"{"
],
[
"Whitespace",
" "
],
[
"Identifier",
"revert"
],
[
"ParenOpen",
"("
],
[
"LiteralInt",
"0"
],
[
"Comma",
","
],
[
"Whitespace",
" "
],
[
"LiteralInt",
"0"
],
[
"ParenClose",
")"
],
[
"Whitespace",
" "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n "
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n"
],
[
"BraceClose",
"}"
],
[
"Whitespace",
"\n"
]
]