Security analysis tool for EVM bytecode. Supports smart contracts built for Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mythril/1

287 lines
27 KiB

mythril.support.signatures [INFO]: Using signature database at /Users/bernhardmueller/.mythril/signatures.db
mythril.analysis.security [INFO]: Found 0 detection modules
mythril.laser.ethereum.svm [INFO]: LASER EVM initialized with dynamic loader: <mythril.support.loader.DynLoader object at 0x104da0550>
mythril.laser.ethereum.plugins.plugin_loader [INFO]: Loading plugin: <mythril.laser.ethereum.plugins.implementations.mutation_pruner.MutationPruner object at 0x104da0c50>
mythril.laser.ethereum.plugins.plugin_loader [INFO]: Loading plugin: <mythril.laser.ethereum.plugins.implementations.coverage.coverage_plugin.InstructionCoveragePlugin object at 0x104da0d30>
mythril.analysis.security [INFO]: Found 11 detection modules
mythril.analysis.security [INFO]: Found 11 detection modules
mythril.laser.ethereum.svm [DEBUG]: Starting LASER execution
mythril.laser.ethereum.svm [INFO]: Starting contract creation transaction
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MSTORE
mythril.laser.ethereum.instructions [DEBUG]: MSTORE to mem[64]: 96
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH8
mythril.laser.ethereum.instructions [DEBUG]: Evaluating CALLVALUE
mythril.laser.ethereum.instructions [DEBUG]: Evaluating EQ
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPI
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating REVERT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating NUMBER
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SUB
mythril.laser.ethereum.instructions [DEBUG]: Evaluating BLOCKHASH
mythril.laser.ethereum.instructions [DEBUG]: Evaluating TIMESTAMP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MLOAD
mythril.laser.ethereum.instructions [DEBUG]: MLOAD[64]
mythril.laser.ethereum.instructions [DEBUG]: Load from memory[64]: 96
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP4
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating NOT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating NOT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MSTORE
mythril.laser.ethereum.instructions [DEBUG]: MSTORE to mem[96]: 115792089237316195423570985008687907853269984665640564039457584007913129639935 -
0 &
115792089237316195423570985008687907853269984665640564039457584007913129639935 -
0 &
1_blockhash_block_block_number - 1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ADD
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP3
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MSTORE
mythril.laser.ethereum.instructions [DEBUG]: MSTORE to mem[128]: 1_timestamp
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ADD
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP3
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MLOAD
mythril.laser.ethereum.instructions [DEBUG]: MLOAD[64]
mythril.laser.ethereum.instructions [DEBUG]: Load from memory[64]: 96
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SUB
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SHA3
mythril.laser.ethereum.instructions [DEBUG]: Created BitVecFunc hash.
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DIV
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating EXP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SLOAD
mythril.laser.ethereum.instructions [DEBUG]: Storage access at index 0
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MUL
mythril.laser.ethereum.instructions [DEBUG]: Evaluating NOT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP4
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MUL
mythril.laser.ethereum.instructions [DEBUG]: Evaluating OR
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SSTORE
mythril.laser.ethereum.instructions [DEBUG]: Write to storage[0]
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating CODECOPY
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating RETURN
mythril.laser.ethereum.svm [INFO]: Finished contract creation, found 1 open states
mythril.laser.ethereum.svm [INFO]: Starting message call transaction, iteration: 0, 1 initial states
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MSTORE
mythril.laser.ethereum.instructions [DEBUG]: MSTORE to mem[64]: 96
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating CALLDATASIZE
mythril.laser.ethereum.instructions [DEBUG]: Evaluating LT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPI
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating CALLDATALOAD
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH29
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating REVERT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DIV
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH4
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH4
mythril.laser.ethereum.instructions [DEBUG]: Evaluating EQ
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPI
mythril.laser.ethereum.svm [DEBUG]: - Entering function MAIN:unknown
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH4
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating EQ
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPI
mythril.laser.ethereum.svm [DEBUG]: - Entering function MAIN:unknown
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating CALLDATALOAD
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating CALLVALUE
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating REVERT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPI
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ADD
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating REVERT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ADDRESS
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH20
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH8
mythril.laser.ethereum.instructions [DEBUG]: Evaluating BALANCE
mythril.laser.ethereum.instructions [DEBUG]: Evaluating CALLVALUE
mythril.laser.ethereum.instructions [DEBUG]: Evaluating EQ
mythril.laser.ethereum.instructions [DEBUG]: Evaluating EQ
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPI
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MLOAD
mythril.laser.ethereum.instructions [DEBUG]: MLOAD[64]
mythril.laser.ethereum.instructions [DEBUG]: Load from memory[64]: 96
mythril.laser.ethereum.instructions [DEBUG]: Evaluating REVERT
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP3
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SLOAD
mythril.laser.ethereum.instructions [DEBUG]: Storage access at index 0
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating EXP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DIV
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MSTORE
mythril.laser.ethereum.instructions [DEBUG]: MSTORE to mem[96]: If(If(If(If(2_balance_at_1461501637330902918203684832716283019655932542975 &
51421440056055728346017419001665401074216449311 ==
0,
0,
1) ==
0,
1,
0) ==
0,
1,
0) ==
0,
1,
0)
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ADD
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating AND
mythril.laser.ethereum.instructions [DEBUG]: Evaluating MLOAD
mythril.laser.ethereum.instructions [DEBUG]: MLOAD[64]
mythril.laser.ethereum.instructions [DEBUG]: Load from memory[64]: 96
mythril.laser.ethereum.instructions [DEBUG]: Evaluating EQ
mythril.laser.ethereum.instructions [DEBUG]: Evaluating DUP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating ISZERO
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating PUSH2
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SUB
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPI
mythril.laser.ethereum.instructions [DEBUG]: Pruned unreachable states.
mythril.laser.ethereum.instructions [DEBUG]: Evaluating SWAP1
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating RETURN
mythril.laser.ethereum.instructions [DEBUG]: Evaluating POP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMP
mythril.laser.ethereum.instructions [DEBUG]: Evaluating JUMPDEST
mythril.laser.ethereum.instructions [DEBUG]: Evaluating STOP
mythril.laser.ethereum.plugins.implementations.coverage.coverage_plugin [INFO]: Number of new instructions covered in tx 0: 131
mythril.laser.ethereum.svm [INFO]: Starting message call transaction, iteration: 1, 0 initial states
mythril.laser.ethereum.plugins.implementations.coverage.coverage_plugin [INFO]: Number of new instructions covered in tx 1: 0
mythril.laser.ethereum.svm [INFO]: Finished symbolic execution
mythril.laser.ethereum.plugins.implementations.coverage.coverage_plugin [INFO]: Achieved 31.85% coverage for code: 6060604052670de0b6b3a76400003414151561001a57600080fd5b600143034042604051808360001916600019168152602001828152602001925050506040518091039020600190046000806101000a81548160ff021916908360ff160217905550610164806100706000396000f30060606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634ba4c16b14610051578063b2fa1c9e1461006c575b600080fd5b61006a600480803560ff16906020019091905050610099565b005b341561007757600080fd5b61007f610117565b604051808215151515815260200191505060405180910390f35b670de0b6b3a7640000341415156100af57600080fd5b6000809054906101000a900460ff1660ff168160ff161415610114573373ffffffffffffffffffffffffffffffffffffffff166108fc671bc16d674ec800009081150290604051600060405180830381858888f19350505050151561011357600080fd5b5b50565b6000803073ffffffffffffffffffffffffffffffffffffffff1631149050905600a165627a7a72305820e70964dd89df0e5b2cf45faf9eecd590a00131d465ed3f65857d843d01c130270029
mythril.laser.ethereum.plugins.implementations.coverage.coverage_plugin [INFO]: Achieved 77.98% coverage for code: 60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634ba4c16b14610051578063b2fa1c9e1461006c575b600080fd5b61006a600480803560ff16906020019091905050610099565b005b341561007757600080fd5b61007f610117565b604051808215151515815260200191505060405180910390f35b670de0b6b3a7640000341415156100af57600080fd5b6000809054906101000a900460ff1660ff168160ff161415610114573373ffffffffffffffffffffffffffffffffffffffff166108fc671bc16d674ec800009081150290604051600060405180830381858888f19350505050151561011357600080fd5b5b50565b6000803073ffffffffffffffffffffffffffffffffffffffff1631149050905600a165627a7a72305820e70964dd89df0e5b2cf45faf9eecd590a00131d465ed3f65857d843d01c130270029
mythril.analysis.security [INFO]: Starting analysis
mythril.analysis.security [INFO]: Found 0 detection modules
mythril.analysis.security [INFO]: Found 11 detection modules
mythril.analysis.security [DEBUG]: Retrieving results for DELEGATECALL Usage in Fallback Function
mythril.analysis.security [DEBUG]: Retrieving results for Dependence of Predictable Variables
mythril.analysis.security [DEBUG]: Retrieving results for Deprecated Operations
mythril.analysis.security [DEBUG]: Retrieving results for Ether Thief
mythril.analysis.security [DEBUG]: Retrieving results for Reachable Exceptions
mythril.analysis.security [DEBUG]: Retrieving results for External calls
mythril.analysis.security [DEBUG]: Retrieving results for Integer Overflow and Underflow
mythril.analysis.security [DEBUG]: Retrieving results for Multiple Sends
mythril.analysis.security [DEBUG]: Retrieving results for State Change After External calls
mythril.analysis.security [DEBUG]: Retrieving results for Unprotected Selfdestruct
mythril.analysis.security [DEBUG]: Retrieving results for Unchecked Return Value
mythril.analysis.security [INFO]: Found 11 detection modules
mythril.mythril.mythril_analyzer [INFO]: Solver statistics:
Query count: 35
Solver time: 0.3555266857147217