├── .github ├── FUNDING.yml └── dependabot.yml ├── .gitignore ├── shared ├── src │ ├── lib.rs │ └── db.rs ├── Cargo.toml └── Cargo.lock ├── web ├── templates │ ├── links.tera │ ├── ods.tera │ └── index.tera ├── Cargo.toml └── src │ └── main.rs ├── Cargo.toml ├── LICENSE ├── src ├── stats.rs ├── elastic.rs ├── scans.rs ├── check_links.rs └── main.rs └── Cargo.lock /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: MCOfficer 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | .idea/ 3 | OpenDirectoryDownloader/ 4 | Scans/ 5 | *.log 6 | data.ms/ 7 | /*.json 8 | dump.zip* 9 | -------------------------------------------------------------------------------- /shared/src/lib.rs: -------------------------------------------------------------------------------- 1 | #[macro_use] 2 | extern crate log; 3 | 4 | pub mod db; 5 | 6 | pub const DEAD_OD_THRESHOLD: i32 = 10; 7 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: cargo 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | open-pull-requests-limit: 10 8 | -------------------------------------------------------------------------------- /web/templates/links.tera: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% for link in links %} 5 |
6 | {{ link }} 7 |
8 | {% endfor %} 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /shared/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shared" 3 | version = "0.1.0" 4 | authors = ["MCOfficer "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | anyhow = "1.0" 11 | chrono = { version = "0.4", features = ["serde"] } 12 | log = "0.4" 13 | serde = { version = "1.0", features = ["derive"] } 14 | wither = { version = "0.9.0", features = ["async-std-runtime"], default_features = false } 15 | -------------------------------------------------------------------------------- /web/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "web" 3 | version = "0.1.0" 4 | authors = ["MCOfficer "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | mprober-lib = "0.1.4" 11 | rocket = { git="https://github.com/SergioBenitez/Rocket.git" } 12 | rocket_contrib = { git="https://github.com/SergioBenitez/Rocket.git", default_features=false, features=["tera_templates", "json"] } 13 | serde = "1.0" 14 | shared = { path="../shared" } 15 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "odcrawler_discovery" 3 | version = "0.1.0" 4 | authors = ["MCOfficer "] 5 | edition = "2018" 6 | 7 | [dependencies] 8 | anyhow = "1.0" 9 | async-std = "1.12" 10 | async-trait = "0.1" 11 | chrono = { version = "0.4", features = ["serde"] } 12 | fern = "0.6" 13 | flate2 = "1.0" 14 | futures = "0.3" 15 | indicatif = "0.16" 16 | isahc = "0.9.12" 17 | log = "0.4" 18 | rand = "0.8" 19 | regex = "1" 20 | serde = { version = "1.0", features = ["derive"] } 21 | serde_json = "1.0" 22 | shared = { path="shared" } 23 | shrust = "0.0.7" 24 | structopt = "0.3" 25 | subprocess = "0.2" 26 | wither = { version = "0.9.0", features = ["async-std-runtime"], default_features = false } 27 | 28 | [profile.release] 29 | debug = true 30 | -------------------------------------------------------------------------------- /web/templates/ods.tera: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | {% for od in ods %} 20 | 21 | 22 | 23 | 24 | 25 | {% endfor %} 26 | 27 |
URLDeadLinks
{{ od.url }}{{ od.dead }}Click
28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /web/templates/index.tera: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

DB

5 |
6 | Total Links: {{ db.total_links }} 7 |
8 |
9 | Alive/Total ODs: {{ db.alive_opendirectories }}/{{ db.total_opendirectories }} 10 |
11 | List of all ODs 12 | 13 |

Server

14 |
15 | Load (1/5/15): {{ load_one }} / {{ load_five }} / {{ load_fifteen }} 16 |
17 |
18 | Memory: 19 | {% if mem_total %} 20 | {% set available = mem_available / 1048576 %} 21 | {% set percentage = mem_available * 100 / mem_total %} 22 | {{ available | round }} MiB available ({{ percentage | round }}%) 23 | {% else %} 24 | failed 25 | {% endif %} 26 |
27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 M*C*O 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 | -------------------------------------------------------------------------------- /web/src/main.rs: -------------------------------------------------------------------------------- 1 | use rocket::futures::StreamExt; 2 | use rocket::{get, routes, Rocket, State}; 3 | use rocket_contrib::json::Json; 4 | use rocket_contrib::templates::Template; 5 | use shared::db; 6 | use shared::db::Stats as DbStats; 7 | 8 | #[derive(serde::Serialize)] 9 | struct Stats { 10 | db: DbStats, 11 | load_one: f64, 12 | load_five: f64, 13 | load_fifteen: f64, 14 | mem_total: usize, 15 | mem_available: usize, 16 | } 17 | 18 | #[get("/json")] 19 | async fn stats_json(db: State<'_, db::Database>) -> Json { 20 | let load = mprober_lib::load_average::get_load_average().unwrap_or_default(); 21 | let mem = mprober_lib::memory::free().unwrap_or_default().mem; 22 | let stats = Stats { 23 | db: db.stats().await.unwrap(), 24 | load_one: load.one, 25 | load_five: load.five, 26 | load_fifteen: load.fifteen, 27 | mem_total: mem.total, 28 | mem_available: mem.available, 29 | }; 30 | Json(stats) 31 | } 32 | 33 | #[get("/")] 34 | async fn stats(db: State<'_, db::Database>) -> Template { 35 | let stats = stats_json(db).await.into_inner(); 36 | Template::render("index", &stats) 37 | } 38 | 39 | #[derive(serde::Serialize)] 40 | struct OD { 41 | url: String, 42 | dead: bool, 43 | } 44 | 45 | #[derive(serde::Serialize)] 46 | struct ODs { 47 | ods: Vec, 48 | } 49 | 50 | #[get("/ods/json")] 51 | async fn ods_json(db: State<'_, db::Database>) -> Json { 52 | let ods = db 53 | .get_opendirectories(true) 54 | .await 55 | .unwrap() 56 | .filter_map(|r| async { r.ok() }) 57 | .map(|od| OD { 58 | url: od.url, 59 | dead: od.unreachable >= shared::DEAD_OD_THRESHOLD, 60 | }) 61 | .collect() 62 | .await; 63 | Json(ODs { ods }) 64 | } 65 | 66 | #[get("/ods")] 67 | async fn ods(db: State<'_, db::Database>) -> Template { 68 | let ods = ods_json(db).await.into_inner().ods; 69 | Template::render("ods", &ODs { ods }) 70 | } 71 | 72 | #[derive(serde::Serialize)] 73 | struct Links { 74 | links: Vec, 75 | } 76 | 77 | #[get("/od/json?")] 78 | async fn links_json(db: State<'_, db::Database>, url: &str) -> Json { 79 | let links = db 80 | .get_links(&url) 81 | .await 82 | .unwrap() 83 | .filter_map(|r| async { r.ok() }) 84 | .map(|l| l.url) 85 | .collect() 86 | .await; 87 | Json(Links { links }) 88 | } 89 | 90 | #[get("/od?")] 91 | async fn links(db: State<'_, db::Database>, url: &str) -> Template { 92 | let links = links_json(db, url).await.into_inner(); 93 | Template::render("links", &links) 94 | } 95 | 96 | #[rocket::launch] 97 | async fn launch() -> Rocket { 98 | rocket::ignite() 99 | .mount( 100 | "/", 101 | routes![stats_json, stats, ods_json, ods, links_json, links], 102 | ) 103 | .attach(Template::fairing()) 104 | .manage(db::Database::new().await.unwrap()) 105 | } 106 | -------------------------------------------------------------------------------- /src/stats.rs: -------------------------------------------------------------------------------- 1 | use crate::Opt; 2 | use anyhow::{Context, Result}; 3 | use chrono::serde::ts_milliseconds; 4 | use chrono::{DateTime, Utc}; 5 | use futures::StreamExt; 6 | use regex::Regex; 7 | use serde::{Deserialize, Serialize}; 8 | use shared::db; 9 | use shared::db::Database; 10 | use std::collections::HashSet; 11 | use std::fs::File; 12 | use std::io::Write; 13 | use std::time::Duration; 14 | use subprocess::{Exec, Redirection}; 15 | use wither::bson::doc; 16 | use wither::Model; 17 | 18 | #[derive(Serialize, Deserialize, Debug, Clone)] 19 | struct Dump { 20 | url: String, 21 | links: u64, 22 | size_uncompressed: u64, 23 | size: u64, 24 | #[serde(with = "ts_milliseconds")] 25 | created: DateTime, 26 | } 27 | 28 | pub async fn create_dump(opt: &Opt, db: &Database) -> Result<()> { 29 | info!("Creating dump"); 30 | 31 | let mut dump_file = opt.public_dir.clone(); 32 | let filename = format!("dump-{}.txt.7z", Utc::now().format("%F-%H-%M-%S")); 33 | dump_file.push(&filename); 34 | 35 | let mut stdin = Exec::cmd("7z") 36 | .arg("a") 37 | .arg(&dump_file) 38 | .arg("-mx=1") 39 | .arg("-si") 40 | .stdout(Redirection::Pipe) 41 | .stderr(Redirection::Merge) 42 | .stream_stdin()?; 43 | 44 | let ods: HashSet = db 45 | .get_opendirectories(false) 46 | .await? 47 | .filter_map(|r| async { r.ok() }) 48 | .map(|od| od.url) 49 | .collect() 50 | .await; 51 | 52 | let mut read = Box::pin( 53 | db::Link::find(&db.db, None, None) 54 | .await? 55 | .filter_map(|r| async { r.ok().filter(|l| ods.contains(&l.opendirectory)) }), 56 | ); 57 | 58 | let mut count = 0; 59 | let mut bytes_written = 0; 60 | while let Some(link) = read.next().await { 61 | let mut url = link.url; 62 | url.push('\n'); 63 | let bytes = url.into_bytes(); 64 | bytes_written += bytes.len(); 65 | stdin.write_all(&*bytes)?; 66 | count += 1; 67 | } 68 | 69 | // Generious sleep because there's a tiny race condition 70 | // dump_file.exists() can be false immediately after 7z is done 71 | std::thread::sleep(Duration::from_secs(3)); 72 | 73 | let dump = Dump { 74 | url: format!("https://discovery.odcrawler.xyz/{}", filename), 75 | links: count, 76 | size_uncompressed: bytes_written as u64, 77 | size: dump_file.metadata()?.len(), 78 | created: Utc::now(), 79 | }; 80 | save_json(&opt, &dump, "dump.json").context("Failed to write json")?; 81 | 82 | // Clean up old dumps 83 | let dump_filename_pattern = Regex::new(r"dump-[\d-]+.txt.7z")?; 84 | for result in opt.public_dir.read_dir()? { 85 | let entry = result?; 86 | if entry.file_type()?.is_file() 87 | && entry.file_name().to_string_lossy() != filename 88 | && dump_filename_pattern.is_match(&entry.file_name().to_string_lossy()) 89 | { 90 | info!("Removing old dump {}", entry.file_name().to_string_lossy()); 91 | std::fs::remove_file(entry.path())?; 92 | }; 93 | } 94 | 95 | Ok(()) 96 | } 97 | 98 | pub async fn update_stats(opt: &Opt, db: &Database) -> Result<()> { 99 | info!("Updating stats"); 100 | 101 | let stats = db.stats().await?; 102 | save_json(&opt, &stats, "stats.json")?; 103 | 104 | info!("Stats saved"); 105 | Ok(()) 106 | } 107 | 108 | fn save_json(opt: &Opt, dto: &impl Serialize, filename: &str) -> Result<()> { 109 | let mut file = opt.public_dir.clone(); 110 | file.push(filename); 111 | serde_json::to_writer_pretty(File::create(file)?, dto)?; 112 | Ok(()) 113 | } 114 | -------------------------------------------------------------------------------- /src/elastic.rs: -------------------------------------------------------------------------------- 1 | use crate::Opt; 2 | use anyhow::Result; 3 | use futures::StreamExt; 4 | use isahc::auth::{Authentication, Credentials}; 5 | use isahc::http::header::CONTENT_TYPE; 6 | use isahc::prelude::Configurable; 7 | use isahc::{RequestExt, ResponseExt}; 8 | use serde::{Deserialize, Serialize}; 9 | use serde_json::json; 10 | use shared::db; 11 | use shared::db::Link; 12 | use std::io::Read; 13 | use std::path::PathBuf; 14 | 15 | #[derive(Clone, Serialize, Deserialize)] 16 | pub struct ElasticLink { 17 | #[serde(skip_serializing)] 18 | pub id: String, 19 | pub url: String, 20 | pub filename: String, 21 | pub extension: Option, 22 | } 23 | 24 | impl From for ElasticLink { 25 | fn from(l: Link) -> Self { 26 | Self { 27 | id: l.id.unwrap().to_string(), 28 | filename: PathBuf::from(&l.url) 29 | .file_name() 30 | .unwrap() 31 | .to_string_lossy() 32 | .to_string(), 33 | extension: PathBuf::from(&l.url) 34 | .extension() 35 | .map(|e| e.to_string_lossy().into()), 36 | url: l.url, 37 | } 38 | } 39 | } 40 | 41 | pub async fn add_links_from_db(opt: &Opt, db: &db::Database, od: &str) -> Result<()> { 42 | db.get_links(&od) 43 | .await? 44 | .filter_map(|l| async { Some(l.ok()?.into()) }) 45 | .chunks(50_000) 46 | .for_each(|chunk| async move { 47 | if let Err(e) = add_bulk(opt, &chunk) { 48 | warn!("Failed to add links to Elasticsearch: {}", e) 49 | } 50 | }) 51 | .await; 52 | Ok(()) 53 | } 54 | 55 | pub fn add_bulk(opt: &Opt, links: &[ElasticLink]) -> Result<()> { 56 | info!("Adding {} links to Elasticsearch", links.len()); 57 | for chunk in links.chunks(5_000) { 58 | let mut body = BulkBody::default(); 59 | for link in chunk { 60 | body.items.push(BulkAction::Index(link.clone())); 61 | } 62 | 63 | bulk_request(opt, body)?; 64 | } 65 | Ok(()) 66 | } 67 | 68 | pub fn remove_bulk(opt: &Opt, ids: &[String]) -> Result<()> { 69 | info!("Removing {} links from Elasticsearch", ids.len()); 70 | for chunk in ids.chunks(5_000) { 71 | let mut body = BulkBody::default(); 72 | for id in chunk { 73 | body.items.push(BulkAction::Delete(id.to_string())); 74 | } 75 | 76 | bulk_request(opt, body)?; 77 | } 78 | Ok(()) 79 | } 80 | 81 | pub enum BulkAction { 82 | Delete(String), 83 | Index(ElasticLink), 84 | } 85 | 86 | pub struct BulkBody { 87 | pub items: Vec, 88 | } 89 | 90 | impl Default for BulkBody { 91 | fn default() -> Self { 92 | BulkBody { items: vec![] } 93 | } 94 | } 95 | 96 | impl ToString for BulkBody { 97 | fn to_string(&self) -> String { 98 | let mut buffer = String::new(); 99 | for action in &self.items { 100 | let to_add = match action { 101 | BulkAction::Delete(id) => { 102 | format!("{}\n", json!({"delete": {"_id": id}}).to_string()) 103 | } 104 | BulkAction::Index(link) => format!( 105 | "{}\n{}", 106 | json!({"index": {"_id": link.id}}).to_string(), 107 | serde_json::to_string(&link).unwrap() 108 | ), 109 | }; 110 | buffer = format!("{}{}\n", buffer, to_add); 111 | } 112 | buffer 113 | } 114 | } 115 | 116 | pub fn bulk_request(opt: &Opt, body: BulkBody) -> Result<()> { 117 | let mut response = isahc::http::Request::put(format!("{}/links/_bulk", opt.elastic_url)) 118 | .header(CONTENT_TYPE, "application/json") 119 | .authentication(Authentication::basic()) 120 | .credentials(Credentials::new("elastic", opt.elastic_pass.clone())) 121 | .body(body.to_string())? 122 | .send()?; 123 | if !response.status().is_success() { 124 | let mut buffer = String::new(); 125 | response.into_body().read_to_string(&mut buffer)?; 126 | error!("Got non-success status code, response was\n {}", buffer); 127 | } else { 128 | // Cleanly read & drop the response to avoid warnings 129 | // https://github.com/sagebind/isahc/issues/270#issuecomment-749083844 130 | let _ = response.copy_to(std::io::sink()); 131 | } 132 | Ok(()) 133 | } 134 | -------------------------------------------------------------------------------- /src/scans.rs: -------------------------------------------------------------------------------- 1 | use crate::elastic; 2 | use crate::Opt; 3 | use anyhow::bail; 4 | use anyhow::Result; 5 | use flate2::read::GzDecoder; 6 | use rand::seq::SliceRandom; 7 | use serde::{Deserialize, Serialize}; 8 | use shared::db::{Database, SaveResult}; 9 | use std::io::BufReader; 10 | use std::time::Duration; 11 | 12 | #[derive(Deserialize, Debug)] 13 | #[serde(rename_all = "PascalCase")] 14 | pub struct OdScanResult { 15 | pub root: OdScanDirectory, 16 | } 17 | 18 | #[derive(Deserialize, Debug)] 19 | #[serde(rename_all = "PascalCase")] 20 | pub struct OdScanDirectory { 21 | pub url: String, 22 | pub subdirectories: Vec, 23 | pub files: Option>, 24 | } 25 | 26 | #[derive(Deserialize, Serialize, Debug)] 27 | #[serde(rename_all = "PascalCase")] 28 | pub struct OdScanFile { 29 | pub url: String, 30 | } 31 | 32 | pub async fn process_scans(opt: &Opt, db: &mut Database) -> Result<()> { 33 | let mut files = vec![]; 34 | 35 | for scan_dir in &opt.scan_dir { 36 | info!("Scanning directory {}", scan_dir.to_string_lossy()); 37 | for entry in std::fs::read_dir(scan_dir)? { 38 | let path = entry?.path(); 39 | let name = path.file_name().unwrap().to_string_lossy(); 40 | if path.is_file() 41 | && (name.ends_with(".json") || name.ends_with(".json.gz")) 42 | && !name.starts_with("https___drive.google.com") 43 | { 44 | files.push(path); 45 | } 46 | } 47 | } 48 | 49 | if files.is_empty() { 50 | return Ok(()); 51 | } 52 | 53 | let chosen_file = files.choose(&mut rand::thread_rng()).unwrap(); 54 | info!("Selected {}", chosen_file.to_string_lossy()); 55 | 56 | let reader = BufReader::new(std::fs::File::open(chosen_file)?); 57 | 58 | info!("Deserializing"); 59 | let (root_url, mut files) = match chosen_file.extension().unwrap().to_string_lossy().as_ref() { 60 | "json" => { 61 | let scan_results: OdScanResult = serde_json::from_reader(reader)?; 62 | ( 63 | scan_results.root.url.clone(), 64 | collect_files(scan_results.root), 65 | ) 66 | } 67 | "gz" => { 68 | let scan_results: OdScanResult = serde_json::from_reader(GzDecoder::new(reader))?; 69 | ( 70 | scan_results.root.url.clone(), 71 | collect_files(scan_results.root), 72 | ) 73 | } 74 | f => bail!(format!( 75 | "Got filename with unknown extension, but it was somehow collected: {}", 76 | f 77 | )), 78 | }; 79 | info!("Found {} files", files.len()); 80 | 81 | let is_reachable = 82 | crate::check_links::link_is_reachable(&root_url, Duration::from_secs(30), true).await; 83 | let links = files 84 | .drain(..) 85 | .map(|f| shared::db::Link { 86 | id: None, 87 | url: f.url, 88 | opendirectory: root_url.clone(), 89 | }) 90 | .collect(); 91 | let save_result = db.save_scan_result(&root_url, links, is_reachable).await?; 92 | match save_result { 93 | SaveResult::Success => { 94 | if is_reachable { 95 | elastic::add_links_from_db(opt, db, &root_url).await?; 96 | } 97 | } 98 | _ => { 99 | error!("Couldn't save due to existing links/OD") 100 | } 101 | } 102 | 103 | let mut processed_dir = chosen_file.parent().unwrap().to_path_buf(); 104 | processed_dir.push("processed"); 105 | std::fs::create_dir_all(&processed_dir)?; 106 | let mut processed_file = processed_dir; 107 | processed_file.push(chosen_file.file_name().unwrap()); 108 | info!("Moving file to {}", processed_file.to_string_lossy()); 109 | std::fs::rename(chosen_file, processed_file)?; 110 | 111 | Ok(()) 112 | } 113 | 114 | fn collect_files(dir: OdScanDirectory) -> Vec { 115 | info!("Extracting files"); 116 | collect_files_recursive(dir) 117 | } 118 | 119 | fn collect_files_recursive(dir: OdScanDirectory) -> Vec { 120 | let mut files = dir.files.unwrap_or_default(); 121 | 122 | for subdir in dir.subdirectories { 123 | files.extend(collect_files_recursive(subdir)); 124 | } 125 | 126 | files 127 | } 128 | 129 | pub fn scan_opendirectories() -> Result<()> { 130 | warn!("STUB: scan_opendirectories"); 131 | Ok(()) 132 | } 133 | -------------------------------------------------------------------------------- /src/check_links.rs: -------------------------------------------------------------------------------- 1 | use crate::{elastic, Opt}; 2 | use anyhow::Result; 3 | use futures::StreamExt; 4 | use isahc::config::SslOption; 5 | use isahc::prelude::{Configurable, Request, RequestExt}; 6 | use shared::db::Database; 7 | use shared::db::OpenDirectory; 8 | use shared::DEAD_OD_THRESHOLD; 9 | use std::sync::atomic::{AtomicUsize, Ordering}; 10 | use std::sync::Mutex; 11 | use std::time::Duration; 12 | use wither::Model; 13 | 14 | pub async fn check_opendirectories(opt: &Opt, db: &mut Database) -> Result<()> { 15 | let ods: Mutex> = Mutex::new(vec![]); 16 | 17 | info!("Checking ODs concurrently"); 18 | 19 | let total = OpenDirectory::collection(&db.db) 20 | .estimated_document_count(None) 21 | .await?; 22 | let count = AtomicUsize::new(0); 23 | 24 | db.get_opendirectories(true) 25 | .await? 26 | .filter_map(|res| async { res.ok() }) 27 | .for_each_concurrent(128, |od| async { 28 | let reachable = link_is_reachable(&od.url, Duration::from_secs(20), false).await; 29 | match ods.lock() { 30 | Ok(mut ods) => { 31 | ods.push((od, reachable)); 32 | } 33 | Err(_) => { 34 | error!("Poisoned Mutex, something went wrong in a different closure"); 35 | } 36 | } 37 | 38 | let current = count.fetch_add(1, Ordering::Relaxed) + 1; 39 | if current % 100 == 0 { 40 | info!("Checked {}/{} links", current, total); 41 | } 42 | }) 43 | .await; 44 | 45 | info!("Persisting results"); 46 | // There are no other users of this mutex now 47 | for (od, reachable) in ods.into_inner().unwrap() { 48 | if let Err(e) = persists_checked_opendirectory(&opt, &db, od, reachable).await { 49 | error!("Error saving OD to DB: {}", e); 50 | }; 51 | } 52 | 53 | Ok(()) 54 | } 55 | 56 | pub async fn persists_checked_opendirectory( 57 | opt: &Opt, 58 | db: &Database, 59 | mut od: OpenDirectory, 60 | reachable: bool, 61 | ) -> Result<()> { 62 | if reachable { 63 | // Re-add links if it was dead 64 | if od.unreachable >= DEAD_OD_THRESHOLD { 65 | elastic::add_links_from_db(opt, db, &od.url).await?; 66 | } 67 | // Reset to 0 regardless 68 | if od.unreachable > 0 { 69 | od.unreachable = 0; 70 | od.save(&db.db, None).await?; 71 | } 72 | } else { 73 | // Remove links only if it was alive 74 | if od.unreachable + 1 == DEAD_OD_THRESHOLD { 75 | remove_od_links(opt, db, &od).await?; 76 | } 77 | // Increment if it's below the threshold 78 | if od.unreachable < DEAD_OD_THRESHOLD { 79 | od.unreachable = od.unreachable.saturating_add(1); 80 | od.save(&db.db, None).await?; 81 | } 82 | } 83 | Ok(()) 84 | } 85 | 86 | async fn remove_od_links(opt: &Opt, db: &Database, od: &OpenDirectory) -> Result<()> { 87 | info!("Removing links for OD {} from Elasticsearch", od.url); 88 | db.get_links(&od.url) 89 | .await? 90 | .filter_map(|l| async { Some(l.ok()?.id?.to_string()) }) 91 | .chunks(5_000) 92 | .for_each(|chunk| async move { 93 | let chunk = chunk; 94 | if let Err(e) = elastic::remove_bulk(opt, &chunk) { 95 | warn!("Failed to remove chunk from Elasticsearch: {}", e) 96 | } 97 | }) 98 | .await; 99 | Ok(()) 100 | } 101 | 102 | pub async fn link_is_reachable(link: &str, timeout: Duration, log_status: bool) -> bool { 103 | // Patch for some non-comformant URLs 104 | let link = link.replace(" ", "%20"); 105 | 106 | let mut builder = Request::head(&link) 107 | .connect_timeout(timeout) 108 | .timeout(timeout) 109 | .ssl_options(SslOption::DANGER_ACCEPT_INVALID_CERTS); 110 | 111 | // Workaround for hashhacker's "AI protection" 112 | if link.contains("driveindex.ga") { 113 | builder = builder 114 | .uri(link.replace("driveindex.ga", "hashhackers.com")) 115 | .header("Referer", &link); 116 | } 117 | 118 | let request = match builder.body(()) { 119 | Ok(r) => r, 120 | Err(e) => { 121 | error!("Error building request for URI '{}': {}", &link, e); 122 | return false; 123 | } 124 | }; 125 | 126 | if let Ok(response) = request.send_async().await { 127 | if log_status { 128 | info!("Got {} for {}", response.status(), link); 129 | } 130 | return response.status().is_success() || response.status().is_redirection(); 131 | } 132 | // let isahc log any issues 133 | false 134 | } 135 | -------------------------------------------------------------------------------- /shared/src/db.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use chrono::TimeZone; 3 | use serde::{Deserialize, Serialize}; 4 | use wither::bson::{doc, oid::ObjectId, Document}; 5 | use wither::mongodb::options::ClientOptions; 6 | use wither::mongodb::*; 7 | use wither::prelude::*; 8 | use wither::{Model, ModelCursor}; 9 | 10 | #[derive(Serialize, Deserialize, Debug, Clone)] 11 | pub struct Stats { 12 | total_links: i64, 13 | total_opendirectories: i64, 14 | alive_opendirectories: i64, 15 | } 16 | 17 | #[derive(Debug, Model, Serialize, Deserialize)] 18 | #[model( 19 | collection_name = "opendirectories", 20 | index(keys = r#"doc!{"url": 1}"#, options = r#"doc!{"unique": true}"#), 21 | index(keys = r#"doc!{"unreachable": 1}"#) 22 | )] 23 | pub struct OpenDirectory { 24 | #[serde(rename = "_id", skip_serializing_if = "Option::is_none")] 25 | pub id: Option, 26 | pub url: String, 27 | pub unreachable: i32, 28 | } 29 | 30 | impl Migrating for OpenDirectory { 31 | fn migrations() -> Vec> { 32 | vec![ 33 | Box::new(wither::IntervalMigration { 34 | name: "add-times-unreachable".to_string(), 35 | threshold: chrono::Utc.ymd(2020, 9, 30).and_hms(0, 0, 0), 36 | filter: doc! {"unreachable": doc!{"$exists": false}}, 37 | set: Some(doc! {"unreachable": 0}), 38 | unset: None, 39 | }), 40 | Box::new(wither::IntervalMigration { 41 | name: "cap-times-unreachable".to_string(), 42 | threshold: chrono::Utc.ymd(2020, 11, 20).and_hms(0, 0, 0), 43 | filter: doc! {"unreachable": doc!{"$gt": 10}}, 44 | set: Some(doc! {"unreachable": 10}), 45 | unset: None, 46 | }), 47 | ] 48 | } 49 | } 50 | 51 | #[derive(Debug, Model, Serialize, Deserialize)] 52 | #[model( 53 | index(keys = r#"doc!{"url": 1}"#, options = r#"doc!{"unique": true}"#), 54 | index(keys = r#"doc!{"opendirectory": 1}"#) 55 | )] 56 | pub struct Link { 57 | #[serde(rename = "_id", skip_serializing_if = "Option::is_none")] 58 | pub id: Option, 59 | pub opendirectory: String, 60 | pub url: String, 61 | } 62 | 63 | #[derive(PartialEq)] 64 | pub enum SaveResult { 65 | DuplicateOd, 66 | DuplicateLinks, 67 | Success, 68 | } 69 | 70 | impl Migrating for Link { 71 | fn migrations() -> Vec> { 72 | vec![ 73 | Box::new(wither::IntervalMigration { 74 | name: "remove-filesize".to_string(), 75 | threshold: chrono::Utc.ymd(2020, 9, 30).and_hms(0, 0, 0), 76 | filter: doc! {"size": doc!{"$exists": true}}, 77 | set: None, 78 | unset: Some(doc! {"size": ""}), 79 | }), 80 | Box::new(wither::IntervalMigration { 81 | name: "add-times-unreachable".to_string(), 82 | threshold: chrono::Utc.ymd(2020, 9, 30).and_hms(0, 0, 0), 83 | filter: doc! {"unreachable": doc!{"$exists": false}}, 84 | set: Some(doc! {"unreachable": 0}), 85 | unset: None, 86 | }), 87 | Box::new(wither::IntervalMigration { 88 | name: "remove-times-unreachable".to_string(), 89 | threshold: chrono::Utc.ymd(2021, 3, 1).and_hms(0, 0, 0), 90 | filter: doc! {"unreachable": doc!{"$exists": true}}, 91 | set: None, 92 | unset: Some(doc! {"unreachable": ""}), 93 | }), 94 | ] 95 | } 96 | } 97 | 98 | #[derive(Clone)] 99 | pub struct Database { 100 | pub db: wither::mongodb::Database, 101 | } 102 | 103 | impl Database { 104 | pub async fn new() -> Result { 105 | info!("Connecting to database"); 106 | let mut options = ClientOptions::default(); 107 | options.app_name = Some("odcrawler-discovery".to_string()); 108 | let db = Client::with_options(options)?.database("odcrawler-discovery"); 109 | 110 | OpenDirectory::sync(&db).await?; 111 | Link::sync(&db).await?; 112 | OpenDirectory::migrate(&db).await?; 113 | Link::migrate(&db).await?; 114 | 115 | Ok(Self { db }) 116 | } 117 | 118 | pub async fn get_opendirectories(&self, dead_ods: bool) -> Result> { 119 | let doc = if dead_ods { 120 | doc! {} 121 | } else { 122 | doc! { "unreachable": doc! { "$lt": crate::DEAD_OD_THRESHOLD} } 123 | }; 124 | Ok(OpenDirectory::find(&self.db, doc, None).await?) 125 | } 126 | 127 | pub async fn get_links(&self, opendirectory: &str) -> Result> { 128 | Ok(Link::find(&self.db, doc! {"opendirectory": opendirectory}, None).await?) 129 | } 130 | 131 | pub async fn stats(&self) -> Result { 132 | let total_links = Link::collection(&self.db) 133 | .estimated_document_count(None) 134 | .await?; 135 | let total_opendirectories = OpenDirectory::collection(&self.db) 136 | .estimated_document_count(None) 137 | .await?; 138 | let alive_opendirectories = OpenDirectory::collection(&self.db) 139 | .count_documents( 140 | doc! {"unreachable": doc! {"$lt": crate::DEAD_OD_THRESHOLD}}, 141 | None, 142 | ) 143 | .await?; 144 | 145 | Ok(Stats { 146 | alive_opendirectories, 147 | total_links, 148 | total_opendirectories, 149 | }) 150 | } 151 | 152 | pub async fn save_scan_result( 153 | &mut self, 154 | root_url: &str, 155 | mut files: Vec, 156 | is_reachable: bool, 157 | ) -> Result { 158 | info!("Saving results"); 159 | // TODO: Use a transaction when the driver supports them 160 | let mut od = OpenDirectory { 161 | id: None, 162 | url: root_url.to_string(), 163 | unreachable: if is_reachable { 0 } else { 10 }, 164 | }; 165 | if let Some(existing) = 166 | OpenDirectory::find_one(&self.db, doc! {"url": &od.url}, None).await? 167 | { 168 | error!( 169 | "Found existing OD, aborting: {}", 170 | existing.document_from_instance()? 171 | ); 172 | return Ok(SaveResult::DuplicateOd); 173 | } 174 | 175 | let links: Vec = files 176 | .drain(..) 177 | .map(|l| l.document_from_instance().unwrap()) 178 | .collect(); 179 | for link in &links { 180 | if let Some(existing) = Link::find_one(&self.db, link.clone(), None).await? { 181 | error!( 182 | "Found existing link, aborting: {}", 183 | existing.document_from_instance()? 184 | ); 185 | return Ok(SaveResult::DuplicateLinks); 186 | } 187 | } 188 | 189 | od.save(&self.db, None).await?; 190 | Link::collection(&self.db).insert_many(links, None).await?; 191 | 192 | Ok(SaveResult::Success) 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #[macro_use] 2 | extern crate log; 3 | #[macro_use] 4 | extern crate async_trait; 5 | 6 | use crate::elastic::ElasticLink; 7 | use anyhow::Result; 8 | use futures::StreamExt; 9 | use indicatif::{ProgressBar, ProgressStyle}; 10 | use shared::db; 11 | use shared::db::Database; 12 | use shrust::{Shell, ShellIO}; 13 | use std::io::Write; 14 | use std::path::PathBuf; 15 | use std::sync::atomic::{AtomicU64, Ordering}; 16 | use std::time::Duration; 17 | use structopt::StructOpt; 18 | use wither::bson::doc; 19 | use wither::Model; 20 | 21 | mod check_links; 22 | mod elastic; 23 | mod scans; 24 | mod stats; 25 | 26 | macro_rules! enclose { 27 | ( ($( $x:ident ),*) $y:expr ) => { 28 | { 29 | $(let $x = $x.clone();)* 30 | $y 31 | } 32 | }; 33 | } 34 | 35 | #[derive(StructOpt, Debug, Clone)] 36 | pub struct Opt { 37 | /// The Path to the OpenDirectoryDownloader executable. This executable's scan dir is inferred automatically. 38 | #[structopt( 39 | long, 40 | default_value = "OpenDirectoryDownloader/OpenDirectoryDownloader" 41 | )] 42 | odd: PathBuf, 43 | 44 | /// Additional scan directories 45 | #[structopt(long)] 46 | scan_dir: Vec, 47 | 48 | /// Elasticsearch address 49 | #[structopt(long, default_value = "http://127.0.0.1:9200")] 50 | elastic_url: String, 51 | 52 | /// Elasticsearch password 53 | #[structopt(long, env = "ELASTIC_PASS", default_value = "")] 54 | elastic_pass: String, 55 | 56 | /// Directory for public files (e.g. stats.json) 57 | #[structopt(long, default_value = ".")] 58 | public_dir: PathBuf, 59 | 60 | // Disables the scheduler, allowing for exports etc. 61 | #[structopt(long)] 62 | disable_scheduler: bool, 63 | } 64 | 65 | #[async_std::main] 66 | async fn main() -> Result<()> { 67 | fern::Dispatch::new() 68 | .format(|out, message, record| { 69 | out.finish(format_args!( 70 | "{} [{}] [{}] {}", 71 | chrono::Local::now().format("[%H:%M:%S]"), 72 | record.level(), 73 | record.target(), 74 | message 75 | )) 76 | }) 77 | .level(log::LevelFilter::Info) 78 | .level_for("isahc", log::LevelFilter::Error) 79 | .chain(fern::log_file("odcrawler-discovery.log")?) 80 | .apply()?; 81 | 82 | let mut opt = Opt::from_args(); 83 | let mut odd_scan_dir = opt.odd.parent().unwrap().to_path_buf(); 84 | odd_scan_dir.push("Scans"); 85 | std::fs::create_dir_all(&odd_scan_dir).unwrap(); 86 | opt.scan_dir.push(odd_scan_dir); 87 | dbg!(&opt); 88 | 89 | let db = db::Database::new().await.unwrap(); 90 | 91 | if !opt.disable_scheduler { 92 | let scheduler_db = db.clone(); 93 | let scheduler_opt = opt.clone(); 94 | let _scheduler_handle = std::thread::spawn(|| { 95 | async_std::task::block_on(scheduler_loop(scheduler_opt, scheduler_db)) 96 | }); 97 | } 98 | 99 | let mut shell = Shell::new(()); 100 | shell.new_command("add", "Adds an OD to the database", 1, |io, _, s| { 101 | writeln!(io, "STUB: add {} to DB", s[0])?; 102 | warn!("STUB: add {} to DB", s[0]); 103 | Ok(()) 104 | }); 105 | shell.new_command_noargs( 106 | "dump", 107 | "Creates a new Dump", 108 | enclose! { (opt, db) move |io, _| { 109 | if let Err(e) = async_std::task::block_on(stats::create_dump(&opt, &db)) { 110 | writeln!(io, "Error while creating dump: {}", e)?; 111 | error!("Error while creating dump: {}", e); 112 | }; 113 | Ok(()) 114 | }}, 115 | ); 116 | shell.new_command_noargs( 117 | "export", 118 | "Exports all links to Elasticsearch", 119 | enclose! { (db, opt) move |io, _| { 120 | if let Err(e) = async_std::task::block_on(export_all(&opt, &db)) { 121 | writeln!(io, "Error while exporting links: {}", e)?; 122 | error!("Error while exporting links: {}", e); 123 | }; 124 | Ok(()) 125 | }}, 126 | ); 127 | shell.run_loop(&mut ShellIO::default()); 128 | 129 | Ok(()) 130 | } 131 | 132 | pub async fn export_all(opt: &Opt, db: &Database) -> Result<()> { 133 | info!("Adding or removing all links to/from Elasticsearch"); 134 | 135 | let alive_ods: Vec = db 136 | .get_opendirectories(false) 137 | .await? 138 | .filter_map(|r| async { r.ok().map(|od| od.url) }) 139 | .collect() 140 | .await; 141 | 142 | let total = db::Link::collection(&db.db) 143 | .estimated_document_count(None) 144 | .await? as u64; 145 | let exported = AtomicU64::new(0); 146 | let pb = ProgressBar::new(total).with_style( 147 | ProgressStyle::default_bar().template("{percent}%, ETA {eta} {wide_bar} {pos}/~{len}"), 148 | ); 149 | pb.enable_steady_tick(100); 150 | 151 | db::Link::find(&db.db, doc! {}, None) 152 | .await? 153 | .filter_map(|l| async { l.ok() }) 154 | .map(|l| (alive_ods.contains(&l.opendirectory), ElasticLink::from(l))) 155 | .chunks(5_000) 156 | .for_each_concurrent(4, |chunk| async { 157 | let len = chunk.len(); 158 | let chunk = chunk; 159 | let mut body = elastic::BulkBody::default(); 160 | for (is_alive, link) in chunk { 161 | body.items.push(if is_alive { 162 | elastic::BulkAction::Index(link) 163 | } else { 164 | elastic::BulkAction::Delete(link.id) 165 | }); 166 | } 167 | if let Err(e) = elastic::bulk_request(opt, body) { 168 | error!("Error exporting links to Elasticsearch: {}", e); 169 | }; 170 | 171 | exported.fetch_add(len as u64, Ordering::Relaxed); 172 | 173 | let exported_inner = exported.load(Ordering::Relaxed); 174 | if exported_inner > total { 175 | pb.set_length(total); 176 | } 177 | pb.set_position(exported_inner as u64); 178 | }) 179 | .await; 180 | 181 | info!("Exported {} documents", exported.into_inner()); 182 | 183 | Ok(()) 184 | } 185 | 186 | #[async_trait] 187 | trait Schedule { 188 | fn name(&self) -> &str; 189 | /// How often this should run: 190 | /// 1 = run every time 191 | /// 5 = run every 5 times 192 | fn frequency(&self) -> u16; 193 | async fn run(&self, opt: &Opt, db: &mut Database) -> Result<()>; 194 | } 195 | 196 | struct ProcessResults; 197 | #[async_trait] 198 | impl Schedule for ProcessResults { 199 | fn name(&self) -> &str { 200 | "process results" 201 | } 202 | 203 | fn frequency(&self) -> u16 { 204 | 2 205 | } 206 | 207 | async fn run(&self, opt: &Opt, db: &mut Database) -> Result<()> { 208 | scans::process_scans(opt, db).await 209 | } 210 | } 211 | 212 | struct ScanOpendirectory; 213 | #[async_trait] 214 | impl Schedule for ScanOpendirectory { 215 | fn name(&self) -> &str { 216 | "scan opendirectory" 217 | } 218 | 219 | fn frequency(&self) -> u16 { 220 | 4 221 | } 222 | 223 | async fn run(&self, _: &Opt, _: &mut Database) -> Result<()> { 224 | scans::scan_opendirectories() 225 | } 226 | } 227 | 228 | struct CheckLinks; 229 | #[async_trait] 230 | impl Schedule for CheckLinks { 231 | fn name(&self) -> &str { 232 | "check links" 233 | } 234 | 235 | fn frequency(&self) -> u16 { 236 | 100 237 | } 238 | 239 | async fn run(&self, opt: &Opt, db: &mut Database) -> Result<()> { 240 | check_links::check_opendirectories(opt, db).await 241 | } 242 | } 243 | 244 | struct UpdateStats; 245 | #[async_trait] 246 | impl Schedule for UpdateStats { 247 | fn name(&self) -> &str { 248 | "update stats" 249 | } 250 | 251 | fn frequency(&self) -> u16 { 252 | 3 253 | } 254 | 255 | async fn run(&self, opt: &Opt, db: &mut Database) -> Result<()> { 256 | stats::update_stats(opt, db).await 257 | } 258 | } 259 | 260 | struct CreateDump; 261 | #[async_trait] 262 | impl Schedule for CreateDump { 263 | fn name(&self) -> &str { 264 | "create dump" 265 | } 266 | 267 | fn frequency(&self) -> u16 { 268 | 250 269 | } 270 | 271 | async fn run(&self, opt: &Opt, db: &mut Database) -> Result<()> { 272 | stats::create_dump(opt, db).await 273 | } 274 | } 275 | 276 | async fn scheduler_loop(opt: Opt, mut db: Database) { 277 | info!("Started scheduler thread"); 278 | 279 | let schedule_tasks: [Box; 5] = [ 280 | Box::new(ProcessResults), 281 | Box::new(ScanOpendirectory), 282 | Box::new(CheckLinks), 283 | Box::new(UpdateStats), 284 | Box::new(CreateDump), 285 | ]; 286 | 287 | let mut counter: u16 = 1; 288 | loop { 289 | std::thread::sleep(Duration::from_secs(3)); 290 | 291 | for task in &schedule_tasks { 292 | if counter % task.frequency() == 0 { 293 | if let Err(e) = task.run(&opt, &mut db).await { 294 | error!("Failed to run task '{}' due to error: \n{}", task.name(), e); 295 | break; 296 | }; 297 | } 298 | } 299 | counter = counter.overflowing_add(1).0; 300 | } 301 | } 302 | -------------------------------------------------------------------------------- /shared/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "Inflector" 7 | version = "0.11.4" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 10 | dependencies = [ 11 | "lazy_static", 12 | "regex", 13 | ] 14 | 15 | [[package]] 16 | name = "addr2line" 17 | version = "0.14.1" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" 20 | dependencies = [ 21 | "gimli", 22 | ] 23 | 24 | [[package]] 25 | name = "adler" 26 | version = "1.0.2" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 29 | 30 | [[package]] 31 | name = "aho-corasick" 32 | version = "0.7.15" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" 35 | dependencies = [ 36 | "memchr", 37 | ] 38 | 39 | [[package]] 40 | name = "anyhow" 41 | version = "1.0.40" 42 | source = "registry+https://github.com/rust-lang/crates.io-index" 43 | checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" 44 | 45 | [[package]] 46 | name = "async-attributes" 47 | version = "1.1.2" 48 | source = "registry+https://github.com/rust-lang/crates.io-index" 49 | checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" 50 | dependencies = [ 51 | "quote", 52 | "syn", 53 | ] 54 | 55 | [[package]] 56 | name = "async-channel" 57 | version = "1.6.1" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" 60 | dependencies = [ 61 | "concurrent-queue", 62 | "event-listener", 63 | "futures-core", 64 | ] 65 | 66 | [[package]] 67 | name = "async-executor" 68 | version = "1.4.0" 69 | source = "registry+https://github.com/rust-lang/crates.io-index" 70 | checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" 71 | dependencies = [ 72 | "async-task", 73 | "concurrent-queue", 74 | "fastrand", 75 | "futures-lite", 76 | "once_cell", 77 | "vec-arena", 78 | ] 79 | 80 | [[package]] 81 | name = "async-global-executor" 82 | version = "2.0.2" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | checksum = "9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6" 85 | dependencies = [ 86 | "async-channel", 87 | "async-executor", 88 | "async-io", 89 | "async-mutex", 90 | "blocking", 91 | "futures-lite", 92 | "num_cpus", 93 | "once_cell", 94 | ] 95 | 96 | [[package]] 97 | name = "async-io" 98 | version = "1.3.1" 99 | source = "registry+https://github.com/rust-lang/crates.io-index" 100 | checksum = "9315f8f07556761c3e48fec2e6b276004acf426e6dc068b2c2251854d65ee0fd" 101 | dependencies = [ 102 | "concurrent-queue", 103 | "fastrand", 104 | "futures-lite", 105 | "libc", 106 | "log", 107 | "nb-connect", 108 | "once_cell", 109 | "parking", 110 | "polling", 111 | "vec-arena", 112 | "waker-fn", 113 | "winapi 0.3.9", 114 | ] 115 | 116 | [[package]] 117 | name = "async-lock" 118 | version = "2.3.0" 119 | source = "registry+https://github.com/rust-lang/crates.io-index" 120 | checksum = "1996609732bde4a9988bc42125f55f2af5f3c36370e27c778d5191a4a1b63bfb" 121 | dependencies = [ 122 | "event-listener", 123 | ] 124 | 125 | [[package]] 126 | name = "async-mutex" 127 | version = "1.4.0" 128 | source = "registry+https://github.com/rust-lang/crates.io-index" 129 | checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" 130 | dependencies = [ 131 | "event-listener", 132 | ] 133 | 134 | [[package]] 135 | name = "async-std" 136 | version = "1.9.0" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "d9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341" 139 | dependencies = [ 140 | "async-attributes", 141 | "async-channel", 142 | "async-global-executor", 143 | "async-io", 144 | "async-lock", 145 | "crossbeam-utils", 146 | "futures-channel", 147 | "futures-core", 148 | "futures-io", 149 | "futures-lite", 150 | "gloo-timers", 151 | "kv-log-macro", 152 | "log", 153 | "memchr", 154 | "num_cpus", 155 | "once_cell", 156 | "pin-project-lite 0.2.6", 157 | "pin-utils", 158 | "slab", 159 | "wasm-bindgen-futures", 160 | ] 161 | 162 | [[package]] 163 | name = "async-task" 164 | version = "4.0.3" 165 | source = "registry+https://github.com/rust-lang/crates.io-index" 166 | checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" 167 | 168 | [[package]] 169 | name = "async-trait" 170 | version = "0.1.48" 171 | source = "registry+https://github.com/rust-lang/crates.io-index" 172 | checksum = "36ea56748e10732c49404c153638a15ec3d6211ec5ff35d9bb20e13b93576adf" 173 | dependencies = [ 174 | "proc-macro2", 175 | "quote", 176 | "syn", 177 | ] 178 | 179 | [[package]] 180 | name = "atomic-waker" 181 | version = "1.0.0" 182 | source = "registry+https://github.com/rust-lang/crates.io-index" 183 | checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" 184 | 185 | [[package]] 186 | name = "autocfg" 187 | version = "1.0.1" 188 | source = "registry+https://github.com/rust-lang/crates.io-index" 189 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 190 | 191 | [[package]] 192 | name = "backtrace" 193 | version = "0.3.56" 194 | source = "registry+https://github.com/rust-lang/crates.io-index" 195 | checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" 196 | dependencies = [ 197 | "addr2line", 198 | "cfg-if 1.0.0", 199 | "libc", 200 | "miniz_oxide", 201 | "object", 202 | "rustc-demangle", 203 | ] 204 | 205 | [[package]] 206 | name = "base64" 207 | version = "0.11.0" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" 210 | 211 | [[package]] 212 | name = "base64" 213 | version = "0.12.3" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 216 | 217 | [[package]] 218 | name = "bitflags" 219 | version = "1.2.1" 220 | source = "registry+https://github.com/rust-lang/crates.io-index" 221 | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 222 | 223 | [[package]] 224 | name = "block-buffer" 225 | version = "0.7.3" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" 228 | dependencies = [ 229 | "block-padding", 230 | "byte-tools", 231 | "byteorder", 232 | "generic-array", 233 | ] 234 | 235 | [[package]] 236 | name = "block-padding" 237 | version = "0.1.5" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" 240 | dependencies = [ 241 | "byte-tools", 242 | ] 243 | 244 | [[package]] 245 | name = "blocking" 246 | version = "1.0.2" 247 | source = "registry+https://github.com/rust-lang/crates.io-index" 248 | checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" 249 | dependencies = [ 250 | "async-channel", 251 | "async-task", 252 | "atomic-waker", 253 | "fastrand", 254 | "futures-lite", 255 | "once_cell", 256 | ] 257 | 258 | [[package]] 259 | name = "bson" 260 | version = "1.2.0" 261 | source = "registry+https://github.com/rust-lang/crates.io-index" 262 | checksum = "2abd828df036867b89a07c5a4824df1168b42d74f41af7253f20e55a32e5ca4b" 263 | dependencies = [ 264 | "base64 0.12.3", 265 | "chrono", 266 | "hex", 267 | "lazy_static", 268 | "linked-hash-map", 269 | "rand", 270 | "serde", 271 | "serde_json", 272 | "uuid", 273 | ] 274 | 275 | [[package]] 276 | name = "bumpalo" 277 | version = "3.6.1" 278 | source = "registry+https://github.com/rust-lang/crates.io-index" 279 | checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" 280 | 281 | [[package]] 282 | name = "byte-tools" 283 | version = "0.3.1" 284 | source = "registry+https://github.com/rust-lang/crates.io-index" 285 | checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" 286 | 287 | [[package]] 288 | name = "byteorder" 289 | version = "1.4.3" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 292 | 293 | [[package]] 294 | name = "bytes" 295 | version = "0.5.6" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" 298 | 299 | [[package]] 300 | name = "cache-padded" 301 | version = "1.1.1" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" 304 | 305 | [[package]] 306 | name = "cc" 307 | version = "1.0.67" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" 310 | 311 | [[package]] 312 | name = "cfg-if" 313 | version = "0.1.10" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 316 | 317 | [[package]] 318 | name = "cfg-if" 319 | version = "1.0.0" 320 | source = "registry+https://github.com/rust-lang/crates.io-index" 321 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 322 | 323 | [[package]] 324 | name = "chrono" 325 | version = "0.4.19" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" 328 | dependencies = [ 329 | "libc", 330 | "num-integer", 331 | "num-traits", 332 | "serde", 333 | "time", 334 | "winapi 0.3.9", 335 | ] 336 | 337 | [[package]] 338 | name = "concurrent-queue" 339 | version = "1.2.2" 340 | source = "registry+https://github.com/rust-lang/crates.io-index" 341 | checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" 342 | dependencies = [ 343 | "cache-padded", 344 | ] 345 | 346 | [[package]] 347 | name = "crossbeam-utils" 348 | version = "0.8.8" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" 351 | dependencies = [ 352 | "cfg-if 1.0.0", 353 | "lazy_static", 354 | ] 355 | 356 | [[package]] 357 | name = "crypto-mac" 358 | version = "0.7.0" 359 | source = "registry+https://github.com/rust-lang/crates.io-index" 360 | checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" 361 | dependencies = [ 362 | "generic-array", 363 | "subtle", 364 | ] 365 | 366 | [[package]] 367 | name = "ctor" 368 | version = "0.1.20" 369 | source = "registry+https://github.com/rust-lang/crates.io-index" 370 | checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d" 371 | dependencies = [ 372 | "quote", 373 | "syn", 374 | ] 375 | 376 | [[package]] 377 | name = "darling" 378 | version = "0.10.2" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" 381 | dependencies = [ 382 | "darling_core 0.10.2", 383 | "darling_macro 0.10.2", 384 | ] 385 | 386 | [[package]] 387 | name = "darling" 388 | version = "0.12.2" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | checksum = "a06d4a9551359071d1890820e3571252b91229e0712e7c36b08940e603c5a8fc" 391 | dependencies = [ 392 | "darling_core 0.12.2", 393 | "darling_macro 0.12.2", 394 | ] 395 | 396 | [[package]] 397 | name = "darling_core" 398 | version = "0.10.2" 399 | source = "registry+https://github.com/rust-lang/crates.io-index" 400 | checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" 401 | dependencies = [ 402 | "fnv", 403 | "ident_case", 404 | "proc-macro2", 405 | "quote", 406 | "strsim 0.9.3", 407 | "syn", 408 | ] 409 | 410 | [[package]] 411 | name = "darling_core" 412 | version = "0.12.2" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "b443e5fb0ddd56e0c9bfa47dc060c5306ee500cb731f2b91432dd65589a77684" 415 | dependencies = [ 416 | "fnv", 417 | "ident_case", 418 | "proc-macro2", 419 | "quote", 420 | "strsim 0.10.0", 421 | "syn", 422 | ] 423 | 424 | [[package]] 425 | name = "darling_macro" 426 | version = "0.10.2" 427 | source = "registry+https://github.com/rust-lang/crates.io-index" 428 | checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" 429 | dependencies = [ 430 | "darling_core 0.10.2", 431 | "quote", 432 | "syn", 433 | ] 434 | 435 | [[package]] 436 | name = "darling_macro" 437 | version = "0.12.2" 438 | source = "registry+https://github.com/rust-lang/crates.io-index" 439 | checksum = "c0220073ce504f12a70efc4e7cdaea9e9b1b324872e7ad96a208056d7a638b81" 440 | dependencies = [ 441 | "darling_core 0.12.2", 442 | "quote", 443 | "syn", 444 | ] 445 | 446 | [[package]] 447 | name = "derivative" 448 | version = "2.2.0" 449 | source = "registry+https://github.com/rust-lang/crates.io-index" 450 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 451 | dependencies = [ 452 | "proc-macro2", 453 | "quote", 454 | "syn", 455 | ] 456 | 457 | [[package]] 458 | name = "digest" 459 | version = "0.8.1" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" 462 | dependencies = [ 463 | "generic-array", 464 | ] 465 | 466 | [[package]] 467 | name = "enum-as-inner" 468 | version = "0.3.3" 469 | source = "registry+https://github.com/rust-lang/crates.io-index" 470 | checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" 471 | dependencies = [ 472 | "heck", 473 | "proc-macro2", 474 | "quote", 475 | "syn", 476 | ] 477 | 478 | [[package]] 479 | name = "err-derive" 480 | version = "0.2.4" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" 483 | dependencies = [ 484 | "proc-macro-error", 485 | "proc-macro2", 486 | "quote", 487 | "rustversion", 488 | "syn", 489 | "synstructure", 490 | ] 491 | 492 | [[package]] 493 | name = "event-listener" 494 | version = "2.5.1" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" 497 | 498 | [[package]] 499 | name = "fake-simd" 500 | version = "0.1.2" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" 503 | 504 | [[package]] 505 | name = "fastrand" 506 | version = "1.4.0" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" 509 | dependencies = [ 510 | "instant", 511 | ] 512 | 513 | [[package]] 514 | name = "fnv" 515 | version = "1.0.7" 516 | source = "registry+https://github.com/rust-lang/crates.io-index" 517 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 518 | 519 | [[package]] 520 | name = "form_urlencoded" 521 | version = "1.0.1" 522 | source = "registry+https://github.com/rust-lang/crates.io-index" 523 | checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" 524 | dependencies = [ 525 | "matches", 526 | "percent-encoding", 527 | ] 528 | 529 | [[package]] 530 | name = "fuchsia-zircon" 531 | version = "0.3.3" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 534 | dependencies = [ 535 | "bitflags", 536 | "fuchsia-zircon-sys", 537 | ] 538 | 539 | [[package]] 540 | name = "fuchsia-zircon-sys" 541 | version = "0.3.3" 542 | source = "registry+https://github.com/rust-lang/crates.io-index" 543 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 544 | 545 | [[package]] 546 | name = "futures" 547 | version = "0.3.13" 548 | source = "registry+https://github.com/rust-lang/crates.io-index" 549 | checksum = "7f55667319111d593ba876406af7c409c0ebb44dc4be6132a783ccf163ea14c1" 550 | dependencies = [ 551 | "futures-channel", 552 | "futures-core", 553 | "futures-executor", 554 | "futures-io", 555 | "futures-sink", 556 | "futures-task", 557 | "futures-util", 558 | ] 559 | 560 | [[package]] 561 | name = "futures-channel" 562 | version = "0.3.13" 563 | source = "registry+https://github.com/rust-lang/crates.io-index" 564 | checksum = "8c2dd2df839b57db9ab69c2c9d8f3e8c81984781937fe2807dc6dcf3b2ad2939" 565 | dependencies = [ 566 | "futures-core", 567 | "futures-sink", 568 | ] 569 | 570 | [[package]] 571 | name = "futures-core" 572 | version = "0.3.13" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "15496a72fabf0e62bdc3df11a59a3787429221dd0710ba8ef163d6f7a9112c94" 575 | 576 | [[package]] 577 | name = "futures-executor" 578 | version = "0.3.13" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "891a4b7b96d84d5940084b2a37632dd65deeae662c114ceaa2c879629c9c0ad1" 581 | dependencies = [ 582 | "futures-core", 583 | "futures-task", 584 | "futures-util", 585 | ] 586 | 587 | [[package]] 588 | name = "futures-io" 589 | version = "0.3.13" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | checksum = "d71c2c65c57704c32f5241c1223167c2c3294fd34ac020c807ddbe6db287ba59" 592 | 593 | [[package]] 594 | name = "futures-lite" 595 | version = "1.11.3" 596 | source = "registry+https://github.com/rust-lang/crates.io-index" 597 | checksum = "b4481d0cd0de1d204a4fa55e7d45f07b1d958abcb06714b3446438e2eff695fb" 598 | dependencies = [ 599 | "fastrand", 600 | "futures-core", 601 | "futures-io", 602 | "memchr", 603 | "parking", 604 | "pin-project-lite 0.2.6", 605 | "waker-fn", 606 | ] 607 | 608 | [[package]] 609 | name = "futures-macro" 610 | version = "0.3.13" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "ea405816a5139fb39af82c2beb921d52143f556038378d6db21183a5c37fbfb7" 613 | dependencies = [ 614 | "proc-macro-hack", 615 | "proc-macro2", 616 | "quote", 617 | "syn", 618 | ] 619 | 620 | [[package]] 621 | name = "futures-sink" 622 | version = "0.3.13" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | checksum = "85754d98985841b7d4f5e8e6fbfa4a4ac847916893ec511a2917ccd8525b8bb3" 625 | 626 | [[package]] 627 | name = "futures-task" 628 | version = "0.3.13" 629 | source = "registry+https://github.com/rust-lang/crates.io-index" 630 | checksum = "fa189ef211c15ee602667a6fcfe1c1fd9e07d42250d2156382820fba33c9df80" 631 | 632 | [[package]] 633 | name = "futures-util" 634 | version = "0.3.13" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "1812c7ab8aedf8d6f2701a43e1243acdbcc2b36ab26e2ad421eb99ac963d96d1" 637 | dependencies = [ 638 | "futures-channel", 639 | "futures-core", 640 | "futures-io", 641 | "futures-macro", 642 | "futures-sink", 643 | "futures-task", 644 | "memchr", 645 | "pin-project-lite 0.2.6", 646 | "pin-utils", 647 | "proc-macro-hack", 648 | "proc-macro-nested", 649 | "slab", 650 | ] 651 | 652 | [[package]] 653 | name = "generic-array" 654 | version = "0.12.4" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" 657 | dependencies = [ 658 | "typenum", 659 | ] 660 | 661 | [[package]] 662 | name = "getrandom" 663 | version = "0.1.16" 664 | source = "registry+https://github.com/rust-lang/crates.io-index" 665 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 666 | dependencies = [ 667 | "cfg-if 1.0.0", 668 | "libc", 669 | "wasi 0.9.0+wasi-snapshot-preview1", 670 | ] 671 | 672 | [[package]] 673 | name = "getrandom" 674 | version = "0.2.2" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" 677 | dependencies = [ 678 | "cfg-if 1.0.0", 679 | "libc", 680 | "wasi 0.10.0+wasi-snapshot-preview1", 681 | ] 682 | 683 | [[package]] 684 | name = "gimli" 685 | version = "0.23.0" 686 | source = "registry+https://github.com/rust-lang/crates.io-index" 687 | checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" 688 | 689 | [[package]] 690 | name = "gloo-timers" 691 | version = "0.2.1" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" 694 | dependencies = [ 695 | "futures-channel", 696 | "futures-core", 697 | "js-sys", 698 | "wasm-bindgen", 699 | "web-sys", 700 | ] 701 | 702 | [[package]] 703 | name = "hashbrown" 704 | version = "0.9.1" 705 | source = "registry+https://github.com/rust-lang/crates.io-index" 706 | checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" 707 | 708 | [[package]] 709 | name = "heck" 710 | version = "0.3.2" 711 | source = "registry+https://github.com/rust-lang/crates.io-index" 712 | checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" 713 | dependencies = [ 714 | "unicode-segmentation", 715 | ] 716 | 717 | [[package]] 718 | name = "hermit-abi" 719 | version = "0.1.18" 720 | source = "registry+https://github.com/rust-lang/crates.io-index" 721 | checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" 722 | dependencies = [ 723 | "libc", 724 | ] 725 | 726 | [[package]] 727 | name = "hex" 728 | version = "0.4.3" 729 | source = "registry+https://github.com/rust-lang/crates.io-index" 730 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 731 | 732 | [[package]] 733 | name = "hmac" 734 | version = "0.7.1" 735 | source = "registry+https://github.com/rust-lang/crates.io-index" 736 | checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" 737 | dependencies = [ 738 | "crypto-mac", 739 | "digest", 740 | ] 741 | 742 | [[package]] 743 | name = "hostname" 744 | version = "0.3.1" 745 | source = "registry+https://github.com/rust-lang/crates.io-index" 746 | checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" 747 | dependencies = [ 748 | "libc", 749 | "match_cfg", 750 | "winapi 0.3.9", 751 | ] 752 | 753 | [[package]] 754 | name = "ident_case" 755 | version = "1.0.1" 756 | source = "registry+https://github.com/rust-lang/crates.io-index" 757 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 758 | 759 | [[package]] 760 | name = "idna" 761 | version = "0.2.2" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21" 764 | dependencies = [ 765 | "matches", 766 | "unicode-bidi", 767 | "unicode-normalization", 768 | ] 769 | 770 | [[package]] 771 | name = "indexmap" 772 | version = "1.6.2" 773 | source = "registry+https://github.com/rust-lang/crates.io-index" 774 | checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" 775 | dependencies = [ 776 | "autocfg", 777 | "hashbrown", 778 | ] 779 | 780 | [[package]] 781 | name = "instant" 782 | version = "0.1.9" 783 | source = "registry+https://github.com/rust-lang/crates.io-index" 784 | checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" 785 | dependencies = [ 786 | "cfg-if 1.0.0", 787 | ] 788 | 789 | [[package]] 790 | name = "iovec" 791 | version = "0.1.4" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 794 | dependencies = [ 795 | "libc", 796 | ] 797 | 798 | [[package]] 799 | name = "ipconfig" 800 | version = "0.2.2" 801 | source = "registry+https://github.com/rust-lang/crates.io-index" 802 | checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" 803 | dependencies = [ 804 | "socket2 0.3.19", 805 | "widestring", 806 | "winapi 0.3.9", 807 | "winreg", 808 | ] 809 | 810 | [[package]] 811 | name = "itoa" 812 | version = "0.4.7" 813 | source = "registry+https://github.com/rust-lang/crates.io-index" 814 | checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" 815 | 816 | [[package]] 817 | name = "js-sys" 818 | version = "0.3.50" 819 | source = "registry+https://github.com/rust-lang/crates.io-index" 820 | checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" 821 | dependencies = [ 822 | "wasm-bindgen", 823 | ] 824 | 825 | [[package]] 826 | name = "kernel32-sys" 827 | version = "0.2.2" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 830 | dependencies = [ 831 | "winapi 0.2.8", 832 | "winapi-build", 833 | ] 834 | 835 | [[package]] 836 | name = "kv-log-macro" 837 | version = "1.0.7" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 840 | dependencies = [ 841 | "log", 842 | ] 843 | 844 | [[package]] 845 | name = "lazy_static" 846 | version = "1.4.0" 847 | source = "registry+https://github.com/rust-lang/crates.io-index" 848 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 849 | 850 | [[package]] 851 | name = "libc" 852 | version = "0.2.92" 853 | source = "registry+https://github.com/rust-lang/crates.io-index" 854 | checksum = "56d855069fafbb9b344c0f962150cd2c1187975cb1c22c1522c240d8c4986714" 855 | 856 | [[package]] 857 | name = "linked-hash-map" 858 | version = "0.5.4" 859 | source = "registry+https://github.com/rust-lang/crates.io-index" 860 | checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" 861 | 862 | [[package]] 863 | name = "log" 864 | version = "0.4.14" 865 | source = "registry+https://github.com/rust-lang/crates.io-index" 866 | checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" 867 | dependencies = [ 868 | "cfg-if 1.0.0", 869 | "value-bag", 870 | ] 871 | 872 | [[package]] 873 | name = "lru-cache" 874 | version = "0.1.2" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" 877 | dependencies = [ 878 | "linked-hash-map", 879 | ] 880 | 881 | [[package]] 882 | name = "match_cfg" 883 | version = "0.1.0" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" 886 | 887 | [[package]] 888 | name = "matches" 889 | version = "0.1.8" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 892 | 893 | [[package]] 894 | name = "md-5" 895 | version = "0.8.0" 896 | source = "registry+https://github.com/rust-lang/crates.io-index" 897 | checksum = "a18af3dcaf2b0219366cdb4e2af65a6101457b415c3d1a5c71dd9c2b7c77b9c8" 898 | dependencies = [ 899 | "block-buffer", 900 | "digest", 901 | "opaque-debug", 902 | ] 903 | 904 | [[package]] 905 | name = "memchr" 906 | version = "2.3.4" 907 | source = "registry+https://github.com/rust-lang/crates.io-index" 908 | checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" 909 | 910 | [[package]] 911 | name = "miniz_oxide" 912 | version = "0.4.4" 913 | source = "registry+https://github.com/rust-lang/crates.io-index" 914 | checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" 915 | dependencies = [ 916 | "adler", 917 | "autocfg", 918 | ] 919 | 920 | [[package]] 921 | name = "mio" 922 | version = "0.6.23" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" 925 | dependencies = [ 926 | "cfg-if 0.1.10", 927 | "fuchsia-zircon", 928 | "fuchsia-zircon-sys", 929 | "iovec", 930 | "kernel32-sys", 931 | "libc", 932 | "log", 933 | "miow", 934 | "net2", 935 | "slab", 936 | "winapi 0.2.8", 937 | ] 938 | 939 | [[package]] 940 | name = "miow" 941 | version = "0.2.2" 942 | source = "registry+https://github.com/rust-lang/crates.io-index" 943 | checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" 944 | dependencies = [ 945 | "kernel32-sys", 946 | "net2", 947 | "winapi 0.2.8", 948 | "ws2_32-sys", 949 | ] 950 | 951 | [[package]] 952 | name = "mongodb" 953 | version = "1.2.0" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "fec5582c6c1026244534d4c0437fb56f9bf6578eedb656012c4bfd8f7b496d60" 956 | dependencies = [ 957 | "async-std", 958 | "async-trait", 959 | "base64 0.11.0", 960 | "bitflags", 961 | "bson", 962 | "chrono", 963 | "derivative", 964 | "err-derive", 965 | "futures", 966 | "hex", 967 | "hmac", 968 | "lazy_static", 969 | "md-5", 970 | "os_info", 971 | "pbkdf2", 972 | "percent-encoding", 973 | "rand", 974 | "rustls", 975 | "serde", 976 | "serde_with", 977 | "sha-1", 978 | "sha2", 979 | "socket2 0.3.19", 980 | "stringprep", 981 | "strsim 0.10.0", 982 | "take_mut", 983 | "time", 984 | "tokio", 985 | "tokio-rustls", 986 | "trust-dns-proto", 987 | "trust-dns-resolver", 988 | "typed-builder", 989 | "uuid", 990 | "version_check", 991 | "webpki", 992 | "webpki-roots", 993 | ] 994 | 995 | [[package]] 996 | name = "nb-connect" 997 | version = "1.1.0" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "a19900e7eee95eb2b3c2e26d12a874cc80aaf750e31be6fcbe743ead369fa45d" 1000 | dependencies = [ 1001 | "libc", 1002 | "socket2 0.4.0", 1003 | ] 1004 | 1005 | [[package]] 1006 | name = "net2" 1007 | version = "0.2.37" 1008 | source = "registry+https://github.com/rust-lang/crates.io-index" 1009 | checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" 1010 | dependencies = [ 1011 | "cfg-if 0.1.10", 1012 | "libc", 1013 | "winapi 0.3.9", 1014 | ] 1015 | 1016 | [[package]] 1017 | name = "num-integer" 1018 | version = "0.1.44" 1019 | source = "registry+https://github.com/rust-lang/crates.io-index" 1020 | checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" 1021 | dependencies = [ 1022 | "autocfg", 1023 | "num-traits", 1024 | ] 1025 | 1026 | [[package]] 1027 | name = "num-traits" 1028 | version = "0.2.14" 1029 | source = "registry+https://github.com/rust-lang/crates.io-index" 1030 | checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" 1031 | dependencies = [ 1032 | "autocfg", 1033 | ] 1034 | 1035 | [[package]] 1036 | name = "num_cpus" 1037 | version = "1.13.0" 1038 | source = "registry+https://github.com/rust-lang/crates.io-index" 1039 | checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" 1040 | dependencies = [ 1041 | "hermit-abi", 1042 | "libc", 1043 | ] 1044 | 1045 | [[package]] 1046 | name = "object" 1047 | version = "0.23.0" 1048 | source = "registry+https://github.com/rust-lang/crates.io-index" 1049 | checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" 1050 | 1051 | [[package]] 1052 | name = "once_cell" 1053 | version = "1.7.2" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" 1056 | 1057 | [[package]] 1058 | name = "opaque-debug" 1059 | version = "0.2.3" 1060 | source = "registry+https://github.com/rust-lang/crates.io-index" 1061 | checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" 1062 | 1063 | [[package]] 1064 | name = "os_info" 1065 | version = "3.0.2" 1066 | source = "registry+https://github.com/rust-lang/crates.io-index" 1067 | checksum = "4181c9203e70e66f39def4240a7e33f74d1d95b42c08320f9ac298c580934ab2" 1068 | dependencies = [ 1069 | "log", 1070 | "winapi 0.3.9", 1071 | ] 1072 | 1073 | [[package]] 1074 | name = "parking" 1075 | version = "2.0.0" 1076 | source = "registry+https://github.com/rust-lang/crates.io-index" 1077 | checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" 1078 | 1079 | [[package]] 1080 | name = "pbkdf2" 1081 | version = "0.3.0" 1082 | source = "registry+https://github.com/rust-lang/crates.io-index" 1083 | checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" 1084 | dependencies = [ 1085 | "byteorder", 1086 | "crypto-mac", 1087 | ] 1088 | 1089 | [[package]] 1090 | name = "percent-encoding" 1091 | version = "2.1.0" 1092 | source = "registry+https://github.com/rust-lang/crates.io-index" 1093 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1094 | 1095 | [[package]] 1096 | name = "pin-project-lite" 1097 | version = "0.1.12" 1098 | source = "registry+https://github.com/rust-lang/crates.io-index" 1099 | checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" 1100 | 1101 | [[package]] 1102 | name = "pin-project-lite" 1103 | version = "0.2.6" 1104 | source = "registry+https://github.com/rust-lang/crates.io-index" 1105 | checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" 1106 | 1107 | [[package]] 1108 | name = "pin-utils" 1109 | version = "0.1.0" 1110 | source = "registry+https://github.com/rust-lang/crates.io-index" 1111 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1112 | 1113 | [[package]] 1114 | name = "polling" 1115 | version = "2.0.3" 1116 | source = "registry+https://github.com/rust-lang/crates.io-index" 1117 | checksum = "4fc12d774e799ee9ebae13f4076ca003b40d18a11ac0f3641e6f899618580b7b" 1118 | dependencies = [ 1119 | "cfg-if 1.0.0", 1120 | "libc", 1121 | "log", 1122 | "wepoll-sys", 1123 | "winapi 0.3.9", 1124 | ] 1125 | 1126 | [[package]] 1127 | name = "ppv-lite86" 1128 | version = "0.2.10" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" 1131 | 1132 | [[package]] 1133 | name = "proc-macro-error" 1134 | version = "1.0.4" 1135 | source = "registry+https://github.com/rust-lang/crates.io-index" 1136 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 1137 | dependencies = [ 1138 | "proc-macro-error-attr", 1139 | "proc-macro2", 1140 | "quote", 1141 | "syn", 1142 | "version_check", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "proc-macro-error-attr" 1147 | version = "1.0.4" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 1150 | dependencies = [ 1151 | "proc-macro2", 1152 | "quote", 1153 | "version_check", 1154 | ] 1155 | 1156 | [[package]] 1157 | name = "proc-macro-hack" 1158 | version = "0.5.19" 1159 | source = "registry+https://github.com/rust-lang/crates.io-index" 1160 | checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" 1161 | 1162 | [[package]] 1163 | name = "proc-macro-nested" 1164 | version = "0.1.7" 1165 | source = "registry+https://github.com/rust-lang/crates.io-index" 1166 | checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" 1167 | 1168 | [[package]] 1169 | name = "proc-macro2" 1170 | version = "1.0.26" 1171 | source = "registry+https://github.com/rust-lang/crates.io-index" 1172 | checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" 1173 | dependencies = [ 1174 | "unicode-xid", 1175 | ] 1176 | 1177 | [[package]] 1178 | name = "quick-error" 1179 | version = "1.2.3" 1180 | source = "registry+https://github.com/rust-lang/crates.io-index" 1181 | checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" 1182 | 1183 | [[package]] 1184 | name = "quote" 1185 | version = "1.0.9" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" 1188 | dependencies = [ 1189 | "proc-macro2", 1190 | ] 1191 | 1192 | [[package]] 1193 | name = "rand" 1194 | version = "0.7.3" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 1197 | dependencies = [ 1198 | "getrandom 0.1.16", 1199 | "libc", 1200 | "rand_chacha", 1201 | "rand_core", 1202 | "rand_hc", 1203 | "rand_pcg", 1204 | ] 1205 | 1206 | [[package]] 1207 | name = "rand_chacha" 1208 | version = "0.2.2" 1209 | source = "registry+https://github.com/rust-lang/crates.io-index" 1210 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 1211 | dependencies = [ 1212 | "ppv-lite86", 1213 | "rand_core", 1214 | ] 1215 | 1216 | [[package]] 1217 | name = "rand_core" 1218 | version = "0.5.1" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1221 | dependencies = [ 1222 | "getrandom 0.1.16", 1223 | ] 1224 | 1225 | [[package]] 1226 | name = "rand_hc" 1227 | version = "0.2.0" 1228 | source = "registry+https://github.com/rust-lang/crates.io-index" 1229 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1230 | dependencies = [ 1231 | "rand_core", 1232 | ] 1233 | 1234 | [[package]] 1235 | name = "rand_pcg" 1236 | version = "0.2.1" 1237 | source = "registry+https://github.com/rust-lang/crates.io-index" 1238 | checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 1239 | dependencies = [ 1240 | "rand_core", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "regex" 1245 | version = "1.4.5" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "957056ecddbeba1b26965114e191d2e8589ce74db242b6ea25fc4062427a5c19" 1248 | dependencies = [ 1249 | "aho-corasick", 1250 | "memchr", 1251 | "regex-syntax", 1252 | ] 1253 | 1254 | [[package]] 1255 | name = "regex-syntax" 1256 | version = "0.6.23" 1257 | source = "registry+https://github.com/rust-lang/crates.io-index" 1258 | checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548" 1259 | 1260 | [[package]] 1261 | name = "resolv-conf" 1262 | version = "0.7.0" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" 1265 | dependencies = [ 1266 | "hostname", 1267 | "quick-error", 1268 | ] 1269 | 1270 | [[package]] 1271 | name = "ring" 1272 | version = "0.16.20" 1273 | source = "registry+https://github.com/rust-lang/crates.io-index" 1274 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 1275 | dependencies = [ 1276 | "cc", 1277 | "libc", 1278 | "once_cell", 1279 | "spin", 1280 | "untrusted", 1281 | "web-sys", 1282 | "winapi 0.3.9", 1283 | ] 1284 | 1285 | [[package]] 1286 | name = "rustc-demangle" 1287 | version = "0.1.18" 1288 | source = "registry+https://github.com/rust-lang/crates.io-index" 1289 | checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" 1290 | 1291 | [[package]] 1292 | name = "rustls" 1293 | version = "0.17.0" 1294 | source = "registry+https://github.com/rust-lang/crates.io-index" 1295 | checksum = "c0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1" 1296 | dependencies = [ 1297 | "base64 0.11.0", 1298 | "log", 1299 | "ring", 1300 | "sct", 1301 | "webpki", 1302 | ] 1303 | 1304 | [[package]] 1305 | name = "rustversion" 1306 | version = "1.0.4" 1307 | source = "registry+https://github.com/rust-lang/crates.io-index" 1308 | checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" 1309 | 1310 | [[package]] 1311 | name = "ryu" 1312 | version = "1.0.5" 1313 | source = "registry+https://github.com/rust-lang/crates.io-index" 1314 | checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" 1315 | 1316 | [[package]] 1317 | name = "sct" 1318 | version = "0.6.0" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" 1321 | dependencies = [ 1322 | "ring", 1323 | "untrusted", 1324 | ] 1325 | 1326 | [[package]] 1327 | name = "serde" 1328 | version = "1.0.125" 1329 | source = "registry+https://github.com/rust-lang/crates.io-index" 1330 | checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" 1331 | dependencies = [ 1332 | "serde_derive", 1333 | ] 1334 | 1335 | [[package]] 1336 | name = "serde_derive" 1337 | version = "1.0.125" 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" 1339 | checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" 1340 | dependencies = [ 1341 | "proc-macro2", 1342 | "quote", 1343 | "syn", 1344 | ] 1345 | 1346 | [[package]] 1347 | name = "serde_json" 1348 | version = "1.0.64" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" 1351 | dependencies = [ 1352 | "indexmap", 1353 | "itoa", 1354 | "ryu", 1355 | "serde", 1356 | ] 1357 | 1358 | [[package]] 1359 | name = "serde_with" 1360 | version = "1.8.0" 1361 | source = "registry+https://github.com/rust-lang/crates.io-index" 1362 | checksum = "e557c650adfb38b32a5aec07082053253c703bc3cec654b27a5dbcf61995bb9b" 1363 | dependencies = [ 1364 | "rustversion", 1365 | "serde", 1366 | "serde_with_macros", 1367 | ] 1368 | 1369 | [[package]] 1370 | name = "serde_with_macros" 1371 | version = "1.4.1" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "e48b35457e9d855d3dc05ef32a73e0df1e2c0fd72c38796a4ee909160c8eeec2" 1374 | dependencies = [ 1375 | "darling 0.12.2", 1376 | "proc-macro2", 1377 | "quote", 1378 | "syn", 1379 | ] 1380 | 1381 | [[package]] 1382 | name = "sha-1" 1383 | version = "0.8.2" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" 1386 | dependencies = [ 1387 | "block-buffer", 1388 | "digest", 1389 | "fake-simd", 1390 | "opaque-debug", 1391 | ] 1392 | 1393 | [[package]] 1394 | name = "sha2" 1395 | version = "0.8.2" 1396 | source = "registry+https://github.com/rust-lang/crates.io-index" 1397 | checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" 1398 | dependencies = [ 1399 | "block-buffer", 1400 | "digest", 1401 | "fake-simd", 1402 | "opaque-debug", 1403 | ] 1404 | 1405 | [[package]] 1406 | name = "shared" 1407 | version = "0.1.0" 1408 | dependencies = [ 1409 | "anyhow", 1410 | "chrono", 1411 | "log", 1412 | "serde", 1413 | "wither", 1414 | ] 1415 | 1416 | [[package]] 1417 | name = "slab" 1418 | version = "0.4.2" 1419 | source = "registry+https://github.com/rust-lang/crates.io-index" 1420 | checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1421 | 1422 | [[package]] 1423 | name = "smallvec" 1424 | version = "1.6.1" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" 1427 | 1428 | [[package]] 1429 | name = "socket2" 1430 | version = "0.3.19" 1431 | source = "registry+https://github.com/rust-lang/crates.io-index" 1432 | checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" 1433 | dependencies = [ 1434 | "cfg-if 1.0.0", 1435 | "libc", 1436 | "winapi 0.3.9", 1437 | ] 1438 | 1439 | [[package]] 1440 | name = "socket2" 1441 | version = "0.4.0" 1442 | source = "registry+https://github.com/rust-lang/crates.io-index" 1443 | checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" 1444 | dependencies = [ 1445 | "libc", 1446 | "winapi 0.3.9", 1447 | ] 1448 | 1449 | [[package]] 1450 | name = "spin" 1451 | version = "0.5.2" 1452 | source = "registry+https://github.com/rust-lang/crates.io-index" 1453 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 1454 | 1455 | [[package]] 1456 | name = "stringprep" 1457 | version = "0.1.2" 1458 | source = "registry+https://github.com/rust-lang/crates.io-index" 1459 | checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" 1460 | dependencies = [ 1461 | "unicode-bidi", 1462 | "unicode-normalization", 1463 | ] 1464 | 1465 | [[package]] 1466 | name = "strsim" 1467 | version = "0.9.3" 1468 | source = "registry+https://github.com/rust-lang/crates.io-index" 1469 | checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" 1470 | 1471 | [[package]] 1472 | name = "strsim" 1473 | version = "0.10.0" 1474 | source = "registry+https://github.com/rust-lang/crates.io-index" 1475 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 1476 | 1477 | [[package]] 1478 | name = "subtle" 1479 | version = "1.0.0" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" 1482 | 1483 | [[package]] 1484 | name = "syn" 1485 | version = "1.0.68" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "3ce15dd3ed8aa2f8eeac4716d6ef5ab58b6b9256db41d7e1a0224c2788e8fd87" 1488 | dependencies = [ 1489 | "proc-macro2", 1490 | "quote", 1491 | "unicode-xid", 1492 | ] 1493 | 1494 | [[package]] 1495 | name = "synstructure" 1496 | version = "0.12.4" 1497 | source = "registry+https://github.com/rust-lang/crates.io-index" 1498 | checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" 1499 | dependencies = [ 1500 | "proc-macro2", 1501 | "quote", 1502 | "syn", 1503 | "unicode-xid", 1504 | ] 1505 | 1506 | [[package]] 1507 | name = "take_mut" 1508 | version = "0.2.2" 1509 | source = "registry+https://github.com/rust-lang/crates.io-index" 1510 | checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" 1511 | 1512 | [[package]] 1513 | name = "thiserror" 1514 | version = "1.0.24" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" 1517 | dependencies = [ 1518 | "thiserror-impl", 1519 | ] 1520 | 1521 | [[package]] 1522 | name = "thiserror-impl" 1523 | version = "1.0.24" 1524 | source = "registry+https://github.com/rust-lang/crates.io-index" 1525 | checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" 1526 | dependencies = [ 1527 | "proc-macro2", 1528 | "quote", 1529 | "syn", 1530 | ] 1531 | 1532 | [[package]] 1533 | name = "time" 1534 | version = "0.1.44" 1535 | source = "registry+https://github.com/rust-lang/crates.io-index" 1536 | checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 1537 | dependencies = [ 1538 | "libc", 1539 | "wasi 0.10.0+wasi-snapshot-preview1", 1540 | "winapi 0.3.9", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "tinyvec" 1545 | version = "1.2.0" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" 1548 | dependencies = [ 1549 | "tinyvec_macros", 1550 | ] 1551 | 1552 | [[package]] 1553 | name = "tinyvec_macros" 1554 | version = "0.1.0" 1555 | source = "registry+https://github.com/rust-lang/crates.io-index" 1556 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 1557 | 1558 | [[package]] 1559 | name = "tokio" 1560 | version = "0.2.25" 1561 | source = "registry+https://github.com/rust-lang/crates.io-index" 1562 | checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" 1563 | dependencies = [ 1564 | "bytes", 1565 | "fnv", 1566 | "iovec", 1567 | "lazy_static", 1568 | "memchr", 1569 | "mio", 1570 | "pin-project-lite 0.1.12", 1571 | "slab", 1572 | "tokio-macros", 1573 | ] 1574 | 1575 | [[package]] 1576 | name = "tokio-macros" 1577 | version = "0.2.6" 1578 | source = "registry+https://github.com/rust-lang/crates.io-index" 1579 | checksum = "e44da00bfc73a25f814cd8d7e57a68a5c31b74b3152a0a1d1f590c97ed06265a" 1580 | dependencies = [ 1581 | "proc-macro2", 1582 | "quote", 1583 | "syn", 1584 | ] 1585 | 1586 | [[package]] 1587 | name = "tokio-rustls" 1588 | version = "0.13.1" 1589 | source = "registry+https://github.com/rust-lang/crates.io-index" 1590 | checksum = "15cb62a0d2770787abc96e99c1cd98fcf17f94959f3af63ca85bdfb203f051b4" 1591 | dependencies = [ 1592 | "futures-core", 1593 | "rustls", 1594 | "tokio", 1595 | "webpki", 1596 | ] 1597 | 1598 | [[package]] 1599 | name = "trust-dns-proto" 1600 | version = "0.19.7" 1601 | source = "registry+https://github.com/rust-lang/crates.io-index" 1602 | checksum = "1cad71a0c0d68ab9941d2fb6e82f8fb2e86d9945b94e1661dd0aaea2b88215a9" 1603 | dependencies = [ 1604 | "async-trait", 1605 | "backtrace", 1606 | "cfg-if 1.0.0", 1607 | "enum-as-inner", 1608 | "futures", 1609 | "idna", 1610 | "lazy_static", 1611 | "log", 1612 | "rand", 1613 | "smallvec", 1614 | "thiserror", 1615 | "tokio", 1616 | "url", 1617 | ] 1618 | 1619 | [[package]] 1620 | name = "trust-dns-resolver" 1621 | version = "0.19.7" 1622 | source = "registry+https://github.com/rust-lang/crates.io-index" 1623 | checksum = "710f593b371175db53a26d0b38ed2978fafb9e9e8d3868b1acd753ea18df0ceb" 1624 | dependencies = [ 1625 | "cfg-if 0.1.10", 1626 | "futures", 1627 | "ipconfig", 1628 | "lazy_static", 1629 | "log", 1630 | "lru-cache", 1631 | "resolv-conf", 1632 | "smallvec", 1633 | "thiserror", 1634 | "tokio", 1635 | "trust-dns-proto", 1636 | ] 1637 | 1638 | [[package]] 1639 | name = "typed-builder" 1640 | version = "0.4.1" 1641 | source = "registry+https://github.com/rust-lang/crates.io-index" 1642 | checksum = "dfc955f27acc7a547f328f52f4a5a568986a31efec2fc6de865279f3995787b9" 1643 | dependencies = [ 1644 | "proc-macro2", 1645 | "quote", 1646 | "syn", 1647 | ] 1648 | 1649 | [[package]] 1650 | name = "typenum" 1651 | version = "1.13.0" 1652 | source = "registry+https://github.com/rust-lang/crates.io-index" 1653 | checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" 1654 | 1655 | [[package]] 1656 | name = "unicode-bidi" 1657 | version = "0.3.4" 1658 | source = "registry+https://github.com/rust-lang/crates.io-index" 1659 | checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1660 | dependencies = [ 1661 | "matches", 1662 | ] 1663 | 1664 | [[package]] 1665 | name = "unicode-normalization" 1666 | version = "0.1.17" 1667 | source = "registry+https://github.com/rust-lang/crates.io-index" 1668 | checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" 1669 | dependencies = [ 1670 | "tinyvec", 1671 | ] 1672 | 1673 | [[package]] 1674 | name = "unicode-segmentation" 1675 | version = "1.7.1" 1676 | source = "registry+https://github.com/rust-lang/crates.io-index" 1677 | checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" 1678 | 1679 | [[package]] 1680 | name = "unicode-xid" 1681 | version = "0.2.1" 1682 | source = "registry+https://github.com/rust-lang/crates.io-index" 1683 | checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" 1684 | 1685 | [[package]] 1686 | name = "untrusted" 1687 | version = "0.7.1" 1688 | source = "registry+https://github.com/rust-lang/crates.io-index" 1689 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 1690 | 1691 | [[package]] 1692 | name = "url" 1693 | version = "2.2.1" 1694 | source = "registry+https://github.com/rust-lang/crates.io-index" 1695 | checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" 1696 | dependencies = [ 1697 | "form_urlencoded", 1698 | "idna", 1699 | "matches", 1700 | "percent-encoding", 1701 | ] 1702 | 1703 | [[package]] 1704 | name = "uuid" 1705 | version = "0.8.2" 1706 | source = "registry+https://github.com/rust-lang/crates.io-index" 1707 | checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" 1708 | dependencies = [ 1709 | "getrandom 0.2.2", 1710 | ] 1711 | 1712 | [[package]] 1713 | name = "value-bag" 1714 | version = "1.0.0-alpha.6" 1715 | source = "registry+https://github.com/rust-lang/crates.io-index" 1716 | checksum = "6b676010e055c99033117c2343b33a40a30b91fecd6c49055ac9cd2d6c305ab1" 1717 | dependencies = [ 1718 | "ctor", 1719 | ] 1720 | 1721 | [[package]] 1722 | name = "vec-arena" 1723 | version = "1.1.0" 1724 | source = "registry+https://github.com/rust-lang/crates.io-index" 1725 | checksum = "34b2f665b594b07095e3ac3f718e13c2197143416fae4c5706cffb7b1af8d7f1" 1726 | 1727 | [[package]] 1728 | name = "version_check" 1729 | version = "0.9.3" 1730 | source = "registry+https://github.com/rust-lang/crates.io-index" 1731 | checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" 1732 | 1733 | [[package]] 1734 | name = "waker-fn" 1735 | version = "1.1.0" 1736 | source = "registry+https://github.com/rust-lang/crates.io-index" 1737 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 1738 | 1739 | [[package]] 1740 | name = "wasi" 1741 | version = "0.9.0+wasi-snapshot-preview1" 1742 | source = "registry+https://github.com/rust-lang/crates.io-index" 1743 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 1744 | 1745 | [[package]] 1746 | name = "wasi" 1747 | version = "0.10.0+wasi-snapshot-preview1" 1748 | source = "registry+https://github.com/rust-lang/crates.io-index" 1749 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 1750 | 1751 | [[package]] 1752 | name = "wasm-bindgen" 1753 | version = "0.2.73" 1754 | source = "registry+https://github.com/rust-lang/crates.io-index" 1755 | checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" 1756 | dependencies = [ 1757 | "cfg-if 1.0.0", 1758 | "wasm-bindgen-macro", 1759 | ] 1760 | 1761 | [[package]] 1762 | name = "wasm-bindgen-backend" 1763 | version = "0.2.73" 1764 | source = "registry+https://github.com/rust-lang/crates.io-index" 1765 | checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" 1766 | dependencies = [ 1767 | "bumpalo", 1768 | "lazy_static", 1769 | "log", 1770 | "proc-macro2", 1771 | "quote", 1772 | "syn", 1773 | "wasm-bindgen-shared", 1774 | ] 1775 | 1776 | [[package]] 1777 | name = "wasm-bindgen-futures" 1778 | version = "0.4.23" 1779 | source = "registry+https://github.com/rust-lang/crates.io-index" 1780 | checksum = "81b8b767af23de6ac18bf2168b690bed2902743ddf0fb39252e36f9e2bfc63ea" 1781 | dependencies = [ 1782 | "cfg-if 1.0.0", 1783 | "js-sys", 1784 | "wasm-bindgen", 1785 | "web-sys", 1786 | ] 1787 | 1788 | [[package]] 1789 | name = "wasm-bindgen-macro" 1790 | version = "0.2.73" 1791 | source = "registry+https://github.com/rust-lang/crates.io-index" 1792 | checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" 1793 | dependencies = [ 1794 | "quote", 1795 | "wasm-bindgen-macro-support", 1796 | ] 1797 | 1798 | [[package]] 1799 | name = "wasm-bindgen-macro-support" 1800 | version = "0.2.73" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" 1803 | dependencies = [ 1804 | "proc-macro2", 1805 | "quote", 1806 | "syn", 1807 | "wasm-bindgen-backend", 1808 | "wasm-bindgen-shared", 1809 | ] 1810 | 1811 | [[package]] 1812 | name = "wasm-bindgen-shared" 1813 | version = "0.2.73" 1814 | source = "registry+https://github.com/rust-lang/crates.io-index" 1815 | checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" 1816 | 1817 | [[package]] 1818 | name = "web-sys" 1819 | version = "0.3.50" 1820 | source = "registry+https://github.com/rust-lang/crates.io-index" 1821 | checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be" 1822 | dependencies = [ 1823 | "js-sys", 1824 | "wasm-bindgen", 1825 | ] 1826 | 1827 | [[package]] 1828 | name = "webpki" 1829 | version = "0.21.4" 1830 | source = "registry+https://github.com/rust-lang/crates.io-index" 1831 | checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" 1832 | dependencies = [ 1833 | "ring", 1834 | "untrusted", 1835 | ] 1836 | 1837 | [[package]] 1838 | name = "webpki-roots" 1839 | version = "0.18.0" 1840 | source = "registry+https://github.com/rust-lang/crates.io-index" 1841 | checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" 1842 | dependencies = [ 1843 | "webpki", 1844 | ] 1845 | 1846 | [[package]] 1847 | name = "wepoll-sys" 1848 | version = "3.0.1" 1849 | source = "registry+https://github.com/rust-lang/crates.io-index" 1850 | checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" 1851 | dependencies = [ 1852 | "cc", 1853 | ] 1854 | 1855 | [[package]] 1856 | name = "widestring" 1857 | version = "0.4.3" 1858 | source = "registry+https://github.com/rust-lang/crates.io-index" 1859 | checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" 1860 | 1861 | [[package]] 1862 | name = "winapi" 1863 | version = "0.2.8" 1864 | source = "registry+https://github.com/rust-lang/crates.io-index" 1865 | checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1866 | 1867 | [[package]] 1868 | name = "winapi" 1869 | version = "0.3.9" 1870 | source = "registry+https://github.com/rust-lang/crates.io-index" 1871 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1872 | dependencies = [ 1873 | "winapi-i686-pc-windows-gnu", 1874 | "winapi-x86_64-pc-windows-gnu", 1875 | ] 1876 | 1877 | [[package]] 1878 | name = "winapi-build" 1879 | version = "0.1.1" 1880 | source = "registry+https://github.com/rust-lang/crates.io-index" 1881 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1882 | 1883 | [[package]] 1884 | name = "winapi-i686-pc-windows-gnu" 1885 | version = "0.4.0" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1888 | 1889 | [[package]] 1890 | name = "winapi-x86_64-pc-windows-gnu" 1891 | version = "0.4.0" 1892 | source = "registry+https://github.com/rust-lang/crates.io-index" 1893 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1894 | 1895 | [[package]] 1896 | name = "winreg" 1897 | version = "0.6.2" 1898 | source = "registry+https://github.com/rust-lang/crates.io-index" 1899 | checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" 1900 | dependencies = [ 1901 | "winapi 0.3.9", 1902 | ] 1903 | 1904 | [[package]] 1905 | name = "wither" 1906 | version = "0.9.0" 1907 | source = "registry+https://github.com/rust-lang/crates.io-index" 1908 | checksum = "45e6fce5f641da433789cf4376cd698874666bf2741eb4d72444b4006cc0954a" 1909 | dependencies = [ 1910 | "async-trait", 1911 | "chrono", 1912 | "futures", 1913 | "log", 1914 | "mongodb", 1915 | "serde", 1916 | "thiserror", 1917 | "wither_derive", 1918 | ] 1919 | 1920 | [[package]] 1921 | name = "wither_derive" 1922 | version = "0.9.0" 1923 | source = "registry+https://github.com/rust-lang/crates.io-index" 1924 | checksum = "c7cc57cffdfd2239926b5b9e068591944444c71c8e9baa2bd1cbde3492d78973" 1925 | dependencies = [ 1926 | "Inflector", 1927 | "async-trait", 1928 | "darling 0.10.2", 1929 | "proc-macro-error", 1930 | "proc-macro2", 1931 | "quote", 1932 | "serde", 1933 | "syn", 1934 | ] 1935 | 1936 | [[package]] 1937 | name = "ws2_32-sys" 1938 | version = "0.2.1" 1939 | source = "registry+https://github.com/rust-lang/crates.io-index" 1940 | checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1941 | dependencies = [ 1942 | "winapi 0.2.8", 1943 | "winapi-build", 1944 | ] 1945 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "Inflector" 7 | version = "0.11.4" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 10 | dependencies = [ 11 | "lazy_static", 12 | "regex", 13 | ] 14 | 15 | [[package]] 16 | name = "addr2line" 17 | version = "0.14.1" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" 20 | dependencies = [ 21 | "gimli", 22 | ] 23 | 24 | [[package]] 25 | name = "adler" 26 | version = "0.2.3" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" 29 | 30 | [[package]] 31 | name = "adler" 32 | version = "1.0.2" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 35 | 36 | [[package]] 37 | name = "aho-corasick" 38 | version = "0.7.15" 39 | source = "registry+https://github.com/rust-lang/crates.io-index" 40 | checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" 41 | dependencies = [ 42 | "memchr", 43 | ] 44 | 45 | [[package]] 46 | name = "ansi_term" 47 | version = "0.11.0" 48 | source = "registry+https://github.com/rust-lang/crates.io-index" 49 | checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" 50 | dependencies = [ 51 | "winapi 0.3.9", 52 | ] 53 | 54 | [[package]] 55 | name = "anyhow" 56 | version = "1.0.58" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" 59 | 60 | [[package]] 61 | name = "arrayref" 62 | version = "0.3.6" 63 | source = "registry+https://github.com/rust-lang/crates.io-index" 64 | checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" 65 | 66 | [[package]] 67 | name = "arrayvec" 68 | version = "0.5.2" 69 | source = "registry+https://github.com/rust-lang/crates.io-index" 70 | checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" 71 | 72 | [[package]] 73 | name = "async-attributes" 74 | version = "1.1.2" 75 | source = "registry+https://github.com/rust-lang/crates.io-index" 76 | checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" 77 | dependencies = [ 78 | "quote 1.0.8", 79 | "syn 1.0.96", 80 | ] 81 | 82 | [[package]] 83 | name = "async-channel" 84 | version = "1.5.1" 85 | source = "registry+https://github.com/rust-lang/crates.io-index" 86 | checksum = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" 87 | dependencies = [ 88 | "concurrent-queue", 89 | "event-listener", 90 | "futures-core", 91 | ] 92 | 93 | [[package]] 94 | name = "async-executor" 95 | version = "1.4.0" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" 98 | dependencies = [ 99 | "async-task", 100 | "concurrent-queue", 101 | "fastrand", 102 | "futures-lite", 103 | "once_cell", 104 | "vec-arena", 105 | ] 106 | 107 | [[package]] 108 | name = "async-global-executor" 109 | version = "2.0.2" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6" 112 | dependencies = [ 113 | "async-channel", 114 | "async-executor", 115 | "async-io", 116 | "async-mutex", 117 | "blocking", 118 | "futures-lite", 119 | "num_cpus", 120 | "once_cell", 121 | ] 122 | 123 | [[package]] 124 | name = "async-io" 125 | version = "1.3.1" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "9315f8f07556761c3e48fec2e6b276004acf426e6dc068b2c2251854d65ee0fd" 128 | dependencies = [ 129 | "concurrent-queue", 130 | "fastrand", 131 | "futures-lite", 132 | "libc", 133 | "log", 134 | "nb-connect", 135 | "once_cell", 136 | "parking", 137 | "polling", 138 | "vec-arena", 139 | "waker-fn", 140 | "winapi 0.3.9", 141 | ] 142 | 143 | [[package]] 144 | name = "async-lock" 145 | version = "2.3.0" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "1996609732bde4a9988bc42125f55f2af5f3c36370e27c778d5191a4a1b63bfb" 148 | dependencies = [ 149 | "event-listener", 150 | ] 151 | 152 | [[package]] 153 | name = "async-mutex" 154 | version = "1.4.0" 155 | source = "registry+https://github.com/rust-lang/crates.io-index" 156 | checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" 157 | dependencies = [ 158 | "event-listener", 159 | ] 160 | 161 | [[package]] 162 | name = "async-std" 163 | version = "1.12.0" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" 166 | dependencies = [ 167 | "async-attributes", 168 | "async-channel", 169 | "async-global-executor", 170 | "async-io", 171 | "async-lock", 172 | "crossbeam-utils", 173 | "futures-channel", 174 | "futures-core", 175 | "futures-io", 176 | "futures-lite", 177 | "gloo-timers", 178 | "kv-log-macro", 179 | "log", 180 | "memchr", 181 | "once_cell", 182 | "pin-project-lite 0.2.4", 183 | "pin-utils", 184 | "slab", 185 | "wasm-bindgen-futures", 186 | ] 187 | 188 | [[package]] 189 | name = "async-task" 190 | version = "4.0.3" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" 193 | 194 | [[package]] 195 | name = "async-trait" 196 | version = "0.1.56" 197 | source = "registry+https://github.com/rust-lang/crates.io-index" 198 | checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" 199 | dependencies = [ 200 | "proc-macro2 1.0.39", 201 | "quote 1.0.8", 202 | "syn 1.0.96", 203 | ] 204 | 205 | [[package]] 206 | name = "atomic-waker" 207 | version = "1.0.0" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" 210 | 211 | [[package]] 212 | name = "atty" 213 | version = "0.2.14" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 216 | dependencies = [ 217 | "hermit-abi", 218 | "libc", 219 | "winapi 0.3.9", 220 | ] 221 | 222 | [[package]] 223 | name = "autocfg" 224 | version = "1.0.1" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 227 | 228 | [[package]] 229 | name = "backtrace" 230 | version = "0.3.56" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" 233 | dependencies = [ 234 | "addr2line", 235 | "cfg-if 1.0.0", 236 | "libc", 237 | "miniz_oxide 0.4.3", 238 | "object", 239 | "rustc-demangle", 240 | ] 241 | 242 | [[package]] 243 | name = "base64" 244 | version = "0.11.0" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" 247 | 248 | [[package]] 249 | name = "base64" 250 | version = "0.12.3" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 253 | 254 | [[package]] 255 | name = "base64" 256 | version = "0.13.0" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" 259 | 260 | [[package]] 261 | name = "bitflags" 262 | version = "1.2.1" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 265 | 266 | [[package]] 267 | name = "blake2b_simd" 268 | version = "0.5.11" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" 271 | dependencies = [ 272 | "arrayref", 273 | "arrayvec", 274 | "constant_time_eq", 275 | ] 276 | 277 | [[package]] 278 | name = "block-buffer" 279 | version = "0.7.3" 280 | source = "registry+https://github.com/rust-lang/crates.io-index" 281 | checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" 282 | dependencies = [ 283 | "block-padding", 284 | "byte-tools", 285 | "byteorder", 286 | "generic-array", 287 | ] 288 | 289 | [[package]] 290 | name = "block-padding" 291 | version = "0.1.5" 292 | source = "registry+https://github.com/rust-lang/crates.io-index" 293 | checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" 294 | dependencies = [ 295 | "byte-tools", 296 | ] 297 | 298 | [[package]] 299 | name = "blocking" 300 | version = "1.0.2" 301 | source = "registry+https://github.com/rust-lang/crates.io-index" 302 | checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" 303 | dependencies = [ 304 | "async-channel", 305 | "async-task", 306 | "atomic-waker", 307 | "fastrand", 308 | "futures-lite", 309 | "once_cell", 310 | ] 311 | 312 | [[package]] 313 | name = "bson" 314 | version = "1.1.0" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | checksum = "c11f16001d679cb13d14b2c93c7d0fa13bb484a87c34a6c4c39707ad936499b5" 317 | dependencies = [ 318 | "base64 0.12.3", 319 | "chrono", 320 | "hex", 321 | "lazy_static", 322 | "linked-hash-map", 323 | "rand 0.7.3", 324 | "serde", 325 | "serde_json", 326 | ] 327 | 328 | [[package]] 329 | name = "bstr" 330 | version = "0.2.14" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | checksum = "473fc6b38233f9af7baa94fb5852dca389e3d95b8e21c8e3719301462c5d9faf" 333 | dependencies = [ 334 | "lazy_static", 335 | "memchr", 336 | "regex-automata", 337 | "serde", 338 | ] 339 | 340 | [[package]] 341 | name = "bumpalo" 342 | version = "3.6.0" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | checksum = "099e596ef14349721d9016f6b80dd3419ea1bf289ab9b44df8e4dfd3a005d5d9" 345 | 346 | [[package]] 347 | name = "byte-tools" 348 | version = "0.3.1" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" 351 | 352 | [[package]] 353 | name = "byteorder" 354 | version = "1.4.2" 355 | source = "registry+https://github.com/rust-lang/crates.io-index" 356 | checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" 357 | 358 | [[package]] 359 | name = "bytes" 360 | version = "0.5.6" 361 | source = "registry+https://github.com/rust-lang/crates.io-index" 362 | checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" 363 | 364 | [[package]] 365 | name = "bytes" 366 | version = "1.0.1" 367 | source = "registry+https://github.com/rust-lang/crates.io-index" 368 | checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" 369 | 370 | [[package]] 371 | name = "cache-padded" 372 | version = "1.1.1" 373 | source = "registry+https://github.com/rust-lang/crates.io-index" 374 | checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" 375 | 376 | [[package]] 377 | name = "cc" 378 | version = "1.0.66" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" 381 | 382 | [[package]] 383 | name = "cfg-if" 384 | version = "0.1.10" 385 | source = "registry+https://github.com/rust-lang/crates.io-index" 386 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 387 | 388 | [[package]] 389 | name = "cfg-if" 390 | version = "1.0.0" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 393 | 394 | [[package]] 395 | name = "chrono" 396 | version = "0.4.19" 397 | source = "registry+https://github.com/rust-lang/crates.io-index" 398 | checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" 399 | dependencies = [ 400 | "libc", 401 | "num-integer", 402 | "num-traits", 403 | "serde", 404 | "time", 405 | "winapi 0.3.9", 406 | ] 407 | 408 | [[package]] 409 | name = "clap" 410 | version = "2.33.3" 411 | source = "registry+https://github.com/rust-lang/crates.io-index" 412 | checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" 413 | dependencies = [ 414 | "ansi_term", 415 | "atty", 416 | "bitflags", 417 | "strsim 0.8.0", 418 | "textwrap", 419 | "unicode-width", 420 | "vec_map", 421 | ] 422 | 423 | [[package]] 424 | name = "cloudabi" 425 | version = "0.0.3" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 428 | dependencies = [ 429 | "bitflags", 430 | ] 431 | 432 | [[package]] 433 | name = "concurrent-queue" 434 | version = "1.2.2" 435 | source = "registry+https://github.com/rust-lang/crates.io-index" 436 | checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" 437 | dependencies = [ 438 | "cache-padded", 439 | ] 440 | 441 | [[package]] 442 | name = "console" 443 | version = "0.14.0" 444 | source = "registry+https://github.com/rust-lang/crates.io-index" 445 | checksum = "7cc80946b3480f421c2f17ed1cb841753a371c7c5104f51d507e13f532c856aa" 446 | dependencies = [ 447 | "encode_unicode", 448 | "lazy_static", 449 | "libc", 450 | "terminal_size", 451 | "winapi 0.3.9", 452 | ] 453 | 454 | [[package]] 455 | name = "constant_time_eq" 456 | version = "0.1.5" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 459 | 460 | [[package]] 461 | name = "crc32fast" 462 | version = "1.2.1" 463 | source = "registry+https://github.com/rust-lang/crates.io-index" 464 | checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" 465 | dependencies = [ 466 | "cfg-if 1.0.0", 467 | ] 468 | 469 | [[package]] 470 | name = "crossbeam-utils" 471 | version = "0.8.8" 472 | source = "registry+https://github.com/rust-lang/crates.io-index" 473 | checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" 474 | dependencies = [ 475 | "cfg-if 1.0.0", 476 | "lazy_static", 477 | ] 478 | 479 | [[package]] 480 | name = "crypto-mac" 481 | version = "0.7.0" 482 | source = "registry+https://github.com/rust-lang/crates.io-index" 483 | checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" 484 | dependencies = [ 485 | "generic-array", 486 | "subtle", 487 | ] 488 | 489 | [[package]] 490 | name = "csv" 491 | version = "1.1.5" 492 | source = "registry+https://github.com/rust-lang/crates.io-index" 493 | checksum = "f9d58633299b24b515ac72a3f869f8b91306a3cec616a602843a383acd6f9e97" 494 | dependencies = [ 495 | "bstr", 496 | "csv-core", 497 | "itoa 0.4.7", 498 | "ryu", 499 | "serde", 500 | ] 501 | 502 | [[package]] 503 | name = "csv-core" 504 | version = "0.1.10" 505 | source = "registry+https://github.com/rust-lang/crates.io-index" 506 | checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" 507 | dependencies = [ 508 | "memchr", 509 | ] 510 | 511 | [[package]] 512 | name = "ctor" 513 | version = "0.1.18" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | checksum = "10bcb9d7dcbf7002aaffbb53eac22906b64cdcc127971dcc387d8eb7c95d5560" 516 | dependencies = [ 517 | "quote 1.0.8", 518 | "syn 1.0.96", 519 | ] 520 | 521 | [[package]] 522 | name = "curl" 523 | version = "0.4.34" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | checksum = "e268162af1a5fe89917ae25ba3b0a77c8da752bdc58e7dbb4f15b91fbd33756e" 526 | dependencies = [ 527 | "curl-sys", 528 | "libc", 529 | "openssl-probe", 530 | "openssl-sys", 531 | "schannel", 532 | "socket2 0.3.19", 533 | "winapi 0.3.9", 534 | ] 535 | 536 | [[package]] 537 | name = "curl-sys" 538 | version = "0.4.39+curl-7.74.0" 539 | source = "registry+https://github.com/rust-lang/crates.io-index" 540 | checksum = "07a8ce861e7b68a0b394e814d7ee9f1b2750ff8bd10372c6ad3bacc10e86f874" 541 | dependencies = [ 542 | "cc", 543 | "libc", 544 | "libnghttp2-sys", 545 | "libz-sys", 546 | "openssl-sys", 547 | "pkg-config", 548 | "vcpkg", 549 | "winapi 0.3.9", 550 | ] 551 | 552 | [[package]] 553 | name = "darling" 554 | version = "0.10.2" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" 557 | dependencies = [ 558 | "darling_core", 559 | "darling_macro", 560 | ] 561 | 562 | [[package]] 563 | name = "darling_core" 564 | version = "0.10.2" 565 | source = "registry+https://github.com/rust-lang/crates.io-index" 566 | checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" 567 | dependencies = [ 568 | "fnv", 569 | "ident_case", 570 | "proc-macro2 1.0.39", 571 | "quote 1.0.8", 572 | "strsim 0.9.3", 573 | "syn 1.0.96", 574 | ] 575 | 576 | [[package]] 577 | name = "darling_macro" 578 | version = "0.10.2" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" 581 | dependencies = [ 582 | "darling_core", 583 | "quote 1.0.8", 584 | "syn 1.0.96", 585 | ] 586 | 587 | [[package]] 588 | name = "derivative" 589 | version = "2.2.0" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 592 | dependencies = [ 593 | "proc-macro2 1.0.39", 594 | "quote 1.0.8", 595 | "syn 1.0.96", 596 | ] 597 | 598 | [[package]] 599 | name = "digest" 600 | version = "0.8.1" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" 603 | dependencies = [ 604 | "generic-array", 605 | ] 606 | 607 | [[package]] 608 | name = "dirs" 609 | version = "1.0.5" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" 612 | dependencies = [ 613 | "libc", 614 | "redox_users", 615 | "winapi 0.3.9", 616 | ] 617 | 618 | [[package]] 619 | name = "encode_unicode" 620 | version = "0.3.6" 621 | source = "registry+https://github.com/rust-lang/crates.io-index" 622 | checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" 623 | 624 | [[package]] 625 | name = "encoding_rs" 626 | version = "0.8.26" 627 | source = "registry+https://github.com/rust-lang/crates.io-index" 628 | checksum = "801bbab217d7f79c0062f4f7205b5d4427c6d1a7bd7aafdd1475f7c59d62b283" 629 | dependencies = [ 630 | "cfg-if 1.0.0", 631 | ] 632 | 633 | [[package]] 634 | name = "enum-as-inner" 635 | version = "0.3.3" 636 | source = "registry+https://github.com/rust-lang/crates.io-index" 637 | checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" 638 | dependencies = [ 639 | "heck", 640 | "proc-macro2 1.0.39", 641 | "quote 1.0.8", 642 | "syn 1.0.96", 643 | ] 644 | 645 | [[package]] 646 | name = "err-derive" 647 | version = "0.2.4" 648 | source = "registry+https://github.com/rust-lang/crates.io-index" 649 | checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" 650 | dependencies = [ 651 | "proc-macro-error", 652 | "proc-macro2 1.0.39", 653 | "quote 1.0.8", 654 | "rustversion", 655 | "syn 1.0.96", 656 | "synstructure", 657 | ] 658 | 659 | [[package]] 660 | name = "event-listener" 661 | version = "2.5.1" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" 664 | 665 | [[package]] 666 | name = "fake-simd" 667 | version = "0.1.2" 668 | source = "registry+https://github.com/rust-lang/crates.io-index" 669 | checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" 670 | 671 | [[package]] 672 | name = "fastrand" 673 | version = "1.4.0" 674 | source = "registry+https://github.com/rust-lang/crates.io-index" 675 | checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" 676 | dependencies = [ 677 | "instant", 678 | ] 679 | 680 | [[package]] 681 | name = "fern" 682 | version = "0.6.1" 683 | source = "registry+https://github.com/rust-lang/crates.io-index" 684 | checksum = "3bdd7b0849075e79ee9a1836df22c717d1eba30451796fdc631b04565dd11e2a" 685 | dependencies = [ 686 | "log", 687 | ] 688 | 689 | [[package]] 690 | name = "flate2" 691 | version = "1.0.23" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af" 694 | dependencies = [ 695 | "cfg-if 1.0.0", 696 | "crc32fast", 697 | "libc", 698 | "miniz_oxide 0.5.1", 699 | ] 700 | 701 | [[package]] 702 | name = "flume" 703 | version = "0.9.2" 704 | source = "registry+https://github.com/rust-lang/crates.io-index" 705 | checksum = "1bebadab126f8120d410b677ed95eee4ba6eb7c6dd8e34a5ec88a08050e26132" 706 | dependencies = [ 707 | "futures-core", 708 | "futures-sink", 709 | "spinning_top", 710 | ] 711 | 712 | [[package]] 713 | name = "fnv" 714 | version = "1.0.7" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 717 | 718 | [[package]] 719 | name = "form_urlencoded" 720 | version = "1.0.0" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" 723 | dependencies = [ 724 | "matches", 725 | "percent-encoding", 726 | ] 727 | 728 | [[package]] 729 | name = "fuchsia-zircon" 730 | version = "0.3.3" 731 | source = "registry+https://github.com/rust-lang/crates.io-index" 732 | checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 733 | dependencies = [ 734 | "bitflags", 735 | "fuchsia-zircon-sys", 736 | ] 737 | 738 | [[package]] 739 | name = "fuchsia-zircon-sys" 740 | version = "0.3.3" 741 | source = "registry+https://github.com/rust-lang/crates.io-index" 742 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 743 | 744 | [[package]] 745 | name = "futures" 746 | version = "0.3.21" 747 | source = "registry+https://github.com/rust-lang/crates.io-index" 748 | checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" 749 | dependencies = [ 750 | "futures-channel", 751 | "futures-core", 752 | "futures-executor", 753 | "futures-io", 754 | "futures-sink", 755 | "futures-task", 756 | "futures-util", 757 | ] 758 | 759 | [[package]] 760 | name = "futures-channel" 761 | version = "0.3.21" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" 764 | dependencies = [ 765 | "futures-core", 766 | "futures-sink", 767 | ] 768 | 769 | [[package]] 770 | name = "futures-core" 771 | version = "0.3.21" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" 774 | 775 | [[package]] 776 | name = "futures-executor" 777 | version = "0.3.21" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" 780 | dependencies = [ 781 | "futures-core", 782 | "futures-task", 783 | "futures-util", 784 | ] 785 | 786 | [[package]] 787 | name = "futures-intrusive" 788 | version = "0.3.1" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "bc1529d07bd55fa54fc6c2d8460f621cfde0ae3fd2b96b2fa7eb4883478e1703" 791 | dependencies = [ 792 | "futures-core", 793 | "lock_api 0.3.4", 794 | "parking_lot", 795 | ] 796 | 797 | [[package]] 798 | name = "futures-io" 799 | version = "0.3.21" 800 | source = "registry+https://github.com/rust-lang/crates.io-index" 801 | checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" 802 | 803 | [[package]] 804 | name = "futures-lite" 805 | version = "1.11.3" 806 | source = "registry+https://github.com/rust-lang/crates.io-index" 807 | checksum = "b4481d0cd0de1d204a4fa55e7d45f07b1d958abcb06714b3446438e2eff695fb" 808 | dependencies = [ 809 | "fastrand", 810 | "futures-core", 811 | "futures-io", 812 | "memchr", 813 | "parking", 814 | "pin-project-lite 0.2.4", 815 | "waker-fn", 816 | ] 817 | 818 | [[package]] 819 | name = "futures-macro" 820 | version = "0.3.21" 821 | source = "registry+https://github.com/rust-lang/crates.io-index" 822 | checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" 823 | dependencies = [ 824 | "proc-macro2 1.0.39", 825 | "quote 1.0.8", 826 | "syn 1.0.96", 827 | ] 828 | 829 | [[package]] 830 | name = "futures-sink" 831 | version = "0.3.21" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" 834 | 835 | [[package]] 836 | name = "futures-task" 837 | version = "0.3.21" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" 840 | 841 | [[package]] 842 | name = "futures-util" 843 | version = "0.3.21" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" 846 | dependencies = [ 847 | "futures-channel", 848 | "futures-core", 849 | "futures-io", 850 | "futures-macro", 851 | "futures-sink", 852 | "futures-task", 853 | "memchr", 854 | "pin-project-lite 0.2.4", 855 | "pin-utils", 856 | "slab", 857 | ] 858 | 859 | [[package]] 860 | name = "generic-array" 861 | version = "0.12.4" 862 | source = "registry+https://github.com/rust-lang/crates.io-index" 863 | checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" 864 | dependencies = [ 865 | "typenum", 866 | ] 867 | 868 | [[package]] 869 | name = "getrandom" 870 | version = "0.1.16" 871 | source = "registry+https://github.com/rust-lang/crates.io-index" 872 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 873 | dependencies = [ 874 | "cfg-if 1.0.0", 875 | "libc", 876 | "wasi 0.9.0+wasi-snapshot-preview1", 877 | ] 878 | 879 | [[package]] 880 | name = "getrandom" 881 | version = "0.2.2" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" 884 | dependencies = [ 885 | "cfg-if 1.0.0", 886 | "libc", 887 | "wasi 0.10.0+wasi-snapshot-preview1", 888 | ] 889 | 890 | [[package]] 891 | name = "gimli" 892 | version = "0.23.0" 893 | source = "registry+https://github.com/rust-lang/crates.io-index" 894 | checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" 895 | 896 | [[package]] 897 | name = "gloo-timers" 898 | version = "0.2.1" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" 901 | dependencies = [ 902 | "futures-channel", 903 | "futures-core", 904 | "js-sys", 905 | "wasm-bindgen", 906 | "web-sys", 907 | ] 908 | 909 | [[package]] 910 | name = "hashbrown" 911 | version = "0.9.1" 912 | source = "registry+https://github.com/rust-lang/crates.io-index" 913 | checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" 914 | 915 | [[package]] 916 | name = "heck" 917 | version = "0.3.2" 918 | source = "registry+https://github.com/rust-lang/crates.io-index" 919 | checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" 920 | dependencies = [ 921 | "unicode-segmentation", 922 | ] 923 | 924 | [[package]] 925 | name = "hermit-abi" 926 | version = "0.1.18" 927 | source = "registry+https://github.com/rust-lang/crates.io-index" 928 | checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" 929 | dependencies = [ 930 | "libc", 931 | ] 932 | 933 | [[package]] 934 | name = "hex" 935 | version = "0.4.2" 936 | source = "registry+https://github.com/rust-lang/crates.io-index" 937 | checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" 938 | 939 | [[package]] 940 | name = "hmac" 941 | version = "0.7.1" 942 | source = "registry+https://github.com/rust-lang/crates.io-index" 943 | checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" 944 | dependencies = [ 945 | "crypto-mac", 946 | "digest", 947 | ] 948 | 949 | [[package]] 950 | name = "hostname" 951 | version = "0.3.1" 952 | source = "registry+https://github.com/rust-lang/crates.io-index" 953 | checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" 954 | dependencies = [ 955 | "libc", 956 | "match_cfg", 957 | "winapi 0.3.9", 958 | ] 959 | 960 | [[package]] 961 | name = "http" 962 | version = "0.2.3" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747" 965 | dependencies = [ 966 | "bytes 1.0.1", 967 | "fnv", 968 | "itoa 0.4.7", 969 | ] 970 | 971 | [[package]] 972 | name = "ident_case" 973 | version = "1.0.1" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 976 | 977 | [[package]] 978 | name = "idna" 979 | version = "0.2.0" 980 | source = "registry+https://github.com/rust-lang/crates.io-index" 981 | checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 982 | dependencies = [ 983 | "matches", 984 | "unicode-bidi", 985 | "unicode-normalization", 986 | ] 987 | 988 | [[package]] 989 | name = "indexmap" 990 | version = "1.6.1" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b" 993 | dependencies = [ 994 | "autocfg", 995 | "hashbrown", 996 | ] 997 | 998 | [[package]] 999 | name = "indicatif" 1000 | version = "0.16.2" 1001 | source = "registry+https://github.com/rust-lang/crates.io-index" 1002 | checksum = "2d207dc617c7a380ab07ff572a6e52fa202a2a8f355860ac9c38e23f8196be1b" 1003 | dependencies = [ 1004 | "console", 1005 | "lazy_static", 1006 | "number_prefix", 1007 | "regex", 1008 | ] 1009 | 1010 | [[package]] 1011 | name = "instant" 1012 | version = "0.1.9" 1013 | source = "registry+https://github.com/rust-lang/crates.io-index" 1014 | checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" 1015 | dependencies = [ 1016 | "cfg-if 1.0.0", 1017 | ] 1018 | 1019 | [[package]] 1020 | name = "iovec" 1021 | version = "0.1.4" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 1024 | dependencies = [ 1025 | "libc", 1026 | ] 1027 | 1028 | [[package]] 1029 | name = "ipconfig" 1030 | version = "0.2.2" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" 1033 | dependencies = [ 1034 | "socket2 0.3.19", 1035 | "widestring", 1036 | "winapi 0.3.9", 1037 | "winreg", 1038 | ] 1039 | 1040 | [[package]] 1041 | name = "isahc" 1042 | version = "0.9.14" 1043 | source = "registry+https://github.com/rust-lang/crates.io-index" 1044 | checksum = "e2948a0ce43e2c2ef11d7edf6816508998d99e13badd1150be0914205df9388a" 1045 | dependencies = [ 1046 | "bytes 0.5.6", 1047 | "crossbeam-utils", 1048 | "curl", 1049 | "curl-sys", 1050 | "encoding_rs", 1051 | "flume", 1052 | "futures-lite", 1053 | "http", 1054 | "log", 1055 | "mime", 1056 | "once_cell", 1057 | "slab", 1058 | "sluice", 1059 | "tracing", 1060 | "tracing-futures", 1061 | "url", 1062 | "waker-fn", 1063 | ] 1064 | 1065 | [[package]] 1066 | name = "itoa" 1067 | version = "0.4.7" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" 1070 | 1071 | [[package]] 1072 | name = "itoa" 1073 | version = "1.0.1" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" 1076 | 1077 | [[package]] 1078 | name = "js-sys" 1079 | version = "0.3.47" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" 1082 | dependencies = [ 1083 | "wasm-bindgen", 1084 | ] 1085 | 1086 | [[package]] 1087 | name = "kernel32-sys" 1088 | version = "0.2.2" 1089 | source = "registry+https://github.com/rust-lang/crates.io-index" 1090 | checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1091 | dependencies = [ 1092 | "winapi 0.2.8", 1093 | "winapi-build", 1094 | ] 1095 | 1096 | [[package]] 1097 | name = "kv-log-macro" 1098 | version = "1.0.7" 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" 1100 | checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 1101 | dependencies = [ 1102 | "log", 1103 | ] 1104 | 1105 | [[package]] 1106 | name = "lazy_static" 1107 | version = "1.4.0" 1108 | source = "registry+https://github.com/rust-lang/crates.io-index" 1109 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1110 | 1111 | [[package]] 1112 | name = "libc" 1113 | version = "0.2.126" 1114 | source = "registry+https://github.com/rust-lang/crates.io-index" 1115 | checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" 1116 | 1117 | [[package]] 1118 | name = "libnghttp2-sys" 1119 | version = "0.1.5+1.42.0" 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" 1121 | checksum = "9657455ff47889b70ffd37c3e118e8cdd23fd1f9f3293a285f141070621c4c79" 1122 | dependencies = [ 1123 | "cc", 1124 | "libc", 1125 | ] 1126 | 1127 | [[package]] 1128 | name = "libz-sys" 1129 | version = "1.1.2" 1130 | source = "registry+https://github.com/rust-lang/crates.io-index" 1131 | checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" 1132 | dependencies = [ 1133 | "cc", 1134 | "libc", 1135 | "pkg-config", 1136 | "vcpkg", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "linked-hash-map" 1141 | version = "0.5.4" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" 1144 | 1145 | [[package]] 1146 | name = "lock_api" 1147 | version = "0.3.4" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" 1150 | dependencies = [ 1151 | "scopeguard", 1152 | ] 1153 | 1154 | [[package]] 1155 | name = "lock_api" 1156 | version = "0.4.2" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" 1159 | dependencies = [ 1160 | "scopeguard", 1161 | ] 1162 | 1163 | [[package]] 1164 | name = "log" 1165 | version = "0.4.17" 1166 | source = "registry+https://github.com/rust-lang/crates.io-index" 1167 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 1168 | dependencies = [ 1169 | "cfg-if 1.0.0", 1170 | "value-bag", 1171 | ] 1172 | 1173 | [[package]] 1174 | name = "lru-cache" 1175 | version = "0.1.2" 1176 | source = "registry+https://github.com/rust-lang/crates.io-index" 1177 | checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" 1178 | dependencies = [ 1179 | "linked-hash-map", 1180 | ] 1181 | 1182 | [[package]] 1183 | name = "match_cfg" 1184 | version = "0.1.0" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" 1187 | 1188 | [[package]] 1189 | name = "matches" 1190 | version = "0.1.8" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 1193 | 1194 | [[package]] 1195 | name = "md-5" 1196 | version = "0.8.0" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | checksum = "a18af3dcaf2b0219366cdb4e2af65a6101457b415c3d1a5c71dd9c2b7c77b9c8" 1199 | dependencies = [ 1200 | "block-buffer", 1201 | "digest", 1202 | "opaque-debug", 1203 | ] 1204 | 1205 | [[package]] 1206 | name = "memchr" 1207 | version = "2.3.4" 1208 | source = "registry+https://github.com/rust-lang/crates.io-index" 1209 | checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" 1210 | 1211 | [[package]] 1212 | name = "mime" 1213 | version = "0.3.16" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 1216 | 1217 | [[package]] 1218 | name = "miniz_oxide" 1219 | version = "0.4.3" 1220 | source = "registry+https://github.com/rust-lang/crates.io-index" 1221 | checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" 1222 | dependencies = [ 1223 | "adler 0.2.3", 1224 | "autocfg", 1225 | ] 1226 | 1227 | [[package]] 1228 | name = "miniz_oxide" 1229 | version = "0.5.1" 1230 | source = "registry+https://github.com/rust-lang/crates.io-index" 1231 | checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082" 1232 | dependencies = [ 1233 | "adler 1.0.2", 1234 | ] 1235 | 1236 | [[package]] 1237 | name = "mio" 1238 | version = "0.6.23" 1239 | source = "registry+https://github.com/rust-lang/crates.io-index" 1240 | checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" 1241 | dependencies = [ 1242 | "cfg-if 0.1.10", 1243 | "fuchsia-zircon", 1244 | "fuchsia-zircon-sys", 1245 | "iovec", 1246 | "kernel32-sys", 1247 | "libc", 1248 | "log", 1249 | "miow", 1250 | "net2", 1251 | "slab", 1252 | "winapi 0.2.8", 1253 | ] 1254 | 1255 | [[package]] 1256 | name = "miow" 1257 | version = "0.2.2" 1258 | source = "registry+https://github.com/rust-lang/crates.io-index" 1259 | checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" 1260 | dependencies = [ 1261 | "kernel32-sys", 1262 | "net2", 1263 | "winapi 0.2.8", 1264 | "ws2_32-sys", 1265 | ] 1266 | 1267 | [[package]] 1268 | name = "mongodb" 1269 | version = "1.1.1" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | checksum = "a726495d7418c4579ecc9465b53ddade8187c0299e5db0e7250672b67d196913" 1272 | dependencies = [ 1273 | "async-std", 1274 | "async-trait", 1275 | "base64 0.11.0", 1276 | "bitflags", 1277 | "bson", 1278 | "chrono", 1279 | "derivative", 1280 | "err-derive", 1281 | "futures", 1282 | "futures-intrusive", 1283 | "hex", 1284 | "hmac", 1285 | "lazy_static", 1286 | "md-5", 1287 | "os_info", 1288 | "pbkdf2", 1289 | "percent-encoding", 1290 | "rand 0.7.3", 1291 | "rustls", 1292 | "serde", 1293 | "serde_with", 1294 | "sha-1", 1295 | "sha2", 1296 | "socket2 0.3.19", 1297 | "stringprep", 1298 | "strsim 0.10.0", 1299 | "take_mut", 1300 | "time", 1301 | "tokio", 1302 | "tokio-rustls", 1303 | "trust-dns-proto", 1304 | "trust-dns-resolver", 1305 | "typed-builder", 1306 | "uuid", 1307 | "version_check", 1308 | "webpki", 1309 | "webpki-roots", 1310 | ] 1311 | 1312 | [[package]] 1313 | name = "nb-connect" 1314 | version = "1.2.0" 1315 | source = "registry+https://github.com/rust-lang/crates.io-index" 1316 | checksum = "b1bb540dc6ef51cfe1916ec038ce7a620daf3a111e2502d745197cd53d6bca15" 1317 | dependencies = [ 1318 | "libc", 1319 | "socket2 0.4.4", 1320 | ] 1321 | 1322 | [[package]] 1323 | name = "net2" 1324 | version = "0.2.37" 1325 | source = "registry+https://github.com/rust-lang/crates.io-index" 1326 | checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" 1327 | dependencies = [ 1328 | "cfg-if 0.1.10", 1329 | "libc", 1330 | "winapi 0.3.9", 1331 | ] 1332 | 1333 | [[package]] 1334 | name = "num-integer" 1335 | version = "0.1.44" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" 1338 | dependencies = [ 1339 | "autocfg", 1340 | "num-traits", 1341 | ] 1342 | 1343 | [[package]] 1344 | name = "num-traits" 1345 | version = "0.2.14" 1346 | source = "registry+https://github.com/rust-lang/crates.io-index" 1347 | checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" 1348 | dependencies = [ 1349 | "autocfg", 1350 | ] 1351 | 1352 | [[package]] 1353 | name = "num_cpus" 1354 | version = "1.13.0" 1355 | source = "registry+https://github.com/rust-lang/crates.io-index" 1356 | checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" 1357 | dependencies = [ 1358 | "hermit-abi", 1359 | "libc", 1360 | ] 1361 | 1362 | [[package]] 1363 | name = "number_prefix" 1364 | version = "0.4.0" 1365 | source = "registry+https://github.com/rust-lang/crates.io-index" 1366 | checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" 1367 | 1368 | [[package]] 1369 | name = "object" 1370 | version = "0.23.0" 1371 | source = "registry+https://github.com/rust-lang/crates.io-index" 1372 | checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" 1373 | 1374 | [[package]] 1375 | name = "odcrawler_discovery" 1376 | version = "0.1.0" 1377 | dependencies = [ 1378 | "anyhow", 1379 | "async-std", 1380 | "async-trait", 1381 | "chrono", 1382 | "fern", 1383 | "flate2", 1384 | "futures", 1385 | "indicatif", 1386 | "isahc", 1387 | "log", 1388 | "rand 0.8.5", 1389 | "regex", 1390 | "serde", 1391 | "serde_json", 1392 | "shared", 1393 | "shrust", 1394 | "structopt", 1395 | "subprocess", 1396 | "wither", 1397 | ] 1398 | 1399 | [[package]] 1400 | name = "once_cell" 1401 | version = "1.5.2" 1402 | source = "registry+https://github.com/rust-lang/crates.io-index" 1403 | checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" 1404 | 1405 | [[package]] 1406 | name = "opaque-debug" 1407 | version = "0.2.3" 1408 | source = "registry+https://github.com/rust-lang/crates.io-index" 1409 | checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" 1410 | 1411 | [[package]] 1412 | name = "openssl-probe" 1413 | version = "0.1.2" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 1416 | 1417 | [[package]] 1418 | name = "openssl-sys" 1419 | version = "0.9.60" 1420 | source = "registry+https://github.com/rust-lang/crates.io-index" 1421 | checksum = "921fc71883267538946025deffb622905ecad223c28efbfdef9bb59a0175f3e6" 1422 | dependencies = [ 1423 | "autocfg", 1424 | "cc", 1425 | "libc", 1426 | "pkg-config", 1427 | "vcpkg", 1428 | ] 1429 | 1430 | [[package]] 1431 | name = "os_info" 1432 | version = "2.0.8" 1433 | source = "registry+https://github.com/rust-lang/crates.io-index" 1434 | checksum = "d2cc1b4330bb29087e791ae2a5cf56be64fb8946a4ff5aec2ba11c6ca51f5d60" 1435 | dependencies = [ 1436 | "log", 1437 | "winapi 0.3.9", 1438 | ] 1439 | 1440 | [[package]] 1441 | name = "parking" 1442 | version = "2.0.0" 1443 | source = "registry+https://github.com/rust-lang/crates.io-index" 1444 | checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" 1445 | 1446 | [[package]] 1447 | name = "parking_lot" 1448 | version = "0.10.2" 1449 | source = "registry+https://github.com/rust-lang/crates.io-index" 1450 | checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" 1451 | dependencies = [ 1452 | "lock_api 0.3.4", 1453 | "parking_lot_core", 1454 | ] 1455 | 1456 | [[package]] 1457 | name = "parking_lot_core" 1458 | version = "0.7.2" 1459 | source = "registry+https://github.com/rust-lang/crates.io-index" 1460 | checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" 1461 | dependencies = [ 1462 | "cfg-if 0.1.10", 1463 | "cloudabi", 1464 | "libc", 1465 | "redox_syscall", 1466 | "smallvec", 1467 | "winapi 0.3.9", 1468 | ] 1469 | 1470 | [[package]] 1471 | name = "pbkdf2" 1472 | version = "0.3.0" 1473 | source = "registry+https://github.com/rust-lang/crates.io-index" 1474 | checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" 1475 | dependencies = [ 1476 | "byteorder", 1477 | "crypto-mac", 1478 | ] 1479 | 1480 | [[package]] 1481 | name = "percent-encoding" 1482 | version = "2.1.0" 1483 | source = "registry+https://github.com/rust-lang/crates.io-index" 1484 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1485 | 1486 | [[package]] 1487 | name = "pin-project" 1488 | version = "0.4.27" 1489 | source = "registry+https://github.com/rust-lang/crates.io-index" 1490 | checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" 1491 | dependencies = [ 1492 | "pin-project-internal", 1493 | ] 1494 | 1495 | [[package]] 1496 | name = "pin-project-internal" 1497 | version = "0.4.27" 1498 | source = "registry+https://github.com/rust-lang/crates.io-index" 1499 | checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" 1500 | dependencies = [ 1501 | "proc-macro2 1.0.39", 1502 | "quote 1.0.8", 1503 | "syn 1.0.96", 1504 | ] 1505 | 1506 | [[package]] 1507 | name = "pin-project-lite" 1508 | version = "0.1.11" 1509 | source = "registry+https://github.com/rust-lang/crates.io-index" 1510 | checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" 1511 | 1512 | [[package]] 1513 | name = "pin-project-lite" 1514 | version = "0.2.4" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827" 1517 | 1518 | [[package]] 1519 | name = "pin-utils" 1520 | version = "0.1.0" 1521 | source = "registry+https://github.com/rust-lang/crates.io-index" 1522 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1523 | 1524 | [[package]] 1525 | name = "pkg-config" 1526 | version = "0.3.19" 1527 | source = "registry+https://github.com/rust-lang/crates.io-index" 1528 | checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" 1529 | 1530 | [[package]] 1531 | name = "polling" 1532 | version = "2.0.2" 1533 | source = "registry+https://github.com/rust-lang/crates.io-index" 1534 | checksum = "a2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4" 1535 | dependencies = [ 1536 | "cfg-if 0.1.10", 1537 | "libc", 1538 | "log", 1539 | "wepoll-sys", 1540 | "winapi 0.3.9", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "ppv-lite86" 1545 | version = "0.2.10" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" 1548 | 1549 | [[package]] 1550 | name = "prettytable-rs" 1551 | version = "0.8.0" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | checksum = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" 1554 | dependencies = [ 1555 | "atty", 1556 | "csv", 1557 | "encode_unicode", 1558 | "lazy_static", 1559 | "term", 1560 | "unicode-width", 1561 | ] 1562 | 1563 | [[package]] 1564 | name = "proc-macro-error" 1565 | version = "1.0.4" 1566 | source = "registry+https://github.com/rust-lang/crates.io-index" 1567 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 1568 | dependencies = [ 1569 | "proc-macro-error-attr", 1570 | "proc-macro2 1.0.39", 1571 | "quote 1.0.8", 1572 | "syn 1.0.96", 1573 | "version_check", 1574 | ] 1575 | 1576 | [[package]] 1577 | name = "proc-macro-error-attr" 1578 | version = "1.0.4" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 1581 | dependencies = [ 1582 | "proc-macro2 1.0.39", 1583 | "quote 1.0.8", 1584 | "version_check", 1585 | ] 1586 | 1587 | [[package]] 1588 | name = "proc-macro2" 1589 | version = "0.4.30" 1590 | source = "registry+https://github.com/rust-lang/crates.io-index" 1591 | checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" 1592 | dependencies = [ 1593 | "unicode-xid 0.1.0", 1594 | ] 1595 | 1596 | [[package]] 1597 | name = "proc-macro2" 1598 | version = "1.0.39" 1599 | source = "registry+https://github.com/rust-lang/crates.io-index" 1600 | checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" 1601 | dependencies = [ 1602 | "unicode-ident", 1603 | ] 1604 | 1605 | [[package]] 1606 | name = "quick-error" 1607 | version = "1.2.3" 1608 | source = "registry+https://github.com/rust-lang/crates.io-index" 1609 | checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" 1610 | 1611 | [[package]] 1612 | name = "quote" 1613 | version = "0.6.13" 1614 | source = "registry+https://github.com/rust-lang/crates.io-index" 1615 | checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" 1616 | dependencies = [ 1617 | "proc-macro2 0.4.30", 1618 | ] 1619 | 1620 | [[package]] 1621 | name = "quote" 1622 | version = "1.0.8" 1623 | source = "registry+https://github.com/rust-lang/crates.io-index" 1624 | checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" 1625 | dependencies = [ 1626 | "proc-macro2 1.0.39", 1627 | ] 1628 | 1629 | [[package]] 1630 | name = "rand" 1631 | version = "0.7.3" 1632 | source = "registry+https://github.com/rust-lang/crates.io-index" 1633 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 1634 | dependencies = [ 1635 | "getrandom 0.1.16", 1636 | "libc", 1637 | "rand_chacha 0.2.2", 1638 | "rand_core 0.5.1", 1639 | "rand_hc", 1640 | ] 1641 | 1642 | [[package]] 1643 | name = "rand" 1644 | version = "0.8.5" 1645 | source = "registry+https://github.com/rust-lang/crates.io-index" 1646 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1647 | dependencies = [ 1648 | "libc", 1649 | "rand_chacha 0.3.0", 1650 | "rand_core 0.6.1", 1651 | ] 1652 | 1653 | [[package]] 1654 | name = "rand_chacha" 1655 | version = "0.2.2" 1656 | source = "registry+https://github.com/rust-lang/crates.io-index" 1657 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 1658 | dependencies = [ 1659 | "ppv-lite86", 1660 | "rand_core 0.5.1", 1661 | ] 1662 | 1663 | [[package]] 1664 | name = "rand_chacha" 1665 | version = "0.3.0" 1666 | source = "registry+https://github.com/rust-lang/crates.io-index" 1667 | checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" 1668 | dependencies = [ 1669 | "ppv-lite86", 1670 | "rand_core 0.6.1", 1671 | ] 1672 | 1673 | [[package]] 1674 | name = "rand_core" 1675 | version = "0.5.1" 1676 | source = "registry+https://github.com/rust-lang/crates.io-index" 1677 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1678 | dependencies = [ 1679 | "getrandom 0.1.16", 1680 | ] 1681 | 1682 | [[package]] 1683 | name = "rand_core" 1684 | version = "0.6.1" 1685 | source = "registry+https://github.com/rust-lang/crates.io-index" 1686 | checksum = "c026d7df8b298d90ccbbc5190bd04d85e159eaf5576caeacf8741da93ccbd2e5" 1687 | dependencies = [ 1688 | "getrandom 0.2.2", 1689 | ] 1690 | 1691 | [[package]] 1692 | name = "rand_hc" 1693 | version = "0.2.0" 1694 | source = "registry+https://github.com/rust-lang/crates.io-index" 1695 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1696 | dependencies = [ 1697 | "rand_core 0.5.1", 1698 | ] 1699 | 1700 | [[package]] 1701 | name = "redox_syscall" 1702 | version = "0.1.57" 1703 | source = "registry+https://github.com/rust-lang/crates.io-index" 1704 | checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" 1705 | 1706 | [[package]] 1707 | name = "redox_users" 1708 | version = "0.3.5" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" 1711 | dependencies = [ 1712 | "getrandom 0.1.16", 1713 | "redox_syscall", 1714 | "rust-argon2", 1715 | ] 1716 | 1717 | [[package]] 1718 | name = "regex" 1719 | version = "1.4.6" 1720 | source = "registry+https://github.com/rust-lang/crates.io-index" 1721 | checksum = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759" 1722 | dependencies = [ 1723 | "aho-corasick", 1724 | "memchr", 1725 | "regex-syntax", 1726 | ] 1727 | 1728 | [[package]] 1729 | name = "regex-automata" 1730 | version = "0.1.9" 1731 | source = "registry+https://github.com/rust-lang/crates.io-index" 1732 | checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" 1733 | dependencies = [ 1734 | "byteorder", 1735 | ] 1736 | 1737 | [[package]] 1738 | name = "regex-syntax" 1739 | version = "0.6.22" 1740 | source = "registry+https://github.com/rust-lang/crates.io-index" 1741 | checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" 1742 | 1743 | [[package]] 1744 | name = "resolv-conf" 1745 | version = "0.7.0" 1746 | source = "registry+https://github.com/rust-lang/crates.io-index" 1747 | checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" 1748 | dependencies = [ 1749 | "hostname", 1750 | "quick-error", 1751 | ] 1752 | 1753 | [[package]] 1754 | name = "ring" 1755 | version = "0.16.20" 1756 | source = "registry+https://github.com/rust-lang/crates.io-index" 1757 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 1758 | dependencies = [ 1759 | "cc", 1760 | "libc", 1761 | "once_cell", 1762 | "spin", 1763 | "untrusted", 1764 | "web-sys", 1765 | "winapi 0.3.9", 1766 | ] 1767 | 1768 | [[package]] 1769 | name = "rust-argon2" 1770 | version = "0.8.3" 1771 | source = "registry+https://github.com/rust-lang/crates.io-index" 1772 | checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" 1773 | dependencies = [ 1774 | "base64 0.13.0", 1775 | "blake2b_simd", 1776 | "constant_time_eq", 1777 | "crossbeam-utils", 1778 | ] 1779 | 1780 | [[package]] 1781 | name = "rustc-demangle" 1782 | version = "0.1.18" 1783 | source = "registry+https://github.com/rust-lang/crates.io-index" 1784 | checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" 1785 | 1786 | [[package]] 1787 | name = "rustls" 1788 | version = "0.17.0" 1789 | source = "registry+https://github.com/rust-lang/crates.io-index" 1790 | checksum = "c0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1" 1791 | dependencies = [ 1792 | "base64 0.11.0", 1793 | "log", 1794 | "ring", 1795 | "sct", 1796 | "webpki", 1797 | ] 1798 | 1799 | [[package]] 1800 | name = "rustversion" 1801 | version = "1.0.4" 1802 | source = "registry+https://github.com/rust-lang/crates.io-index" 1803 | checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" 1804 | 1805 | [[package]] 1806 | name = "ryu" 1807 | version = "1.0.5" 1808 | source = "registry+https://github.com/rust-lang/crates.io-index" 1809 | checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" 1810 | 1811 | [[package]] 1812 | name = "schannel" 1813 | version = "0.1.19" 1814 | source = "registry+https://github.com/rust-lang/crates.io-index" 1815 | checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" 1816 | dependencies = [ 1817 | "lazy_static", 1818 | "winapi 0.3.9", 1819 | ] 1820 | 1821 | [[package]] 1822 | name = "scopeguard" 1823 | version = "1.1.0" 1824 | source = "registry+https://github.com/rust-lang/crates.io-index" 1825 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1826 | 1827 | [[package]] 1828 | name = "sct" 1829 | version = "0.6.0" 1830 | source = "registry+https://github.com/rust-lang/crates.io-index" 1831 | checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" 1832 | dependencies = [ 1833 | "ring", 1834 | "untrusted", 1835 | ] 1836 | 1837 | [[package]] 1838 | name = "serde" 1839 | version = "1.0.139" 1840 | source = "registry+https://github.com/rust-lang/crates.io-index" 1841 | checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6" 1842 | dependencies = [ 1843 | "serde_derive", 1844 | ] 1845 | 1846 | [[package]] 1847 | name = "serde_derive" 1848 | version = "1.0.139" 1849 | source = "registry+https://github.com/rust-lang/crates.io-index" 1850 | checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb" 1851 | dependencies = [ 1852 | "proc-macro2 1.0.39", 1853 | "quote 1.0.8", 1854 | "syn 1.0.96", 1855 | ] 1856 | 1857 | [[package]] 1858 | name = "serde_json" 1859 | version = "1.0.81" 1860 | source = "registry+https://github.com/rust-lang/crates.io-index" 1861 | checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" 1862 | dependencies = [ 1863 | "indexmap", 1864 | "itoa 1.0.1", 1865 | "ryu", 1866 | "serde", 1867 | ] 1868 | 1869 | [[package]] 1870 | name = "serde_with" 1871 | version = "1.6.2" 1872 | source = "registry+https://github.com/rust-lang/crates.io-index" 1873 | checksum = "42fa8fb0da0bf5aa7dd5d8fe1f9ec769833eb7cf97ff89942903809e600de908" 1874 | dependencies = [ 1875 | "serde", 1876 | "serde_with_macros", 1877 | ] 1878 | 1879 | [[package]] 1880 | name = "serde_with_macros" 1881 | version = "1.3.0" 1882 | source = "registry+https://github.com/rust-lang/crates.io-index" 1883 | checksum = "1197ff7de45494f290c1e3e1a6f80e108974681984c87a3e480991ef3d0f1950" 1884 | dependencies = [ 1885 | "darling", 1886 | "proc-macro2 1.0.39", 1887 | "quote 1.0.8", 1888 | "syn 1.0.96", 1889 | ] 1890 | 1891 | [[package]] 1892 | name = "sha-1" 1893 | version = "0.8.2" 1894 | source = "registry+https://github.com/rust-lang/crates.io-index" 1895 | checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" 1896 | dependencies = [ 1897 | "block-buffer", 1898 | "digest", 1899 | "fake-simd", 1900 | "opaque-debug", 1901 | ] 1902 | 1903 | [[package]] 1904 | name = "sha2" 1905 | version = "0.8.2" 1906 | source = "registry+https://github.com/rust-lang/crates.io-index" 1907 | checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" 1908 | dependencies = [ 1909 | "block-buffer", 1910 | "digest", 1911 | "fake-simd", 1912 | "opaque-debug", 1913 | ] 1914 | 1915 | [[package]] 1916 | name = "shared" 1917 | version = "0.1.0" 1918 | dependencies = [ 1919 | "anyhow", 1920 | "chrono", 1921 | "log", 1922 | "serde", 1923 | "wither", 1924 | ] 1925 | 1926 | [[package]] 1927 | name = "shrust" 1928 | version = "0.0.7" 1929 | source = "registry+https://github.com/rust-lang/crates.io-index" 1930 | checksum = "8839836a10bcc0a6920610f885c61cd651c863ff90840bd598dcb970a27d12c1" 1931 | dependencies = [ 1932 | "prettytable-rs", 1933 | ] 1934 | 1935 | [[package]] 1936 | name = "slab" 1937 | version = "0.4.2" 1938 | source = "registry+https://github.com/rust-lang/crates.io-index" 1939 | checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1940 | 1941 | [[package]] 1942 | name = "sluice" 1943 | version = "0.5.4" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "8fa0333a60ff2e3474a6775cc611840c2a55610c831dd366503474c02f1a28f5" 1946 | dependencies = [ 1947 | "futures-channel", 1948 | "futures-core", 1949 | "futures-io", 1950 | ] 1951 | 1952 | [[package]] 1953 | name = "smallvec" 1954 | version = "1.6.1" 1955 | source = "registry+https://github.com/rust-lang/crates.io-index" 1956 | checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" 1957 | 1958 | [[package]] 1959 | name = "socket2" 1960 | version = "0.3.19" 1961 | source = "registry+https://github.com/rust-lang/crates.io-index" 1962 | checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" 1963 | dependencies = [ 1964 | "cfg-if 1.0.0", 1965 | "libc", 1966 | "winapi 0.3.9", 1967 | ] 1968 | 1969 | [[package]] 1970 | name = "socket2" 1971 | version = "0.4.4" 1972 | source = "registry+https://github.com/rust-lang/crates.io-index" 1973 | checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" 1974 | dependencies = [ 1975 | "libc", 1976 | "winapi 0.3.9", 1977 | ] 1978 | 1979 | [[package]] 1980 | name = "spin" 1981 | version = "0.5.2" 1982 | source = "registry+https://github.com/rust-lang/crates.io-index" 1983 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 1984 | 1985 | [[package]] 1986 | name = "spinning_top" 1987 | version = "0.2.2" 1988 | source = "registry+https://github.com/rust-lang/crates.io-index" 1989 | checksum = "7e529d73e80d64b5f2631f9035113347c578a1c9c7774b83a2b880788459ab36" 1990 | dependencies = [ 1991 | "lock_api 0.4.2", 1992 | ] 1993 | 1994 | [[package]] 1995 | name = "stringprep" 1996 | version = "0.1.2" 1997 | source = "registry+https://github.com/rust-lang/crates.io-index" 1998 | checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" 1999 | dependencies = [ 2000 | "unicode-bidi", 2001 | "unicode-normalization", 2002 | ] 2003 | 2004 | [[package]] 2005 | name = "strsim" 2006 | version = "0.8.0" 2007 | source = "registry+https://github.com/rust-lang/crates.io-index" 2008 | checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 2009 | 2010 | [[package]] 2011 | name = "strsim" 2012 | version = "0.9.3" 2013 | source = "registry+https://github.com/rust-lang/crates.io-index" 2014 | checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" 2015 | 2016 | [[package]] 2017 | name = "strsim" 2018 | version = "0.10.0" 2019 | source = "registry+https://github.com/rust-lang/crates.io-index" 2020 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 2021 | 2022 | [[package]] 2023 | name = "structopt" 2024 | version = "0.3.26" 2025 | source = "registry+https://github.com/rust-lang/crates.io-index" 2026 | checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" 2027 | dependencies = [ 2028 | "clap", 2029 | "lazy_static", 2030 | "structopt-derive", 2031 | ] 2032 | 2033 | [[package]] 2034 | name = "structopt-derive" 2035 | version = "0.4.18" 2036 | source = "registry+https://github.com/rust-lang/crates.io-index" 2037 | checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" 2038 | dependencies = [ 2039 | "heck", 2040 | "proc-macro-error", 2041 | "proc-macro2 1.0.39", 2042 | "quote 1.0.8", 2043 | "syn 1.0.96", 2044 | ] 2045 | 2046 | [[package]] 2047 | name = "subprocess" 2048 | version = "0.2.9" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086" 2051 | dependencies = [ 2052 | "libc", 2053 | "winapi 0.3.9", 2054 | ] 2055 | 2056 | [[package]] 2057 | name = "subtle" 2058 | version = "1.0.0" 2059 | source = "registry+https://github.com/rust-lang/crates.io-index" 2060 | checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" 2061 | 2062 | [[package]] 2063 | name = "syn" 2064 | version = "0.15.44" 2065 | source = "registry+https://github.com/rust-lang/crates.io-index" 2066 | checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" 2067 | dependencies = [ 2068 | "proc-macro2 0.4.30", 2069 | "quote 0.6.13", 2070 | "unicode-xid 0.1.0", 2071 | ] 2072 | 2073 | [[package]] 2074 | name = "syn" 2075 | version = "1.0.96" 2076 | source = "registry+https://github.com/rust-lang/crates.io-index" 2077 | checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf" 2078 | dependencies = [ 2079 | "proc-macro2 1.0.39", 2080 | "quote 1.0.8", 2081 | "unicode-ident", 2082 | ] 2083 | 2084 | [[package]] 2085 | name = "synstructure" 2086 | version = "0.12.4" 2087 | source = "registry+https://github.com/rust-lang/crates.io-index" 2088 | checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" 2089 | dependencies = [ 2090 | "proc-macro2 1.0.39", 2091 | "quote 1.0.8", 2092 | "syn 1.0.96", 2093 | "unicode-xid 0.2.1", 2094 | ] 2095 | 2096 | [[package]] 2097 | name = "take_mut" 2098 | version = "0.2.2" 2099 | source = "registry+https://github.com/rust-lang/crates.io-index" 2100 | checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" 2101 | 2102 | [[package]] 2103 | name = "term" 2104 | version = "0.5.2" 2105 | source = "registry+https://github.com/rust-lang/crates.io-index" 2106 | checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" 2107 | dependencies = [ 2108 | "byteorder", 2109 | "dirs", 2110 | "winapi 0.3.9", 2111 | ] 2112 | 2113 | [[package]] 2114 | name = "terminal_size" 2115 | version = "0.1.16" 2116 | source = "registry+https://github.com/rust-lang/crates.io-index" 2117 | checksum = "86ca8ced750734db02076f44132d802af0b33b09942331f4459dde8636fd2406" 2118 | dependencies = [ 2119 | "libc", 2120 | "winapi 0.3.9", 2121 | ] 2122 | 2123 | [[package]] 2124 | name = "textwrap" 2125 | version = "0.11.0" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 2128 | dependencies = [ 2129 | "unicode-width", 2130 | ] 2131 | 2132 | [[package]] 2133 | name = "thiserror" 2134 | version = "1.0.23" 2135 | source = "registry+https://github.com/rust-lang/crates.io-index" 2136 | checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" 2137 | dependencies = [ 2138 | "thiserror-impl", 2139 | ] 2140 | 2141 | [[package]] 2142 | name = "thiserror-impl" 2143 | version = "1.0.23" 2144 | source = "registry+https://github.com/rust-lang/crates.io-index" 2145 | checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" 2146 | dependencies = [ 2147 | "proc-macro2 1.0.39", 2148 | "quote 1.0.8", 2149 | "syn 1.0.96", 2150 | ] 2151 | 2152 | [[package]] 2153 | name = "time" 2154 | version = "0.1.44" 2155 | source = "registry+https://github.com/rust-lang/crates.io-index" 2156 | checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 2157 | dependencies = [ 2158 | "libc", 2159 | "wasi 0.10.0+wasi-snapshot-preview1", 2160 | "winapi 0.3.9", 2161 | ] 2162 | 2163 | [[package]] 2164 | name = "tinyvec" 2165 | version = "1.1.1" 2166 | source = "registry+https://github.com/rust-lang/crates.io-index" 2167 | checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" 2168 | dependencies = [ 2169 | "tinyvec_macros", 2170 | ] 2171 | 2172 | [[package]] 2173 | name = "tinyvec_macros" 2174 | version = "0.1.0" 2175 | source = "registry+https://github.com/rust-lang/crates.io-index" 2176 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 2177 | 2178 | [[package]] 2179 | name = "tokio" 2180 | version = "0.2.25" 2181 | source = "registry+https://github.com/rust-lang/crates.io-index" 2182 | checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" 2183 | dependencies = [ 2184 | "bytes 0.5.6", 2185 | "fnv", 2186 | "iovec", 2187 | "lazy_static", 2188 | "memchr", 2189 | "mio", 2190 | "pin-project-lite 0.1.11", 2191 | "slab", 2192 | ] 2193 | 2194 | [[package]] 2195 | name = "tokio-rustls" 2196 | version = "0.13.1" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | checksum = "15cb62a0d2770787abc96e99c1cd98fcf17f94959f3af63ca85bdfb203f051b4" 2199 | dependencies = [ 2200 | "futures-core", 2201 | "rustls", 2202 | "tokio", 2203 | "webpki", 2204 | ] 2205 | 2206 | [[package]] 2207 | name = "tracing" 2208 | version = "0.1.22" 2209 | source = "registry+https://github.com/rust-lang/crates.io-index" 2210 | checksum = "9f47026cdc4080c07e49b37087de021820269d996f581aac150ef9e5583eefe3" 2211 | dependencies = [ 2212 | "cfg-if 1.0.0", 2213 | "log", 2214 | "pin-project-lite 0.2.4", 2215 | "tracing-attributes", 2216 | "tracing-core", 2217 | ] 2218 | 2219 | [[package]] 2220 | name = "tracing-attributes" 2221 | version = "0.1.11" 2222 | source = "registry+https://github.com/rust-lang/crates.io-index" 2223 | checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" 2224 | dependencies = [ 2225 | "proc-macro2 1.0.39", 2226 | "quote 1.0.8", 2227 | "syn 1.0.96", 2228 | ] 2229 | 2230 | [[package]] 2231 | name = "tracing-core" 2232 | version = "0.1.17" 2233 | source = "registry+https://github.com/rust-lang/crates.io-index" 2234 | checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" 2235 | dependencies = [ 2236 | "lazy_static", 2237 | ] 2238 | 2239 | [[package]] 2240 | name = "tracing-futures" 2241 | version = "0.2.4" 2242 | source = "registry+https://github.com/rust-lang/crates.io-index" 2243 | checksum = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c" 2244 | dependencies = [ 2245 | "pin-project", 2246 | "tracing", 2247 | ] 2248 | 2249 | [[package]] 2250 | name = "trust-dns-proto" 2251 | version = "0.19.6" 2252 | source = "registry+https://github.com/rust-lang/crates.io-index" 2253 | checksum = "53861fcb288a166aae4c508ae558ed18b53838db728d4d310aad08270a7d4c2b" 2254 | dependencies = [ 2255 | "async-trait", 2256 | "backtrace", 2257 | "enum-as-inner", 2258 | "futures", 2259 | "idna", 2260 | "lazy_static", 2261 | "log", 2262 | "rand 0.7.3", 2263 | "smallvec", 2264 | "thiserror", 2265 | "tokio", 2266 | "url", 2267 | ] 2268 | 2269 | [[package]] 2270 | name = "trust-dns-resolver" 2271 | version = "0.19.6" 2272 | source = "registry+https://github.com/rust-lang/crates.io-index" 2273 | checksum = "6759e8efc40465547b0dfce9500d733c65f969a4cbbfbe3ccf68daaa46ef179e" 2274 | dependencies = [ 2275 | "backtrace", 2276 | "cfg-if 0.1.10", 2277 | "futures", 2278 | "ipconfig", 2279 | "lazy_static", 2280 | "log", 2281 | "lru-cache", 2282 | "resolv-conf", 2283 | "smallvec", 2284 | "thiserror", 2285 | "tokio", 2286 | "trust-dns-proto", 2287 | ] 2288 | 2289 | [[package]] 2290 | name = "typed-builder" 2291 | version = "0.3.0" 2292 | source = "registry+https://github.com/rust-lang/crates.io-index" 2293 | checksum = "7e38507a437aef3b8ead39616219615ff9320d0eb0907f0dce51ea0474889cc6" 2294 | dependencies = [ 2295 | "proc-macro2 0.4.30", 2296 | "quote 0.6.13", 2297 | "syn 0.15.44", 2298 | ] 2299 | 2300 | [[package]] 2301 | name = "typenum" 2302 | version = "1.12.0" 2303 | source = "registry+https://github.com/rust-lang/crates.io-index" 2304 | checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" 2305 | 2306 | [[package]] 2307 | name = "unicode-bidi" 2308 | version = "0.3.4" 2309 | source = "registry+https://github.com/rust-lang/crates.io-index" 2310 | checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 2311 | dependencies = [ 2312 | "matches", 2313 | ] 2314 | 2315 | [[package]] 2316 | name = "unicode-ident" 2317 | version = "1.0.0" 2318 | source = "registry+https://github.com/rust-lang/crates.io-index" 2319 | checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" 2320 | 2321 | [[package]] 2322 | name = "unicode-normalization" 2323 | version = "0.1.16" 2324 | source = "registry+https://github.com/rust-lang/crates.io-index" 2325 | checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606" 2326 | dependencies = [ 2327 | "tinyvec", 2328 | ] 2329 | 2330 | [[package]] 2331 | name = "unicode-segmentation" 2332 | version = "1.7.1" 2333 | source = "registry+https://github.com/rust-lang/crates.io-index" 2334 | checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" 2335 | 2336 | [[package]] 2337 | name = "unicode-width" 2338 | version = "0.1.8" 2339 | source = "registry+https://github.com/rust-lang/crates.io-index" 2340 | checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" 2341 | 2342 | [[package]] 2343 | name = "unicode-xid" 2344 | version = "0.1.0" 2345 | source = "registry+https://github.com/rust-lang/crates.io-index" 2346 | checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 2347 | 2348 | [[package]] 2349 | name = "unicode-xid" 2350 | version = "0.2.1" 2351 | source = "registry+https://github.com/rust-lang/crates.io-index" 2352 | checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" 2353 | 2354 | [[package]] 2355 | name = "untrusted" 2356 | version = "0.7.1" 2357 | source = "registry+https://github.com/rust-lang/crates.io-index" 2358 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 2359 | 2360 | [[package]] 2361 | name = "url" 2362 | version = "2.2.0" 2363 | source = "registry+https://github.com/rust-lang/crates.io-index" 2364 | checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" 2365 | dependencies = [ 2366 | "form_urlencoded", 2367 | "idna", 2368 | "matches", 2369 | "percent-encoding", 2370 | ] 2371 | 2372 | [[package]] 2373 | name = "uuid" 2374 | version = "0.8.2" 2375 | source = "registry+https://github.com/rust-lang/crates.io-index" 2376 | checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" 2377 | dependencies = [ 2378 | "getrandom 0.2.2", 2379 | ] 2380 | 2381 | [[package]] 2382 | name = "value-bag" 2383 | version = "1.0.0-alpha.9" 2384 | source = "registry+https://github.com/rust-lang/crates.io-index" 2385 | checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" 2386 | dependencies = [ 2387 | "ctor", 2388 | "version_check", 2389 | ] 2390 | 2391 | [[package]] 2392 | name = "vcpkg" 2393 | version = "0.2.11" 2394 | source = "registry+https://github.com/rust-lang/crates.io-index" 2395 | checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" 2396 | 2397 | [[package]] 2398 | name = "vec-arena" 2399 | version = "1.0.0" 2400 | source = "registry+https://github.com/rust-lang/crates.io-index" 2401 | checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" 2402 | 2403 | [[package]] 2404 | name = "vec_map" 2405 | version = "0.8.2" 2406 | source = "registry+https://github.com/rust-lang/crates.io-index" 2407 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 2408 | 2409 | [[package]] 2410 | name = "version_check" 2411 | version = "0.9.2" 2412 | source = "registry+https://github.com/rust-lang/crates.io-index" 2413 | checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" 2414 | 2415 | [[package]] 2416 | name = "waker-fn" 2417 | version = "1.1.0" 2418 | source = "registry+https://github.com/rust-lang/crates.io-index" 2419 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 2420 | 2421 | [[package]] 2422 | name = "wasi" 2423 | version = "0.9.0+wasi-snapshot-preview1" 2424 | source = "registry+https://github.com/rust-lang/crates.io-index" 2425 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 2426 | 2427 | [[package]] 2428 | name = "wasi" 2429 | version = "0.10.0+wasi-snapshot-preview1" 2430 | source = "registry+https://github.com/rust-lang/crates.io-index" 2431 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 2432 | 2433 | [[package]] 2434 | name = "wasm-bindgen" 2435 | version = "0.2.70" 2436 | source = "registry+https://github.com/rust-lang/crates.io-index" 2437 | checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be" 2438 | dependencies = [ 2439 | "cfg-if 1.0.0", 2440 | "wasm-bindgen-macro", 2441 | ] 2442 | 2443 | [[package]] 2444 | name = "wasm-bindgen-backend" 2445 | version = "0.2.70" 2446 | source = "registry+https://github.com/rust-lang/crates.io-index" 2447 | checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7" 2448 | dependencies = [ 2449 | "bumpalo", 2450 | "lazy_static", 2451 | "log", 2452 | "proc-macro2 1.0.39", 2453 | "quote 1.0.8", 2454 | "syn 1.0.96", 2455 | "wasm-bindgen-shared", 2456 | ] 2457 | 2458 | [[package]] 2459 | name = "wasm-bindgen-futures" 2460 | version = "0.4.20" 2461 | source = "registry+https://github.com/rust-lang/crates.io-index" 2462 | checksum = "3de431a2910c86679c34283a33f66f4e4abd7e0aec27b6669060148872aadf94" 2463 | dependencies = [ 2464 | "cfg-if 1.0.0", 2465 | "js-sys", 2466 | "wasm-bindgen", 2467 | "web-sys", 2468 | ] 2469 | 2470 | [[package]] 2471 | name = "wasm-bindgen-macro" 2472 | version = "0.2.70" 2473 | source = "registry+https://github.com/rust-lang/crates.io-index" 2474 | checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c" 2475 | dependencies = [ 2476 | "quote 1.0.8", 2477 | "wasm-bindgen-macro-support", 2478 | ] 2479 | 2480 | [[package]] 2481 | name = "wasm-bindgen-macro-support" 2482 | version = "0.2.70" 2483 | source = "registry+https://github.com/rust-lang/crates.io-index" 2484 | checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385" 2485 | dependencies = [ 2486 | "proc-macro2 1.0.39", 2487 | "quote 1.0.8", 2488 | "syn 1.0.96", 2489 | "wasm-bindgen-backend", 2490 | "wasm-bindgen-shared", 2491 | ] 2492 | 2493 | [[package]] 2494 | name = "wasm-bindgen-shared" 2495 | version = "0.2.70" 2496 | source = "registry+https://github.com/rust-lang/crates.io-index" 2497 | checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64" 2498 | 2499 | [[package]] 2500 | name = "web-sys" 2501 | version = "0.3.47" 2502 | source = "registry+https://github.com/rust-lang/crates.io-index" 2503 | checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" 2504 | dependencies = [ 2505 | "js-sys", 2506 | "wasm-bindgen", 2507 | ] 2508 | 2509 | [[package]] 2510 | name = "webpki" 2511 | version = "0.21.4" 2512 | source = "registry+https://github.com/rust-lang/crates.io-index" 2513 | checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" 2514 | dependencies = [ 2515 | "ring", 2516 | "untrusted", 2517 | ] 2518 | 2519 | [[package]] 2520 | name = "webpki-roots" 2521 | version = "0.18.0" 2522 | source = "registry+https://github.com/rust-lang/crates.io-index" 2523 | checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" 2524 | dependencies = [ 2525 | "webpki", 2526 | ] 2527 | 2528 | [[package]] 2529 | name = "wepoll-sys" 2530 | version = "3.0.1" 2531 | source = "registry+https://github.com/rust-lang/crates.io-index" 2532 | checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" 2533 | dependencies = [ 2534 | "cc", 2535 | ] 2536 | 2537 | [[package]] 2538 | name = "widestring" 2539 | version = "0.4.3" 2540 | source = "registry+https://github.com/rust-lang/crates.io-index" 2541 | checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" 2542 | 2543 | [[package]] 2544 | name = "winapi" 2545 | version = "0.2.8" 2546 | source = "registry+https://github.com/rust-lang/crates.io-index" 2547 | checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 2548 | 2549 | [[package]] 2550 | name = "winapi" 2551 | version = "0.3.9" 2552 | source = "registry+https://github.com/rust-lang/crates.io-index" 2553 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2554 | dependencies = [ 2555 | "winapi-i686-pc-windows-gnu", 2556 | "winapi-x86_64-pc-windows-gnu", 2557 | ] 2558 | 2559 | [[package]] 2560 | name = "winapi-build" 2561 | version = "0.1.1" 2562 | source = "registry+https://github.com/rust-lang/crates.io-index" 2563 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 2564 | 2565 | [[package]] 2566 | name = "winapi-i686-pc-windows-gnu" 2567 | version = "0.4.0" 2568 | source = "registry+https://github.com/rust-lang/crates.io-index" 2569 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2570 | 2571 | [[package]] 2572 | name = "winapi-x86_64-pc-windows-gnu" 2573 | version = "0.4.0" 2574 | source = "registry+https://github.com/rust-lang/crates.io-index" 2575 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2576 | 2577 | [[package]] 2578 | name = "winreg" 2579 | version = "0.6.2" 2580 | source = "registry+https://github.com/rust-lang/crates.io-index" 2581 | checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" 2582 | dependencies = [ 2583 | "winapi 0.3.9", 2584 | ] 2585 | 2586 | [[package]] 2587 | name = "wither" 2588 | version = "0.9.0" 2589 | source = "registry+https://github.com/rust-lang/crates.io-index" 2590 | checksum = "45e6fce5f641da433789cf4376cd698874666bf2741eb4d72444b4006cc0954a" 2591 | dependencies = [ 2592 | "async-trait", 2593 | "chrono", 2594 | "futures", 2595 | "log", 2596 | "mongodb", 2597 | "serde", 2598 | "thiserror", 2599 | "wither_derive", 2600 | ] 2601 | 2602 | [[package]] 2603 | name = "wither_derive" 2604 | version = "0.9.0" 2605 | source = "registry+https://github.com/rust-lang/crates.io-index" 2606 | checksum = "c7cc57cffdfd2239926b5b9e068591944444c71c8e9baa2bd1cbde3492d78973" 2607 | dependencies = [ 2608 | "Inflector", 2609 | "async-trait", 2610 | "darling", 2611 | "proc-macro-error", 2612 | "proc-macro2 1.0.39", 2613 | "quote 1.0.8", 2614 | "serde", 2615 | "syn 1.0.96", 2616 | ] 2617 | 2618 | [[package]] 2619 | name = "ws2_32-sys" 2620 | version = "0.2.1" 2621 | source = "registry+https://github.com/rust-lang/crates.io-index" 2622 | checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 2623 | dependencies = [ 2624 | "winapi 0.2.8", 2625 | "winapi-build", 2626 | ] 2627 | --------------------------------------------------------------------------------