├── .gitignore ├── .travis.yml ├── .rustfmt.toml ├── Cargo.toml ├── install.sh ├── README.md ├── src ├── main.rs └── laundry │ ├── alert │ ├── mod.rs │ └── discord.rs │ └── mod.rs ├── LICENSE └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # These are backup files generated by rustfmt 2 | /target 3 | **/*.rs.bk 4 | .env 5 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | rust: 3 | - stable 4 | - beta 5 | - nightly 6 | matrix: 7 | allow_failures: 8 | - rust: nightly 9 | fast_finish: true 10 | -------------------------------------------------------------------------------- /.rustfmt.toml: -------------------------------------------------------------------------------- 1 | indent_style = "Visual" 2 | control_brace_style = "ClosingNextLine" 3 | brace_style = "AlwaysNextLine" 4 | format_strings = true 5 | match_block_trailing_comma = true 6 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "laundry-bot" 3 | version = "0.2.0" 4 | authors = ["Jane Lusby "] 5 | 6 | [dependencies] 7 | sysfs_gpio = "0.5" 8 | chrono = "0.4" 9 | serenity = "0.5" 10 | env_logger = "~0.4" 11 | kankyo = "~0.1" 12 | typemap = "0.3" 13 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | cross build --target arm-unknown-linux-gnueabi && 2 | ssh root@192.168.1.210 systemctl stop laundry-bot.service && 3 | scp target/arm-unknown-linux-gnueabi/debug/laundry-bot root@192.168.1.210:. && 4 | scp .env root@192.168.1.210:. && 5 | ssh root@192.168.1.210 systemctl restart laundry-bot.service 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # laundry-bot 2 | [![Build Status](https://travis-ci.org/jrlusby/laundry-bot.svg?branch=master)](https://travis-ci.org/jrlusby/laundry-bot) 3 | 4 | Program to process input from a vibration sensor and send discord messages when it thinks you've finished a load of laundry 5 | 6 | 7 | loosely based on https://github.com/Shmoopty/rpi-appliance-monitor, same vibration sensor + an rpi 3 instead of a pi zero w. 8 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | mod laundry; 2 | 3 | #[macro_use] 4 | extern crate serenity; 5 | 6 | extern crate chrono; 7 | extern crate kankyo; 8 | extern crate typemap; 9 | 10 | use laundry::alert::discord::DiscordAlerter; 11 | use laundry::Laundry; 12 | use std::env; 13 | 14 | fn main() 15 | { 16 | kankyo::load().expect("Failed to load .env file"); 17 | 18 | let pin: u64 = env::var("VIBRATION_SENSOR_PIN_NUMBER").expect("Expected a pin number in the \ 19 | environment") 20 | .parse() 21 | .expect("pin not a valid int"); 22 | 23 | let mut alerter = DiscordAlerter::new(); 24 | 25 | let mut laundry = Laundry::new(&mut alerter); 26 | 27 | laundry.laundry_thread(pin); 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Jane Lusby 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/laundry/alert/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod discord; 2 | 3 | extern crate chrono; 4 | 5 | use chrono::prelude::*; 6 | 7 | pub fn laundry_done(start: &DateTime, stop: &DateTime) -> Option 8 | { 9 | let formated_time = format!("{}", start.format("%-l:%M %P")); 10 | let msg = format!("@everyone Your laundry is done! It started at {} and ran for {} minutes.", 11 | formated_time, 12 | stop.signed_duration_since(*start).num_minutes()); 13 | 14 | return Some(msg); 15 | } 16 | 17 | pub fn please_unload(current_time: &DateTime, 18 | stop: &Option>) 19 | -> Option 20 | { 21 | if let Some(stop) = stop { 22 | let wait_time = current_time.signed_duration_since(*stop).num_minutes(); 23 | let msg = format!("@everyone, hey seriously, your laundry is done... its been sitting \ 24 | there for {} minutes", 25 | wait_time); 26 | 27 | return Some(msg); 28 | } 29 | else { 30 | return None; 31 | } 32 | } 33 | 34 | pub fn finally_unloaded() -> Option 35 | { 36 | let msg = format!("Alright boss, looks like you unloaded the laundry, back to the wall, my \ 37 | watch continues..."); 38 | 39 | return Some(msg); 40 | } 41 | 42 | pub trait Alerter 43 | { 44 | fn send(&self, msg: &Option); 45 | fn reset(&mut self); 46 | } 47 | -------------------------------------------------------------------------------- /src/laundry/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod alert; 2 | 3 | extern crate chrono; 4 | extern crate sysfs_gpio; 5 | 6 | use self::sysfs_gpio::{Direction, Edge, Pin}; 7 | use chrono::prelude::*; 8 | use laundry::alert::Alerter; 9 | 10 | #[derive(Debug, Clone)] 11 | enum Appliance 12 | { 13 | On, 14 | WaitingForUnload, 15 | Off, 16 | } 17 | 18 | #[derive(Debug)] 19 | pub enum Event 20 | { 21 | Vibrated, 22 | TimedOut, 23 | PollerError, 24 | } 25 | 26 | pub struct Laundry<'a> 27 | { 28 | state: Appliance, 29 | start: Option>, 30 | stop: Option>, 31 | last_msg: Option>, 32 | alerter: &'a mut Alerter, 33 | } 34 | 35 | impl<'a> Laundry<'a> 36 | { 37 | pub fn new(alerter: &mut Alerter) -> Laundry 38 | { 39 | Laundry { state: Appliance::Off, 40 | start: None, 41 | stop: None, 42 | last_msg: None, 43 | alerter: alerter, } 44 | } 45 | 46 | pub fn laundry_thread(&mut self, pin: u64) 47 | { 48 | // create alert function 49 | let input = Pin::new(pin); 50 | let vibration_loop = || { 51 | // configure the sensor 52 | input.set_direction(Direction::In)?; 53 | input.set_edge(Edge::BothEdges)?; 54 | let mut poller = input.get_poller()?; 55 | 56 | // wait for events 57 | loop { 58 | // triage the event 59 | let event = match poller.poll(1000) { 60 | Ok(Some(_)) => Event::Vibrated, 61 | Ok(None) => Event::TimedOut, 62 | _ => Event::PollerError, 63 | }; 64 | 65 | self.step(&event); 66 | } 67 | }; 68 | input.with_exported(vibration_loop) 69 | .expect("Error occured in poller loop"); 70 | } 71 | 72 | fn step(&mut self, event: &Event) 73 | { 74 | let current_time = Local::now(); 75 | println!("{:?} {:?}", self.state, event); 76 | 77 | match (self.state.clone(), event) { 78 | (Appliance::Off, Event::Vibrated) => { 79 | self.start_load(¤t_time); 80 | }, 81 | (Appliance::On, Event::Vibrated) => { 82 | self.stop = Some(current_time); // record recent vibration 83 | }, 84 | (Appliance::On, Event::TimedOut) => { 85 | self.maybe_end_load(¤t_time); 86 | }, 87 | (Appliance::WaitingForUnload, Event::TimedOut) => { 88 | self.maybe_nag(¤t_time); 89 | }, 90 | // Assumes someone came along and unloaded laundry 91 | (Appliance::WaitingForUnload, Event::Vibrated) => { 92 | self.reset_load(); 93 | }, 94 | _ => {}, 95 | } 96 | } 97 | 98 | fn start_load(&mut self, current_time: &DateTime) 99 | { 100 | self.state = Appliance::On; 101 | self.start = Some(*current_time); 102 | self.stop = Some(*current_time); 103 | } 104 | 105 | fn maybe_end_load(&mut self, current_time: &DateTime) 106 | { 107 | let join_delta = chrono::Duration::seconds(10); 108 | 109 | let start = self.start.unwrap(); 110 | let stop = self.stop.unwrap(); 111 | 112 | if current_time.signed_duration_since(stop) > join_delta { 113 | if current_time.signed_duration_since(start) > chrono::Duration::minutes(10) { 114 | self.state = Appliance::WaitingForUnload; 115 | self.alerter.send(&alert::laundry_done(&start, &stop)); 116 | self.last_msg = Some(*current_time); 117 | } 118 | else { 119 | self.state = Appliance::Off; 120 | println!("I dont think that was actually a load of laundry"); 121 | } 122 | } 123 | } 124 | 125 | fn maybe_nag(&mut self, current_time: &DateTime) 126 | { 127 | // consts 128 | let should_nag = true; 129 | let nag_frequency = chrono::Duration::minutes(5); 130 | 131 | let lmt = self.last_msg.unwrap(); 132 | if should_nag && current_time.signed_duration_since(lmt) > nag_frequency { 133 | self.alerter.send(&alert::please_unload(¤t_time, &self.stop)); 134 | self.last_msg = Some(*current_time); 135 | } 136 | } 137 | 138 | fn reset_load(&mut self) 139 | { 140 | self.alerter.send(&alert::finally_unloaded()); 141 | 142 | self.state = Appliance::Off; 143 | self.start = None; 144 | self.stop = None; 145 | { 146 | self.alerter.reset(); 147 | } 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /src/laundry/alert/discord.rs: -------------------------------------------------------------------------------- 1 | extern crate chrono; 2 | 3 | use chrono::prelude::*; 4 | use laundry::alert::Alerter; 5 | use serenity::framework::StandardFramework; 6 | use serenity::model::gateway::Ready; 7 | use serenity::model::id::ChannelId; 8 | use serenity::prelude::*; 9 | use std::env; 10 | use std::sync::{Arc, Mutex}; 11 | use typemap::Key; 12 | 13 | struct Snooze; 14 | 15 | impl Key for Snooze 16 | { 17 | type Value = Arc>>>; 18 | } 19 | 20 | struct Channels; 21 | 22 | impl Key for Channels 23 | { 24 | type Value = Arc>>>; 25 | } 26 | 27 | struct Handler; 28 | 29 | impl EventHandler for Handler 30 | { 31 | fn ready(&self, context: Context, ready: Ready) 32 | { 33 | println!("Connected as {} {:#?}", ready.user.name, ready); 34 | 35 | let mut channel_ids = Vec::new(); 36 | 37 | // collect laundry channel id(s) 38 | for guild in &ready.guilds { 39 | if let Ok(channels) = guild.id().channels() { 40 | for (channel, guild_channel) in &channels { 41 | if guild_channel.name == "laundry" { 42 | channel_ids.push(channel.clone()); 43 | } 44 | } 45 | } 46 | } 47 | 48 | let data = context.data.lock(); 49 | match data.get::() { 50 | Some(channels) => { 51 | let mut ids = channels.lock().unwrap(); 52 | *ids = Some(channel_ids); 53 | }, 54 | None => { 55 | println!("There was a problem updating the channels vector"); 56 | }, 57 | } 58 | } 59 | } 60 | 61 | #[derive(Debug)] 62 | pub struct DiscordAlerter 63 | { 64 | snooze_time: Arc>>>, 65 | channel_ids: Arc>>>, 66 | } 67 | 68 | impl DiscordAlerter 69 | { 70 | pub fn new() -> DiscordAlerter 71 | { 72 | let token = env::var("DISCORD_TOKEN").expect("Expected a token in the environment"); 73 | 74 | let alerter = DiscordAlerter { channel_ids: Arc::new(Mutex::new(None)), 75 | snooze_time: Arc::new(Mutex::new(None)), }; 76 | 77 | let mut client = Client::new(&token, Handler).expect("Err creating client"); 78 | 79 | // copy reference to shared data into client context 80 | { 81 | let mut data = client.data.lock(); 82 | data.insert::(Arc::clone(&alerter.snooze_time)); 83 | data.insert::(Arc::clone(&alerter.channel_ids)); 84 | } 85 | 86 | // configure bot 87 | client.with_framework(StandardFramework::new().configure(|c| c.prefix("!")) 88 | .cmd("shutup", shutup) 89 | .cmd("jk", jk)); 90 | 91 | // start discord event loop as a seperate thread 92 | ::std::thread::spawn(move || { 93 | if let Err(why) = client.start() { 94 | println!("Client error: {:?}", why); 95 | } 96 | }); 97 | 98 | return alerter; 99 | } 100 | } 101 | 102 | impl Alerter for DiscordAlerter 103 | { 104 | fn send(&self, msg: &Option) 105 | { 106 | if should_snooze(&self.snooze_time) { 107 | return; 108 | } 109 | 110 | let channel_ids = &*self.channel_ids.lock().unwrap(); 111 | 112 | println!("Trying to send message to discord"); 113 | 114 | if let Some(msg) = msg { 115 | if let Some(channel_ids) = channel_ids { 116 | for channel in channel_ids { 117 | let _ = channel.say(&msg); 118 | } 119 | } 120 | } 121 | } 122 | 123 | fn reset(&mut self) 124 | { 125 | *self.snooze_time.lock().unwrap() = None; 126 | } 127 | } 128 | 129 | fn should_snooze(snooze_time: &Arc>>>) -> bool 130 | { 131 | let snooze_time = *snooze_time.lock().unwrap(); 132 | if let Some(snooze_time) = snooze_time { 133 | let snooze_duration = chrono::Duration::hours(8); 134 | if Local::now().signed_duration_since(snooze_time) < snooze_duration { 135 | println!("Not sending message, currently in snooze mode"); 136 | return true; 137 | } 138 | } 139 | return false; 140 | } 141 | 142 | command!(shutup(context, msg) { 143 | let data = context.data.lock(); 144 | match data.get::() { 145 | Some(snooze) => { 146 | let mut snooze_time = snooze.lock().unwrap(); 147 | msg.channel_id 148 | .say("okay okay, ill stop bothering you... for now")?; 149 | *snooze_time = Some(Local::now()); 150 | } 151 | None => { 152 | msg.channel_id.say("There was a problem snoozing the bot.")?; 153 | } 154 | } 155 | }); 156 | 157 | command!(jk(context, msg) { 158 | let data = context.data.lock(); 159 | match data.get::() { 160 | Some(snooze) => { 161 | let mut snooze_time = snooze.lock().unwrap(); 162 | msg.channel_id 163 | .say("Aye Aye Boss")?; 164 | *snooze_time = None; 165 | } 166 | None => { 167 | msg.channel_id.say("There was a problem unsnoozing the bot.")?; 168 | } 169 | } 170 | }); 171 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "aho-corasick" 3 | version = "0.6.4" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | dependencies = [ 6 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 7 | ] 8 | 9 | [[package]] 10 | name = "antidote" 11 | version = "1.0.0" 12 | source = "registry+https://github.com/rust-lang/crates.io-index" 13 | 14 | [[package]] 15 | name = "base64" 16 | version = "0.6.0" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | dependencies = [ 19 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 20 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 21 | ] 22 | 23 | [[package]] 24 | name = "base64" 25 | version = "0.8.0" 26 | source = "registry+https://github.com/rust-lang/crates.io-index" 27 | dependencies = [ 28 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 29 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 30 | ] 31 | 32 | [[package]] 33 | name = "base64" 34 | version = "0.9.1" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | dependencies = [ 37 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 38 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 39 | ] 40 | 41 | [[package]] 42 | name = "bitflags" 43 | version = "0.9.1" 44 | source = "registry+https://github.com/rust-lang/crates.io-index" 45 | 46 | [[package]] 47 | name = "bitflags" 48 | version = "1.0.2" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | 51 | [[package]] 52 | name = "byteorder" 53 | version = "1.2.2" 54 | source = "registry+https://github.com/rust-lang/crates.io-index" 55 | 56 | [[package]] 57 | name = "bytes" 58 | version = "0.4.7" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | dependencies = [ 61 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 62 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 63 | ] 64 | 65 | [[package]] 66 | name = "cc" 67 | version = "1.0.14" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | 70 | [[package]] 71 | name = "cfg-if" 72 | version = "0.1.2" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | 75 | [[package]] 76 | name = "chrono" 77 | version = "0.4.2" 78 | source = "registry+https://github.com/rust-lang/crates.io-index" 79 | dependencies = [ 80 | "num-integer 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 81 | "num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "serde 1.0.43 (registry+https://github.com/rust-lang/crates.io-index)", 83 | "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 84 | ] 85 | 86 | [[package]] 87 | name = "core-foundation" 88 | version = "0.2.3" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | dependencies = [ 91 | "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 92 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 93 | ] 94 | 95 | [[package]] 96 | name = "core-foundation-sys" 97 | version = "0.2.3" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | dependencies = [ 100 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 101 | ] 102 | 103 | [[package]] 104 | name = "dtoa" 105 | version = "0.4.2" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | 108 | [[package]] 109 | name = "env_logger" 110 | version = "0.4.3" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | dependencies = [ 113 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 114 | "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 115 | ] 116 | 117 | [[package]] 118 | name = "evzht9h3nznqzwl" 119 | version = "0.0.3" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | dependencies = [ 122 | "base64 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 123 | "bitflags 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 124 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 125 | "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", 126 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 127 | "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 128 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 129 | "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 130 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 131 | "url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 132 | "uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 133 | ] 134 | 135 | [[package]] 136 | name = "flate2" 137 | version = "1.0.1" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | dependencies = [ 140 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 141 | "miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 142 | ] 143 | 144 | [[package]] 145 | name = "foreign-types" 146 | version = "0.3.2" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | dependencies = [ 149 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 150 | ] 151 | 152 | [[package]] 153 | name = "foreign-types-shared" 154 | version = "0.1.1" 155 | source = "registry+https://github.com/rust-lang/crates.io-index" 156 | 157 | [[package]] 158 | name = "fuchsia-zircon" 159 | version = "0.3.3" 160 | source = "registry+https://github.com/rust-lang/crates.io-index" 161 | dependencies = [ 162 | "bitflags 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 163 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 164 | ] 165 | 166 | [[package]] 167 | name = "fuchsia-zircon-sys" 168 | version = "0.3.3" 169 | source = "registry+https://github.com/rust-lang/crates.io-index" 170 | 171 | [[package]] 172 | name = "gcc" 173 | version = "0.3.54" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | 176 | [[package]] 177 | name = "httparse" 178 | version = "1.2.4" 179 | source = "registry+https://github.com/rust-lang/crates.io-index" 180 | 181 | [[package]] 182 | name = "hyper" 183 | version = "0.10.13" 184 | source = "registry+https://github.com/rust-lang/crates.io-index" 185 | dependencies = [ 186 | "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 187 | "httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", 188 | "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 189 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 190 | "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 191 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 192 | "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 193 | "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 194 | "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 195 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 196 | "url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 197 | ] 198 | 199 | [[package]] 200 | name = "hyper-native-tls" 201 | version = "0.2.4" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | dependencies = [ 204 | "antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 205 | "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", 206 | "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 207 | ] 208 | 209 | [[package]] 210 | name = "idna" 211 | version = "0.1.4" 212 | source = "registry+https://github.com/rust-lang/crates.io-index" 213 | dependencies = [ 214 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 215 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 216 | "unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 217 | ] 218 | 219 | [[package]] 220 | name = "iovec" 221 | version = "0.1.2" 222 | source = "registry+https://github.com/rust-lang/crates.io-index" 223 | dependencies = [ 224 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 225 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 226 | ] 227 | 228 | [[package]] 229 | name = "itoa" 230 | version = "0.4.1" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | 233 | [[package]] 234 | name = "kankyo" 235 | version = "0.1.1" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | 238 | [[package]] 239 | name = "language-tags" 240 | version = "0.2.2" 241 | source = "registry+https://github.com/rust-lang/crates.io-index" 242 | 243 | [[package]] 244 | name = "laundry-bot" 245 | version = "0.2.0" 246 | dependencies = [ 247 | "chrono 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 248 | "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 249 | "kankyo 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 250 | "serenity 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 251 | "sysfs_gpio 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 252 | "typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 253 | ] 254 | 255 | [[package]] 256 | name = "lazy_static" 257 | version = "0.2.11" 258 | source = "registry+https://github.com/rust-lang/crates.io-index" 259 | 260 | [[package]] 261 | name = "lazy_static" 262 | version = "1.0.0" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | 265 | [[package]] 266 | name = "libc" 267 | version = "0.2.40" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | 270 | [[package]] 271 | name = "log" 272 | version = "0.3.9" 273 | source = "registry+https://github.com/rust-lang/crates.io-index" 274 | dependencies = [ 275 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 276 | ] 277 | 278 | [[package]] 279 | name = "log" 280 | version = "0.4.1" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | dependencies = [ 283 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 284 | ] 285 | 286 | [[package]] 287 | name = "matches" 288 | version = "0.1.6" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | 291 | [[package]] 292 | name = "memchr" 293 | version = "2.0.1" 294 | source = "registry+https://github.com/rust-lang/crates.io-index" 295 | dependencies = [ 296 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 297 | ] 298 | 299 | [[package]] 300 | name = "mime" 301 | version = "0.2.6" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | dependencies = [ 304 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 305 | ] 306 | 307 | [[package]] 308 | name = "mime_guess" 309 | version = "1.8.4" 310 | source = "registry+https://github.com/rust-lang/crates.io-index" 311 | dependencies = [ 312 | "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 313 | "phf 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 314 | "phf_codegen 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 315 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 316 | ] 317 | 318 | [[package]] 319 | name = "miniz-sys" 320 | version = "0.1.10" 321 | source = "registry+https://github.com/rust-lang/crates.io-index" 322 | dependencies = [ 323 | "cc 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", 324 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 325 | ] 326 | 327 | [[package]] 328 | name = "multipart" 329 | version = "0.13.6" 330 | source = "registry+https://github.com/rust-lang/crates.io-index" 331 | dependencies = [ 332 | "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", 333 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 334 | "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 335 | "mime_guess 1.8.4 (registry+https://github.com/rust-lang/crates.io-index)", 336 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 337 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 338 | "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 339 | ] 340 | 341 | [[package]] 342 | name = "native-tls" 343 | version = "0.1.5" 344 | source = "registry+https://github.com/rust-lang/crates.io-index" 345 | dependencies = [ 346 | "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 347 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 348 | "openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)", 349 | "schannel 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 350 | "security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 351 | "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 352 | "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 353 | ] 354 | 355 | [[package]] 356 | name = "nix" 357 | version = "0.10.0" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | dependencies = [ 360 | "bitflags 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 361 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 362 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 363 | "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", 364 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 365 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 366 | ] 367 | 368 | [[package]] 369 | name = "num-integer" 370 | version = "0.1.36" 371 | source = "registry+https://github.com/rust-lang/crates.io-index" 372 | dependencies = [ 373 | "num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 374 | ] 375 | 376 | [[package]] 377 | name = "num-traits" 378 | version = "0.2.2" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | 381 | [[package]] 382 | name = "num_cpus" 383 | version = "1.8.0" 384 | source = "registry+https://github.com/rust-lang/crates.io-index" 385 | dependencies = [ 386 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 387 | ] 388 | 389 | [[package]] 390 | name = "openssl" 391 | version = "0.9.24" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | dependencies = [ 394 | "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 395 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 396 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 397 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 398 | "openssl-sys 0.9.28 (registry+https://github.com/rust-lang/crates.io-index)", 399 | ] 400 | 401 | [[package]] 402 | name = "openssl-sys" 403 | version = "0.9.28" 404 | source = "registry+https://github.com/rust-lang/crates.io-index" 405 | dependencies = [ 406 | "cc 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", 407 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 408 | "pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", 409 | "vcpkg 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 410 | ] 411 | 412 | [[package]] 413 | name = "owning_ref" 414 | version = "0.3.3" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | dependencies = [ 417 | "stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 418 | ] 419 | 420 | [[package]] 421 | name = "parking_lot" 422 | version = "0.5.5" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | dependencies = [ 425 | "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 426 | "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", 427 | ] 428 | 429 | [[package]] 430 | name = "parking_lot_core" 431 | version = "0.2.14" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | dependencies = [ 434 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 435 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 436 | "smallvec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 437 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 438 | ] 439 | 440 | [[package]] 441 | name = "percent-encoding" 442 | version = "1.0.1" 443 | source = "registry+https://github.com/rust-lang/crates.io-index" 444 | 445 | [[package]] 446 | name = "phf" 447 | version = "0.7.22" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | dependencies = [ 450 | "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 451 | ] 452 | 453 | [[package]] 454 | name = "phf_codegen" 455 | version = "0.7.22" 456 | source = "registry+https://github.com/rust-lang/crates.io-index" 457 | dependencies = [ 458 | "phf_generator 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 459 | "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 460 | ] 461 | 462 | [[package]] 463 | name = "phf_generator" 464 | version = "0.7.22" 465 | source = "registry+https://github.com/rust-lang/crates.io-index" 466 | dependencies = [ 467 | "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 468 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 469 | ] 470 | 471 | [[package]] 472 | name = "phf_shared" 473 | version = "0.7.22" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | dependencies = [ 476 | "siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 477 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 478 | ] 479 | 480 | [[package]] 481 | name = "pkg-config" 482 | version = "0.3.11" 483 | source = "registry+https://github.com/rust-lang/crates.io-index" 484 | 485 | [[package]] 486 | name = "proc-macro2" 487 | version = "0.3.8" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | dependencies = [ 490 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 491 | ] 492 | 493 | [[package]] 494 | name = "quote" 495 | version = "0.5.2" 496 | source = "registry+https://github.com/rust-lang/crates.io-index" 497 | dependencies = [ 498 | "proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 499 | ] 500 | 501 | [[package]] 502 | name = "rand" 503 | version = "0.3.22" 504 | source = "registry+https://github.com/rust-lang/crates.io-index" 505 | dependencies = [ 506 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 507 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 508 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 509 | ] 510 | 511 | [[package]] 512 | name = "rand" 513 | version = "0.4.2" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | dependencies = [ 516 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 517 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 518 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 519 | ] 520 | 521 | [[package]] 522 | name = "redox_syscall" 523 | version = "0.1.37" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | 526 | [[package]] 527 | name = "regex" 528 | version = "0.2.11" 529 | source = "registry+https://github.com/rust-lang/crates.io-index" 530 | dependencies = [ 531 | "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 532 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 533 | "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 534 | "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 535 | "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 536 | ] 537 | 538 | [[package]] 539 | name = "regex-syntax" 540 | version = "0.5.6" 541 | source = "registry+https://github.com/rust-lang/crates.io-index" 542 | dependencies = [ 543 | "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 544 | ] 545 | 546 | [[package]] 547 | name = "remove_dir_all" 548 | version = "0.5.1" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | dependencies = [ 551 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 552 | ] 553 | 554 | [[package]] 555 | name = "safemem" 556 | version = "0.2.0" 557 | source = "registry+https://github.com/rust-lang/crates.io-index" 558 | 559 | [[package]] 560 | name = "schannel" 561 | version = "0.1.12" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | dependencies = [ 564 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 565 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 566 | ] 567 | 568 | [[package]] 569 | name = "security-framework" 570 | version = "0.1.16" 571 | source = "registry+https://github.com/rust-lang/crates.io-index" 572 | dependencies = [ 573 | "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 574 | "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 575 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 576 | "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 577 | ] 578 | 579 | [[package]] 580 | name = "security-framework-sys" 581 | version = "0.1.16" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | dependencies = [ 584 | "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 585 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 586 | ] 587 | 588 | [[package]] 589 | name = "serde" 590 | version = "1.0.43" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | 593 | [[package]] 594 | name = "serde_derive" 595 | version = "1.0.43" 596 | source = "registry+https://github.com/rust-lang/crates.io-index" 597 | dependencies = [ 598 | "proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 599 | "quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 600 | "serde_derive_internals 0.23.1 (registry+https://github.com/rust-lang/crates.io-index)", 601 | "syn 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", 602 | ] 603 | 604 | [[package]] 605 | name = "serde_derive_internals" 606 | version = "0.23.1" 607 | source = "registry+https://github.com/rust-lang/crates.io-index" 608 | dependencies = [ 609 | "proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 610 | "syn 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", 611 | ] 612 | 613 | [[package]] 614 | name = "serde_json" 615 | version = "1.0.16" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | dependencies = [ 618 | "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 619 | "itoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 620 | "serde 1.0.43 (registry+https://github.com/rust-lang/crates.io-index)", 621 | ] 622 | 623 | [[package]] 624 | name = "serenity" 625 | version = "0.5.3" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | dependencies = [ 628 | "base64 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 629 | "bitflags 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 630 | "chrono 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 631 | "evzht9h3nznqzwl 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 632 | "flate2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 633 | "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", 634 | "hyper-native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", 635 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 636 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 637 | "multipart 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)", 638 | "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 639 | "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 640 | "serde 1.0.43 (registry+https://github.com/rust-lang/crates.io-index)", 641 | "serde_derive 1.0.43 (registry+https://github.com/rust-lang/crates.io-index)", 642 | "serde_json 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", 643 | "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 644 | "typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 645 | ] 646 | 647 | [[package]] 648 | name = "sha1" 649 | version = "0.2.0" 650 | source = "registry+https://github.com/rust-lang/crates.io-index" 651 | 652 | [[package]] 653 | name = "siphasher" 654 | version = "0.2.2" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | 657 | [[package]] 658 | name = "smallvec" 659 | version = "0.6.1" 660 | source = "registry+https://github.com/rust-lang/crates.io-index" 661 | 662 | [[package]] 663 | name = "stable_deref_trait" 664 | version = "1.0.0" 665 | source = "registry+https://github.com/rust-lang/crates.io-index" 666 | 667 | [[package]] 668 | name = "syn" 669 | version = "0.13.4" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | dependencies = [ 672 | "proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 673 | "quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 674 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 675 | ] 676 | 677 | [[package]] 678 | name = "sysfs_gpio" 679 | version = "0.5.3" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | dependencies = [ 682 | "nix 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 683 | ] 684 | 685 | [[package]] 686 | name = "tempdir" 687 | version = "0.3.7" 688 | source = "registry+https://github.com/rust-lang/crates.io-index" 689 | dependencies = [ 690 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 691 | "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 692 | ] 693 | 694 | [[package]] 695 | name = "thread_local" 696 | version = "0.3.5" 697 | source = "registry+https://github.com/rust-lang/crates.io-index" 698 | dependencies = [ 699 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 700 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 701 | ] 702 | 703 | [[package]] 704 | name = "threadpool" 705 | version = "1.7.1" 706 | source = "registry+https://github.com/rust-lang/crates.io-index" 707 | dependencies = [ 708 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 709 | ] 710 | 711 | [[package]] 712 | name = "time" 713 | version = "0.1.39" 714 | source = "registry+https://github.com/rust-lang/crates.io-index" 715 | dependencies = [ 716 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 717 | "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 718 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 719 | ] 720 | 721 | [[package]] 722 | name = "traitobject" 723 | version = "0.1.0" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | 726 | [[package]] 727 | name = "typeable" 728 | version = "0.1.2" 729 | source = "registry+https://github.com/rust-lang/crates.io-index" 730 | 731 | [[package]] 732 | name = "typemap" 733 | version = "0.3.3" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | dependencies = [ 736 | "unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 737 | ] 738 | 739 | [[package]] 740 | name = "ucd-util" 741 | version = "0.1.1" 742 | source = "registry+https://github.com/rust-lang/crates.io-index" 743 | 744 | [[package]] 745 | name = "unicase" 746 | version = "1.4.2" 747 | source = "registry+https://github.com/rust-lang/crates.io-index" 748 | dependencies = [ 749 | "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 750 | ] 751 | 752 | [[package]] 753 | name = "unicode-bidi" 754 | version = "0.3.4" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | dependencies = [ 757 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 758 | ] 759 | 760 | [[package]] 761 | name = "unicode-normalization" 762 | version = "0.1.5" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | 765 | [[package]] 766 | name = "unicode-xid" 767 | version = "0.1.0" 768 | source = "registry+https://github.com/rust-lang/crates.io-index" 769 | 770 | [[package]] 771 | name = "unreachable" 772 | version = "1.0.0" 773 | source = "registry+https://github.com/rust-lang/crates.io-index" 774 | dependencies = [ 775 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 776 | ] 777 | 778 | [[package]] 779 | name = "unsafe-any" 780 | version = "0.4.2" 781 | source = "registry+https://github.com/rust-lang/crates.io-index" 782 | dependencies = [ 783 | "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 784 | ] 785 | 786 | [[package]] 787 | name = "url" 788 | version = "1.7.0" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | dependencies = [ 791 | "idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 792 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 793 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 794 | ] 795 | 796 | [[package]] 797 | name = "utf8-ranges" 798 | version = "1.0.0" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | 801 | [[package]] 802 | name = "uuid" 803 | version = "0.5.1" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | dependencies = [ 806 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 807 | ] 808 | 809 | [[package]] 810 | name = "vcpkg" 811 | version = "0.2.3" 812 | source = "registry+https://github.com/rust-lang/crates.io-index" 813 | 814 | [[package]] 815 | name = "version_check" 816 | version = "0.1.3" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | 819 | [[package]] 820 | name = "void" 821 | version = "1.0.2" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | 824 | [[package]] 825 | name = "winapi" 826 | version = "0.2.8" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | 829 | [[package]] 830 | name = "winapi" 831 | version = "0.3.4" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | dependencies = [ 834 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 835 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 836 | ] 837 | 838 | [[package]] 839 | name = "winapi-i686-pc-windows-gnu" 840 | version = "0.4.0" 841 | source = "registry+https://github.com/rust-lang/crates.io-index" 842 | 843 | [[package]] 844 | name = "winapi-x86_64-pc-windows-gnu" 845 | version = "0.4.0" 846 | source = "registry+https://github.com/rust-lang/crates.io-index" 847 | 848 | [metadata] 849 | "checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" 850 | "checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5" 851 | "checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" 852 | "checksum base64 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c4a342b450b268e1be8036311e2c613d7f8a7ed31214dff1cc3b60852a3168d" 853 | "checksum base64 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9263aa6a38da271eec5c91a83ce1e800f093c8535788d403d626d8d5c3f8f007" 854 | "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" 855 | "checksum bitflags 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1b2bf7093258c32e0825b635948de528a5949799dcd61bef39534c8aab95870c" 856 | "checksum byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "73b5bdfe7ee3ad0b99c9801d58807a9dbc9e09196365b0203853b99889ab3c87" 857 | "checksum bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "2f1d50c876fb7545f5f289cd8b2aee3f359d073ae819eed5d6373638e2c61e59" 858 | "checksum cc 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "6e9b718157695b866802180607488c861f3c640bf5c135544adf1be60a190418" 859 | "checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" 860 | "checksum chrono 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1cce36c92cb605414e9b824f866f5babe0a0368e39ea07393b9b63cf3844c0e6" 861 | "checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67" 862 | "checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d" 863 | "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" 864 | "checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" 865 | "checksum evzht9h3nznqzwl 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d52f92982af5248fb5062e81529b3e3a316d08689ff7cf421e5997243a7e1be8" 866 | "checksum flate2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9fac2277e84e5e858483756647a9d0aa8d9a2b7cba517fd84325a0aaa69a0909" 867 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 868 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 869 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 870 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 871 | "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" 872 | "checksum httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f407128745b78abc95c0ffbe4e5d37427fdc0d45470710cfef8c44522a2e37" 873 | "checksum hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)" = "368cb56b2740ebf4230520e2b90ebb0461e69034d85d1945febd9b3971426db2" 874 | "checksum hyper-native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "72332e4a35d3059583623b50e98e491b78f8b96c5521fcb3f428167955aa56e8" 875 | "checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d" 876 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 877 | "checksum itoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c069bbec61e1ca5a596166e55dfe4773ff745c3d16b700013bcaff9a6df2c682" 878 | "checksum kankyo 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1ca1a1af3d3ee1773375e107339f99dbadd78344d03df1bc01c0d65d09cfd864" 879 | "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" 880 | "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" 881 | "checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" 882 | "checksum libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)" = "6fd41f331ac7c5b8ac259b8bf82c75c0fb2e469bbf37d2becbba9a6a2221965b" 883 | "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" 884 | "checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" 885 | "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" 886 | "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" 887 | "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" 888 | "checksum mime_guess 1.8.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b7e2b09d08313f84e0fb82d13a4d859109a17543fe9af3b6d941dc1431f7de79" 889 | "checksum miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4" 890 | "checksum multipart 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92f54eb45230c3aa20864ccf0c277eeaeadcf5e437e91731db498dbf7fbe0ec6" 891 | "checksum native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f74dbadc8b43df7864539cedb7bc91345e532fdd913cfdc23ad94f4d2d40fbc0" 892 | "checksum nix 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fd5681d13fda646462cfbd4e5f2051279a89a544d50eb98c365b507246839f" 893 | "checksum num-integer 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f8d26da319fb45674985c78f1d1caf99aa4941f785d384a2ae36d0740bc3e2fe" 894 | "checksum num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dee092fcdf725aee04dd7da1d21debff559237d49ef1cb3e69bcb8ece44c7364" 895 | "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" 896 | "checksum openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "a3605c298474a3aa69de92d21139fb5e2a81688d308262359d85cdd0d12a7985" 897 | "checksum openssl-sys 0.9.28 (registry+https://github.com/rust-lang/crates.io-index)" = "0bbd90640b148b46305c1691eed6039b5c8509bed16991e3562a01eeb76902a3" 898 | "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" 899 | "checksum parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4d05f1349491390b1730afba60bb20d55761bef489a954546b58b4b34e1e2ac" 900 | "checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" 901 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 902 | "checksum phf 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "7d37a244c75a9748e049225155f56dbcb98fe71b192fd25fd23cb914b5ad62f2" 903 | "checksum phf_codegen 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "4e4048fe7dd7a06b8127ecd6d3803149126e9b33c7558879846da3a63f734f2b" 904 | "checksum phf_generator 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "05a079dd052e7b674d21cb31cbb6c05efd56a2cd2827db7692e2f1a507ebd998" 905 | "checksum phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "c2261d544c2bb6aa3b10022b0be371b9c7c64f762ef28c6f5d4f1ef6d97b5930" 906 | "checksum pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "110d5ee3593dbb73f56294327fe5668bcc997897097cbc76b51e7aed3f52452f" 907 | "checksum proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1b06e2f335f48d24442b35a19df506a835fb3547bc3c06ef27340da9acf5cae7" 908 | "checksum quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" 909 | "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" 910 | "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" 911 | "checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd" 912 | "checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" 913 | "checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" 914 | "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" 915 | "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" 916 | "checksum schannel 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "85fd9df495640643ad2d00443b3d78aae69802ad488debab4f1dd52fc1806ade" 917 | "checksum security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "dfa44ee9c54ce5eecc9de7d5acbad112ee58755239381f687e564004ba4a2332" 918 | "checksum security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "5421621e836278a0b139268f36eee0dc7e389b784dc3f79d8f11aabadf41bead" 919 | "checksum serde 1.0.43 (registry+https://github.com/rust-lang/crates.io-index)" = "0c855d888276f20d140223bd06515e5bf1647fd6d02593cb5792466d9a8ec2d0" 920 | "checksum serde_derive 1.0.43 (registry+https://github.com/rust-lang/crates.io-index)" = "aa113e5fc4b008a626ba2bbd41330b56c9987d667f79f7b243e5a2d03d91ed1c" 921 | "checksum serde_derive_internals 0.23.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9d30c4596450fd7bbda79ef15559683f9a79ac0193ea819db90000d7e1cae794" 922 | "checksum serde_json 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "8c6c4e049dc657a99e394bd85c22acbf97356feeec6dbf44150f2dcf79fb3118" 923 | "checksum serenity 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cbb383d704da0ca6f62c81e2836fde18e7b4bfc91576ad2ea78ad8511f8ccb72" 924 | "checksum sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" 925 | "checksum siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0df90a788073e8d0235a67e50441d47db7c8ad9debd91cbf43736a2a92d36537" 926 | "checksum smallvec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03dab98ab5ded3a8b43b2c80751194608d0b2aa0f1d46cf95d1c35e192844aa7" 927 | "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b" 928 | "checksum syn 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90d5efaad92a0f96c629ae16302cc9591915930fd49ff0dcc6b4cde146782397" 929 | "checksum sysfs_gpio 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3d68f2cae3c7d39f54ce8a858cc31ffb01974744ee65e5b4999b6037cd691e3f" 930 | "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" 931 | "checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" 932 | "checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" 933 | "checksum time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098" 934 | "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" 935 | "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" 936 | "checksum typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "653be63c80a3296da5551e1bfd2cca35227e13cdd08c6668903ae2f4f77aa1f6" 937 | "checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" 938 | "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" 939 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 940 | "checksum unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f" 941 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 942 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 943 | "checksum unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f30360d7979f5e9c6e6cea48af192ea8fab4afb3cf72597154b8f08935bc9c7f" 944 | "checksum url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f808aadd8cfec6ef90e4a14eb46f24511824d1ac596b9682703c87056c8678b7" 945 | "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" 946 | "checksum uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22" 947 | "checksum vcpkg 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7ed0f6789c8a85ca41bbc1c9d175422116a9869bd1cf31bb08e1493ecce60380" 948 | "checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d" 949 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 950 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 951 | "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" 952 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 953 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 954 | --------------------------------------------------------------------------------