[INFO] cloning repository https://github.com/ch8zer/ironnes
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ch8zer/ironnes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fch8zer%2Fironnes", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fch8zer%2Fironnes'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1ba0843d4a010e0bcd736fb6157d3b8d3e504c42
[INFO] testing ch8zer/ironnes against 1.54.0 for beta-1.55-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fch8zer%2Fironnes" "/workspace/builds/worker-83/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-83/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/ch8zer/ironnes on toolchain 1.54.0
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.54.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/ch8zer/ironnes
[INFO] finished tweaking git repo https://github.com/ch8zer/ironnes
[INFO] tweaked toml for git repo https://github.com/ch8zer/ironnes written to /workspace/builds/worker-83/source/Cargo.toml
[INFO] crate git repo https://github.com/ch8zer/ironnes already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.54.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded shrust v0.0.7
[INFO] [stderr]   Downloaded simplelog v0.7.6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-83/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-83/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7a21de25faefc6331ce50ca36572cf60e3ffa61ebdfcbcd7cfcf08f11b5a8327
[INFO] running `Command { std: "docker" "start" "-a" "7a21de25faefc6331ce50ca36572cf60e3ffa61ebdfcbcd7cfcf08f11b5a8327", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7a21de25faefc6331ce50ca36572cf60e3ffa61ebdfcbcd7cfcf08f11b5a8327", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7a21de25faefc6331ce50ca36572cf60e3ffa61ebdfcbcd7cfcf08f11b5a8327", kill_on_drop: false }`
[INFO] [stdout] 7a21de25faefc6331ce50ca36572cf60e3ffa61ebdfcbcd7cfcf08f11b5a8327
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-83/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-83/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c8a90e53ec196efa3b2b736329be97286cebad56c4e5da8d4a286c5709851027
[INFO] running `Command { std: "docker" "start" "-a" "c8a90e53ec196efa3b2b736329be97286cebad56c4e5da8d4a286c5709851027", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]    Compiling libc v0.2.80
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]    Compiling autocfg v1.0.1
[INFO] [stderr]    Compiling serde v1.0.117
[INFO] [stderr]    Compiling ryu v1.0.5
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.24
[INFO] [stderr]    Compiling itoa v0.4.6
[INFO] [stderr]    Compiling unicode-xid v0.2.1
[INFO] [stderr]    Compiling version-compare v0.0.10
[INFO] [stderr]    Compiling syn v1.0.48
[INFO] [stderr]    Compiling unicode-width v0.1.8
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]    Compiling log v0.4.11
[INFO] [stderr]    Compiling encode_unicode v0.3.6
[INFO] [stderr]    Compiling sdl2 v0.34.3
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]    Compiling ansi_term v0.11.0
[INFO] [stderr]    Compiling yaml-rust v0.3.5
[INFO] [stderr]    Compiling vec_map v0.8.2
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling sdl2-sys v0.34.3
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling csv-core v0.1.10
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling dirs-sys v0.3.5
[INFO] [stderr]    Compiling dirs v1.0.5
[INFO] [stderr]    Compiling time v0.1.44
[INFO] [stderr]    Compiling regex-automata v0.1.9
[INFO] [stderr]    Compiling term v0.5.2
[INFO] [stderr]    Compiling clap v2.33.3
[INFO] [stderr]    Compiling dirs v2.0.2
[INFO] [stderr]    Compiling bstr v0.2.14
[INFO] [stderr]    Compiling chrono v0.4.19
[INFO] [stderr]    Compiling term v0.6.1
[INFO] [stderr]    Compiling csv v1.1.3
[INFO] [stderr]    Compiling simplelog v0.7.6
[INFO] [stderr]    Compiling prettytable-rs v0.8.0
[INFO] [stderr]    Compiling iron_nes v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling shrust v0.0.7
[INFO] [stderr]    Compiling thiserror-impl v1.0.21
[INFO] [stderr]    Compiling thiserror v1.0.21
[INFO] [stdout] warning: unused variable: `ppu_rom`
[INFO] [stdout]   --> src/nes.rs:27:35
[INFO] [stdout]    |
[INFO] [stdout] 27 |         let (cartridge, prog_rom, ppu_rom) = cartridge::Cartridge::load(cartridge)?;
[INFO] [stdout]    |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ppu_rom`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_cols`
[INFO] [stdout]   --> src/nes/ppu/mod.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let num_cols = Frame::HEIGHT / 8;
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_cols`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::pixels::Color`
[INFO] [stdout]  --> src/bin/spritemap.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::pixels::Color;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::EventPump`
[INFO] [stdout]  --> src/bin/spritemap.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sdl2::EventPump;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iron_nes::error::*`
[INFO] [stdout]   --> src/bin/spritemap.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use iron_nes::error::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Frame`
[INFO] [stdout]   --> src/bin/spritemap.rs:14:26
[INFO] [stdout]    |
[INFO] [stdout] 14 | use iron_nes::nes::ppu::{Frame, Ppu};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticks`
[INFO] [stdout]   --> src/bin/spritemap.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let ticks = timer.ticks() as i32;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ticks`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/spritemap.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let mut ppu = Ppu::new(ppu_vram);
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `run_debugger`
[INFO] [stdout]  --> src/bin/debugger/mod.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn run_debugger<'a>(nes: &'a mut IronNes, debugger: &'a mut IronNesDebugger) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum is never used: `DebuggerState`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:80:6
[INFO] [stdout]    |
[INFO] [stdout] 80 | enum DebuggerState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct is never constructed: `IronNesDebugger`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct IronNesDebugger {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `step`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 |     fn step<'a>(&mut self, nes: &'a mut IronNes) -> IronNesResult<DebuggerState> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `is_breakpoint_hit`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn is_breakpoint_hit(&self, addr: Addr) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `is_watch_cycle_hit`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 |     fn is_watch_cycle_hit(&self, cycle: usize) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `add_breakpoint`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn add_breakpoint(&mut self, addr: Addr) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `add_watch_cycle`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 |     fn add_watch_cycle(&mut self, cycle: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/spritemap.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |         texture.update(None, &frame.0, 256 * 2 * 3);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 16 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 49.60s
[INFO] running `Command { std: "docker" "inspect" "c8a90e53ec196efa3b2b736329be97286cebad56c4e5da8d4a286c5709851027", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c8a90e53ec196efa3b2b736329be97286cebad56c4e5da8d4a286c5709851027", kill_on_drop: false }`
[INFO] [stdout] c8a90e53ec196efa3b2b736329be97286cebad56c4e5da8d4a286c5709851027
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-83/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-83/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] bdb32c174c1e10e1f8afa869629f4debf08cbdd43d96b99f3a38373780aeb0a7
[INFO] running `Command { std: "docker" "start" "-a" "bdb32c174c1e10e1f8afa869629f4debf08cbdd43d96b99f3a38373780aeb0a7", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]    Compiling regex-syntax v0.6.21
[INFO] [stderr]    Compiling thread_local v1.0.1
[INFO] [stderr]    Compiling aho-corasick v0.7.15
[INFO] [stdout] warning: unused variable: `ppu_rom`
[INFO] [stdout]   --> src/nes.rs:27:35
[INFO] [stdout]    |
[INFO] [stdout] 27 |         let (cartridge, prog_rom, ppu_rom) = cartridge::Cartridge::load(cartridge)?;
[INFO] [stdout]    |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ppu_rom`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_cols`
[INFO] [stdout]   --> src/nes/ppu/mod.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let num_cols = Frame::HEIGHT / 8;
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_cols`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::pixels::Color`
[INFO] [stdout]  --> src/bin/spritemap.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::pixels::Color;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::EventPump`
[INFO] [stdout]  --> src/bin/spritemap.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sdl2::EventPump;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iron_nes::error::*`
[INFO] [stdout]   --> src/bin/spritemap.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use iron_nes::error::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Frame`
[INFO] [stdout]   --> src/bin/spritemap.rs:14:26
[INFO] [stdout]    |
[INFO] [stdout] 14 | use iron_nes::nes::ppu::{Frame, Ppu};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticks`
[INFO] [stdout]   --> src/bin/spritemap.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let ticks = timer.ticks() as i32;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ticks`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/spritemap.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let mut ppu = Ppu::new(ppu_vram);
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `run_debugger`
[INFO] [stdout]  --> src/bin/debugger/mod.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn run_debugger<'a>(nes: &'a mut IronNes, debugger: &'a mut IronNesDebugger) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum is never used: `DebuggerState`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:80:6
[INFO] [stdout]    |
[INFO] [stdout] 80 | enum DebuggerState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct is never constructed: `IronNesDebugger`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct IronNesDebugger {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `step`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 |     fn step<'a>(&mut self, nes: &'a mut IronNes) -> IronNesResult<DebuggerState> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `is_breakpoint_hit`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn is_breakpoint_hit(&self, addr: Addr) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `is_watch_cycle_hit`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 |     fn is_watch_cycle_hit(&self, cycle: usize) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `add_breakpoint`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn add_breakpoint(&mut self, addr: Addr) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `add_watch_cycle`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 |     fn add_watch_cycle(&mut self, cycle: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/spritemap.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |         texture.update(None, &frame.0, 256 * 2 * 3);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 16 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling regex v1.4.2
[INFO] [stderr]    Compiling iron_nes v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `sdl2::pixels::Color`
[INFO] [stdout]  --> src/bin/spritemap.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::pixels::Color;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::EventPump`
[INFO] [stdout]  --> src/bin/spritemap.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sdl2::EventPump;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iron_nes::error::*`
[INFO] [stdout]   --> src/bin/spritemap.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use iron_nes::error::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Frame`
[INFO] [stdout]   --> src/bin/spritemap.rs:14:26
[INFO] [stdout]    |
[INFO] [stdout] 14 | use iron_nes::nes::ppu::{Frame, Ppu};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticks`
[INFO] [stdout]   --> src/bin/spritemap.rs:89:13
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let ticks = timer.ticks() as i32;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ticks`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `get_golden`
[INFO] [stdout]  --> tests/blargg/instr_test_v5/mod.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn get_golden<'a>(golden_file: &'a str) -> impl Iterator<Item = (usize, cpu::Registers)> {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `run_blargg_test`
[INFO] [stdout]    --> tests/cpu.rs:124:4
[INFO] [stdout]     |
[INFO] [stdout] 124 | fn run_blargg_test(rom_file: String, golden_file: String) -> IronNesResult<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/spritemap.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let mut ppu = Ppu::new(ppu_vram);
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `run_debugger`
[INFO] [stdout]  --> src/bin/debugger/mod.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn run_debugger<'a>(nes: &'a mut IronNes, debugger: &'a mut IronNesDebugger) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum is never used: `DebuggerState`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:80:6
[INFO] [stdout]    |
[INFO] [stdout] 80 | enum DebuggerState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct is never constructed: `IronNesDebugger`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct IronNesDebugger {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/bin/debugger/mod.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `step`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 |     fn step<'a>(&mut self, nes: &'a mut IronNes) -> IronNesResult<DebuggerState> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `is_breakpoint_hit`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn is_breakpoint_hit(&self, addr: Addr) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `is_watch_cycle_hit`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 |     fn is_watch_cycle_hit(&self, cycle: usize) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `add_breakpoint`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn add_breakpoint(&mut self, addr: Addr) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `add_watch_cycle`
[INFO] [stdout]    --> src/bin/debugger/mod.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 |     fn add_watch_cycle(&mut self, cycle: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/bin/spritemap.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |         texture.update(None, &frame.0, 256 * 2 * 3);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppu_rom`
[INFO] [stdout]   --> src/nes.rs:27:35
[INFO] [stdout]    |
[INFO] [stdout] 27 |         let (cartridge, prog_rom, ppu_rom) = cartridge::Cartridge::load(cartridge)?;
[INFO] [stdout]    |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ppu_rom`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_cols`
[INFO] [stdout]   --> src/nes/ppu/mod.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let num_cols = Frame::HEIGHT / 8;
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_cols`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 16 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 50.50s
[INFO] running `Command { std: "docker" "inspect" "bdb32c174c1e10e1f8afa869629f4debf08cbdd43d96b99f3a38373780aeb0a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bdb32c174c1e10e1f8afa869629f4debf08cbdd43d96b99f3a38373780aeb0a7", kill_on_drop: false }`
[INFO] [stdout] bdb32c174c1e10e1f8afa869629f4debf08cbdd43d96b99f3a38373780aeb0a7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-83/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-83/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 7febe2824c7e87b3870698604fb7baf585114c933f33921a2f8f59874a3d8288
[INFO] running `Command { std: "docker" "start" "-a" "7febe2824c7e87b3870698604fb7baf585114c933f33921a2f8f59874a3d8288", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `ppu_rom`
[INFO] [stderr]   --> src/nes.rs:27:35
[INFO] [stderr]    |
[INFO] [stderr] 27 |         let (cartridge, prog_rom, ppu_rom) = cartridge::Cartridge::load(cartridge)?;
[INFO] [stderr]    |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ppu_rom`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num_cols`
[INFO] [stderr]   --> src/nes/ppu/mod.rs:36:13
[INFO] [stderr]    |
[INFO] [stderr] 36 |         let num_cols = Frame::HEIGHT / 8;
[INFO] [stderr]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_cols`
[INFO] [stderr] 
[INFO] [stderr] warning: 2 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ppu_rom`
[INFO] [stderr]   --> src/nes.rs:27:35
[INFO] [stderr]    |
[INFO] [stderr] 27 |         let (cartridge, prog_rom, ppu_rom) = cartridge::Cartridge::load(cartridge)?;
[INFO] [stderr]    |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ppu_rom`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num_cols`
[INFO] [stderr]   --> src/nes/ppu/mod.rs:36:13
[INFO] [stderr]    |
[INFO] [stderr] 36 |         let num_cols = Frame::HEIGHT / 8;
[INFO] [stderr]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_cols`
[INFO] [stderr] 
[INFO] [stderr] warning: 2 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sdl2::pixels::Color`
[INFO] [stderr]  --> src/bin/spritemap.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use sdl2::pixels::Color;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sdl2::EventPump`
[INFO] [stderr]  --> src/bin/spritemap.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use sdl2::EventPump;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `iron_nes::error::*`
[INFO] [stderr]   --> src/bin/spritemap.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use iron_nes::error::*;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Frame`
[INFO] [stderr]   --> src/bin/spritemap.rs:14:26
[INFO] [stderr]    |
[INFO] [stderr] 14 | use iron_nes::nes::ppu::{Frame, Ppu};
[INFO] [stderr]    |                          ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ticks`
[INFO] [stderr]   --> src/bin/spritemap.rs:89:13
[INFO] [stderr]    |
[INFO] [stderr] 89 |         let ticks = timer.ticks() as i32;
[INFO] [stderr]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ticks`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/bin/spritemap.rs:45:9
[INFO] [stderr]    |
[INFO] [stderr] 45 |     let mut ppu = Ppu::new(ppu_vram);
[INFO] [stderr]    |         ----^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `run_debugger`
[INFO] [stderr]  --> src/bin/debugger/mod.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub fn run_debugger<'a>(nes: &'a mut IronNes, debugger: &'a mut IronNesDebugger) {
[INFO] [stderr]   |        ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: enum is never used: `DebuggerState`
[INFO] [stderr]   --> src/bin/debugger/mod.rs:80:6
[INFO] [stderr]    |
[INFO] [stderr] 80 | enum DebuggerState {
[INFO] [stderr]    |      ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct is never constructed: `IronNesDebugger`
[INFO] [stderr]   --> src/bin/debugger/mod.rs:86:12
[INFO] [stderr]    |
[INFO] [stderr] 86 | pub struct IronNesDebugger {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/bin/debugger/mod.rs:92:12
[INFO] [stderr]    |
[INFO] [stderr] 92 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `step`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:100:8
[INFO] [stderr]     |
[INFO] [stderr] 100 |     fn step<'a>(&mut self, nes: &'a mut IronNes) -> IronNesResult<DebuggerState> {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `is_breakpoint_hit`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:115:8
[INFO] [stderr]     |
[INFO] [stderr] 115 |     fn is_breakpoint_hit(&self, addr: Addr) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `is_watch_cycle_hit`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:119:8
[INFO] [stderr]     |
[INFO] [stderr] 119 |     fn is_watch_cycle_hit(&self, cycle: usize) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `add_breakpoint`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:123:8
[INFO] [stderr]     |
[INFO] [stderr] 123 |     fn add_breakpoint(&mut self, addr: Addr) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `add_watch_cycle`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:127:8
[INFO] [stderr]     |
[INFO] [stderr] 127 |     fn add_watch_cycle(&mut self, cycle: usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/bin/spritemap.rs:92:9
[INFO] [stderr]    |
[INFO] [stderr] 92 |         texture.update(None, &frame.0, 256 * 2 * 3);
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: 16 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sdl2::pixels::Color`
[INFO] [stderr]  --> src/bin/spritemap.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use sdl2::pixels::Color;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sdl2::EventPump`
[INFO] [stderr]  --> src/bin/spritemap.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use sdl2::EventPump;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `iron_nes::error::*`
[INFO] [stderr]   --> src/bin/spritemap.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use iron_nes::error::*;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Frame`
[INFO] [stderr]   --> src/bin/spritemap.rs:14:26
[INFO] [stderr]    |
[INFO] [stderr] 14 | use iron_nes::nes::ppu::{Frame, Ppu};
[INFO] [stderr]    |                          ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ticks`
[INFO] [stderr]   --> src/bin/spritemap.rs:89:13
[INFO] [stderr]    |
[INFO] [stderr] 89 |         let ticks = timer.ticks() as i32;
[INFO] [stderr]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ticks`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/bin/spritemap.rs:45:9
[INFO] [stderr]    |
[INFO] [stderr] 45 |     let mut ppu = Ppu::new(ppu_vram);
[INFO] [stderr]    |         ----^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `run_debugger`
[INFO] [stderr]  --> src/bin/debugger/mod.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub fn run_debugger<'a>(nes: &'a mut IronNes, debugger: &'a mut IronNesDebugger) {
[INFO] [stderr]   |        ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: enum is never used: `DebuggerState`
[INFO] [stderr]   --> src/bin/debugger/mod.rs:80:6
[INFO] [stderr]    |
[INFO] [stderr] 80 | enum DebuggerState {
[INFO] [stderr]    |      ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct is never constructed: `IronNesDebugger`
[INFO] [stderr]   --> src/bin/debugger/mod.rs:86:12
[INFO] [stderr]    |
[INFO] [stderr] 86 | pub struct IronNesDebugger {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/bin/debugger/mod.rs:92:12
[INFO] [stderr]    |
[INFO] [stderr] 92 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `step`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:100:8
[INFO] [stderr]     |
[INFO] [stderr] 100 |     fn step<'a>(&mut self, nes: &'a mut IronNes) -> IronNesResult<DebuggerState> {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `is_breakpoint_hit`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:115:8
[INFO] [stderr]     |
[INFO] [stderr] 115 |     fn is_breakpoint_hit(&self, addr: Addr) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `is_watch_cycle_hit`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:119:8
[INFO] [stderr]     |
[INFO] [stderr] 119 |     fn is_watch_cycle_hit(&self, cycle: usize) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `add_breakpoint`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:123:8
[INFO] [stderr]     |
[INFO] [stderr] 123 |     fn add_breakpoint(&mut self, addr: Addr) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `add_watch_cycle`
[INFO] [stderr]    --> src/bin/debugger/mod.rs:127:8
[INFO] [stderr]     |
[INFO] [stderr] 127 |     fn add_watch_cycle(&mut self, cycle: usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/bin/spritemap.rs:92:9
[INFO] [stderr]    |
[INFO] [stderr] 92 |         texture.update(None, &frame.0, 256 * 2 * 3);
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: 16 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `get_golden`
[INFO] [stderr]  --> tests/blargg/instr_test_v5/mod.rs:7:8
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub fn get_golden<'a>(golden_file: &'a str) -> impl Iterator<Item = (usize, cpu::Registers)> {
[INFO] [stderr]   |        ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `run_blargg_test`
[INFO] [stderr]    --> tests/cpu.rs:124:4
[INFO] [stderr]     |
[INFO] [stderr] 124 | fn run_blargg_test(rom_file: String, golden_file: String) -> IronNesResult<()> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: 2 warnings emitted
[INFO] [stderr] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/iron_nes-595f4b101a5bf8cb)
[INFO] [stdout] running 12 tests
[INFO] [stdout] test bitset::tests::test_bitset_getset ... ok
[INFO] [stdout] test bitset::tests::test_bitset_sanity ... ok
[INFO] [stdout] test nes::cpu::addressing::tests::test_mode_zeropage ... ok
[INFO] [stdout] test nes::cpu::addressing::tests::test_mode_absolute ... ok
[INFO] [stdout] test nes::cpu::addressing::tests::test_mode_indirectx ... ok
[INFO] [stdout] test nes::cpu::addressing::tests::test_mode_indirect ... ok
[INFO] [stdout] test nes::cpu::addressing::tests::test_mode_indirecty ... ok
[INFO] [stdout] test nes::cpu::addressing::tests::test_mode_relative_wrap ... ok
[INFO] [stdout] test nes::memory::tests::test_stack ... ok
[INFO] [stdout] test nes::cpu::addressing::tests::test_mode_relative ... ok
[INFO] [stdout] test nes::memory::tests::test_stack_underflow - should panic ... ok
[INFO] [stdout] test nes::memory::tests::test_stack_overflow - should panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/disassembler-a40bd19e128f8d99)
[INFO] [stdout] 
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/emulator-2172a6791830460d)
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/spritemap-42cb9721f4a98baf)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cpu.rs (/opt/rustwide/target/debug/deps/cpu-909f0fa8ab60eda1)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test cpu_nestest ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- cpu_nestest stdout ----
[INFO] [stdout] thread 'cpu_nestest' panicked at 'called `Option::unwrap()` on a `None` value', tests/cpu.rs:23:10
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x55a0d5211650 - std::backtrace_rs::backtrace::libunwind::trace::h34055254b57d8e79
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
[INFO] [stdout]    1:     0x55a0d5211650 - std::backtrace_rs::backtrace::trace_unsynchronized::h8f1e3fbd9afff6ec
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x55a0d5211650 - std::sys_common::backtrace::_print_fmt::h3a99a796b770c360
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:67:5
[INFO] [stdout]    3:     0x55a0d5211650 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h32d1f94a80615d18
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:46:22
[INFO] [stdout]    4:     0x55a0d52345ac - core::fmt::write::h306731c068f7162c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/fmt/mod.rs:1110:17
[INFO] [stdout]    5:     0x55a0d520e4a5 - std::io::Write::write_fmt::h87f19b0a2cd190bc
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/io/mod.rs:1588:15
[INFO] [stdout]    6:     0x55a0d521391b - std::sys_common::backtrace::_print::h5abaa2601a852287
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:49:5
[INFO] [stdout]    7:     0x55a0d521391b - std::sys_common::backtrace::print::h8d81445442bb638f
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:36:9
[INFO] [stdout]    8:     0x55a0d521391b - std::panicking::default_hook::{{closure}}::hcfe804496a9fa747
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:208:50
[INFO] [stdout]    9:     0x55a0d521342c - std::panicking::default_hook::hbea8e3ccf2ba8901
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:222:9
[INFO] [stdout]   10:     0x55a0d5213fe4 - std::panicking::rust_panic_with_hook::h7ee9e1a2d0f8975a
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:622:17
[INFO] [stdout]   11:     0x55a0d5213a97 - std::panicking::begin_panic_handler::{{closure}}::h8ab3b4491718b2c7
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:517:13
[INFO] [stdout]   12:     0x55a0d5211b4c - std::sys_common::backtrace::__rust_end_short_backtrace::hd489062ffa586a9f
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:141:18
[INFO] [stdout]   13:     0x55a0d5213a29 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:515:5
[INFO] [stdout]   14:     0x55a0d4f79b31 - core::panicking::panic_fmt::hca6330e3e14086b4
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/panicking.rs:92:14
[INFO] [stdout]   15:     0x55a0d4f79a7d - core::panicking::panic::h1a48d878ff3dcd40
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/panicking.rs:50:5
[INFO] [stdout]   16:     0x55a0d4f7d79c - core::option::Option<T>::unwrap::h0128fdc7d08c8e43
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/option.rs:388:21
[INFO] [stdout]   17:     0x55a0d4f7a497 - cpu::setup::{{closure}}::hd5d9e639500d4cf8
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/cpu.rs:18:35
[INFO] [stdout]   18:     0x55a0d4f7f4d5 - std::sync::once::Once::call_once::{{closure}}::hbd6c775b7a0925c6
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sync/once.rs:261:41
[INFO] [stdout]   19:     0x55a0d4f78d2c - std::sync::once::Once::call_inner::h4030b088a5783b2d
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sync/once.rs:418:21
[INFO] [stdout]   20:     0x55a0d4f7f467 - std::sync::once::Once::call_once::h9c6ac70fdf528f6d
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sync/once.rs:261:9
[INFO] [stdout]   21:     0x55a0d4f7a3fd - cpu::setup::hfc46118fbece8268
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/cpu.rs:17:5
[INFO] [stdout]   22:     0x55a0d4f7b72c - cpu::cpu_nestest::h532fc6b44c39b301
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/cpu.rs:111:5
[INFO] [stdout]   23:     0x55a0d4f7b6f1 - cpu::cpu_nestest::{{closure}}::hf579c2bda3b2a11d
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/cpu.rs:110:1
[INFO] [stdout]   24:     0x55a0d4f7c9ce - core::ops::function::FnOnce::call_once::ha09abca2b141ed99
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   25:     0x55a0d4fa8ad3 - core::ops::function::FnOnce::call_once::h152e7e439ff59e19
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   26:     0x55a0d4fa8ad3 - test::__rust_begin_short_backtrace::h0908f3b1fdbb72ab
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:577:5
[INFO] [stdout]   27:     0x55a0d4fa7590 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hf6d2a51e5587546c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   28:     0x55a0d4fa7590 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h8af660f3a89ef593
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:347:9
[INFO] [stdout]   29:     0x55a0d4fa7590 - std::panicking::try::do_call::hd36aef60f84b6d36
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:401:40
[INFO] [stdout]   30:     0x55a0d4fa7590 - std::panicking::try::h9932b4480e69817c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:365:19
[INFO] [stdout]   31:     0x55a0d4fa7590 - std::panic::catch_unwind::h6aa177099cfff5f8
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:434:14
[INFO] [stdout]   32:     0x55a0d4fa7590 - test::run_test_in_process::h5884d6f2d99e20c3
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:600:18
[INFO] [stdout]   33:     0x55a0d4fa7590 - test::run_test::run_test_inner::{{closure}}::h6fdc58c6d5f5b6e3
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:492:39
[INFO] [stdout]   34:     0x55a0d4f80c42 - test::run_test::run_test_inner::{{closure}}::h408365d67a78ade8
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:519:37
[INFO] [stdout]   35:     0x55a0d4f80c42 - std::sys_common::backtrace::__rust_begin_short_backtrace::hb560b77c4f701523
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:125:18
[INFO] [stdout]   36:     0x55a0d4f847f8 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::hf2e7831dad93c597
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/thread/mod.rs:481:17
[INFO] [stdout]   37:     0x55a0d4f847f8 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hd2e08783d8be4d02
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:347:9
[INFO] [stdout]   38:     0x55a0d4f847f8 - std::panicking::try::do_call::h062597b7acfd6b82
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:401:40
[INFO] [stdout]   39:     0x55a0d4f847f8 - std::panicking::try::h0d7b79db04c14552
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:365:19
[INFO] [stdout]   40:     0x55a0d4f847f8 - std::panic::catch_unwind::hb01a0b5e7c8cd43b
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:434:14
[INFO] [stdout]   41:     0x55a0d4f847f8 - std::thread::Builder::spawn_unchecked::{{closure}}::h5bde48cc887e0d1e
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/thread/mod.rs:480:30
[INFO] [stdout]   42:     0x55a0d4f847f8 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h745ea30807a29e55
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   43:     0x55a0d5218b97 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7ece6cfefaff1005
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   44:     0x55a0d5218b97 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb8b48e55c21f193e
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   45:     0x55a0d5218b97 - std::sys::unix::thread::Thread::new::thread_start::h8c7c4450dba62914
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys/unix/thread.rs:71:17
[INFO] [stdout]   46:     0x7f5dc51c5609 - start_thread
[INFO] [stdout]   47:     0x7f5dc4f97293 - clone
[INFO] [stdout]   48:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     cpu_nestest
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass '--test cpu'
[INFO] running `Command { std: "docker" "inspect" "7febe2824c7e87b3870698604fb7baf585114c933f33921a2f8f59874a3d8288", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7febe2824c7e87b3870698604fb7baf585114c933f33921a2f8f59874a3d8288", kill_on_drop: false }`
[INFO] [stdout] 7febe2824c7e87b3870698604fb7baf585114c933f33921a2f8f59874a3d8288
