├── .gitignore ├── test-message.msgpack ├── test-message2.msgpack ├── partial-message.msgpack ├── test_giphy_msg.msgpack ├── message_test.sh ├── Cargo.toml ├── src ├── routing.rs ├── conf.rs ├── braid.rs ├── giphy.rs ├── message.rs └── main.rs ├── README.md └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | -------------------------------------------------------------------------------- /test-message.msgpack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braidchat/giphybot/master/test-message.msgpack -------------------------------------------------------------------------------- /test-message2.msgpack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braidchat/giphybot/master/test-message2.msgpack -------------------------------------------------------------------------------- /partial-message.msgpack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braidchat/giphybot/master/partial-message.msgpack -------------------------------------------------------------------------------- /test_giphy_msg.msgpack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braidchat/giphybot/master/test_giphy_msg.msgpack -------------------------------------------------------------------------------- /message_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | set -x 6 | 7 | curl --verbose -X PUT -H 'X-Braid-Signature: foobar' --data-binary @test_giphy_msg.msgpack localhost:9999/message 8 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "giphybot" 3 | version = "0.1.0" 4 | authors = ["James N. V. Cash "] 5 | 6 | [dependencies] 7 | iron = "^0.6" 8 | serde = "^1.0" 9 | serde_derive = "^1.0" 10 | serde_json = "^1.0" 11 | rmp = "^0.8" 12 | rmp-serde = "^0.13" 13 | uuid = { version = "^0.7", features = ["v4"] } 14 | byteorder = "^1.2" 15 | toml = "^0.4" 16 | hyper = "^0.12" 17 | regex = "^1.0" 18 | lazy_static = "^1.1" 19 | mime = "^0.3" 20 | openssl = "^0.10" 21 | rustc-serialize = "^0.3" 22 | base64 = "^0.9" 23 | urlencoding = "1.0.0" 24 | futures = "0.1" 25 | 26 | [profile.release] 27 | lto = true 28 | -------------------------------------------------------------------------------- /src/routing.rs: -------------------------------------------------------------------------------- 1 | use std::error::Error; 2 | use std::fmt; 3 | 4 | // Route error handler 5 | #[derive(Debug)] 6 | pub struct NoRoute; 7 | 8 | impl fmt::Display for NoRoute { 9 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 10 | f.write_str("No matching route found.") 11 | } 12 | } 13 | 14 | impl Error for NoRoute { 15 | fn description(&self) -> &str { "No Route" } 16 | } 17 | 18 | #[derive(Debug)] 19 | pub struct MissingMac; 20 | 21 | impl fmt::Display for MissingMac { 22 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 23 | f.write_str("Missing X-Braid-Signature header") 24 | } 25 | } 26 | 27 | impl Error for MissingMac { 28 | fn description(&self) -> &str { "Missing signature header" } 29 | } 30 | 31 | #[derive(Debug)] 32 | pub struct BadMac; 33 | 34 | impl fmt::Display for BadMac { 35 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 36 | f.write_str("Mac check failed") 37 | } 38 | } 39 | 40 | impl Error for BadMac { 41 | fn description(&self) -> &str { "Bad signature header" } 42 | } 43 | -------------------------------------------------------------------------------- /src/conf.rs: -------------------------------------------------------------------------------- 1 | use toml; 2 | use std::collections::BTreeMap; 3 | use std::io::Read; 4 | use std::fs::File; 5 | 6 | fn slurp(file_name: &str) -> Result { 7 | let mut s = String::new(); 8 | match File::open(file_name).and_then(|mut f| { f.read_to_string(&mut s) }) { 9 | Ok(_) => Ok(s), 10 | Err(_) => Err("Couldn't open file to read".to_owned()) 11 | } 12 | } 13 | 14 | pub type TomlConf = BTreeMap; 15 | 16 | pub fn load_conf(file_name: &str) -> Result { 17 | let contents = try!(slurp(file_name).map_err(|e| e.to_string())); 18 | toml::de::from_str(&contents).or(Err("Couldn't parse TOML".to_owned())) 19 | } 20 | 21 | pub fn get_conf_val(conf: &TomlConf, group: &str, key: &str) -> Option { 22 | conf.get(group) 23 | .and_then(|v| v.as_table()) 24 | .and_then(|tbl| tbl.get(key)) 25 | .and_then(|key_v| key_v.as_str()) 26 | .map(|s| s.to_owned()) 27 | } 28 | 29 | pub fn get_conf_group(conf: &TomlConf, group: &str) -> Option { 30 | conf.get(group).and_then(|v| v.as_table()).map(|t| t.clone()) 31 | } 32 | -------------------------------------------------------------------------------- /src/braid.rs: -------------------------------------------------------------------------------- 1 | use conf; 2 | use message; 3 | use hyper::header::{CONTENT_TYPE,AUTHORIZATION}; 4 | use hyper::client::Client; 5 | use hyper::{Response,Request,Body}; 6 | use hyper::error::Result as HttpResult; 7 | use hyper::rt::Future; 8 | use base64; 9 | 10 | fn basic_auth(user: String, pass: String) -> String { 11 | format!("Basic {}", base64::encode(&format!("{}:{}", user, pass))) 12 | } 13 | 14 | pub fn send_braid_request(braid_conf: &conf::TomlConf, message: message::Message) 15 | -> HttpResult> 16 | { 17 | let api_url = braid_conf.get("api_url").unwrap().as_str().unwrap(); 18 | let bot_id = braid_conf.get("app_id").unwrap().as_str().unwrap().to_owned(); 19 | let token = braid_conf.get("token").unwrap().as_str().unwrap().to_owned(); 20 | let body = message::encode_transit_msgpack(message); 21 | let req = Request::builder() 22 | .method("POST") 23 | .uri(api_url) 24 | .header(CONTENT_TYPE, "application/transit+msgpack") 25 | .header(AUTHORIZATION, basic_auth(bot_id, token)) 26 | .body(Body::from(body)) 27 | .unwrap(); 28 | let client = Client::new(); 29 | client.request(req).wait() 30 | } 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Setting up giphybot 2 | 3 | Giphybot is written in Rust, so you'll probably want to use [rustup][] to install the rust toolchain if you don't already have it set up. 4 | Alternatively, you can use a [pre-built binary](https://github.com/braidchat/giphybot/releases). 5 | 6 | Create a configuration toml file with the app's configuration. It should look like this: 7 | 8 | [general] 9 | port = "9999" 10 | 11 | [giphy] 12 | api_key = "GIPHY_API_KEY" 13 | 14 | [braid] 15 | name = "nameofthisbotonbraid" 16 | api_url = "https://api.braid.chat/bots/message" 17 | app_id = "BOT_BRAID_ID" 18 | token = "BOT_BRAID_TOKEN" 19 | 20 | There is a public giphy api key to use for testing: `dc6zaTOxFJmzC` 21 | 22 | Specify the file as the first command-line argument, e.g. 23 | 24 | $ giphybot conf.toml 25 | 26 | You can run the bot for testing by doing `cargo run conf.toml`. 27 | 28 | To deploy, build with `cargo build --release` then upload the generated binary from `target/release/giphybot`. 29 | If building on a different architecture than you'll be deploying to, look into [rustup cross-compilation][crosscomp]. 30 | 31 | [rustup]: https://www.rustup.rs/ 32 | [crosscomp]: https://github.com/rust-lang-nursery/rustup.rs#cross-compilation 33 | -------------------------------------------------------------------------------- /src/giphy.rs: -------------------------------------------------------------------------------- 1 | use hyper; 2 | use hyper::{Request,Body}; 3 | use hyper::client::Client; 4 | use futures::future; 5 | use serde_json; 6 | use serde_json::value::Value as JsonValue; 7 | use hyper::rt::{Future,Stream}; 8 | use urlencoding; 9 | 10 | static GIPHY_SEARCH_URL: &'static str = "http://api.giphy.com/v1/gifs/search"; 11 | 12 | fn send_giphy_request(api_key: &str, query: String) -> impl Future { 13 | let query_url = format!("{}?q={}&api_key={}&limit=1", 14 | GIPHY_SEARCH_URL, 15 | urlencoding::encode(&query), 16 | urlencoding::encode(api_key)); 17 | let req = Request::builder() 18 | .uri(query_url) 19 | .method("GET") 20 | .body(Body::empty()).unwrap(); 21 | 22 | let client = Client::new(); 23 | client 24 | .request(req) 25 | .and_then(|res| { 26 | res.into_body() 27 | .fold(Vec::new(), |mut acc, chunk| { 28 | acc.extend_from_slice(&*chunk); 29 | future::ok::, hyper::Error>(acc) 30 | }) 31 | }) 32 | .map(|body_vec| { 33 | String::from_utf8(body_vec).unwrap() 34 | }) 35 | .map_err(|err| { println!("Error with giphy response: {:?}", err) }) 36 | } 37 | 38 | // [TODO] Better error handling (Result? don't use expect or unwrap) 39 | pub fn request_gif(api_key: &str, query: String) -> impl Future { 40 | println!("searching for giphy {}", query); 41 | send_giphy_request(api_key, query) 42 | .and_then(|json_body| { 43 | serde_json::from_str::(&json_body) 44 | .ok() 45 | .and_then(|parsed| { 46 | parsed.get("data") 47 | .and_then(|data| { 48 | match data { 49 | &JsonValue::Array(ref vals) => vals.first(), 50 | _ => None 51 | } 52 | }) 53 | .and_then(|first_data| { 54 | first_data.get("images") 55 | }) 56 | .and_then(|images| { 57 | images.get("original") 58 | }) 59 | .and_then(|gif_info| { 60 | match gif_info.get("url").unwrap() { 61 | &JsonValue::String(ref s) => Some(s), 62 | _ => None 63 | } 64 | }) 65 | .map(|gif| { 66 | gif.to_owned() 67 | }) 68 | }) 69 | .ok_or_else(|| { println!("Couldn't parse JSON") }) 70 | }) 71 | } 72 | -------------------------------------------------------------------------------- /src/message.rs: -------------------------------------------------------------------------------- 1 | use std::io::{Cursor,Write}; 2 | use byteorder::{WriteBytesExt,ReadBytesExt,BigEndian}; 3 | use uuid::Uuid; 4 | use serde; 5 | use serde::{Serialize,Deserialize}; 6 | use rmp::Marker; 7 | use rmp::encode::{ValueWriteError, write_map_len, write_str}; 8 | use rmp_serde::{Serializer,Deserializer}; 9 | use rmp_serde::encode::VariantWriter; 10 | 11 | #[derive(Debug, PartialEq, Deserialize, Serialize)] 12 | pub struct Message { 13 | #[serde(rename="~:id", deserialize_with="deserialize_transit_uuid", serialize_with="serialize_transit_uuid")] 14 | pub id: Uuid, 15 | #[serde(rename="~:group-id", deserialize_with="deserialize_transit_uuid", serialize_with="serialize_transit_uuid")] 16 | pub group_id: Uuid, 17 | #[serde(rename="~:thread-id", deserialize_with="deserialize_transit_uuid", serialize_with="serialize_transit_uuid")] 18 | pub thread_id: Uuid, 19 | #[serde(rename="~:user-id", deserialize_with="deserialize_transit_uuid", serialize_with="serialize_transit_uuid")] 20 | pub user_id: Uuid, 21 | #[serde(rename="~:mentioned-user-ids", deserialize_with="deserialize_transit_uuid_seq", serialize_with="serialize_transit_uuid_seq")] 22 | pub mentioned_user_ids: Vec, 23 | #[serde(rename="~:mentioned-tag-ids", deserialize_with="deserialize_transit_uuid_seq", serialize_with="serialize_transit_uuid_seq")] 24 | pub mentioned_tag_ids: Vec, 25 | #[serde(rename="~:content")] 26 | pub content: String, 27 | } 28 | 29 | type TransitUuid = (String, (i64, i64)); 30 | 31 | fn deserialize_transit_uuid<'de, D>(de: D) -> Result 32 | where D: serde::Deserializer<'de> { 33 | let transit_uuid: TransitUuid = try!(Deserialize::deserialize(de)); 34 | Ok(transit_to_uuid(transit_uuid)) 35 | } 36 | 37 | fn deserialize_transit_uuid_seq<'de, D>(de: D) -> Result, D::Error> 38 | where D: serde::Deserializer<'de> { 39 | let transit_uuids: Vec = try!(Deserialize::deserialize(de)); 40 | Ok(transit_uuids.into_iter().map(transit_to_uuid).collect()) 41 | } 42 | 43 | fn transit_to_uuid(transit_uuid: TransitUuid) -> Uuid { 44 | assert!(transit_uuid.0 == "~#u", "Mis-tagged transit"); 45 | let mut wrtr = vec![]; 46 | let hi64 = (transit_uuid.1).0; 47 | let lo64 = (transit_uuid.1).1; 48 | wrtr.write_i64::(hi64).unwrap(); 49 | wrtr.write_i64::(lo64).unwrap(); 50 | let mut bytes: [u8; 16] = [0; 16]; 51 | for i in 0..wrtr.len() { 52 | bytes[i] = wrtr[i]; 53 | } 54 | Uuid::from_bytes(bytes) 55 | } 56 | 57 | fn serialize_transit_uuid(uuid: &Uuid, se: S) -> Result 58 | where S: serde::Serializer { 59 | uuid_to_transit(uuid).serialize(se).map_err(|_| { 60 | serde::ser::Error::custom("Failed to serialize uuid") 61 | }) 62 | } 63 | 64 | fn serialize_transit_uuid_seq(uuids: &Vec, se: S) -> Result 65 | where S: serde::Serializer { 66 | let transit_uuids: Vec = uuids.into_iter().map(uuid_to_transit).collect(); 67 | transit_uuids.serialize(se).map_err(|_| { 68 | serde::ser::Error::custom("Failed to serialize uuid vector") 69 | }) 70 | } 71 | 72 | fn uuid_to_transit(uuid: &Uuid) -> TransitUuid { 73 | let bytes = uuid.as_bytes(); 74 | let mut reader = Cursor::new(bytes); 75 | let hi64 = reader.read_i64::().unwrap(); 76 | let lo64 = reader.read_i64::().unwrap(); 77 | ("~#u".to_string(), (hi64, lo64)) 78 | } 79 | 80 | struct StructMapWriter; 81 | 82 | impl VariantWriter for StructMapWriter { 83 | fn write_struct_len(&self, wr: &mut W, len: u32) -> Result 84 | where W: Write 85 | { 86 | write_map_len(wr, len) 87 | } 88 | 89 | fn write_field_name(&self, wr: &mut W, _key: &str) -> Result<(), ValueWriteError> 90 | where W: Write 91 | { 92 | write_str(wr, _key) 93 | } 94 | } 95 | 96 | // TODO: check for error instead of just unwrap 97 | pub fn encode_transit_msgpack(msg: Message) -> Vec { 98 | let mut buf = vec![]; 99 | msg.serialize(&mut Serializer::with(&mut &mut buf, StructMapWriter)).ok().unwrap(); 100 | buf 101 | } 102 | 103 | pub fn decode_transit_msgpack(msgpack_buf: Vec) -> Option { 104 | let cur = Cursor::new(&msgpack_buf[..]); 105 | let mut deserializer = Deserializer::new(cur); 106 | Deserialize::deserialize(&mut deserializer).ok() 107 | } 108 | 109 | pub fn response_to(msg: Message, content: String) -> Message { 110 | Message { 111 | id: Uuid::new_v4(), 112 | user_id: Uuid::new_v4(), // gets filled in by server 113 | group_id: msg.group_id, 114 | thread_id: msg.thread_id, 115 | mentioned_user_ids: vec![], 116 | mentioned_tag_ids: vec![], 117 | content: content, 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | // main 2 | extern crate iron; 3 | extern crate regex; 4 | #[macro_use] extern crate lazy_static; 5 | extern crate openssl; 6 | extern crate rustc_serialize; 7 | // Message parsing 8 | extern crate rmp; 9 | extern crate rmp_serde; 10 | #[macro_use] extern crate serde_derive; 11 | extern crate serde; 12 | extern crate uuid; 13 | extern crate byteorder; 14 | // giphy/braid requests 15 | extern crate hyper; 16 | extern crate mime; 17 | extern crate serde_json; 18 | extern crate base64; 19 | extern crate urlencoding; 20 | extern crate futures; 21 | // configuration 22 | extern crate toml; 23 | 24 | use std::io::Read; 25 | use std::thread; 26 | use std::error::Error; 27 | use std::env; 28 | use std::process; 29 | 30 | use iron::{Iron,Request,Response,IronError}; 31 | use iron::{method,status}; 32 | use hyper::StatusCode; 33 | use hyper::rt; 34 | use futures::{future,Future}; 35 | use regex::Regex; 36 | use openssl::pkey::PKey; 37 | use openssl::sign::Signer; 38 | use openssl::hash::MessageDigest; 39 | use rustc_serialize::hex::FromHex; 40 | 41 | mod conf; 42 | mod routing; 43 | mod message; 44 | mod giphy; 45 | mod braid; 46 | 47 | fn strip_leading_name(msg: &str) -> String { 48 | lazy_static! { 49 | static ref RE: Regex = Regex::new(r"^/(\w+)\b").unwrap(); 50 | } 51 | RE.replace(msg, "").into_owned() 52 | } 53 | 54 | fn hmac_sha256(key: &[u8], data: &[u8]) -> Vec { 55 | let pkey = PKey::hmac(key).unwrap(); 56 | let mut signer = Signer::new(MessageDigest::sha256(), &pkey).unwrap(); 57 | signer.update(data).unwrap(); 58 | signer.sign_to_vec().unwrap() 59 | } 60 | 61 | // [TODO] Use Verifer instead of Signer & comparing 62 | fn verify_hmac(mac: Vec, key: &[u8], data: &[u8]) -> bool { 63 | if let Some(mac) = String::from_utf8(mac).ok() 64 | .and_then(|mac_str| (&mac_str[..]).from_hex().ok()) { 65 | let generated = hmac_sha256(key, data); 66 | mac == generated 67 | } else { 68 | false 69 | } 70 | } 71 | 72 | fn main() { 73 | let args: Vec<_> = env::args().collect(); 74 | if args.len() <= 1 { 75 | println!("Usage: {} ", args[0]); 76 | process::exit(1); 77 | } 78 | // Load configuration 79 | let ref conf_filename = args[1]; 80 | let conf = conf::load_conf(&conf_filename[..]).expect("Couldn't load conf file!"); 81 | let bind_port = conf::get_conf_val(&conf, "general", "port") 82 | .expect("Missing key port in section general"); 83 | let bind_addr = format!("localhost:{}", bind_port); 84 | let giphy_api_key = conf::get_conf_val(&conf, "giphy", "api_key") 85 | .expect("Missing giphy api key"); 86 | let braid_conf = conf::get_conf_group(&conf, "braid") 87 | .expect("Missing braid config information"); 88 | let keys = ["name", "api_url", "app_id", "token"]; 89 | for i in 0..keys.len() { 90 | let k = keys[i]; 91 | if !braid_conf.contains_key(k) { 92 | panic!("Missing braid configuration key '{}'", k); 93 | } 94 | } 95 | let braid_token = conf::get_conf_val(&conf, "braid", "token").unwrap(); 96 | // Start server 97 | println!("Bot {:?} starting", braid_conf.get("name").unwrap().as_str().unwrap()); 98 | Iron::new(move |request : &mut Request| { 99 | let req_path = request.url.path().join("/"); 100 | match request.method { 101 | method::Put => { 102 | if req_path == "message" { 103 | // Verify MAC 104 | let mac = try!(request.headers.get_raw("X-Braid-Signature") 105 | .and_then(|h| h.get(0)) 106 | .ok_or(IronError::new(routing::MissingMac, 107 | status::Unauthorized))); 108 | let mut buf = Vec::new(); 109 | request.body.read_to_end(&mut buf).unwrap(); 110 | if !verify_hmac(mac.clone(), braid_token.as_bytes(), &buf[..]) { 111 | println!("Bad mac"); 112 | return Err(IronError::new(routing::BadMac, status::Forbidden)); 113 | } 114 | println!("Mac OK"); 115 | // Decode message then handle gif search & reply on new thread 116 | match message::decode_transit_msgpack(buf) { 117 | Some(msg) => { 118 | let braid_conf = braid_conf.clone(); 119 | let giphy_api_key = giphy_api_key.clone(); 120 | thread::spawn(move || { 121 | rt::run( 122 | giphy::request_gif(&giphy_api_key[..], 123 | strip_leading_name(&msg.content[..])) 124 | .and_then(move |gif| { 125 | println!("gif for message {:?}", gif); 126 | let response_msg = message::response_to( 127 | msg, gif); 128 | let braid_resp = braid::send_braid_request( 129 | &braid_conf, response_msg); 130 | match braid_resp { 131 | Ok(r) => { 132 | println!("Sent message to braid"); 133 | if r.status() == StatusCode::CREATED { 134 | println!("Message created!"); 135 | } else { 136 | println!("Something went wrong: {:?}", r); 137 | } 138 | } 139 | Err(e) => 140 | println!("Failed to send to braid: {:?}", 141 | e.description()), 142 | } 143 | future::ok(()) 144 | }) 145 | 146 | )}); 147 | }, 148 | None => println!("Couldn't parse message") 149 | } 150 | Ok(Response::with((status::Ok, "ok"))) 151 | } else { 152 | Err(IronError::new(routing::NoRoute, status::NotFound)) 153 | } 154 | } 155 | _ => Err(IronError::new(routing::NoRoute, status::NotFound)) 156 | } 157 | }).http(&bind_addr[..]).unwrap(); 158 | } 159 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "aho-corasick" 3 | version = "0.6.8" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | dependencies = [ 6 | "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 7 | ] 8 | 9 | [[package]] 10 | name = "arrayvec" 11 | version = "0.4.7" 12 | source = "registry+https://github.com/rust-lang/crates.io-index" 13 | dependencies = [ 14 | "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 15 | ] 16 | 17 | [[package]] 18 | name = "base64" 19 | version = "0.9.3" 20 | source = "registry+https://github.com/rust-lang/crates.io-index" 21 | dependencies = [ 22 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 23 | "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 24 | ] 25 | 26 | [[package]] 27 | name = "bitflags" 28 | version = "1.0.4" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | 31 | [[package]] 32 | name = "byteorder" 33 | version = "1.2.6" 34 | source = "registry+https://github.com/rust-lang/crates.io-index" 35 | 36 | [[package]] 37 | name = "bytes" 38 | version = "0.4.10" 39 | source = "registry+https://github.com/rust-lang/crates.io-index" 40 | dependencies = [ 41 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 42 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 43 | ] 44 | 45 | [[package]] 46 | name = "cc" 47 | version = "1.0.25" 48 | source = "registry+https://github.com/rust-lang/crates.io-index" 49 | 50 | [[package]] 51 | name = "cfg-if" 52 | version = "0.1.6" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | 55 | [[package]] 56 | name = "cloudabi" 57 | version = "0.0.3" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | dependencies = [ 60 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 61 | ] 62 | 63 | [[package]] 64 | name = "crossbeam-deque" 65 | version = "0.6.1" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | dependencies = [ 68 | "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 69 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 70 | ] 71 | 72 | [[package]] 73 | name = "crossbeam-epoch" 74 | version = "0.5.2" 75 | source = "registry+https://github.com/rust-lang/crates.io-index" 76 | dependencies = [ 77 | "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 78 | "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 79 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 80 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 81 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 83 | ] 84 | 85 | [[package]] 86 | name = "crossbeam-utils" 87 | version = "0.5.0" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | 90 | [[package]] 91 | name = "fnv" 92 | version = "1.0.6" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | 95 | [[package]] 96 | name = "foreign-types" 97 | version = "0.3.2" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | dependencies = [ 100 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 101 | ] 102 | 103 | [[package]] 104 | name = "foreign-types-shared" 105 | version = "0.1.1" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | 108 | [[package]] 109 | name = "fuchsia-zircon" 110 | version = "0.3.3" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | dependencies = [ 113 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 114 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 115 | ] 116 | 117 | [[package]] 118 | name = "fuchsia-zircon-sys" 119 | version = "0.3.3" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | 122 | [[package]] 123 | name = "futures" 124 | version = "0.1.25" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | 127 | [[package]] 128 | name = "futures-cpupool" 129 | version = "0.1.8" 130 | source = "registry+https://github.com/rust-lang/crates.io-index" 131 | dependencies = [ 132 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 133 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 134 | ] 135 | 136 | [[package]] 137 | name = "giphybot" 138 | version = "0.1.0" 139 | dependencies = [ 140 | "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", 141 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 142 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 143 | "hyper 0.12.12 (registry+https://github.com/rust-lang/crates.io-index)", 144 | "iron 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 145 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 146 | "mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", 147 | "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", 148 | "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 149 | "rmp 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)", 150 | "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", 151 | "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", 152 | "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", 153 | "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", 154 | "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", 155 | "toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 156 | "urlencoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 157 | "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 158 | ] 159 | 160 | [[package]] 161 | name = "h2" 162 | version = "0.1.13" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | dependencies = [ 165 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 166 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 167 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 168 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 169 | "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 170 | "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 171 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 172 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 173 | "string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 174 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 175 | ] 176 | 177 | [[package]] 178 | name = "http" 179 | version = "0.1.13" 180 | source = "registry+https://github.com/rust-lang/crates.io-index" 181 | dependencies = [ 182 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 183 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 184 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 185 | ] 186 | 187 | [[package]] 188 | name = "httparse" 189 | version = "1.3.3" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | 192 | [[package]] 193 | name = "hyper" 194 | version = "0.10.14" 195 | source = "registry+https://github.com/rust-lang/crates.io-index" 196 | dependencies = [ 197 | "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", 198 | "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 199 | "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 200 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 201 | "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 202 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 203 | "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 204 | "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 205 | "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 206 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 207 | "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 208 | ] 209 | 210 | [[package]] 211 | name = "hyper" 212 | version = "0.12.12" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | dependencies = [ 215 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 216 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 217 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 218 | "h2 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 219 | "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 220 | "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 221 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 222 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 223 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 224 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 225 | "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 226 | "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", 227 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 228 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 229 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 230 | "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 231 | "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 232 | "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 233 | ] 234 | 235 | [[package]] 236 | name = "idna" 237 | version = "0.1.5" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | dependencies = [ 240 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 241 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 242 | "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 243 | ] 244 | 245 | [[package]] 246 | name = "indexmap" 247 | version = "1.0.2" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | 250 | [[package]] 251 | name = "iovec" 252 | version = "0.1.2" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | dependencies = [ 255 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 256 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 257 | ] 258 | 259 | [[package]] 260 | name = "iron" 261 | version = "0.6.0" 262 | source = "registry+https://github.com/rust-lang/crates.io-index" 263 | dependencies = [ 264 | "hyper 0.10.14 (registry+https://github.com/rust-lang/crates.io-index)", 265 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 266 | "mime_guess 1.8.6 (registry+https://github.com/rust-lang/crates.io-index)", 267 | "modifier 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 268 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 269 | "plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 270 | "typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 271 | "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 272 | ] 273 | 274 | [[package]] 275 | name = "itoa" 276 | version = "0.4.3" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | 279 | [[package]] 280 | name = "kernel32-sys" 281 | version = "0.2.2" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | dependencies = [ 284 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 285 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 286 | ] 287 | 288 | [[package]] 289 | name = "language-tags" 290 | version = "0.2.2" 291 | source = "registry+https://github.com/rust-lang/crates.io-index" 292 | 293 | [[package]] 294 | name = "lazy_static" 295 | version = "1.1.0" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | dependencies = [ 298 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 299 | ] 300 | 301 | [[package]] 302 | name = "lazycell" 303 | version = "1.2.0" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | 306 | [[package]] 307 | name = "libc" 308 | version = "0.2.43" 309 | source = "registry+https://github.com/rust-lang/crates.io-index" 310 | 311 | [[package]] 312 | name = "lock_api" 313 | version = "0.1.4" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | dependencies = [ 316 | "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 317 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 318 | ] 319 | 320 | [[package]] 321 | name = "log" 322 | version = "0.3.9" 323 | source = "registry+https://github.com/rust-lang/crates.io-index" 324 | dependencies = [ 325 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 326 | ] 327 | 328 | [[package]] 329 | name = "log" 330 | version = "0.4.5" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | dependencies = [ 333 | "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 334 | ] 335 | 336 | [[package]] 337 | name = "matches" 338 | version = "0.1.8" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | 341 | [[package]] 342 | name = "memchr" 343 | version = "2.1.0" 344 | source = "registry+https://github.com/rust-lang/crates.io-index" 345 | dependencies = [ 346 | "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 347 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 348 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 349 | ] 350 | 351 | [[package]] 352 | name = "memoffset" 353 | version = "0.2.1" 354 | source = "registry+https://github.com/rust-lang/crates.io-index" 355 | 356 | [[package]] 357 | name = "mime" 358 | version = "0.2.6" 359 | source = "registry+https://github.com/rust-lang/crates.io-index" 360 | dependencies = [ 361 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 362 | ] 363 | 364 | [[package]] 365 | name = "mime" 366 | version = "0.3.12" 367 | source = "registry+https://github.com/rust-lang/crates.io-index" 368 | dependencies = [ 369 | "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 370 | ] 371 | 372 | [[package]] 373 | name = "mime_guess" 374 | version = "1.8.6" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | dependencies = [ 377 | "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 378 | "phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 379 | "phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 380 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 381 | ] 382 | 383 | [[package]] 384 | name = "mio" 385 | version = "0.6.16" 386 | source = "registry+https://github.com/rust-lang/crates.io-index" 387 | dependencies = [ 388 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 389 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 390 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 391 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 392 | "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 393 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 394 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 395 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 396 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 397 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 398 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 399 | ] 400 | 401 | [[package]] 402 | name = "mio-uds" 403 | version = "0.6.7" 404 | source = "registry+https://github.com/rust-lang/crates.io-index" 405 | dependencies = [ 406 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 407 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 408 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 409 | ] 410 | 411 | [[package]] 412 | name = "miow" 413 | version = "0.2.1" 414 | source = "registry+https://github.com/rust-lang/crates.io-index" 415 | dependencies = [ 416 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 417 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 418 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 419 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 420 | ] 421 | 422 | [[package]] 423 | name = "modifier" 424 | version = "0.1.0" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | 427 | [[package]] 428 | name = "net2" 429 | version = "0.2.33" 430 | source = "registry+https://github.com/rust-lang/crates.io-index" 431 | dependencies = [ 432 | "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 433 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 434 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 435 | ] 436 | 437 | [[package]] 438 | name = "nodrop" 439 | version = "0.1.12" 440 | source = "registry+https://github.com/rust-lang/crates.io-index" 441 | 442 | [[package]] 443 | name = "num-traits" 444 | version = "0.1.43" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | dependencies = [ 447 | "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 448 | ] 449 | 450 | [[package]] 451 | name = "num-traits" 452 | version = "0.2.6" 453 | source = "registry+https://github.com/rust-lang/crates.io-index" 454 | 455 | [[package]] 456 | name = "num_cpus" 457 | version = "1.8.0" 458 | source = "registry+https://github.com/rust-lang/crates.io-index" 459 | dependencies = [ 460 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 461 | ] 462 | 463 | [[package]] 464 | name = "openssl" 465 | version = "0.10.15" 466 | source = "registry+https://github.com/rust-lang/crates.io-index" 467 | dependencies = [ 468 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 469 | "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 470 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 471 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 472 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 473 | "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", 474 | ] 475 | 476 | [[package]] 477 | name = "openssl-sys" 478 | version = "0.9.39" 479 | source = "registry+https://github.com/rust-lang/crates.io-index" 480 | dependencies = [ 481 | "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", 482 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 483 | "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 484 | "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 485 | ] 486 | 487 | [[package]] 488 | name = "owning_ref" 489 | version = "0.3.3" 490 | source = "registry+https://github.com/rust-lang/crates.io-index" 491 | dependencies = [ 492 | "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 493 | ] 494 | 495 | [[package]] 496 | name = "parking_lot" 497 | version = "0.6.4" 498 | source = "registry+https://github.com/rust-lang/crates.io-index" 499 | dependencies = [ 500 | "lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 501 | "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 502 | ] 503 | 504 | [[package]] 505 | name = "parking_lot_core" 506 | version = "0.3.1" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | dependencies = [ 509 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 510 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 511 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 512 | "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 513 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 514 | ] 515 | 516 | [[package]] 517 | name = "percent-encoding" 518 | version = "1.0.1" 519 | source = "registry+https://github.com/rust-lang/crates.io-index" 520 | 521 | [[package]] 522 | name = "phf" 523 | version = "0.7.23" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | dependencies = [ 526 | "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 527 | ] 528 | 529 | [[package]] 530 | name = "phf_codegen" 531 | version = "0.7.23" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | dependencies = [ 534 | "phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 535 | "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 536 | ] 537 | 538 | [[package]] 539 | name = "phf_generator" 540 | version = "0.7.23" 541 | source = "registry+https://github.com/rust-lang/crates.io-index" 542 | dependencies = [ 543 | "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", 544 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 545 | ] 546 | 547 | [[package]] 548 | name = "phf_shared" 549 | version = "0.7.23" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | dependencies = [ 552 | "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 553 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 554 | ] 555 | 556 | [[package]] 557 | name = "pkg-config" 558 | version = "0.3.14" 559 | source = "registry+https://github.com/rust-lang/crates.io-index" 560 | 561 | [[package]] 562 | name = "plugin" 563 | version = "0.2.6" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | dependencies = [ 566 | "typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 567 | ] 568 | 569 | [[package]] 570 | name = "proc-macro2" 571 | version = "0.4.20" 572 | source = "registry+https://github.com/rust-lang/crates.io-index" 573 | dependencies = [ 574 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 575 | ] 576 | 577 | [[package]] 578 | name = "quote" 579 | version = "0.6.8" 580 | source = "registry+https://github.com/rust-lang/crates.io-index" 581 | dependencies = [ 582 | "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", 583 | ] 584 | 585 | [[package]] 586 | name = "rand" 587 | version = "0.5.5" 588 | source = "registry+https://github.com/rust-lang/crates.io-index" 589 | dependencies = [ 590 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 591 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 592 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 593 | "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 594 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 595 | ] 596 | 597 | [[package]] 598 | name = "rand_core" 599 | version = "0.2.2" 600 | source = "registry+https://github.com/rust-lang/crates.io-index" 601 | dependencies = [ 602 | "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 603 | ] 604 | 605 | [[package]] 606 | name = "rand_core" 607 | version = "0.3.0" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | 610 | [[package]] 611 | name = "redox_syscall" 612 | version = "0.1.40" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | 615 | [[package]] 616 | name = "regex" 617 | version = "1.0.5" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | dependencies = [ 620 | "aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 621 | "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 622 | "regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 623 | "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 624 | "utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 625 | ] 626 | 627 | [[package]] 628 | name = "regex-syntax" 629 | version = "0.6.2" 630 | source = "registry+https://github.com/rust-lang/crates.io-index" 631 | dependencies = [ 632 | "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 633 | ] 634 | 635 | [[package]] 636 | name = "rmp" 637 | version = "0.8.7" 638 | source = "registry+https://github.com/rust-lang/crates.io-index" 639 | dependencies = [ 640 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 641 | "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", 642 | ] 643 | 644 | [[package]] 645 | name = "rmp-serde" 646 | version = "0.13.7" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | dependencies = [ 649 | "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 650 | "rmp 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)", 651 | "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", 652 | ] 653 | 654 | [[package]] 655 | name = "rustc-serialize" 656 | version = "0.3.24" 657 | source = "registry+https://github.com/rust-lang/crates.io-index" 658 | 659 | [[package]] 660 | name = "rustc_version" 661 | version = "0.2.3" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | dependencies = [ 664 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 665 | ] 666 | 667 | [[package]] 668 | name = "ryu" 669 | version = "0.2.6" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | 672 | [[package]] 673 | name = "safemem" 674 | version = "0.3.0" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | 677 | [[package]] 678 | name = "scopeguard" 679 | version = "0.3.3" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | 682 | [[package]] 683 | name = "semver" 684 | version = "0.9.0" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | dependencies = [ 687 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 688 | ] 689 | 690 | [[package]] 691 | name = "semver-parser" 692 | version = "0.7.0" 693 | source = "registry+https://github.com/rust-lang/crates.io-index" 694 | 695 | [[package]] 696 | name = "serde" 697 | version = "1.0.80" 698 | source = "registry+https://github.com/rust-lang/crates.io-index" 699 | 700 | [[package]] 701 | name = "serde_derive" 702 | version = "1.0.80" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | dependencies = [ 705 | "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", 706 | "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 707 | "syn 0.15.13 (registry+https://github.com/rust-lang/crates.io-index)", 708 | ] 709 | 710 | [[package]] 711 | name = "serde_json" 712 | version = "1.0.32" 713 | source = "registry+https://github.com/rust-lang/crates.io-index" 714 | dependencies = [ 715 | "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 716 | "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 717 | "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", 718 | ] 719 | 720 | [[package]] 721 | name = "siphasher" 722 | version = "0.2.3" 723 | source = "registry+https://github.com/rust-lang/crates.io-index" 724 | 725 | [[package]] 726 | name = "slab" 727 | version = "0.4.1" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | 730 | [[package]] 731 | name = "smallvec" 732 | version = "0.6.5" 733 | source = "registry+https://github.com/rust-lang/crates.io-index" 734 | dependencies = [ 735 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 736 | ] 737 | 738 | [[package]] 739 | name = "stable_deref_trait" 740 | version = "1.1.1" 741 | source = "registry+https://github.com/rust-lang/crates.io-index" 742 | 743 | [[package]] 744 | name = "string" 745 | version = "0.1.1" 746 | source = "registry+https://github.com/rust-lang/crates.io-index" 747 | 748 | [[package]] 749 | name = "syn" 750 | version = "0.15.13" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | dependencies = [ 753 | "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", 754 | "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", 755 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 756 | ] 757 | 758 | [[package]] 759 | name = "thread_local" 760 | version = "0.3.6" 761 | source = "registry+https://github.com/rust-lang/crates.io-index" 762 | dependencies = [ 763 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 764 | ] 765 | 766 | [[package]] 767 | name = "time" 768 | version = "0.1.40" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | dependencies = [ 771 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 772 | "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", 773 | "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 774 | ] 775 | 776 | [[package]] 777 | name = "tokio" 778 | version = "0.1.11" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | dependencies = [ 781 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 782 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 783 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 784 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 785 | "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 786 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 787 | "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 788 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 789 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 790 | "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 791 | "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 792 | "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 793 | "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 794 | "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 795 | ] 796 | 797 | [[package]] 798 | name = "tokio-codec" 799 | version = "0.1.1" 800 | source = "registry+https://github.com/rust-lang/crates.io-index" 801 | dependencies = [ 802 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 803 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 804 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 805 | ] 806 | 807 | [[package]] 808 | name = "tokio-current-thread" 809 | version = "0.1.3" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | dependencies = [ 812 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 813 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 814 | ] 815 | 816 | [[package]] 817 | name = "tokio-executor" 818 | version = "0.1.5" 819 | source = "registry+https://github.com/rust-lang/crates.io-index" 820 | dependencies = [ 821 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 822 | ] 823 | 824 | [[package]] 825 | name = "tokio-fs" 826 | version = "0.1.4" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | dependencies = [ 829 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 830 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 831 | "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 832 | ] 833 | 834 | [[package]] 835 | name = "tokio-io" 836 | version = "0.1.10" 837 | source = "registry+https://github.com/rust-lang/crates.io-index" 838 | dependencies = [ 839 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 840 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 841 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 842 | ] 843 | 844 | [[package]] 845 | name = "tokio-reactor" 846 | version = "0.1.6" 847 | source = "registry+https://github.com/rust-lang/crates.io-index" 848 | dependencies = [ 849 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 850 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 851 | "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 852 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 853 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 854 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 855 | "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 856 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 857 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 858 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 859 | ] 860 | 861 | [[package]] 862 | name = "tokio-tcp" 863 | version = "0.1.2" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | dependencies = [ 866 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 867 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 868 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 869 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 870 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 871 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 872 | ] 873 | 874 | [[package]] 875 | name = "tokio-threadpool" 876 | version = "0.1.8" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | dependencies = [ 879 | "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 880 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 881 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 882 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 883 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 884 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 885 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 886 | ] 887 | 888 | [[package]] 889 | name = "tokio-timer" 890 | version = "0.2.7" 891 | source = "registry+https://github.com/rust-lang/crates.io-index" 892 | dependencies = [ 893 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 894 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 895 | "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 896 | "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 897 | ] 898 | 899 | [[package]] 900 | name = "tokio-udp" 901 | version = "0.1.2" 902 | source = "registry+https://github.com/rust-lang/crates.io-index" 903 | dependencies = [ 904 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 905 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 906 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 907 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 908 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 909 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 910 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 911 | ] 912 | 913 | [[package]] 914 | name = "tokio-uds" 915 | version = "0.2.3" 916 | source = "registry+https://github.com/rust-lang/crates.io-index" 917 | dependencies = [ 918 | "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 919 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 920 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 921 | "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", 922 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 923 | "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", 924 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 925 | "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 926 | "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 927 | ] 928 | 929 | [[package]] 930 | name = "toml" 931 | version = "0.4.8" 932 | source = "registry+https://github.com/rust-lang/crates.io-index" 933 | dependencies = [ 934 | "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", 935 | ] 936 | 937 | [[package]] 938 | name = "traitobject" 939 | version = "0.1.0" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | 942 | [[package]] 943 | name = "try-lock" 944 | version = "0.2.2" 945 | source = "registry+https://github.com/rust-lang/crates.io-index" 946 | 947 | [[package]] 948 | name = "typeable" 949 | version = "0.1.2" 950 | source = "registry+https://github.com/rust-lang/crates.io-index" 951 | 952 | [[package]] 953 | name = "typemap" 954 | version = "0.3.3" 955 | source = "registry+https://github.com/rust-lang/crates.io-index" 956 | dependencies = [ 957 | "unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 958 | ] 959 | 960 | [[package]] 961 | name = "ucd-util" 962 | version = "0.1.1" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | 965 | [[package]] 966 | name = "unicase" 967 | version = "1.4.2" 968 | source = "registry+https://github.com/rust-lang/crates.io-index" 969 | dependencies = [ 970 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 971 | ] 972 | 973 | [[package]] 974 | name = "unicase" 975 | version = "2.2.0" 976 | source = "registry+https://github.com/rust-lang/crates.io-index" 977 | dependencies = [ 978 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 979 | ] 980 | 981 | [[package]] 982 | name = "unicode-bidi" 983 | version = "0.3.4" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | dependencies = [ 986 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 987 | ] 988 | 989 | [[package]] 990 | name = "unicode-normalization" 991 | version = "0.1.7" 992 | source = "registry+https://github.com/rust-lang/crates.io-index" 993 | 994 | [[package]] 995 | name = "unicode-xid" 996 | version = "0.1.0" 997 | source = "registry+https://github.com/rust-lang/crates.io-index" 998 | 999 | [[package]] 1000 | name = "unreachable" 1001 | version = "1.0.0" 1002 | source = "registry+https://github.com/rust-lang/crates.io-index" 1003 | dependencies = [ 1004 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "unsafe-any" 1009 | version = "0.4.2" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | dependencies = [ 1012 | "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1013 | ] 1014 | 1015 | [[package]] 1016 | name = "url" 1017 | version = "1.7.1" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | dependencies = [ 1020 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1021 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1022 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1023 | ] 1024 | 1025 | [[package]] 1026 | name = "urlencoding" 1027 | version = "1.0.0" 1028 | source = "registry+https://github.com/rust-lang/crates.io-index" 1029 | 1030 | [[package]] 1031 | name = "utf8-ranges" 1032 | version = "1.0.1" 1033 | source = "registry+https://github.com/rust-lang/crates.io-index" 1034 | 1035 | [[package]] 1036 | name = "uuid" 1037 | version = "0.7.1" 1038 | source = "registry+https://github.com/rust-lang/crates.io-index" 1039 | dependencies = [ 1040 | "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1041 | ] 1042 | 1043 | [[package]] 1044 | name = "vcpkg" 1045 | version = "0.2.6" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | 1048 | [[package]] 1049 | name = "version_check" 1050 | version = "0.1.5" 1051 | source = "registry+https://github.com/rust-lang/crates.io-index" 1052 | 1053 | [[package]] 1054 | name = "void" 1055 | version = "1.0.2" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | 1058 | [[package]] 1059 | name = "want" 1060 | version = "0.0.6" 1061 | source = "registry+https://github.com/rust-lang/crates.io-index" 1062 | dependencies = [ 1063 | "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", 1064 | "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 1065 | "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1066 | ] 1067 | 1068 | [[package]] 1069 | name = "winapi" 1070 | version = "0.2.8" 1071 | source = "registry+https://github.com/rust-lang/crates.io-index" 1072 | 1073 | [[package]] 1074 | name = "winapi" 1075 | version = "0.3.6" 1076 | source = "registry+https://github.com/rust-lang/crates.io-index" 1077 | dependencies = [ 1078 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1079 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1080 | ] 1081 | 1082 | [[package]] 1083 | name = "winapi-build" 1084 | version = "0.1.1" 1085 | source = "registry+https://github.com/rust-lang/crates.io-index" 1086 | 1087 | [[package]] 1088 | name = "winapi-i686-pc-windows-gnu" 1089 | version = "0.4.0" 1090 | source = "registry+https://github.com/rust-lang/crates.io-index" 1091 | 1092 | [[package]] 1093 | name = "winapi-x86_64-pc-windows-gnu" 1094 | version = "0.4.0" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | 1097 | [[package]] 1098 | name = "ws2_32-sys" 1099 | version = "0.2.1" 1100 | source = "registry+https://github.com/rust-lang/crates.io-index" 1101 | dependencies = [ 1102 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1103 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1104 | ] 1105 | 1106 | [metadata] 1107 | "checksum aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "68f56c7353e5a9547cbd76ed90f7bb5ffc3ba09d4ea9bd1d8c06c8b1142eeb5a" 1108 | "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" 1109 | "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" 1110 | "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" 1111 | "checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781" 1112 | "checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" 1113 | "checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" 1114 | "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" 1115 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1116 | "checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" 1117 | "checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" 1118 | "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" 1119 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1120 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1121 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1122 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1123 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1124 | "checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" 1125 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 1126 | "checksum h2 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "7dd33bafe2e6370e6c8eb0cf1b8c5f93390b90acde7e9b03723f166b28b648ed" 1127 | "checksum http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "24f58e8c2d8e886055c3ead7b28793e1455270b5fb39650984c224bc538ba581" 1128 | "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" 1129 | "checksum hyper 0.10.14 (registry+https://github.com/rust-lang/crates.io-index)" = "473cb319301d9d5978ce0d7c3d614e5a5ad3c674149fe45c3806dab38394b00e" 1130 | "checksum hyper 0.12.12 (registry+https://github.com/rust-lang/crates.io-index)" = "4aca412c241a2dd53af261efc7adf7736fdebd67dc0d1cc1ffdbcb9407e0e810" 1131 | "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 1132 | "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" 1133 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1134 | "checksum iron 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8e17268922834707e1c29e8badbf9c712c9c43378e1b6a3388946baff10be2" 1135 | "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" 1136 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1137 | "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" 1138 | "checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" 1139 | "checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" 1140 | "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" 1141 | "checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a" 1142 | "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" 1143 | "checksum log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fcce5fa49cc693c312001daf1d13411c4a5283796bac1084299ea3e567113f" 1144 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 1145 | "checksum memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4b3629fe9fdbff6daa6c33b90f7c08355c1aca05a3d01fa8063b822fcf185f3b" 1146 | "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" 1147 | "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" 1148 | "checksum mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "0a907b83e7b9e987032439a387e187119cddafc92d5c2aaeb1d92580a793f630" 1149 | "checksum mime_guess 1.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2d4c0961143b8efdcfa29c3ae63281601b446a4a668165454b6c90f8024954c5" 1150 | "checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" 1151 | "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" 1152 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1153 | "checksum modifier 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41f5c9112cb662acd3b204077e0de5bc66305fa8df65c8019d5adb10e9ab6e58" 1154 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1155 | "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" 1156 | "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" 1157 | "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" 1158 | "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" 1159 | "checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613" 1160 | "checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106" 1161 | "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" 1162 | "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" 1163 | "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" 1164 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1165 | "checksum phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "cec29da322b242f4c3098852c77a0ca261c9c01b806cae85a5572a1eb94db9a6" 1166 | "checksum phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "7d187f00cd98d5afbcd8898f6cf181743a449162aeb329dcd2f3849009e605ad" 1167 | "checksum phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "03dc191feb9b08b0dc1330d6549b795b9d81aec19efe6b4a45aec8d4caee0c4b" 1168 | "checksum phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "b539898d22d4273ded07f64a05737649dc69095d92cb87c7097ec68e3f150b93" 1169 | "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" 1170 | "checksum plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1a6a0dc3910bc8db877ffed8e457763b317cf880df4ae19109b9f77d277cf6e0" 1171 | "checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee" 1172 | "checksum quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dd636425967c33af890042c483632d33fa7a18f19ad1d7ea72e8998c6ef8dea5" 1173 | "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" 1174 | "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" 1175 | "checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" 1176 | "checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" 1177 | "checksum regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2069749032ea3ec200ca51e4a31df41759190a88edca0d2d86ee8bedf7073341" 1178 | "checksum regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "747ba3b235651f6e2f67dfa8bcdcd073ddb7c243cb21c442fc12395dfcac212d" 1179 | "checksum rmp 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a3d45d7afc9b132b34a2479648863aa95c5c88e98b32285326a6ebadc80ec5c9" 1180 | "checksum rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)" = "011e1d58446e9fa3af7cdc1fb91295b10621d3ac4cb3a85cc86385ee9ca50cd3" 1181 | "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" 1182 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1183 | "checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" 1184 | "checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" 1185 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 1186 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1187 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1188 | "checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" 1189 | "checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c" 1190 | "checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" 1191 | "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" 1192 | "checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" 1193 | "checksum smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "153ffa32fd170e9944f7e0838edf824a754ec4c1fc64746fcc9fe1f8fa602e5d" 1194 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 1195 | "checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" 1196 | "checksum syn 0.15.13 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4439ee8325b4e4b57e59309c3724c9a4478eaeb4eb094b6f3fac180a3b2876" 1197 | "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 1198 | "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" 1199 | "checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" 1200 | "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" 1201 | "checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" 1202 | "checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" 1203 | "checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75" 1204 | "checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21" 1205 | "checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" 1206 | "checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" 1207 | "checksum tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3929aee321c9220ed838ed6c3928be7f9b69986b0e3c22c972a66dbf8a298c68" 1208 | "checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" 1209 | "checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" 1210 | "checksum tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df195376b43508f01570bacc73e13a1de0854dc59e79d1ec09913e8db6dd2a70" 1211 | "checksum toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4a2ecc31b0351ea18b3fe11274b8db6e4d82bce861bbb22e6dbed40417902c65" 1212 | "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" 1213 | "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" 1214 | "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" 1215 | "checksum typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "653be63c80a3296da5551e1bfd2cca35227e13cdd08c6668903ae2f4f77aa1f6" 1216 | "checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" 1217 | "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" 1218 | "checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" 1219 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1220 | "checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" 1221 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 1222 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 1223 | "checksum unsafe-any 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f30360d7979f5e9c6e6cea48af192ea8fab4afb3cf72597154b8f08935bc9c7f" 1224 | "checksum url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2a321979c09843d272956e73700d12c4e7d3d92b2ee112b31548aef0d4efc5a6" 1225 | "checksum urlencoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3df3561629a8bb4c57e5a2e4c43348d9e29c7c29d9b1c4c1f47166deca8f37ed" 1226 | "checksum utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd70f467df6810094968e2fce0ee1bd0e87157aceb026a8c083bcf5e25b9efe4" 1227 | "checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6" 1228 | "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" 1229 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 1230 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1231 | "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" 1232 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1233 | "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" 1234 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1235 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1236 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1237 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1238 | --------------------------------------------------------------------------------