"]
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 | | URL |
15 | Dead |
16 | Links |
17 |
18 |
19 | {% for od in ods %}
20 |
21 | | {{ od.url }} |
22 | {{ od.dead }} |
23 | Click |
24 |
25 | {% endfor %}
26 |
27 |
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 |
--------------------------------------------------------------------------------