From d675902fd59727692abe149280517e81051a8d8e Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:26:27 +0900 Subject: [PATCH 01/97] =?UTF-8?q?chore(layer):=20extensions/zankyo=20?= =?UTF-8?q?=E3=81=AE=E5=AE=9F=E8=A1=8C=E3=83=93=E3=83=83=E3=83=88=E3=82=92?= =?UTF-8?q?=20git=20=E4=B8=8A=E3=81=A7=E3=82=82=E6=8F=83=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit zankyo-wrapper は 100755 なのに extensions/zankyo だけ 100644 だった。 zip 化は build-layer.mts の chmod で補正されるが、Layer ディレクトリを 直接使う経路では external extension が Permission denied で起動しない。 --- proxy/layer/extensions/zankyo | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 proxy/layer/extensions/zankyo diff --git a/proxy/layer/extensions/zankyo b/proxy/layer/extensions/zankyo old mode 100644 new mode 100755 From 6db56d92b9c5e6e5ecf8bbccdfb405b8b108b811 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:26:48 +0900 Subject: [PATCH 02/97] =?UTF-8?q?chore(proxy):=20MSRV=20=E3=82=92=E4=BE=9D?= =?UTF-8?q?=E5=AD=98=E3=81=AE=E5=AE=9F=E8=A6=81=E4=BB=B6=201.94.1=20?= =?UTF-8?q?=E3=81=AB=E5=90=88=E3=82=8F=E3=81=9B=E3=81=A6=20CI=20=E3=81=A7?= =?UTF-8?q?=E6=A4=9C=E8=A8=BC=E3=81=97=E3=80=81crates.io=20=E5=85=AC?= =?UTF-8?q?=E9=96=8B=E3=82=92=E6=AD=A2=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rust-version は 1.85 だったが、ロック済みの aws-sdk-* / aws-smithy-* は 1.94.1 を要求していた(cargo metadata で最大値を確認)。 宣言値を 1.94.1 に上げ、proxy/Cargo.toml の値でビルドを確かめる rust-msrv ジョブを CI に追加する。MSRV が上がり clippy の manual_is_multiple_of が有効になったため、Luhn 判定を is_multiple_of にする。 配布物は Layer zip / SAR / npm なので publish = false を明示する。 --- .github/workflows/ci.yml | 15 +++++++++++++++ README.md | 3 ++- proxy/Cargo.toml | 5 ++++- proxy/src/scrub_data.rs | 2 +- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0f7bcc4..211d953 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,6 +41,21 @@ jobs: - run: cargo clippy --workspace --all-targets -- -D warnings - run: cargo test --workspace + rust-msrv: + name: rust (MSRV) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + # proxy/Cargo.toml の rust-version を正とし、rust-toolchain.toml より + # 古い宣言値でもビルドできることを確かめる(RUSTUP_TOOLCHAIN が toml に優先する) + - name: install the declared rust-version + run: | + msrv=$(sed -n 's/^rust-version = "\(.*\)"/\1/p' proxy/Cargo.toml) + rustup toolchain install "$msrv" --profile minimal + echo "RUSTUP_TOOLCHAIN=$msrv" >> "$GITHUB_ENV" + - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2 + - run: cargo check --locked --workspace --all-targets + audit: name: dependency audit runs-on: ubuntu-latest diff --git a/README.md b/README.md index 7a36b12..9bcc785 100644 --- a/README.md +++ b/README.md @@ -241,7 +241,8 @@ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収 - 依存は lockfile 固定: `Cargo.lock`(Rust)と `pnpm-lock.yaml`(JS/TS) をコミット済み。`pnpm install --frozen-lockfile` / `cargo build --locked` で同一依存が解決されます。 -- ツールチェーンも固定: `rust-toolchain.toml`(Rust 1.98.1)、`.nvmrc` +- ツールチェーンも固定: `rust-toolchain.toml`(Rust 1.98.1。最低要件は + `proxy/Cargo.toml` の `rust-version` = 1.94.1 で、CI で検証)、`.nvmrc` (Node 25。最低要件は engines の `>=24`)、`package.json` の `packageManager`(pnpm 10.13.1)。 - CI の全 GitHub Actions はコミット SHA でピン留めしています diff --git a/proxy/Cargo.toml b/proxy/Cargo.toml index c9e3722..1d4af05 100644 --- a/proxy/Cargo.toml +++ b/proxy/Cargo.toml @@ -5,7 +5,10 @@ edition.workspace = true license.workspace = true repository.workspace = true description = "Lambda Runtime API proxy + external extension that persists failed synchronous invocations" -rust-version = "1.85" +# ロック済み依存(aws-sdk-* / aws-smithy-*)の要求に合わせる +rust-version = "1.94.1" +# 配布物は Layer zip / SAR / npm。crates.io には公開しない +publish = false [dependencies] # Async runtime: proxy は常駐プロセスとして Runtime API を中継する diff --git a/proxy/src/scrub_data.rs b/proxy/src/scrub_data.rs index 7b71635..24a9a5d 100644 --- a/proxy/src/scrub_data.rs +++ b/proxy/src/scrub_data.rs @@ -88,7 +88,7 @@ fn luhn_ok(text: &str) -> bool { sum += x; double = !double; } - sum % 10 == 0 + sum.is_multiple_of(10) } fn ipv4_ok(text: &str) -> bool { From 5672ca04f9ff0b6b8e85ef32a954afdd3a880d17 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:27:16 +0900 Subject: [PATCH 03/97] =?UTF-8?q?chore(proxy):=20=E6=9C=AA=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=81=AE=E4=BE=9D=E5=AD=98=20feature=20=E3=81=A8=20Za?= =?UTF-8?q?nkyoError=20=E3=81=AE=20variant=20=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tokio の io-util / signal と hyper-util の server は、src・tests の どこからも使っていない(サーバは hyper::server::conn::http1 を直接使う)。 ZankyoError::Io / Hyper も生成箇所が無く、hyper のエラーはすべて map_err で Upstream に変換している。モジュール doc の説明も実装に合わせる。 --- proxy/Cargo.toml | 3 --- proxy/src/error.rs | 6 +----- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/proxy/Cargo.toml b/proxy/Cargo.toml index 1d4af05..08c77a5 100644 --- a/proxy/Cargo.toml +++ b/proxy/Cargo.toml @@ -16,10 +16,8 @@ tokio = { version = "1", features = [ "rt-multi-thread", "macros", "net", - "io-util", "process", "time", - "signal", "sync", ] } # HTTP: Runtime API / Extensions API は共にローカル HTTP/1.1 @@ -27,7 +25,6 @@ hyper = { version = "1", features = ["client", "server", "http1"] } hyper-util = { version = "0.1", features = [ "client", "client-legacy", - "server", "tokio", ] } http-body-util = "0.1" diff --git a/proxy/src/error.rs b/proxy/src/error.rs index e644988..3dde03d 100644 --- a/proxy/src/error.rs +++ b/proxy/src/error.rs @@ -1,5 +1,5 @@ //! zankyo 全体で共有するエラー型。 -//! 失敗を種類で分けて持ち、呼び出し側が「設定ミス」と「一時的な IO 失敗」を +//! 失敗を種類で分けて持ち、呼び出し側が「設定ミス」と「上流・AWS 呼び出しの失敗」を //! 区別できるようにする(wrapper は原則 fail-open で子プロセスを起動するが、 //! 原因特定のためエラー内容はログに残す)。 @@ -13,14 +13,10 @@ pub enum ZankyoError { Upstream(String), #[error("http build error: {0}")] Http(#[from] http::Error), - #[error("io error: {0}")] - Io(#[from] std::io::Error), #[error("aws sdk error: {0}")] Aws(String), #[error("json error: {0}")] Json(#[from] serde_json::Error), - #[error("hyper error: {0}")] - Hyper(#[from] hyper::Error), } pub type Result = std::result::Result; From 20d932743298364988d47f6bb1746f964bb4ddd3 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:27:20 +0900 Subject: [PATCH 04/97] =?UTF-8?q?refactor(proxy):=20=E8=A8=98=E9=8C=B2?= =?UTF-8?q?=E6=A8=A9=E3=81=AE=E7=A2=BA=E4=BF=9D=E3=81=A8=E4=B8=8A=E9=99=90?= =?UTF-8?q?=E3=81=A7=E3=81=AE=E9=96=93=E5=BC=95=E3=81=8D=E3=82=92=20State:?= =?UTF-8?q?:claim=20=E3=81=AB=E9=9B=86=E7=B4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit remove_and_claim / claim_record / drain_and_claim の 3 か所に、 recorded への挿入と RECORDED_CAP による FIFO 間引きが同じ形で 書かれていた。1 か所だけ直し漏れて dedupe がずれるのを防ぐ。 --- proxy/src/inflight.rs | 55 +++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/proxy/src/inflight.rs b/proxy/src/inflight.rs index 2efb984..a54cea3 100644 --- a/proxy/src/inflight.rs +++ b/proxy/src/inflight.rs @@ -91,6 +91,22 @@ struct State { recorded_order: VecDeque, } +impl State { + /// 記録権の確保。初回だけ true を返し、上限を超えた分は古い方から捨てる。 + fn claim(&mut self, request_id: &str) -> bool { + if !self.recorded.insert(request_id.to_string()) { + return false; + } + self.recorded_order.push_back(request_id.to_string()); + while self.recorded_order.len() > RECORDED_CAP { + if let Some(old) = self.recorded_order.pop_front() { + self.recorded.remove(&old); + } + } + true + } +} + #[derive(Debug, Default)] pub struct InFlight { state: Mutex, @@ -126,15 +142,7 @@ impl InFlight { pub fn remove_and_claim(&self, request_id: &str) -> (Option, bool) { let mut st = self.state.lock().unwrap_or_else(|e| e.into_inner()); let inv = st.map.remove(request_id); - let claimed = st.recorded.insert(request_id.to_string()); - if claimed { - st.recorded_order.push_back(request_id.to_string()); - while st.recorded_order.len() > RECORDED_CAP { - if let Some(old) = st.recorded_order.pop_front() { - st.recorded.remove(&old); - } - } - } + let claimed = st.claim(request_id); (inv, claimed) } @@ -143,18 +151,10 @@ impl InFlight { /// map から外れた呼び出しでも有効 — init_error や /error リトライの /// 重複防止に使う。 pub fn claim_record(&self, request_id: &str) -> bool { - let mut st = self.state.lock().unwrap_or_else(|e| e.into_inner()); - if st.recorded.insert(request_id.to_string()) { - st.recorded_order.push_back(request_id.to_string()); - while st.recorded_order.len() > RECORDED_CAP { - if let Some(old) = st.recorded_order.pop_front() { - st.recorded.remove(&old); - } - } - true - } else { - false - } + self.state + .lock() + .unwrap_or_else(|e| e.into_inner()) + .claim(request_id) } /// drain と記録権の一括確保を 1 回のロックで行う。 @@ -166,18 +166,7 @@ impl InFlight { let items: Vec = st.map.drain().map(|(_, v)| v).collect(); items .into_iter() - .filter(|inv| { - let claimed = st.recorded.insert(inv.request_id.clone()); - if claimed { - st.recorded_order.push_back(inv.request_id.clone()); - while st.recorded_order.len() > RECORDED_CAP { - if let Some(old) = st.recorded_order.pop_front() { - st.recorded.remove(&old); - } - } - } - claimed - }) + .filter(|inv| st.claim(&inv.request_id)) .collect() } From 07a4e0f460da3cf6b809616a853ca019ebe151ab Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:27:20 +0900 Subject: [PATCH 05/97] =?UTF-8?q?fix(proxy):=20=E7=A9=BA=E3=81=AE=20ZANKYO?= =?UTF-8?q?=5FSSM=5FPARAM=20=E3=82=92=E6=9C=AA=E8=A8=AD=E5=AE=9A=E3=81=A8?= =?UTF-8?q?=E3=81=97=E3=81=A6=E6=89=B1=E3=81=84=E3=80=81=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E6=A4=9C=E8=A8=BC=E3=81=AE=E3=83=86=E3=82=B9=E3=83=88=E3=82=92?= =?UTF-8?q?=E8=A3=9C=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bucket と kms_key は空文字を未設定として扱うが、ssm_param だけは Some("") になり、init のたびに AWS SDK を初期化して空の名前で SSM を 呼んでいた。kms_key と同じく空文字を捨てる。 あわせて kms_key の値、空文字の扱い、0 値の拒否、相対パスの ZANKYO_SPILL_DIR の無視を env 経路でテストする。 --- proxy/src/config.rs | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/proxy/src/config.rs b/proxy/src/config.rs index fe33da4..f6772b9 100644 --- a/proxy/src/config.rs +++ b/proxy/src/config.rs @@ -147,12 +147,15 @@ impl Config { let mut cfg = Config { // 空文字は「未設定」と同じ扱いにする。 // Some("") の kms_key は全 PutObject を失敗させ、 + // Some("") の ssm_param は init のたびに空名で SSM を呼び、 // "" の bucket は SSM 側の値を後から潰すだけになる。 bucket: get("ZANKYO_BUCKET").unwrap_or_default().to_string(), kms_key: get("ZANKYO_KMS_KEY") .filter(|s| !s.is_empty()) .map(String::from), - ssm_param: get("ZANKYO_SSM_PARAM").map(String::from), + ssm_param: get("ZANKYO_SSM_PARAM") + .filter(|s| !s.is_empty()) + .map(String::from), scrub_fields: BTreeSet::new(), scrub_mode: ScrubMode::Mask, max_event_kb: DEFAULT_MAX_EVENT_KB, @@ -300,6 +303,7 @@ mod tests { ("ZANKYO_DISABLED", "true"), ])) .unwrap(); + assert_eq!(cfg.kms_key.as_deref(), Some("arn:aws:kms:...")); assert_eq!(cfg.max_body_kb, 4096); assert_eq!(cfg.ext_max_poll_failures, 10); assert_eq!(cfg.ssm_timeout_ms, 3000); @@ -315,6 +319,45 @@ mod tests { assert!(Config::from_env_map(&env(&[("ZANKYO_SCRUB_MODE", "yes")])).is_err()); } + #[test] + fn empty_strings_are_treated_as_unset() { + let cfg = Config::from_env_map(&env(&[ + ("ZANKYO_BUCKET", ""), + ("ZANKYO_KMS_KEY", ""), + ("ZANKYO_SSM_PARAM", ""), + ])) + .unwrap(); + assert!(cfg.bucket.is_empty()); + assert_eq!(cfg.kms_key, None); + assert_eq!(cfg.ssm_param, None); + } + + #[test] + fn rejects_zero_limits() { + for key in [ + "ZANKYO_MAX_BODY_KB", + "ZANKYO_FLUSH_BUDGET_MS", + "ZANKYO_EXT_MAX_POLL_FAILURES", + ] { + assert!( + Config::from_env_map(&env(&[(key, "0")])).is_err(), + "{key}=0 must be rejected" + ); + } + } + + #[test] + fn non_absolute_spill_dir_is_ignored() { + for v in ["rel", ""] { + let cfg = Config::from_env_map(&env(&[ + ("AWS_LAMBDA_FUNCTION_NAME", "my-fn"), + ("ZANKYO_SPILL_DIR", v), + ])) + .unwrap(); + assert_eq!(cfg.spill_dir, "/tmp/zankyo/my-fn", "{v:?} must be ignored"); + } + } + #[test] fn spill_dir_defaults_to_function_scope() { // Lambda 環境では関数名でスコープされる From f6c45958cf331bb31ed1f01cc0309a5e1ad22f3c Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:27:57 +0900 Subject: [PATCH 06/97] =?UTF-8?q?fix(proxy):=20=E8=A8=98=E9=8C=B2=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88=E3=82=82=20external=20exte?= =?UTF-8?q?nsion=20=E3=82=92=E7=99=BB=E9=8C=B2=E3=81=97=E3=80=81SHUTDOWN?= =?UTF-8?q?=20=E3=81=BE=E3=81=A7=E5=BE=85=E3=81=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ZANKYO_DISABLED・バケット未設定・設定エラーの passthrough 判定で、 /opt/extensions/zankyo の agent は register せずに exit 0 していた。 Extensions API の契約では、Extension init 中に各 extension が register する 必要があり、init で extension が失敗すると Lambda は実行環境を再起動する (https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html)。 AWS 公式 RIE の rapid/handlers.go の watchEvents も、shutdown 中でない extension の終了を exit code 0 でも AgentCrash(Extension.Crash)として扱う。 つまり緊急停止スイッチや設定ミスで関数の Init が失敗し、fail-open に反する。 passthrough でも SHUTDOWN だけを購読して register し、SHUTDOWN まで待つ。 INVOKE は購読せず、呼び出しごとの往復を増やさない。設定が壊れている 場合もあるので、ポーリングのノブは既定値を使う。 3 つのイベントループは wait_for_shutdown に集約し、drain_and_claim の 原子性の説明は呼び出し箇所へ移す。 本番の timeout 捕捉経路(run_agent の register → SHUTDOWN → .inflight 変換)と、 passthrough 3 条件での登録・待機を統合テストで検証する。 --- ARCHITECTURE.md | 5 +- README.md | 5 + proxy/src/extension.rs | 233 ++++++++++++++++++++++++--------------- proxy/src/orchestrate.rs | 37 +++++-- proxy/tests/proxy_it.rs | 150 +++++++++++++++++++++++++ 5 files changed, 326 insertions(+), 104 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 1b38b8a..51200a3 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -32,6 +32,9 @@ platform が別プロセスで agent を起動する。in-flight イベントは `.inflight` ステージを書き、agent が SHUTDOWN で読んで timeout レコードへ変換する。完了した呼び出しのステージは proxy が即削除する(残存=未完の証跡)。 +agent は passthrough 判定でも終了せず、`SHUTDOWN` だけを購読して +待機する。登録前や `SHUTDOWN` 前に extension が終了すると、 +終了コードに関係なく platform が Init を失敗させるため。 ## 品質・保守性の不変条件 @@ -63,7 +66,7 @@ proxy が即削除する(残存=未完の証跡)。 | `proxy.rs` | Runtime API の listen・経路判定・接続管理 | | `handlers.rs` | `/next`・`/response`・`/error`・`/init/error` の個別処理 | | `upstream.rs` | 上流 Runtime API への転送。hop-by-hop 除去と上限付きボディ読み | -| `extension.rs` | Extensions API。internal ループと external agent(`.inflight` 変換) | +| `extension.rs` | Extensions API。internal ループと external agent(`.inflight` 変換・passthrough 時の待機) | | `inflight.rs` | `/next`〜確定までのイベント保持(Mutex) | | `store.rs` | S3 PutObject とレコード組み立て(scrub 適用) | | `spill.rs` | /tmp 退避の管理。書き込み・回収・保持数上限・廃棄 | diff --git a/README.md b/README.md index 9bcc785..8591957 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,11 @@ layer は `/opt/extensions/zankyo` を配置し、platform が agent を timeout レコードへ変換し S3 へフラッシュします(ベストエフォート。 shutdown ウィンドウに間に合わなければ spill が残り、次回 init が拾います)。 +記録しない状態(`ZANKYO_DISABLED`・バケット未設定・設定エラー)でも、 +agent は `SHUTDOWN` だけを購読して待機します。登録前や `SHUTDOWN` 前に +終了した extension は、終了コードに関係なく Lambda が Init 失敗として +扱うためです。 + ## 使い方 ### 1. Layer の導入 diff --git a/proxy/src/extension.rs b/proxy/src/extension.rs index 512846d..e267f0e 100644 --- a/proxy/src/extension.rs +++ b/proxy/src/extension.rs @@ -1,8 +1,13 @@ //! Extensions API クライアント。 //! 単一バイナリが proxy と external extension を兼務するため、 -//! `/register` で INVOKE/SHUTDOWN を購読し、`/event/next` をポーリングする。 +//! `/register` で INVOKE/SHUTDOWN(記録しない場合は SHUTDOWN だけ)を購読し、 +//! `/event/next` をポーリングする。 //! SHUTDOWN(reason=timeout)を受けたら in-flight 呼び出しをフラッシュする。 +use crate::config::{ + Config, DEFAULT_EXT_BODY_KB, DEFAULT_EXT_MAX_POLL_FAILURES, DEFAULT_EXT_RETRY_MS, + DEFAULT_REGISTER_TIMEOUT_MS, +}; use crate::error::{Result, ZankyoError}; use crate::inflight::InFlight; use crate::proxy::{boxed_full, HttpClient}; @@ -36,12 +41,22 @@ pub async fn register( upstream_api: &str, timeout: Duration, ) -> Result { + register_events(client, upstream_api, timeout, &["INVOKE", "SHUTDOWN"]).await +} + +async fn register_events( + client: &HttpClient, + upstream_api: &str, + timeout: Duration, + events: &[&str], +) -> Result { + let body = serde_json::to_vec(&serde_json::json!({ "events": events }))?; let req = Request::builder() .method(Method::POST) .uri(format!("http://{upstream_api}{EXT_BASE}/register")) .header("Lambda-Extension-Name", "zankyo") .header("content-type", "application/json") - .body(boxed_full(r#"{"events":["INVOKE","SHUTDOWN"]}"#))?; + .body(boxed_full(body))?; let resp = tokio::time::timeout(timeout, client.request(req)) .await .map_err(|_| ZankyoError::Upstream("extension register timed out".into()))? @@ -105,74 +120,50 @@ pub async fn run_event_loop( inflight: Arc, recorder: Arc, ) -> bool { - let cfg = recorder.config(); - let retry_delay = Duration::from_millis(cfg.ext_retry_ms); - let max_failures = cfg.ext_max_poll_failures; - let body_limit = cfg.ext_body_kb.saturating_mul(1024); - let mut failures: u32 = 0; - loop { - match next_event(&client, &upstream_api, &ext_id, body_limit).await { - Ok(ev) if ev.event_type == "SHUTDOWN" => { - info!( - reason = ev.shutdown_reason.as_deref().unwrap_or("unknown"), - pending = inflight.len(), - "shutdown received; flushing in-flight invocations" - ); - let pending = inflight.drain_and_claim(); - if pending.is_empty() { - return true; - } - // フラッシュ予算は設定値と、イベントが示す凍結期限の残時間の小さい方。 - // deadlineMs が来ない環境では設定値のみで判断する。 - let budget = flush_budget_for(ev.deadline_ms, recorder.flush_budget()); - let reason = ev.shutdown_reason.clone(); - // パス1: 全件を同期で /tmp へ退避する。最初の PUT が予算を - // 食い潰すと 2 件目以降が spill すらされず消えるため、 - // 書き込みが速い spill を先に済ませてから PUT に入る。 - let mut jobs = Vec::new(); - // drain と記録権確保を原子的に行う — 隙間に到着した - // /error が event 欠落のまま記録権を取る競合を防ぐ。 - // (/error が先ならイベント付き handler_error が記録され、 - // こちらは drain に残らないので両方ともイベントが残る) - for inv in pending { - // None はシリアライズ失敗=残せない。warn に残す。 - if let Some(j) = recorder.stage_timeout(&inv, reason.as_deref()) { - jobs.push(j); - } else { - warn!(request_id = %inv.request_id, "failed to stage timed-out record"); - } - } - // パス2: 残予算内で PUT。間に合わない分は spill が残り、 - // 次回 init の recover_spills が回収する。 - let flush = async { - for job in &jobs { - recorder.commit_staged(job).await; - } - }; - if tokio::time::timeout(budget, flush).await.is_err() { - warn!("shutdown flush exceeded total budget"); - } - return true; - } - Ok(_) => { - failures = 0; - continue; - } - Err(e) => { - // ネットワーク断・ボディ破損など。ポーリングを諦めると - // timeout 捕捉を失うので、短い待機を挟んで再試行する。 - // ただし連続失敗が上限を超えたら Extensions API の障害と - // みなしてループを抜ける(無限リトライで zombie 化しない)。 - failures += 1; - if failures >= max_failures { - warn!(failures, "extension event poll keeps failing; giving up"); - return false; - } - warn!(error = %e, failures, "extension event poll failed; retrying"); - tokio::time::sleep(retry_delay).await; - } + let limits = PollLimits::from_config(recorder.config()); + let Some(ev) = wait_for_shutdown(&client, &upstream_api, &ext_id, &limits).await else { + return false; + }; + info!( + reason = ev.shutdown_reason.as_deref().unwrap_or("unknown"), + pending = inflight.len(), + "shutdown received; flushing in-flight invocations" + ); + // drain と記録権確保を原子的に行う — 隙間に到着した + // /error が event 欠落のまま記録権を取る競合を防ぐ。 + // (/error が先ならイベント付き handler_error が記録され、 + // こちらは drain に残らないので両方ともイベントが残る) + let pending = inflight.drain_and_claim(); + if pending.is_empty() { + return true; + } + // フラッシュ予算は設定値と、イベントが示す凍結期限の残時間の小さい方。 + // deadlineMs が来ない環境では設定値のみで判断する。 + let budget = flush_budget_for(ev.deadline_ms, recorder.flush_budget()); + let reason = ev.shutdown_reason.clone(); + // パス1: 全件を同期で /tmp へ退避する。最初の PUT が予算を + // 食い潰すと 2 件目以降が spill すらされず消えるため、 + // 書き込みが速い spill を先に済ませてから PUT に入る。 + let mut jobs = Vec::new(); + for inv in pending { + // None はシリアライズ失敗=残せない。warn に残す。 + if let Some(j) = recorder.stage_timeout(&inv, reason.as_deref()) { + jobs.push(j); + } else { + warn!(request_id = %inv.request_id, "failed to stage timed-out record"); } } + // パス2: 残予算内で PUT。間に合わない分は spill が残り、 + // 次回 init の recover_spills が回収する。 + let flush = async { + for job in &jobs { + recorder.commit_staged(job).await; + } + }; + if tokio::time::timeout(budget, flush).await.is_err() { + warn!("shutdown flush exceeded total budget"); + } + true } /// external extension プロセスのイベントループ。 @@ -185,9 +176,7 @@ pub async fn run_event_loop( /// 戻り値は「SHUTDOWN を受けてフラッシュまで済ませたか」。 pub async fn run_agent(client: HttpClient, upstream_api: String, recorder: Arc) -> bool { let cfg = recorder.config(); - let retry_delay = Duration::from_millis(cfg.ext_retry_ms); - let max_failures = cfg.ext_max_poll_failures; - let body_limit = cfg.ext_body_kb.saturating_mul(1024); + let limits = PollLimits::from_config(cfg); let ext_id = match register( &client, &upstream_api, @@ -202,33 +191,95 @@ pub async fn run_agent(client: HttpClient, upstream_api: String, recorder: Arc bool { + let limits = PollLimits { + body_limit: DEFAULT_EXT_BODY_KB * 1024, + retry_delay: Duration::from_millis(DEFAULT_EXT_RETRY_MS), + max_failures: DEFAULT_EXT_MAX_POLL_FAILURES, + }; + let ext_id = match register_events( + &client, + &upstream_api, + Duration::from_millis(DEFAULT_REGISTER_TIMEOUT_MS), + &["SHUTDOWN"], + ) + .await + { + Ok(id) => id, + Err(e) => { + warn!(error = %e, "external extension register failed"); + return false; + } + }; + info!("recording disabled; external extension idles until shutdown"); + wait_for_shutdown(&client, &upstream_api, &ext_id, &limits) + .await + .is_some() +} + +/// `/event/next` ポーリングのノブ。 +struct PollLimits { + body_limit: usize, + retry_delay: Duration, + max_failures: u32, +} + +impl PollLimits { + fn from_config(cfg: &Config) -> Self { + Self { + body_limit: cfg.ext_body_kb.saturating_mul(1024), + retry_delay: Duration::from_millis(cfg.ext_retry_ms), + max_failures: cfg.ext_max_poll_failures, + } + } +} + +/// SHUTDOWN が届くまで `/event/next` をポーリングする。INVOKE は読み捨てる。 +/// ネットワーク断・ボディ破損などの失敗は短い待機を挟んで再試行する — +/// ポーリングを諦めると timeout 捕捉を失うため。ただし連続失敗が上限に +/// 達したら Extensions API の障害とみなして None を返す(無限リトライで +/// zombie 化しない)。 +async fn wait_for_shutdown( + client: &HttpClient, + upstream_api: &str, + ext_id: &str, + limits: &PollLimits, +) -> Option { let mut failures: u32 = 0; loop { - match next_event(&client, &upstream_api, &ext_id, body_limit).await { - Ok(ev) if ev.event_type == "SHUTDOWN" => { - info!( - reason = ev.shutdown_reason.as_deref().unwrap_or("unknown"), - "shutdown received; converting staged inflights to timeout records" - ); - let budget = flush_budget_for(ev.deadline_ms, recorder.flush_budget()); - let flush = recorder.recover_inflights(ev.shutdown_reason.as_deref()); - if tokio::time::timeout(budget, flush).await.is_err() { - warn!("inflight flush exceeded shutdown budget; spills remain for next init"); - } - return true; - } - Ok(_) => { - failures = 0; - continue; - } + match next_event(client, upstream_api, ext_id, limits.body_limit).await { + Ok(ev) if ev.event_type == "SHUTDOWN" => return Some(ev), + Ok(_) => failures = 0, Err(e) => { failures += 1; - if failures >= max_failures { + if failures >= limits.max_failures { warn!(failures, "extension event poll keeps failing; giving up"); - return false; + return None; } warn!(error = %e, failures, "extension event poll failed; retrying"); - tokio::time::sleep(retry_delay).await; + tokio::time::sleep(limits.retry_delay).await; } } } diff --git a/proxy/src/orchestrate.rs b/proxy/src/orchestrate.rs index 6750e79..dd10719 100644 --- a/proxy/src/orchestrate.rs +++ b/proxy/src/orchestrate.rs @@ -35,20 +35,33 @@ const EXTERNAL_EXT_PATH: &str = "/opt/extensions/zankyo"; /// (main.rs が空 argv をここへ振り分ける)。proxy と別プロセスの /// ため Runtime API へ自前で register し、SHUTDOWN で inflight /// ステージを timeout 記録へ変換する。 -/// 失敗しても exit 0: extension の非 0 終了は platform にエラーと -/// 解釈されうるため、記録不能でも静かに畳む(fail-open)。 +/// passthrough でもすぐには終了しない: SHUTDOWN 前に extension が +/// 終わると、終了コードに関係なく platform は Init を失敗させる。 +/// 記録しない場合も登録して SHUTDOWN まで待つ(fail-open)。 pub async fn run_agent() -> u8 { let env_map: HashMap = std::env::vars().collect(); - let StartupPlan::Record(plan) = setup::resolve_plan(&env_map).await else { - return 0; - }; - let RecordPlan { - cfg, - shared, - upstream, - } = *plan; - let recorder = Arc::new(setup::build_recorder(&shared, cfg, &env_map)); - extension::run_agent(new_client(), upstream, recorder).await; + run_agent_with_env(&env_map).await +} + +/// `run_agent` の本体。env を引数で受け、起動判定からの配線を +/// プロセスの環境変数に触れずに検証できるようにする。 +pub async fn run_agent_with_env(env_map: &HashMap) -> u8 { + match setup::resolve_plan(env_map).await { + StartupPlan::Record(plan) => { + let RecordPlan { + cfg, + shared, + upstream, + } = *plan; + let recorder = Arc::new(setup::build_recorder(&shared, cfg, env_map)); + extension::run_agent(new_client(), upstream, recorder).await; + } + StartupPlan::Passthrough => { + if let Some(upstream) = env_map.get("AWS_LAMBDA_RUNTIME_API") { + extension::run_passthrough_agent(new_client(), upstream.clone()).await; + } + } + } 0 } diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index 9daff05..17e8dc1 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -654,6 +654,156 @@ async fn leftover_inflight_stage_becomes_timeout_record() { let _ = std::fs::remove_dir_all(&spill_dir); } +/// Extensions API モックが受けた (path, 登録名 or 識別子ヘッダ)。 +type ExtHeaders = Arc)>>>; + +/// `/register` は識別子 `ext-test` を払い出し、`/event/next` は +/// 1 回目に INVOKE、2 回目以降に SHUTDOWN を返す Extensions API モック。 +async fn spawn_extensions_api(reason: &'static str) -> (String, Captured, ExtHeaders) { + let seen: ExtHeaders = Arc::new(Mutex::new(Vec::new())); + let polls = Arc::new(std::sync::atomic::AtomicUsize::new(0)); + let (addr, hits) = spawn_mock({ + let seen = seen.clone(); + move |_m, path, headers, _b| { + let header = |k: &str| { + headers + .get(k) + .and_then(|v| v.to_str().ok()) + .map(String::from) + }; + if path == "/2020-01-01/extension/register" { + seen.lock() + .unwrap() + .push((path.to_string(), header("lambda-extension-name"))); + return Response::builder() + .status(StatusCode::OK) + .header("lambda-extension-identifier", "ext-test") + .body(boxed_full(Bytes::new())) + .unwrap(); + } + if path == "/2020-01-01/extension/event/next" { + seen.lock() + .unwrap() + .push((path.to_string(), header("lambda-extension-identifier"))); + let deadline = OffsetDateTime::now_utc().unix_timestamp() * 1000 + 60_000; + if polls.fetch_add(1, std::sync::atomic::Ordering::SeqCst) == 0 { + return ok_body(json!({"eventType": "INVOKE", "deadlineMs": deadline})); + } + return ok_body(json!({ + "eventType": "SHUTDOWN", + "shutdownReason": reason, + "deadlineMs": deadline + })); + } + Response::builder() + .status(StatusCode::NOT_FOUND) + .body(boxed_full(Bytes::new())) + .unwrap() + } + }) + .await; + (addr, hits, seen) +} + +fn register_body(hits: &Captured) -> Value { + let (_, _, body) = captured(hits) + .into_iter() + .find(|(m, p, _)| m == "POST" && p == "/2020-01-01/extension/register") + .expect("register request"); + serde_json::from_slice(&body).unwrap() +} + +/// register 1 回 → INVOKE と SHUTDOWN の 2 回ポーリング、の順で +/// 登録名と識別子が正しく送られたこと。 +fn assert_registered_then_polled_until_shutdown(seen: &ExtHeaders) { + let seen = seen.lock().unwrap().clone(); + let next = "/2020-01-01/extension/event/next".to_string(); + let id = Some("ext-test".to_string()); + assert_eq!( + seen, + vec![ + ( + "/2020-01-01/extension/register".to_string(), + Some("zankyo".to_string()) + ), + (next.clone(), id.clone()), + (next, id), + ] + ); +} + +#[tokio::test] +async fn external_agent_converts_staged_inflight_on_shutdown() { + // 本番の timeout 捕捉経路: register → SHUTDOWN 受信 → .inflight を timeout 記録へ + let (api_addr, api_hits, seen) = spawn_extensions_api("timeout").await; + let (s3_addr, s3_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let spill_dir = std::env::temp_dir().join(format!("zankyo-it-agent-{}", std::process::id())); + let recorder = recorder_to_with_spill(&s3_addr, &spill_dir); + recorder.stage_inflight(&Invocation { + request_id: "req-agent".to_string(), + event: json!({"token": "secret-token-value"}), + encoding: EventEncoding::Json, + invoked_at: OffsetDateTime::now_utc(), + }); + + assert!(zankyo::extension::run_agent(new_client(), api_addr, recorder).await); + + assert_eq!( + register_body(&api_hits), + json!({"events": ["INVOKE", "SHUTDOWN"]}) + ); + assert_registered_then_polled_until_shutdown(&seen); + assert!(wait_for(2_000, || !captured(&s3_hits).is_empty()).await); + let (method, path, body) = captured(&s3_hits).remove(0); + assert_eq!(method, "PUT"); + assert!(path.contains("req-agent.json")); + let rec: Value = serde_json::from_slice(&body).unwrap(); + assert_eq!(rec["failureType"], "timeout"); + assert_eq!(rec["errorContext"]["errorType"], "Timeout"); + assert!(!spill_dir.join("zankyo-req-agent.inflight").exists()); + let _ = std::fs::remove_dir_all(&spill_dir); +} + +#[tokio::test] +async fn passthrough_agent_stays_registered_until_shutdown() { + // 記録しない agent も登録して SHUTDOWN まで待つ。登録前や SHUTDOWN 前に + // 終了すると、platform は終了コードに関係なく Init を失敗させるため。 + for (case, extra) in [ + ( + "disabled", + vec![("ZANKYO_BUCKET", "b"), ("ZANKYO_DISABLED", "1")], + ), + ("no bucket", vec![]), + ( + "config error", + vec![("ZANKYO_BUCKET", "b"), ("ZANKYO_SCRUB_MODE", "bogus")], + ), + ] { + let (api_addr, api_hits, seen) = spawn_extensions_api("spindown").await; + let mut env: HashMap = extra + .into_iter() + .map(|(k, v)| (k.to_string(), v.to_string())) + .collect(); + env.insert("AWS_LAMBDA_RUNTIME_API".to_string(), api_addr); + + let code = tokio::time::timeout( + Duration::from_secs(5), + zankyo::orchestrate::run_agent_with_env(&env), + ) + .await + .unwrap_or_else(|_| panic!("{case}: agent must return after SHUTDOWN")); + + assert_eq!(code, 0, "{case}"); + // INVOKE は購読しない(呼び出しごとの往復を増やさない) + assert_eq!( + register_body(&api_hits), + json!({"events": ["SHUTDOWN"]}), + "{case}" + ); + assert_registered_then_polled_until_shutdown(&seen); + } +} + #[tokio::test] async fn oversized_body_is_rejected_without_forwarding() { let (api_addr, api_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; From cb5567e2241f9cba1a8a856d1b396b9df1693d46 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:28:03 +0900 Subject: [PATCH 07/97] =?UTF-8?q?fix(proxy):=20external=20extension=20?= =?UTF-8?q?=E6=A7=8B=E6=88=90=E3=81=A7=E3=81=AF=E5=AD=90=E3=81=AE=E7=B5=82?= =?UTF-8?q?=E4=BA=86=E5=BE=8C=E3=81=AB=20grace=20=E5=BE=85=E3=81=A1?= =?UTF-8?q?=E3=82=92=E3=81=97=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit external extension がある構成(出荷する Layer は常にこれ)では、 shutdown ハンドルに解決しない future を入れていた。そのため in-flight を 持ったままランタイムが落ちると、wait_for_exit が返すハンドルを min(flush_budget, 1000ms) の間ずっと待っていた。 別プロセスの agent の完了はこのハンドルでは観測できないので、 ハンドル自体を持たず(None)、子の終了だけを待つ。 --- proxy/src/orchestrate.rs | 53 +++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/proxy/src/orchestrate.rs b/proxy/src/orchestrate.rs index dd10719..5a4ace9 100644 --- a/proxy/src/orchestrate.rs +++ b/proxy/src/orchestrate.rs @@ -140,27 +140,27 @@ pub async fn run(argv: &[OsString]) -> u8 { // layer に /opt/extensions/zankyo が含まれる環境では、platform が // external extension として別プロセスで agent を起動する。 // internal register は SHUTDOWN を拒否されるため、その場合は省く。 + // SHUTDOWN フラッシュは agent が担い、その完了はこのプロセスから + // 観測できないので、待つハンドルも持たない(None)。 let has_external_ext = std::path::Path::new(EXTERNAL_EXT_PATH).exists(); let shutdown = if has_external_ext { info!("external extension detected; internal register skipped"); - // 決して解決しないハンドル — false を返すと wait_for_exit が - // 「extension 死亡」の warn を毎回 init で出してしまう。 - // SHUTDOWN フラッシュは別プロセスの agent が担う。 - tokio::spawn(std::future::pending::()) + None } else { - tokio::spawn(start_extension( + Some(tokio::spawn(start_extension( client, upstream, register_timeout, state.inflight.clone(), state.recorder.clone(), - )) + ))) }; let (code, pending_shutdown) = wait_for_exit(&mut child, shutdown).await; // 子が先に落ちた場合、Lambda がランタイム死亡を検知して SHUTDOWN を - // 配信するまで数十〜数百 ms ある。in-flight が残っているなら - // bounded に待って、extension 側の正式なフラッシュ(spill+PUT)に任せる。 + // 配信するまで数十〜数百 ms ある。同じプロセスの extension が + // in-flight を持ったまま生きているなら、bounded に待って + // extension 側の正式なフラッシュ(spill+PUT)に任せる。 if let Some(h) = pending_shutdown { if !state.inflight.is_empty() { let grace = state.cfg.flush_budget_ms.min(SHUTDOWN_GRACE_CAP_MS); @@ -249,12 +249,16 @@ async fn start_extension( /// 先に終わる場合は正常終了(0)として抜ける。ただし extension が /// SHUTDOWN 以外の理由(ポーリング断等)で終わった場合は、子プロセスの /// 完了を待ち続ける — ここで抜けると関数実行中に子を殺してしまう。 +/// `shutdown` が None(プロセス内に extension が無い)なら子だけを待つ。 /// 戻り値の Some(handle) は「子が先に終わり extension が生存中」の場合で、 /// 呼び出し側が SHUTDOWN 到着を短く待つ判断に使う。 async fn wait_for_exit( child: &mut Child, - mut shutdown: JoinHandle, + shutdown: Option>, ) -> (u8, Option>) { + let Some(mut shutdown) = shutdown else { + return (exit_code(child.wait().await), None); + }; tokio::select! { status = child.wait() => (exit_code(status), Some(shutdown)), res = &mut shutdown => match res { @@ -266,3 +270,34 @@ async fn wait_for_exit( }, } } + +#[cfg(test)] +mod tests { + use super::*; + + fn exiting_child(code: u8) -> Child { + tokio::process::Command::new("sh") + .args(["-c", &format!("exit {code}")]) + .spawn() + .unwrap() + } + + #[tokio::test] + async fn wait_for_exit_without_extension_returns_no_handle() { + // external extension 構成: 待つハンドルが無いので grace 待ちも起きない + let mut child = exiting_child(3); + let (code, pending) = wait_for_exit(&mut child, None).await; + assert_eq!(code, 3); + assert!(pending.is_none()); + } + + #[tokio::test] + async fn wait_for_exit_keeps_live_extension_handle() { + let mut child = exiting_child(3); + let ext = tokio::spawn(std::future::pending::()); + let (code, pending) = wait_for_exit(&mut child, Some(ext)).await; + assert_eq!(code, 3); + let h = pending.expect("live in-process extension handle"); + h.abort(); + } +} From d1a42ad3d32893e3578968f5737424ad1d9b516d Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:28:11 +0900 Subject: [PATCH 08/97] =?UTF-8?q?test(proxy):=20flush=20=E4=BA=88=E7=AE=97?= =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE=E5=AE=9F=E6=99=82=E8=A8=88?= =?UTF-8?q?=E4=BE=9D=E5=AD=98=E3=81=AB=E4=BD=99=E8=A3=95=E3=82=92=E6=8C=81?= =?UTF-8?q?=E3=81=9F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit budget_shrinks_to_remaining_window は期限を 700ms 先に置いていたため、 now_ms の取得後に 500ms 以上止まると設定値へ倒れて失敗しえた。 期限を 5 秒先、設定値を 10 秒にして、残り 4.8 秒以下を確かめる。 --- proxy/src/extension.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/proxy/src/extension.rs b/proxy/src/extension.rs index e267f0e..95514a4 100644 --- a/proxy/src/extension.rs +++ b/proxy/src/extension.rs @@ -323,12 +323,13 @@ mod tests { #[test] fn budget_shrinks_to_remaining_window() { - let cfg = Duration::from_millis(1200); - // 凍結期限が 700ms 先 → 残 500ms 程度になるはず + let cfg = Duration::from_millis(10_000); + // 凍結期限が 5 秒先 → 残 4.8 秒以下になるはず。実時計に依存するため、 + // テスト中にスレッドが止まっても期限を過ぎないよう数秒の幅を取る let now_ms = time::OffsetDateTime::now_utc().unix_timestamp_nanos() / 1_000_000; - let near = (now_ms + 700) as i64; + let near = (now_ms + 5_000) as i64; let b = flush_budget_for(Some(near), cfg); - assert!(b < cfg && b <= Duration::from_millis(500)); + assert!(b < cfg && b <= Duration::from_millis(4_800)); } #[test] From 3543a98a87eb506cea12dcc9d1638c1c811d5cbd Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:28:11 +0900 Subject: [PATCH 09/97] =?UTF-8?q?test(proxy):=20passthrough=20=E3=81=A8=20?= =?UTF-8?q?spawn=5Fvia=5Fproxy=20=E3=81=AE=20fail-open=20=E9=85=8D?= =?UTF-8?q?=E7=B7=9A=E3=82=92=E3=83=86=E3=82=B9=E3=83=88=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit passthrough が子の終了コードを返すこと、起動できないコマンドと空の argv を EX_OSERR に写すこと、spawn_via_proxy が子の AWS_LAMBDA_RUNTIME_API を proxy の listen ポートへ張り替えることを確かめる。 --- proxy/src/runtime.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/proxy/src/runtime.rs b/proxy/src/runtime.rs index 6c73124..78809cc 100644 --- a/proxy/src/runtime.rs +++ b/proxy/src/runtime.rs @@ -77,4 +77,36 @@ mod tests { let err = std::io::Result::Err(std::io::Error::other("x")); assert_eq!(exit_code(err), 1); } + + fn argv(args: &[&str]) -> Vec { + args.iter().map(OsString::from).collect() + } + + #[tokio::test] + async fn passthrough_returns_child_exit_code() { + assert_eq!(passthrough(&argv(&["sh", "-c", "exit 7"])).await, 7); + } + + #[tokio::test] + async fn passthrough_maps_unspawnable_command_to_oserr() { + assert_eq!( + passthrough(&argv(&["/nonexistent/zankyo-runtime"])).await, + EX_OSERR + ); + assert_eq!(passthrough(&[]).await, EX_OSERR); + } + + #[tokio::test] + async fn spawn_via_proxy_points_child_at_proxy_port() { + let mut child = spawn_via_proxy( + &argv(&[ + "sh", + "-c", + r#"test "$AWS_LAMBDA_RUNTIME_API" = 127.0.0.1:4321"#, + ]), + 4321, + ) + .unwrap(); + assert_eq!(exit_code(child.wait().await), 0); + } } From 02f36a69a53df6b930fdda982040334fb7ea4c6d Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:28:15 +0900 Subject: [PATCH 10/97] =?UTF-8?q?docs(changelog):=20Unreleased=20=E3=81=AB?= =?UTF-8?q?=20v0.1.0=20=E4=BB=A5=E9=99=8D=E3=81=AE=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=E3=82=92=E8=A8=98=E8=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧 TLS コネクタの除去(RUSTSEC-2026-0098/0099/0104/0258)と、 リリースゲート batch 1 の利用者に見える修正を載せる。版番号はリリース時に付ける。 --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3800af0..409cf91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed + +- **proxy** — 宣言する MSRV(`rust-version`)を、ロック済み依存の実際の要件 + 1.94.1 に合わせた。CI で宣言値のビルドを検証する + +### Fixed + +- **proxy** — 記録しない状態(`ZANKYO_DISABLED`・バケット未設定・設定エラー)で、 + external extension が register せずに終了していた。Lambda はこれを + Extension.Crash とみなし、関数の Init を失敗させうる。`SHUTDOWN` だけを + 購読して待機するようにした +- **proxy** — 空文字の `ZANKYO_SSM_PARAM` を未設定として扱う。以前は init の + たびに空の名前で SSM を呼び、起動を遅らせていた +- **proxy** — external extension 構成で、呼び出し中にランタイムがクラッシュすると、 + wrapper の終了が毎回約 1 秒遅れていた + +### Security + +- **proxy** — AWS SDK の既定 `rustls` feature が引き込む旧 TLS コネクタ + (hyper 0.14 + rustls 0.21 + h2 0.3)を依存から外した。 + RUSTSEC-2026-0098 / RUSTSEC-2026-0099 / RUSTSEC-2026-0104 / + RUSTSEC-2026-0258 の対象。実行時の HTTPS client は従来どおり + rustls-aws-lc(hyper 1.x) + ## [0.1.0] - 2026-09-23 Initial release. @@ -30,4 +56,5 @@ Initial release. (x86_64 / arm64 の 2 Layer を 1 アプリとして公開) - examples、CI(fmt/clippy/test/biome/typecheck/build)、決定的 zip 梱包 +[Unreleased]: https://github.com/seike460/lambda-zankyo/compare/v0.1.0...HEAD [0.1.0]: https://github.com/seike460/lambda-zankyo/releases/tag/v0.1.0 From 8a4f1ff762285a60964f155e2b598fde9ff33452 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:36:28 +0900 Subject: [PATCH 11/97] =?UTF-8?q?fix(proxy):=20Runtime=20API=20=E3=81=B8?= =?UTF-8?q?=E3=81=AE=E5=85=A8=E3=83=AA=E3=82=AF=E3=82=A8=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=81=A7=E5=87=BA=E3=81=A6=E3=81=84=E3=81=9F=20info=20?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=92=20debug=20=E3=81=AB=E4=B8=8B?= =?UTF-8?q?=E3=81=92=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 成功呼び出しの /next と /response でも毎回 info ログが出ていた。既定のフィルタは info のため、利用者全員の CloudWatch Logs が呼び出し数に比例して増えていた。実機検証時のデバッグ用ログが残っていたもの。 --- proxy/src/proxy.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/src/proxy.rs b/proxy/src/proxy.rs index 99ff084..1027a59 100644 --- a/proxy/src/proxy.rs +++ b/proxy/src/proxy.rs @@ -131,7 +131,7 @@ async fn handle(req: Request, st: &ProxyState) -> Response }; let segs: Vec<&str> = path.split('/').collect(); - tracing::info!(method = %parts.method, path = %path, "runtime api request"); + debug!(method = %parts.method, path = %path, "runtime api request"); match (parts.method.as_str(), segs.as_slice()) { ("GET", ["", "2018-06-01", "runtime", "invocation", "next"]) => { crate::handlers::handle_next( From 6a6a3526f6c2b1252effa23a456c00fb8beef3ca Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:36:33 +0900 Subject: [PATCH 12/97] =?UTF-8?q?fix(proxy):=20Node.js=20=E3=83=A9?= =?UTF-8?q?=E3=83=B3=E3=82=BF=E3=82=A4=E3=83=A0=E3=81=AE=20trace=20?= =?UTF-8?q?=E3=82=92=20errorContext.stackTrace=20=E3=81=AB=E5=8F=96?= =?UTF-8?q?=E3=82=8A=E8=BE=BC=E3=82=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Node.js ランタイムは /error・/init/error のボディでスタックトレースを trace キーで送る。stackTrace しか読んでいなかったため、Node.js 関数のレコードでは errorContext.stackTrace が常に欠け、init_error ではスタックが失われていた。stackTrace が無いときは trace を読む。 --- proxy/src/record.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/proxy/src/record.rs b/proxy/src/record.rs index 05883bd..0291904 100644 --- a/proxy/src/record.rs +++ b/proxy/src/record.rs @@ -154,7 +154,8 @@ pub fn error_context_from_body(body: &[u8], header_error_type: Option) - if let Some(m) = v.get("errorMessage").and_then(|x| x.as_str()) { ctx.error_message = Some(m.to_string()); } - match v.get("stackTrace") { + // Node.js ランタイムはスタックを `trace` キーで送る + match v.get("stackTrace").or_else(|| v.get("trace")) { Some(Value::String(s)) => ctx.stack_trace = Some(s.clone()), Some(Value::Array(frames)) => { ctx.stack_trace = Some( @@ -243,6 +244,17 @@ mod tests { assert_eq!(ctx.stack_trace.as_deref(), Some("a\nb")); } + #[test] + fn error_context_reads_nodejs_trace() { + let body = br#"{"errorType":"TypeError","errorMessage":"boom","trace":["TypeError: boom"," at handler (/var/task/index.js:3:9)"]}"#; + let ctx = error_context_from_body(body, None); + assert_eq!(ctx.error_type.as_deref(), Some("TypeError")); + assert_eq!( + ctx.stack_trace.as_deref(), + Some("TypeError: boom\n at handler (/var/task/index.js:3:9)") + ); + } + #[test] fn header_error_type_fills_gap() { let ctx = error_context_from_body(b"{}", Some("Runtime.ExitError".into())); From a2af0aa08c019c1dea7b32f08c4e9f04612dbdae Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:36:39 +0900 Subject: [PATCH 13/97] =?UTF-8?q?fix(proxy):=20scrub=20=E3=81=A7=20cookie?= =?UTF-8?q?=20=E3=81=A8=E6=96=87=E5=AD=97=E5=88=97=E5=8C=96=20JSON=20?= =?UTF-8?q?=E5=86=85=E3=81=AE=E3=83=95=E3=82=A3=E3=83=BC=E3=83=AB=E3=83=89?= =?UTF-8?q?=E3=82=82=E3=83=9E=E3=82=B9=E3=82=AF=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 既定の denylist に cookie と cookies を足した。API Gateway・ALB・Function URL の Cookie ヘッダ、HTTP API v2 の cookies 配列、応答の Set-Cookie が平文で残っていた。 API Gateway・Function URL の body のように JSON を文字列化した値は、中のフィールドに denylist が効いていなかった。先頭が { か [ でパースできる文字列は中身を再帰で scrub し、denylist に一致したときだけ再シリアライズする。一致しなければ原文のままパターン置換だけを掛ける。 denylist に一致した配列は要素ごとに置き換え、配列の形を保つ。cookies 配列が文字列 "***" に変わると、replay でハンドラが元と別の例外で落ちるため。 パターン検出が数値型の値とキー名を検査しないことを README・SPEC・SECURITY.md に明記した。 --- README.md | 13 ++++++-- SECURITY.md | 3 +- SPEC.md | 4 +-- proxy/src/scrub.rs | 70 +++++++++++++++++++++++++++++++++++++++-- proxy/src/scrub_data.rs | 2 ++ 5 files changed, 84 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 8591957..bdd3b64 100644 --- a/README.md +++ b/README.md @@ -172,11 +172,18 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json ハイブリッド方式で、消した内容を `scrubReport` に証跡化します。 - **フィールド名 denylist**: `password, secret, token, apiKey, authorization, - privateKey, sessionId, ssn, creditCard, cvv, pin`(大文字小文字・ - セパレータ `_` `-` `.` 空白は不問。`access_token`→`token` のような - prefix/suffix 一致も対象)+ `ZANKYO_SCRUB_FIELDS`。 + privateKey, sessionId, cookie, cookies, ssn, creditCard, cvv, pin`(大文字小文字・ + セパレータ `_` `-` `.` 空白は不問。`access_token`→`token` や + `Set-Cookie`→`cookie` のような prefix/suffix 一致も対象)+ + `ZANKYO_SCRUB_FIELDS`。値が配列なら要素ごとに置き換え、配列の形を保ちます。 +- **文字列化された JSON**(API Gateway・Function URL の `body` 等)も、 + 中のフィールドに denylist を適用します。一致した場合だけ、その文字列を + 空白なし・キーは辞書順の JSON に書き直します。 - **パターン検出**: email / クレカ番号(**Luhn 検証付き**)/ JWT / AWS アクセスキー / Bearer トークン / 電話番号 / IPv4。 + 対象は文字列値だけです。数値型の値(`"cardNo": 4111111111111111` 等)と + オブジェクトのキー名(`{"alice@example.com": …}` 等)は検査しません。 + 該当するフィールド名を `ZANKYO_SCRUB_FIELDS` に足すと、値ごとマスクされます。 - **mask モード**は形状保持(`j***@e***.com`、`***1234`)で再現性を維持。 - **hash モード**は HMAC-SHA256 擬似名化(鍵は関数名+バケット由来の 決定的 seed。暗号化ではなく「同じ値→同じハッシュ」の再現性が目的)。 diff --git a/SECURITY.md b/SECURITY.md index 422275c..9769167 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -44,4 +44,5 @@ zankyo は失敗イベントを扱うため、記録経路そのものを最小 そのイベントは `/tmp/zankyo` へのローカル退避のみで取りこぼす可能性が あります(ベストエフォート、仕様上の既知制約)。 - scrub はヒューリスティックです。denylist に無い秘密情報は - `ZANKYO_SCRUB_FIELDS` で必ず追加してください。 + `ZANKYO_SCRUB_FIELDS` で必ず追加してください。パターン検出は + 文字列値だけが対象で、数値型の値とオブジェクトのキー名は検査しません。 diff --git a/SPEC.md b/SPEC.md index 0d9f767..0b3a11e 100644 --- a/SPEC.md +++ b/SPEC.md @@ -83,8 +83,8 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json ### scrub 規則(ハイブリッド) -- **フィールド名 denylist**: `password, secret, token, apiKey, authorization, privateKey, sessionId, ssn, creditCard, cvv, pin`(大文字小文字・セパレータ不問)+ `ZANKYO_SCRUB_FIELDS`。 -- **パターン検出**: email / クレカ番号(Luhn 検証付き)/ JWT / API キー形状 / 電話番号 / IPv4。 +- **フィールド名 denylist**: `password, secret, token, apiKey, authorization, privateKey, sessionId, cookie, cookies, ssn, creditCard, cvv, pin`(大文字小文字・セパレータ不問)+ `ZANKYO_SCRUB_FIELDS`。文字列化された JSON(API Gateway の `body` 等)の中のフィールドにも適用する。 +- **パターン検出**: email / クレカ番号(Luhn 検証付き)/ JWT / API キー形状 / 電話番号 / IPv4。対象は文字列値のみ(数値型の値・キー名は対象外)。 - 既定 mask は `***` ではなく `j***@e***.com` 型の**形状保持マスク**(再現性を損なわないため)。 ## CLI(TypeScript strict + Biome。`npx zankyo`) diff --git a/proxy/src/scrub.rs b/proxy/src/scrub.rs index 00bfd71..917d586 100644 --- a/proxy/src/scrub.rs +++ b/proxy/src/scrub.rs @@ -157,15 +157,41 @@ impl Scrubber { } } Value::String(s) => { - let next = self.scrub_string(s, report); + let next = self + .scrub_embedded_json(s, report) + .unwrap_or_else(|| self.scrub_string(s, report)); *s = next; } _ => {} } } - /// denylist に一致したフィールド値の置き換え。 + /// 文字列化された JSON(API Gateway・Function URL の `body` 等)の + /// フィールドにも denylist を効かせる。denylist に一致した場合だけ + /// 再シリアライズした文字列を返す。一致しなければ None を返し、 + /// 原文へのパターン置換に任せる(空白やキー順を不要に変えない)。 + fn scrub_embedded_json(&self, s: &str, report: &mut ScrubReport) -> Option { + if !matches!(s.trim_start().as_bytes().first(), Some(b'{' | b'[')) { + return None; + } + let mut inner: Value = serde_json::from_str(s).ok()?; + let mut sub = ScrubReport::default(); + self.scrub(&mut inner, &mut sub); + if sub.fields_redacted == 0 { + return None; + } + report.fields_redacted += sub.fields_redacted; + report.patterns_applied.extend(sub.patterns_applied); + Some(inner.to_string()) + } + + /// denylist に一致したフィールド値の置き換え。配列は要素ごとに + /// 置き換えて形を保つ(`cookies` の文字列配列が文字列に変わると、 + /// replay でハンドラが元と別の例外で落ちるため)。 fn redact_node(&self, v: &Value) -> Value { + if let Value::Array(items) = v { + return Value::Array(items.iter().map(|i| self.redact_node(i)).collect()); + } match self.mode { ScrubMode::Off => v.clone(), ScrubMode::Hash => Value::String(format!("hmac:{}", self.hmac(v))), @@ -368,6 +394,46 @@ mod tests { assert_eq!(v["b"], "4111 1111 1111 1112"); } + #[test] + fn cookies_are_denied_and_keep_array_shape() { + let mut v = json!({ + "headers": {"Cookie": "sid=abc123"}, + "cookies": ["sid=abc123", "theme=dark"], + "multiValueHeaders": {"Set-Cookie": ["sid=abc123; HttpOnly"]}, + }); + let mut r = ScrubReport::default(); + scrubber().scrub(&mut v, &mut r); + assert_eq!(v["headers"]["Cookie"], "s***"); + assert_eq!(v["cookies"], json!(["s***", "t***"])); + assert_eq!(v["multiValueHeaders"]["Set-Cookie"], json!(["s***"])); + assert_eq!(r.fields_redacted, 3); + } + + #[test] + fn stringified_json_body_is_walked() { + // API Gateway プロキシ統合の body は JSON を文字列化した値 + let mut v = json!({ + "body": r#"{"username":"alice","password":"hunter2"}"#, + "isBase64Encoded": false, + }); + let mut r = ScrubReport::default(); + scrubber().scrub(&mut v, &mut r); + let body: Value = serde_json::from_str(v["body"].as_str().unwrap()).unwrap(); + assert_eq!(body, json!({"username": "alice", "password": "h***"})); + assert_eq!(r.fields_redacted, 1); + } + + #[test] + fn stringified_json_without_denied_fields_keeps_original_text() { + let raw = r#"{ "to": "alice@example.com", "n": 1 }"#; + let mut v = json!({"body": raw, "log": "[INFO] password reset"}); + let mut r = ScrubReport::default(); + scrubber().scrub(&mut v, &mut r); + assert_eq!(v["body"], r#"{ "to": "a***@e***.com", "n": 1 }"#); + assert_eq!(v["log"], "[INFO] password reset"); + assert_eq!(r.fields_redacted, 0); + } + #[test] fn arrays_and_nested_objects_are_walked() { let mut v = json!({"items": [{"password": "x"}, {"password": "y"}]}); diff --git a/proxy/src/scrub_data.rs b/proxy/src/scrub_data.rs index 24a9a5d..bf7e72b 100644 --- a/proxy/src/scrub_data.rs +++ b/proxy/src/scrub_data.rs @@ -12,6 +12,8 @@ pub(crate) const DEFAULT_DENYLIST: &[&str] = &[ "authorization", "privatekey", "sessionid", + "cookie", + "cookies", "ssn", "creditcard", "cvv", From 5340e6d11f68439d65de258bd09443debffe344e Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:36:46 +0900 Subject: [PATCH 14/97] =?UTF-8?q?refactor(proxy):=20=E3=82=B3=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=A8=E3=83=AD=E3=82=B0=E6=96=87=E8=A8=80?= =?UTF-8?q?=E3=82=92=E5=AE=9F=E8=A3=85=E3=81=AB=E5=90=88=E3=82=8F=E3=81=9B?= =?UTF-8?q?=E3=80=81=E5=8A=B9=E3=81=8B=E3=81=AA=E3=81=84=E8=A8=98=E8=BF=B0?= =?UTF-8?q?=E3=82=92=E5=89=8A=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - start_extension のログを internal extension に直し、独自 Layer 向けのフォールバックである旨を doc に書く - ProxyState.pending の doc と回収タスク panic のログを、起動時の回収タスクに合わせる - FailureType::Timeout の doc を、関数のタイムアウト以外の shutdown も含む意味に直す - Serialize だけの FailureRecord から、deserialize 用の serde default 属性を外す - mask_shape の重複した match 腕と到達しない unwrap_or をまとめる - handle() を通らない恒真テスト route_matching_shapes を削除する(経路は proxy_it.rs が担保) --- proxy/src/orchestrate.rs | 6 +++++- proxy/src/proxy.rs | 24 +++--------------------- proxy/src/record.rs | 9 +++++---- proxy/src/scrub.rs | 7 +++---- 4 files changed, 16 insertions(+), 30 deletions(-) diff --git a/proxy/src/orchestrate.rs b/proxy/src/orchestrate.rs index 5a4ace9..a9c26d6 100644 --- a/proxy/src/orchestrate.rs +++ b/proxy/src/orchestrate.rs @@ -223,6 +223,10 @@ fn spawn_child(argv: &[OsString], listener: &TcpListener) -> Option { } } +/// exec wrapper プロセス内からの internal register。 +/// `/opt/extensions/zankyo` を含まない独自 Layer 向けのフォールバック。 +/// AWS は internal extension の SHUTDOWN 購読を認めないため、 +/// 実環境では register が拒否されうる。 /// extension 登録はベストエフォート: 失敗しても proxy 経由の /// /error・/response 捕捉は残る(timeout 捕捉だけが失われる)。 /// SHUTDOWN 受信時に `true`、それ以外で終われば `false` を返す。 @@ -235,7 +239,7 @@ async fn start_extension( ) -> bool { match extension::register(&client, &upstream, register_timeout).await { Ok(ext_id) => { - info!("registered as external extension"); + info!("registered as internal extension"); extension::run_event_loop(client, upstream, ext_id, inflight, recorder).await } Err(e) => { diff --git a/proxy/src/proxy.rs b/proxy/src/proxy.rs index 1027a59..cbdb9a9 100644 --- a/proxy/src/proxy.rs +++ b/proxy/src/proxy.rs @@ -71,7 +71,8 @@ pub struct ProxyState { pub recorder: Arc, /// ボディ上限などの動作ノブ。env / SSM 由来の値をそのまま使う。 pub cfg: crate::config::Config, - /// 進行中の save タスク。子終了時に残っていれば drain される。 + /// 起動時の回収タスク(inflight 変換・spill 再送)。 + /// 子終了時に残っていれば drain される。 pub pending: PendingSaves, /// 処理中のハンドラ数。drain が「これ以上 save が増えない」 /// 地点を判断するのに使う。 @@ -242,7 +243,7 @@ pub(crate) async fn drain_pending(state: &ProxyState, budget: std::time::Duratio while let Some(res) = p.set.join_next().await { // panic した回収タスクはレコードを失う — 数えて警告に残す if let Err(e) = res { - warn!(error = %e, "pending record save panicked"); + warn!(error = %e, "record recovery task panicked"); } } } @@ -256,22 +257,3 @@ pub(crate) async fn drain_pending(state: &ProxyState, budget: std::time::Duratio warn!("pending record saves did not finish before exit"); } } - -#[cfg(test)] -mod tests { - #[test] - fn route_matching_shapes() { - let segs: Vec<&str> = "/2018-06-01/runtime/invocation/next".split('/').collect(); - assert!(matches!( - segs.as_slice(), - ["", "2018-06-01", "runtime", "invocation", "next"] - )); - let segs: Vec<&str> = "/2018-06-01/runtime/invocation/abc/error" - .split('/') - .collect(); - assert!(matches!( - segs.as_slice(), - ["", "2018-06-01", "runtime", "invocation", "abc", "error"] - )); - } -} diff --git a/proxy/src/record.rs b/proxy/src/record.rs index 0291904..6b53ee5 100644 --- a/proxy/src/record.rs +++ b/proxy/src/record.rs @@ -19,7 +19,8 @@ pub enum FailureType { HandlerError, /// `/init/error`。イベントは存在しない。 InitError, - /// SHUTDOWN reason=timeout で応答が返らなかった in-flight 呼び出し。 + /// 応答が返らないまま実行環境が畳まれた in-flight 呼び出し。 + /// 関数のタイムアウトに限らない(理由は errorContext.errorType)。 Timeout, } @@ -72,16 +73,16 @@ pub struct FailureRecord { pub error_context: ErrorContext, /// イベントが非 JSON ボディの生テキストで保存されている場合 true。 /// CLI は replay/redrive 時に JSON 再エンコードせず原文を送る。 - #[serde(rename = "eventIsRawText", default, skip_serializing_if = "is_false")] + #[serde(rename = "eventIsRawText", skip_serializing_if = "is_false")] pub event_is_raw_text: bool, /// イベントが UTF-8 でないバイナリの場合 true。 /// `event` は base64 文字列として保持され、CLI は replay 時に /// デコードして元のバイト列を再送する。 - #[serde(rename = "eventIsBase64", default, skip_serializing_if = "is_false")] + #[serde(rename = "eventIsBase64", skip_serializing_if = "is_false")] pub event_is_base64: bool, #[serde(rename = "scrubReport")] pub scrub_report: ScrubReportJson, - #[serde(default, skip_serializing_if = "is_false")] + #[serde(skip_serializing_if = "is_false")] pub truncated: bool, } diff --git a/proxy/src/scrub.rs b/proxy/src/scrub.rs index 917d586..08dc3ac 100644 --- a/proxy/src/scrub.rs +++ b/proxy/src/scrub.rs @@ -261,10 +261,9 @@ impl Scrubber { } fn mask_shape(s: &str) -> String { - match s.chars().count() { - 0 => "***".to_string(), - 1..=4 => "***".to_string(), - _ => format!("{}***", s.chars().next().unwrap_or('*')), + match s.chars().next() { + Some(c) if s.chars().count() > 4 => format!("{c}***"), + _ => "***".to_string(), } } From bc420bfd17f2cc42074b7d80214f144b2e2b068f Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:36:49 +0900 Subject: [PATCH 15/97] =?UTF-8?q?test(proxy):=20=E7=B5=82=E4=BA=86?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=81=AE=E3=82=B7=E3=82=B0=E3=83=8A?= =?UTF-8?q?=E3=83=AB=E5=86=99=E5=83=8F=E3=81=A8=20scrub=20=E3=81=AE?= =?UTF-8?q?=E5=90=84=E3=83=91=E3=82=BF=E3=83=BC=E3=83=B3=E3=81=AE=E7=BD=AE?= =?UTF-8?q?=E6=8F=9B=E7=B5=90=E6=9E=9C=E3=82=92=E6=A4=9C=E8=A8=BC=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - exit_code の wait 失敗テストの名前を実際の経路に合わせ、シグナル終了が 128+signal になることを確かめる - aws_access_key・bearer_token・phone・ipv4 の置換結果と patternsApplied への記録を確かめる --- proxy/src/runtime.rs | 11 ++++++++++- proxy/src/scrub.rs | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/proxy/src/runtime.rs b/proxy/src/runtime.rs index 78809cc..037efab 100644 --- a/proxy/src/runtime.rs +++ b/proxy/src/runtime.rs @@ -73,11 +73,20 @@ mod tests { } #[test] - fn exit_code_maps_spawn_failure_to_one() { + fn exit_code_maps_wait_error_to_one() { let err = std::io::Result::Err(std::io::Error::other("x")); assert_eq!(exit_code(err), 1); } + #[cfg(unix)] + #[test] + fn exit_code_maps_signal_to_128_plus_signal() { + let status = std::process::Command::new("sh") + .args(["-c", "kill -TERM $$"]) + .status(); + assert_eq!(exit_code(status), 128 + 15); + } + fn argv(args: &[&str]) -> Vec { args.iter().map(OsString::from).collect() } diff --git a/proxy/src/scrub.rs b/proxy/src/scrub.rs index 08dc3ac..5eb1519 100644 --- a/proxy/src/scrub.rs +++ b/proxy/src/scrub.rs @@ -393,6 +393,44 @@ mod tests { assert_eq!(v["b"], "4111 1111 1111 1112"); } + #[test] + fn aws_access_key_keeps_last_four() { + let mut v = json!({"k": "AKIAIOSFODNN7EXAMPLE"}); + let mut r = ScrubReport::default(); + scrubber().scrub(&mut v, &mut r); + assert_eq!(v["k"], "***MPLE"); + assert!(r.patterns_applied.contains("aws_access_key")); + } + + #[test] + fn bearer_token_keeps_only_scheme() { + let mut v = json!({"note": "Authorization: Bearer abcdefghijk123"}); + let mut r = ScrubReport::default(); + scrubber().scrub(&mut v, &mut r); + assert_eq!(v["note"], "Authorization: Bearer ***"); + assert!(r.patterns_applied.contains("bearer_token")); + } + + #[test] + fn phone_keeps_last_four() { + let mut v = json!({"a": "call +81-90-1234-5678", "b": "555-123-4567"}); + let mut r = ScrubReport::default(); + scrubber().scrub(&mut v, &mut r); + assert_eq!(v["a"], "call ***5678"); + assert_eq!(v["b"], "***4567"); + assert!(r.patterns_applied.contains("phone")); + } + + #[test] + fn ipv4_keeps_last_octet() { + let mut v = json!({"src": "from 192.168.10.25", "ver": "999.1.1.1"}); + let mut r = ScrubReport::default(); + scrubber().scrub(&mut v, &mut r); + assert_eq!(v["src"], "from x.x.x.25"); + assert_eq!(v["ver"], "999.1.1.1"); + assert!(r.patterns_applied.contains("ipv4")); + } + #[test] fn cookies_are_denied_and_keep_array_shape() { let mut v = json!({ From 230c1a4341615c7b7ffa8ae1cb72cbfac3b94966 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:36:51 +0900 Subject: [PATCH 16/97] =?UTF-8?q?docs(changelog):=20Unreleased=20=E3=81=AB?= =?UTF-8?q?=20scrub=E3=83=BB=E3=83=AD=E3=82=B0=E3=83=BB=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=83=E3=82=AF=E3=83=88=E3=83=AC=E3=83=BC=E3=82=B9=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E3=82=92=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 409cf91..ea8b707 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — 宣言する MSRV(`rust-version`)を、ロック済み依存の実際の要件 1.94.1 に合わせた。CI で宣言値のビルドを検証する +- **proxy** — denylist に一致した値が配列なら、要素ごとにマスクして配列の形を + 保つ。以前は配列全体を 1 つの文字列 `"***"` に置き換えていた ### Fixed @@ -22,6 +24,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 たびに空の名前で SSM を呼び、起動を遅らせていた - **proxy** — external extension 構成で、呼び出し中にランタイムがクラッシュすると、 wrapper の終了が毎回約 1 秒遅れていた +- **proxy** — 成功呼び出しを含む Runtime API への全リクエストで、info レベルの + ログを出していた。debug レベルに下げ、既定では出さない +- **proxy** — Node.js ランタイムはスタックトレースを `trace` キーで送るため、 + `errorContext.stackTrace` が空だった。`stackTrace` が無いときは `trace` を読む ### Security @@ -30,6 +36,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 RUSTSEC-2026-0098 / RUSTSEC-2026-0099 / RUSTSEC-2026-0104 / RUSTSEC-2026-0258 の対象。実行時の HTTPS client は従来どおり rustls-aws-lc(hyper 1.x) +- **proxy** — 既定の scrub denylist に `cookie` と `cookies` を追加した。 + API Gateway・ALB・Function URL のイベントにある `Cookie` ヘッダ、 + HTTP API v2 の `cookies` 配列、応答の `Set-Cookie` が平文で残っていた +- **proxy** — JSON を文字列化した値(API Gateway・Function URL の `body` 等)の + 中のフィールドにも denylist を適用する。以前は `password` などがマスクされずに + 残っていた。一致した場合、その文字列は空白なし・キーは辞書順の JSON に書き直す ## [0.1.0] - 2026-09-23 From aa46453275970676d8e65256769360202d9d82d7 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:47:58 +0900 Subject: [PATCH 17/97] =?UTF-8?q?test(proxy):=20=E7=B5=B1=E5=90=88?= =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE=20spill=20dir=20=E3=82=92?= =?UTF-8?q?=20Drop=20=E3=81=A7=E5=BF=85=E3=81=9A=E6=B6=88=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit recorder_to が作る spill dir は /next のステージで実際に作られるのに、 明示的に消していたのは 3 テストだけで、アサーション失敗時にも残っていた。 テストごとの dir を Drop で消す SpillDir にまとめ、recorder_to から返す。 --- proxy/tests/proxy_it.rs | 96 ++++++++++++++++++++++++++--------------- 1 file changed, 62 insertions(+), 34 deletions(-) diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index 17e8dc1..3d3f1b6 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -98,15 +98,39 @@ async fn wait_for(ms: u64, mut f: impl FnMut() -> bool) -> bool { static NEXT_SPILL: std::sync::atomic::AtomicU32 = std::sync::atomic::AtomicU32::new(0); -/// `endpoint` (mock S3) に向けた Recorder。spill はテストごとに -/// 一意の一時 dir を使い、テスト間・リラン間で残滓を共有しない。 -fn recorder_to(endpoint: &str) -> Arc { - let n = NEXT_SPILL.fetch_add(1, std::sync::atomic::Ordering::Relaxed); - let dir = std::env::temp_dir().join(format!("zankyo-it-{}-{}", std::process::id(), n)); - recorder_to_with_spill(endpoint, &dir) +/// テストごとに一意な spill dir。Drop で消すので、アサーションの +/// 失敗で抜けた場合も一時ディレクトリが残らない。 +struct SpillDir(std::path::PathBuf); + +impl SpillDir { + fn new() -> Self { + let n = NEXT_SPILL.fetch_add(1, std::sync::atomic::Ordering::Relaxed); + Self(std::env::temp_dir().join(format!("zankyo-it-{}-{}", std::process::id(), n))) + } +} + +impl std::ops::Deref for SpillDir { + type Target = std::path::Path; + fn deref(&self) -> &std::path::Path { + &self.0 + } +} + +impl Drop for SpillDir { + fn drop(&mut self) { + let _ = std::fs::remove_dir_all(&self.0); + } +} + +/// `endpoint` (mock S3) に向けた Recorder と、その spill dir。 +/// spill dir は戻り値を保持している間だけ残る。 +fn recorder_to(endpoint: &str) -> (Arc, SpillDir) { + recorder_with_env(endpoint, &[]) } -fn recorder_to_with_spill(endpoint: &str, spill: &std::path::Path) -> Arc { +/// `recorder_to` に env 設定を足したもの。 +fn recorder_with_env(endpoint: &str, extra: &[(&str, &str)]) -> (Arc, SpillDir) { + let spill = SpillDir::new(); let conf = aws_sdk_s3::Config::builder() .region(aws_sdk_s3::config::Region::new("us-east-1")) .credentials_provider(aws_sdk_s3::config::SharedCredentialsProvider::new( @@ -116,20 +140,22 @@ fn recorder_to_with_spill(endpoint: &str, spill: &std::path::Path) -> Arc Date: Tue, 29 Sep 2026 07:48:09 +0900 Subject: [PATCH 18/97] =?UTF-8?q?fix(proxy):=20spill=20=E3=81=AE=E5=9B=9E?= =?UTF-8?q?=E5=8F=8E=E3=81=A7=20dir=20=E3=82=92=E6=B6=88=E3=81=95=E3=81=9A?= =?UTF-8?q?=E3=80=81=E5=90=8C=E6=99=82=E3=81=AB=E8=B5=B0=E3=82=8B=E6=9B=B8?= =?UTF-8?q?=E3=81=8D=E8=BE=BC=E3=81=BF=E3=81=AE=20ENOENT=20=E3=82=92?= =?UTF-8?q?=E9=98=B2=E3=81=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit recover_spills は最後に空の spill dir を remove_dir していた。定期回収は 別ワーカーで走るため、ensure_dir と .part の作成の間に dir が消えると、 inflight ステージや spill の書き込みが ENOENT で失敗する。dir は残す。 あわせて、S3 が PUT を拒否する間は spill が残り、回復後の recover_spills が 同じキーへ同じレコードを再送して spill を消すことを統合テストで確かめる。 --- ARCHITECTURE.md | 3 +- CHANGELOG.md | 3 ++ README.md | 2 +- proxy/src/store.rs | 3 -- proxy/tests/proxy_it.rs | 64 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 70 insertions(+), 5 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 51200a3..ff698d0 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -50,7 +50,8 @@ agent は passthrough 判定でも終了せず、`SHUTDOWN` だけを購読し - **エラーは握り潰さない**。失敗は `ZankyoError`/`Option` でモデル化し、 捨てる経路はすべて文脈付きの warn で残す。 - **rerun は冪等**。spill は atomic 書き込み → 数・鮮度上限 → - 起動時・定期回収 → 全件回収で dir 削除、とライフサイクルが閉じる。 + 起動時・定期回収 → 送れたファイルの削除、とライフサイクルが閉じる。 + spill dir 自体は消さない(同時に走る書き込みが ENOENT で失敗するため)。 - **型は緩めない**。TS は strict + noUncheckedIndexedAccess、`as` キャストなし(AWS 境界は `ports.ts` の構造的ポート)。Rust は `#![forbid(unsafe_code)]` + clippy -D warnings。書式は diff --git a/CHANGELOG.md b/CHANGELOG.md index ea8b707..7243bd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ログを出していた。debug レベルに下げ、既定では出さない - **proxy** — Node.js ランタイムはスタックトレースを `trace` キーで送るため、 `errorContext.stackTrace` が空だった。`stackTrace` が無いときは `trace` を読む +- **proxy** — spill の回収が、空になった spill dir を削除していた。同時に走る + inflight ステージや spill の書き込みが、まれに ENOENT で失敗していた。 + dir は削除せずに残す ### Security diff --git a/README.md b/README.md index bdd3b64..794abff 100644 --- a/README.md +++ b/README.md @@ -245,7 +245,7 @@ cargo fmt --all -- --check && cargo clippy -- -D warnings `ZANKYO_*` 環境変数で外から変えられます(一覧は上の表)。拡張は データの 1 エントリ追加で済みます: scrub パターン・CLI コマンド・ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収・ -全件回収時の dir 削除までライフサイクルが閉じており、rerun で +送れたファイルの削除までライフサイクルが閉じており、rerun で 残滓が増えません。不変条件の全体は ARCHITECTURE.md を参照してください。 ### 再現性(reproducibility) diff --git a/proxy/src/store.rs b/proxy/src/store.rs index c41f074..2787d38 100644 --- a/proxy/src/store.rs +++ b/proxy/src/store.rs @@ -347,9 +347,6 @@ impl Recorder { // 再送を試みた後で上限を適用する。先に絞ると、届くはずだった // 古いレコードを試行すらせず捨ててしまう。 spill::enforce_cap(dir, self.cfg.spill_max_files); - // 全件回収できたらディレクトリごと消し、rerun 後に残滓を残さない - // (非空なら remove_dir は失敗するだけなので無害)。 - let _ = std::fs::remove_dir(dir); } fn spill(&self, request_id: &str, body: &[u8]) -> bool { diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index 3d3f1b6..17de39c 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -683,6 +683,70 @@ async fn leftover_inflight_stage_becomes_timeout_record() { assert!(!spill_dir.join("zankyo-req-stuck.json").exists()); } +#[tokio::test] +async fn failed_put_keeps_spill_until_recovery_resends_it() { + // S3 が PutObject を拒否する間は spill が残り、回復後の recover_spills が + // 同じキーへ同じレコードを再送して spill を消す(write-ahead の本線)。 + let (api_addr, _api) = spawn_mock(runtime_api_handler()).await; + let s3_up = Arc::new(std::sync::atomic::AtomicBool::new(false)); + let (s3_addr, s3_hits) = spawn_mock({ + let s3_up = s3_up.clone(); + move |_m, _p, _h, _b| { + if s3_up.load(std::sync::atomic::Ordering::SeqCst) { + return ok_empty(); + } + Response::builder() + .status(StatusCode::FORBIDDEN) + .body(boxed_full(Bytes::from_static( + b"AccessDeniedAccess Denied", + ))) + .unwrap() + } + }) + .await; + let (recorder, spill_dir) = recorder_to(&s3_addr); + let proxy = spawn_proxy(&api_addr, Arc::new(InFlight::new()), recorder.clone()).await; + let spilled = spill_dir.join("zankyo-req-123.json"); + let record_puts = || { + captured(&s3_hits) + .into_iter() + .filter(|(m, p, _)| m == "PUT" && p.contains("req-123.json")) + .collect::>() + }; + + call( + &proxy, + Method::GET, + "/2018-06-01/runtime/invocation/next", + None, + ) + .await; + let (status, _) = call( + &proxy, + Method::POST, + "/2018-06-01/runtime/invocation/req-123/error", + Some(json!({"errorType": "E", "errorMessage": "x"})), + ) + .await; + // 記録の失敗は関数の応答を止めない + assert_eq!(status, StatusCode::OK); + assert_eq!(record_puts().len(), 1); + assert!(spilled.exists(), "rejected PUT must keep the spill"); + assert!(!spill_dir.join("zankyo-req-123.inflight").exists()); + + s3_up.store(true, std::sync::atomic::Ordering::SeqCst); + recorder.recover_spills().await; + + let puts = record_puts(); + assert_eq!(puts.len(), 2); + assert_eq!(puts[1].1, puts[0].1, "resend must target the same key"); + assert_eq!(puts[1].2, puts[0].2, "resend must carry the same record"); + assert!(!spilled.exists()); + // 空になった spill dir は消さない。消すと、同時に走るステージや + // spill の書き込みが ENOENT で失敗する。 + assert!(spill_dir.exists()); +} + /// Extensions API モックが受けた (path, 登録名 or 識別子ヘッダ)。 type ExtHeaders = Arc)>>>; From 8c5a89cf9c70ca1ffe0bb5d196087a6d3533726f Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:48:20 +0900 Subject: [PATCH 19/97] =?UTF-8?q?fix(proxy):=20SSM=20=E5=8F=96=E5=BE=97?= =?UTF-8?q?=E3=81=AE=E6=97=A2=E5=AE=9A=E3=82=BF=E3=82=A4=E3=83=A0=E3=82=A2?= =?UTF-8?q?=E3=82=A6=E3=83=88=E3=82=92=20Init=20=E4=B8=8A=E9=99=90?= =?UTF-8?q?=E3=81=AE=E5=86=85=E5=81=B4=E3=81=AE=202=20=E7=A7=92=E3=81=AB?= =?UTF-8?q?=E4=B8=8B=E3=81=92=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SSM の取得は、子ランタイムの起動と extension の登録より前に待つ。 既定値 10 秒は Lambda の Init 上限(10 秒)と同じで、NAT も VPC endpoint も 無い VPC では SSM を待つだけで Init の上限に達しうる。fail-open の設計に 合わせて 2 秒で諦め、env の設定で進む。README の表にも Init 上限に 含まれることを書く。 参照: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html --- ARCHITECTURE.md | 2 +- CHANGELOG.md | 4 ++++ README.md | 2 +- proxy/src/config.rs | 7 +++++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index ff698d0..5bd3641 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -75,7 +75,7 @@ agent は passthrough 判定でも終了せず、`SHUTDOWN` だけを購読し | `scrub.rs` / `scrub_data.rs` | PII マスキングの純粋ロジックと判定データ | | `config.rs` / `ssm_overlay.rs` | env 設定解決と SSM JSON overlay(キーはテーブル駆動) | | `runtime.rs` | 子プロセス起動(passthrough / proxy)と終了コード変換 | -| `ssm.rs` | SSM Parameter Store 取得(10s timeout、fail-open) | +| `ssm.rs` | SSM Parameter Store 取得(既定 2s timeout、fail-open) | | `error.rs` / `lib.rs` | `ZankyoError` 統一型と公開面 | ## 拡張ポイント diff --git a/CHANGELOG.md b/CHANGELOG.md index 7243bd4..53edadc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 1.94.1 に合わせた。CI で宣言値のビルドを検証する - **proxy** — denylist に一致した値が配列なら、要素ごとにマスクして配列の形を 保つ。以前は配列全体を 1 つの文字列 `"***"` に置き換えていた +- **proxy** — `ZANKYO_SSM_TIMEOUT_MS` の既定値を 10000 から 2000 に下げた。 + SSM の取得は子ランタイムの起動と extension の登録より前に待つ。以前の既定値は + Lambda の Init 上限(10 秒)と同じで、SSM に届かない VPC では Init が + 上限を超えうる ### Fixed diff --git a/README.md b/README.md index 794abff..bf5e489 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ env を部分上書きします。複数関数で設定を一元管理するた | `ZANKYO_REGISTER_TIMEOUT_MS` | `10000` | extension 登録の上限時間 | | `ZANKYO_EXT_RETRY_MS` | `500` | event/next ポーリング失敗時の再試行間隔 | | `ZANKYO_EXT_MAX_POLL_FAILURES` | `120` | ポーリング連続失敗の上限(超過でループを抜ける) | -| `ZANKYO_SSM_TIMEOUT_MS` | `10000` | SSM get_parameter の上限時間 | +| `ZANKYO_SSM_TIMEOUT_MS` | `2000` | SSM get_parameter の上限時間。Lambda の Init 上限(10 秒)に含まれる | | `ZANKYO_FORWARD_TIMEOUT_MS` | `60000` | `/next` 以外の上流転送の上限時間 | | `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ(passthrough) | diff --git a/proxy/src/config.rs b/proxy/src/config.rs index f6772b9..43554fb 100644 --- a/proxy/src/config.rs +++ b/proxy/src/config.rs @@ -30,8 +30,9 @@ pub const DEFAULT_EXT_RETRY_MS: u64 = 500; /// ポーリング連続失敗の上限。既定では 500ms × 120 ≒ 60 秒失敗が /// 続いたら Extensions API の障害とみなしてループを抜ける。 pub const DEFAULT_EXT_MAX_POLL_FAILURES: u32 = 120; -/// SSM get_parameter の上限時間(ms)。 -pub const DEFAULT_SSM_TIMEOUT_MS: u64 = 10_000; +/// SSM get_parameter の上限時間(ms)。取得は子の起動と extension 登録の +/// 前に待つため、Lambda の Init 上限(10 秒)を使い切らない短めの既定にする。 +pub const DEFAULT_SSM_TIMEOUT_MS: u64 = 2_000; /// `/next` 以外の上流転送の上限時間(ms)。localhost 上の Runtime API が /// 60 秒応えない状況は実行環境の異常とみなす。 pub const DEFAULT_FORWARD_TIMEOUT_MS: u64 = 60_000; @@ -286,6 +287,8 @@ mod tests { assert_eq!(cfg.bucket, "b"); assert_eq!(cfg.scrub_mode, ScrubMode::Mask); assert_eq!(cfg.max_event_kb, 256); + // SSM 取得は Init の 10 秒上限の内側で諦める + assert_eq!(cfg.ssm_timeout_ms, 2_000); assert!(!cfg.disabled); } From 2ea1b37e63e94464d449975eefb63bb2969baf37 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:48:25 +0900 Subject: [PATCH 20/97] =?UTF-8?q?docs(proxy):=20FLUSH=5FBUDGET=20=E3=81=A8?= =?UTF-8?q?=20PUT=5FTIMEOUT=20=E3=81=AE=E8=AA=AC=E6=98=8E=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E9=9A=9B=E3=81=AE=E5=8B=95=E4=BD=9C=E3=81=AB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 失敗レコードの PUT は、呼び出し中の記録も SHUTDOWN 後のフラッシュも commit_staged が flush budget で打ち切る。put_timeout が効くのは spill 再送 だけである。それなのに README と Config の doc は PUT_TIMEOUT を「通常経路の PutObject 上限」と説明しており、失敗時の応答の遅れを調整したい利用者を 効かない設定へ導いていた。 --- CHANGELOG.md | 3 +++ README.md | 4 ++-- proxy/src/config.rs | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53edadc..f97750f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — spill の回収が、空になった spill dir を削除していた。同時に走る inflight ステージや spill の書き込みが、まれに ENOENT で失敗していた。 dir は削除せずに残す +- **proxy** — README と設定の説明で、`ZANKYO_FLUSH_BUDGET_MS` と + `ZANKYO_PUT_TIMEOUT_MS` の役割を実際の動作に合わせた。失敗レコードの PUT + (呼び出し中と SHUTDOWN 後)は前者、spill 再送の PUT は後者で打ち切る ### Security diff --git a/README.md b/README.md index bf5e489..0471427 100644 --- a/README.md +++ b/README.md @@ -113,8 +113,8 @@ env を部分上書きします。複数関数で設定を一元管理するた | `ZANKYO_SCRUB_FIELDS` | 既定 denylist | 追加フィールド名(カンマ区切り) | | `ZANKYO_SCRUB_MODE` | `mask` | `mask` / `hash`(HMAC 擬似名化)/ `off` | | `ZANKYO_MAX_EVENT_KB` | `256` | イベント保存の上限(超過は先頭のみ + `truncated`) | -| `ZANKYO_FLUSH_BUDGET_MS` | `1200` | SHUTDOWN フラッシュの予算上限 | -| `ZANKYO_PUT_TIMEOUT_MS` | `5000` | 通常経路の PutObject 上限時間 | +| `ZANKYO_FLUSH_BUDGET_MS` | `1200` | 失敗レコードの PutObject 上限時間(呼び出し中の記録と SHUTDOWN フラッシュ)。失敗時の応答はこの時間まで遅れうる | +| `ZANKYO_PUT_TIMEOUT_MS` | `5000` | spill 再送の PutObject 上限時間(起動時・定期回収) | | `ZANKYO_SPILL_DIR` | `/tmp/zankyo/` | S3 失敗時・SHUTDOWN 時のローカル退避先(既定は関数名でスコープ) | | `ZANKYO_SPILL_MAX_FILES` | `64` | spill 保持数の上限。超過分は古いものから破棄 | | `ZANKYO_SPILL_RETRY_MS` | `60000` | spill 再送を試みる間隔(生存中の定期回収) | diff --git a/proxy/src/config.rs b/proxy/src/config.rs index 43554fb..6b51c32 100644 --- a/proxy/src/config.rs +++ b/proxy/src/config.rs @@ -65,9 +65,10 @@ pub struct Config { pub scrub_fields: BTreeSet, pub scrub_mode: ScrubMode, pub max_event_kb: usize, - /// SHUTDOWN 検知後に S3 フラッシュへ使える時間の上限。 + /// 失敗レコードの PutObject に使える時間の上限。呼び出し中の記録 + /// (応答の転送をこの時間まで待たせる)と SHUTDOWN 後のフラッシュに効く。 pub flush_budget_ms: u64, - /// 通常経路の PutObject 上限時間。呼び出し経路を遅らせないため短め。 + /// spill 再送(起動時・定期回収)の PutObject 上限時間。 pub put_timeout_ms: u64, /// S3 失敗時・SHUTDOWN 時のローカル退避先。 pub spill_dir: String, From 6a9ca3ebc25c69e5fbe5d68b7f81720099b2b451 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:48:33 +0900 Subject: [PATCH 21/97] =?UTF-8?q?refactor(proxy):=20store=20=E3=81=A8=20sp?= =?UTF-8?q?ill=20=E3=81=AE=E9=87=8D=E8=A4=87=E3=81=97=E3=81=9F=E6=9B=B8?= =?UTF-8?q?=E3=81=8D=E8=BE=BC=E3=81=BF=E5=87=A6=E7=90=86=E3=81=A8=E5=8F=A4?= =?UTF-8?q?=E3=81=84=20doc=20=E3=82=92=E6=95=B4=E7=90=86=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - stage_timeout は SaveInput を組み立てて stage_save に任せる。 「spill が成功したときだけ inflight ステージを消す」規則を 1 か所にする - spill の .part 経由の書き込みを write_atomic にまとめる。誰も使わない write_inflight の bool の戻り値をやめる - sanitize の trim_start_matches('.') を削る。直前の map で '.' は '_' に なるため、常に何もしていなかった - 削除済みの save を指す doc と、モジュールの責務の説明を実装に合わせる --- proxy/src/spill.rs | 57 +++++++++++++++++----------------------------- proxy/src/store.rs | 52 +++++++++++++++--------------------------- 2 files changed, 39 insertions(+), 70 deletions(-) diff --git a/proxy/src/spill.rs b/proxy/src/spill.rs index 434cc26..7e3b942 100644 --- a/proxy/src/spill.rs +++ b/proxy/src/spill.rs @@ -19,26 +19,13 @@ const PART_ORPHAN_GRACE: Duration = Duration::from_secs(60); const MANAGED_PREFIX: &str = "zankyo-"; /// 退避ファイルを書き、上限を超えたら古いものから捨てる。 -/// `.part` へ書いてから rename する: 定期回収が書き込み途中の -/// 半端な JSON を読んで「復旧不能」として消す競合を防ぐ。 -/// .part 名に pid を含めるのは、proxy と external extension agent が -/// 同一 rid に並行して書き込む際の O_TRUNC 競合を避けるため。 /// モードは 0600: レコードは scrub 済みだがイベント断片を含みうるため /// sandbox 内の他プロセスからも読めない最小権限にする。 /// 戻り値は書き込み成功可否 — 失敗時は呼び出し側で代替の証跡 /// (.inflight ステージ等)を消さない判断に使う。 pub fn write(dir_path: &Path, max_files: usize, request_id: &str, body: &[u8]) -> bool { - let path = dir_path.join(filename(request_id)); - let tmp = dir_path.join(format!( - ".{}.{}.part", - filename(request_id), - std::process::id() - )); - let result = ensure_dir(dir_path) - .and_then(|_| write_mode_600(&tmp, body)) - .and_then(|_| std::fs::rename(&tmp, &path)); - match result { - Ok(()) => { + match write_atomic(dir_path, &filename(request_id), body) { + Ok(path) => { info!(request_id, path = %path.display(), "record spilled to /tmp"); enforce_cap(dir_path, max_files); true @@ -50,6 +37,20 @@ pub fn write(dir_path: &Path, max_files: usize, request_id: &str, body: &[u8]) - } } +/// `dir/name` へ `.part` 経由で書いて rename し、書いたパスを返す。 +/// 定期回収や agent が書き込み途中の半端なファイルを読んで +/// 「復旧不能」として消す競合を防ぐ。.part 名に pid を含めるのは、 +/// proxy と external extension agent が同一 rid に並行して書き込む際の +/// O_TRUNC 競合を避けるため。 +fn write_atomic(dir: &Path, name: &str, body: &[u8]) -> std::io::Result { + let path = dir.join(name); + let tmp = dir.join(format!(".{name}.{}.part", std::process::id())); + ensure_dir(dir)?; + write_mode_600(&tmp, body)?; + std::fs::rename(&tmp, &path)?; + Ok(path) +} + /// 0600 で新規作成する。umask 既定の 0666&~umask(=0644)だと /// sandbox 同居プロセスから読めるため、zankyo 管理ファイルはすべて /// owner のみに絞る。rename 後もモードは引き継がれる。 @@ -76,25 +77,10 @@ fn ensure_dir(path: &Path) -> std::io::Result<()> { } /// 呼び出し中イベントのステージを書く(external extension との共有用)。 -/// spill と同じく .part 経由の atomic rename — agent が読みかけの -/// 半端なファイルを見ないようにする。失敗しても warn のみ(呼び出し -/// 本体に影響させない)。 -pub fn write_inflight(dir: &Path, request_id: &str, body: &[u8]) -> bool { - let path = dir.join(inflight_name(request_id)); - let tmp = dir.join(format!( - ".{}.{}.part", - inflight_name(request_id), - std::process::id() - )); - match ensure_dir(dir) - .and_then(|_| write_mode_600(&tmp, body)) - .and_then(|_| std::fs::rename(&tmp, &path)) - { - Ok(()) => true, - Err(e) => { - warn!(request_id, error = %e, "failed to stage inflight event"); - false - } +/// 失敗しても warn のみ(呼び出し本体に影響させない)。 +pub fn write_inflight(dir: &Path, request_id: &str, body: &[u8]) { + if let Err(e) = write_atomic(dir, &inflight_name(request_id), body) { + warn!(request_id, error = %e, "failed to stage inflight event"); } } @@ -259,11 +245,10 @@ fn sanitize(request_id: &str) -> String { } }) .collect(); - let clean = clean.trim_start_matches('.'); if clean.is_empty() { "record".to_string() } else { - clean.to_string() + clean } } diff --git a/proxy/src/store.rs b/proxy/src/store.rs index 2787d38..5400b37 100644 --- a/proxy/src/store.rs +++ b/proxy/src/store.rs @@ -1,6 +1,6 @@ //! 失敗レコードの永続化。S3 PutObject が本線、失敗時・SHUTDOWN 時は //! /tmp への退避(spill)で取りこぼしを減らす。 -//! このモジュールだけが S3/ファイルシステムに触れる。 +//! S3 PUT と spill 操作の窓口(ファイル名・書き込み・上限の管理は spill.rs)。 use crate::config::Config; use crate::error::{Result, ZankyoError}; @@ -19,7 +19,7 @@ use std::time::Duration; use time::OffsetDateTime; use tracing::{info, warn}; -/// `save` へ渡す入力一式。引数束ね。 +/// `stage_save` へ渡す入力一式。引数束ね。 pub struct SaveInput { pub request_id: String, pub invoked_at: OffsetDateTime, @@ -37,7 +37,7 @@ pub struct EventInput { pub encoding: EventEncoding, } -/// `stage_timeout` が返す PUT 待ちジョブ。 +/// `stage_save` と `stage_timeout` が返す PUT 待ちジョブ。 /// spill 済みのため、PUT が間に合わなくてもレコードは残る。 pub struct StagedRecord { pub request_id: String, @@ -129,39 +129,23 @@ impl Recorder { /// 制約から常に `timeout` とし、「応答が返らないまま shutdown した」の意。 /// 区別が必要な情報は errorContext.errorType(Timeout/Failure/Spindown)に写す。 pub fn stage_timeout(&self, inv: &Invocation, reason: Option<&str>) -> Option { - let ctx = ErrorContext { - error_type: Some(shutdown_error_type(reason).to_string()), - error_message: Some(format!( - "function did not respond before execution environment shutdown (reason: {})", - reason.unwrap_or("unknown") - )), - stack_trace: None, - }; - let (rec, key) = self.build_record( - &inv.request_id, - inv.invoked_at, - FailureType::Timeout, - EventInput { + self.stage_save(SaveInput { + request_id: inv.request_id.clone(), + invoked_at: inv.invoked_at, + failure: FailureType::Timeout, + event: EventInput { value: Some(inv.event.clone()), encoding: inv.encoding, }, - None, - ctx, - ); - let Ok(body) = to_json_bytes(&rec) else { - return None; - }; - // 先にローカルへ落とす: PutObject がウィンドウに間に合わなくても - // 実行環境の /tmp が同一 sandbox で再利用される場合に拾える。 - // spill 成功時のみ inflight ステージを消す — 失敗時は残して - // init 時の timeout 変換に救いを残す(PUT 成功でも消える)。 - if self.spill(&inv.request_id, &body) { - self.clear_inflight(&inv.request_id); - } - Some(StagedRecord { - request_id: inv.request_id.clone(), - key, - body, + response: None, + ctx: ErrorContext { + error_type: Some(shutdown_error_type(reason).to_string()), + error_message: Some(format!( + "function did not respond before execution environment shutdown (reason: {})", + reason.unwrap_or("unknown") + )), + stack_trace: None, + }, }) } @@ -319,7 +303,7 @@ impl Recorder { .map_err(|e| ZankyoError::Aws(e.to_string())) } - /// 起動時に前回残った spill を再送する。spill ファイルは record JSON + /// 残った spill を再送する(起動時と定期回収)。spill ファイルは record JSON /// 本体なので、そこから functionName/invokedAt/requestId を読み /// 元の S3 キーを再構成する。送れたものだけ削除するため冪等に再実行できる。 pub async fn recover_spills(&self) { From 7134a2bbe7b7a903fb1c646f9e0f6ee8995b4fd1 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 07:48:33 +0900 Subject: [PATCH 22/97] =?UTF-8?q?test(proxy):=20SSE=20=E3=83=98=E3=83=83?= =?UTF-8?q?=E3=83=80=E3=81=A8=20hop-by-hop=20=E9=99=A4=E5=8E=BB=E3=82=92?= =?UTF-8?q?=E6=9C=AC=E7=95=AA=E3=81=AE=E7=B5=8C=E8=B7=AF=E3=81=A7=E6=A4=9C?= =?UTF-8?q?=E8=A8=BC=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - S3 モックで PutObject の SSE ヘッダを拾い、既定は AES256、 ZANKYO_KMS_KEY 指定時は aws:kms とキー ID が付くことを確かめる - 解析ロジックをテスト内で書き直していた upstream のテストを、 connection_named と strip_hop_by_hop を直接呼ぶテストに置き換える - proxy 経由の転送で、要求・応答の両方向から Connection 指名ヘッダと 固定の hop-by-hop が落ちることを統合テストで確かめる - ssm_overlay のテスト名の誤字(ssk_)を直す --- proxy/src/ssm_overlay.rs | 2 +- proxy/src/upstream.rs | 41 ++++++++++-------- proxy/tests/proxy_it.rs | 90 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+), 19 deletions(-) diff --git a/proxy/src/ssm_overlay.rs b/proxy/src/ssm_overlay.rs index a5ebaec..ff87717 100644 --- a/proxy/src/ssm_overlay.rs +++ b/proxy/src/ssm_overlay.rs @@ -208,7 +208,7 @@ mod tests { } #[test] - fn ssk_bad_field_does_not_drop_whole_overlay() { + fn ssm_bad_field_does_not_drop_whole_overlay() { // 1 フィールドの型違いで overlay 全体が捨てられると、 // SSM 側にしか無い bucket まで失って記録が止まる。 let mut cfg = Config::from_env_map(&env(&[])).unwrap(); diff --git a/proxy/src/upstream.rs b/proxy/src/upstream.rs index 3a8d377..d1984e3 100644 --- a/proxy/src/upstream.rs +++ b/proxy/src/upstream.rs @@ -148,30 +148,35 @@ mod tests { } #[test] - fn header_name_matching_is_case_insensitive() { - // http::HeaderName は常に小文字正規化されるので as_str() 比較で効く + fn connection_named_collects_every_token_lowercased() { + // 複数の Connection ヘッダ・カンマ区切り・大文字混じりをすべて拾う let mut h = HeaderMap::new(); - h.insert("Connection", HeaderValue::from_static("keep-alive")); - let name = h.keys().next().unwrap().as_str(); - assert_eq!(name, "connection"); - assert!(HOP_BY_HOP.contains(&name)); + h.append( + "connection", + HeaderValue::from_static("X-Custom-Hop, keep-alive"), + ); + h.append("connection", HeaderValue::from_static(" X-Other ")); + assert_eq!( + connection_named(&h), + ["x-custom-hop", "keep-alive", "x-other"] + ); } #[test] - fn connection_header_names_are_parsed() { - // "Connection: x-opt, close" は x-opt も drop 対象にする + fn strip_hop_by_hop_keeps_only_end_to_end_headers() { let mut h = HeaderMap::new(); + h.insert("Connection", HeaderValue::from_static("X-Custom-Hop")); + h.insert("X-Custom-Hop", HeaderValue::from_static("1")); + h.insert("Transfer-Encoding", HeaderValue::from_static("chunked")); + h.insert("Keep-Alive", HeaderValue::from_static("timeout=5")); + h.insert("Content-Type", HeaderValue::from_static("application/json")); h.insert( - "connection", - HeaderValue::from_static("X-Custom-Hop, keep-alive"), + "Lambda-Runtime-Aws-Request-Id", + HeaderValue::from_static("req-1"), ); - let mut drop_named: Vec = Vec::new(); - for v in h.get_all("connection") { - if let Ok(s) = v.to_str() { - drop_named.extend(s.split(',').map(|t| t.trim().to_ascii_lowercase())); - } - } - assert!(drop_named.iter().any(|n| n == "x-custom-hop")); - assert!(drop_named.iter().any(|n| n == "keep-alive")); + strip_hop_by_hop(&mut h); + let mut kept: Vec<&str> = h.keys().map(|k| k.as_str()).collect(); + kept.sort_unstable(); + assert_eq!(kept, ["content-type", "lambda-runtime-aws-request-id"]); } } diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index 17de39c..81fd851 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -747,6 +747,96 @@ async fn failed_put_keeps_spill_until_recovery_resends_it() { assert!(spill_dir.exists()); } +/// S3 モックが PutObject で受けた (x-amz-server-side-encryption, KMS キー ID)。 +type SseHeaders = Arc, Option)>>>; + +#[tokio::test] +async fn record_put_requests_server_side_encryption() { + // 既定は SSE-S3(AES256)。ZANKYO_KMS_KEY 指定時は SSE-KMS とそのキー + let kms = "arn:aws:kms:us-east-1:111122223333:key/test"; + for (extra, want) in [ + (vec![], (Some("AES256"), None)), + (vec![("ZANKYO_KMS_KEY", kms)], (Some("aws:kms"), Some(kms))), + ] { + let seen: SseHeaders = Arc::new(Mutex::new(Vec::new())); + let (s3_addr, _s3) = spawn_mock({ + let seen = seen.clone(); + move |m, _p, h, _b| { + if m == "PUT" { + let header = |k: &str| h.get(k).and_then(|v| v.to_str().ok()).map(String::from); + seen.lock().unwrap().push(( + header("x-amz-server-side-encryption"), + header("x-amz-server-side-encryption-aws-kms-key-id"), + )); + } + ok_empty() + } + }) + .await; + let (recorder, _spill) = recorder_with_env(&s3_addr, &extra); + recorder.stage_inflight(&Invocation { + request_id: "req-sse".to_string(), + event: json!({"input": 1}), + encoding: EventEncoding::Json, + invoked_at: OffsetDateTime::now_utc(), + }); + recorder.recover_inflights(None).await; + + assert_eq!( + seen.lock().unwrap().clone(), + vec![(want.0.map(String::from), want.1.map(String::from))], + "{extra:?}" + ); + } +} + +#[tokio::test] +async fn hop_by_hop_headers_are_dropped_in_both_directions() { + // 上流へは Connection 指名ヘッダと固定の hop-by-hop を渡さず、 + // 上流の応答も同じ規則で落としてからランタイムへ返す + let upstream_saw = Arc::new(Mutex::new(HeaderMap::new())); + let (api_addr, _api) = spawn_mock({ + let upstream_saw = upstream_saw.clone(); + move |_m, _p, h, _b| { + *upstream_saw.lock().unwrap() = h.clone(); + Response::builder() + .status(StatusCode::OK) + .header("connection", "X-Up-Hop") + .header("x-up-hop", "1") + .header("x-up-keep", "1") + .body(boxed_full(Bytes::new())) + .unwrap() + } + }) + .await; + let (s3_addr, _s3) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let (recorder, _spill) = recorder_to(&s3_addr); + let proxy = spawn_proxy(&api_addr, Arc::new(InFlight::new()), recorder).await; + + let req = Request::builder() + .method(Method::POST) + .uri(format!("http://{proxy}/2022-07-01/telemetry")) + .header("connection", "X-Custom-Hop") + .header("x-custom-hop", "1") + .header("proxy-authorization", "Basic abc") + .header("x-keep", "1") + .body(boxed_full(Bytes::from_static(b"{}"))) + .unwrap(); + let resp = new_client().request(req).await.unwrap(); + + assert_eq!(resp.status(), StatusCode::OK); + let sent = upstream_saw.lock().unwrap().clone(); + for dropped in ["connection", "x-custom-hop", "proxy-authorization"] { + assert!( + sent.get(dropped).is_none(), + "{dropped} must not be forwarded" + ); + } + assert_eq!(sent["x-keep"], "1"); + assert!(resp.headers().get("x-up-hop").is_none()); + assert_eq!(resp.headers()["x-up-keep"], "1"); +} + /// Extensions API モックが受けた (path, 登録名 or 識別子ヘッダ)。 type ExtHeaders = Arc)>>>; From 8e0d9280b6436d9245ef642c58b3398118b72587 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:00:15 +0900 Subject: [PATCH 23/97] =?UTF-8?q?fix(cli):=20=E3=82=AD=E3=83=BC=E3=81=A8?= =?UTF-8?q?=E6=9C=AC=E6=96=87=E3=81=AE=E9=96=A2=E6=95=B0=E5=90=8D=E3=81=8C?= =?UTF-8?q?=E9=A3=9F=E3=81=84=E9=81=95=E3=81=86=E3=83=AC=E3=82=B3=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=82=92=20invoke=20=E5=85=88=E3=81=AB=E4=BD=BF?= =?UTF-8?q?=E3=82=8F=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit replay・diff・redrive は、S3 レコード本文の functionName を invoke 先に していた。バケットに書ける別の関数が、他の関数を名乗るレコードを置くと、 運用者の権限でその関数へペイロードを投入させられた。 loadRecord で、キーの関数セグメントと本文の functionName を突き合わせる。 食い違うレコードは exit 4 で拒否する。--function の絞り込みはキーに効くので、 この突き合わせで --function との一致も保証される。 --- README.md | 2 ++ cli/README.md | 2 +- cli/src/store.ts | 14 +++++++++++++- cli/tests/commands.test.ts | 31 ++++++++++++++++++++++++++++++- cli/tests/store.test.ts | 22 +++++++++++++++++++++- 5 files changed, 67 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0471427..39bf8d0 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,8 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json - レコードは**利用者自身のアカウントの S3** にのみ保存。外部送信ゼロ。 - 関数に付与するのは `s3:PutObject` のみ(+KMS 時は Encrypt/GenerateDataKey)。 +- CLI は、キーの関数名と本文の `functionName` が食い違うレコードを + replay・diff・redrive に使いません(exit 4)。 - proxy が listen するのは `127.0.0.1` のみ。 - 依存は lockfile で固定(`Cargo.lock` / `pnpm-lock.yaml`)。 CI で `cargo audit` と `pnpm audit` を実行します。 diff --git a/cli/README.md b/cli/README.md index a1dcee5..91a869e 100644 --- a/cli/README.md +++ b/cli/README.md @@ -44,4 +44,4 @@ AWS API 呼び出しのタイムアウトは env で調整できます | 1 | diff: 応答に差異 / replay・redrive: 関数がエラーを返した | | 2 | 引数・設定ミス | | 3 | AWS API 呼び出しの失敗 | -| 4 | レコードが見つからない / 形式不正 / 再現不能(truncated・event 欠落) | +| 4 | レコードが見つからない / 形式不正(キーと本文の関数名の食い違いを含む) / 再現不能(truncated・event 欠落) | diff --git a/cli/src/store.ts b/cli/src/store.ts index eed235b..47858f6 100644 --- a/cli/src/store.ts +++ b/cli/src/store.ts @@ -9,6 +9,7 @@ import { isKnownFailureType, keyMatchesRequestId, parseRecord, + parseRecordKey, RECORD_PREFIX, type ZankyoRecord, } from './record.ts'; @@ -178,5 +179,16 @@ export async function loadRecord( q: KeyQuery, ): Promise { const key = await resolveRecordKey(s3, bucket, q); - return fetchRecord(s3, bucket, key); + const rec = await fetchRecord(s3, bucket, key); + // replay/diff/redrive の invoke 先は本文の functionName で決まる。 + // キーの関数セグメント(--function の絞り込みもここに効く)と食い違う + // レコードは、別の関数への投入に使わせない。 + if (parseRecordKey(key)?.functionName !== rec.functionName) { + throw new CliError( + `record at s3://${bucket}/${key} names function ${JSON.stringify(rec.functionName)}, which does not match its key`, + 4, + 'the record may have been written by another function; inspect it before replaying', + ); + } + return rec; } diff --git a/cli/tests/commands.test.ts b/cli/tests/commands.test.ts index c28ab12..a1aec5b 100644 --- a/cli/tests/commands.test.ts +++ b/cli/tests/commands.test.ts @@ -9,7 +9,15 @@ import { run as runList } from '../src/commands/list.ts'; import { run as runRedrive } from '../src/commands/redrive.ts'; import { run as runReplay } from '../src/commands/replay.ts'; import { CliError } from '../src/errors.ts'; -import { captureStdout, deps, fakeLambda, fakeLambdaSeq, fakeS3, VALID_RECORD } from './helpers.ts'; +import { + captureStdout, + deps, + fakeLambda, + fakeLambdaHandler, + fakeLambdaSeq, + fakeS3, + VALID_RECORD, +} from './helpers.ts'; const KEY = 'zankyo/fn/2026/09/22/r1.json'; @@ -124,4 +132,25 @@ describe('zankyo redrive', () => { ); assert.equal(code, 1); }); + + it('refuses to invoke a function other than the one in the record key', async () => { + const forged = JSON.stringify({ + ...(JSON.parse(VALID_RECORD) as Record), + functionName: 'other-fn', + }); + const invoked: string[] = []; + const lambda = fakeLambdaHandler((input) => { + invoked.push(input.FunctionName); + return { StatusCode: 200 }; + }); + await assert.rejects( + () => + runRedrive( + ['r1', '--bucket', 'b', '--confirm'], + deps(fakeS3([{ Contents: [{ Key: KEY }] }], forged), lambda), + ), + (e: unknown) => e instanceof CliError && e.exitCode === 4, + ); + assert.deepEqual(invoked, []); + }); }); diff --git a/cli/tests/store.test.ts b/cli/tests/store.test.ts index d811fa2..7f3073a 100644 --- a/cli/tests/store.test.ts +++ b/cli/tests/store.test.ts @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { CliError } from '../src/errors.ts'; -import { fetchRecord, listRecordKeys, resolveRecordKey } from '../src/store.ts'; +import { fetchRecord, listRecordKeys, loadRecord, resolveRecordKey } from '../src/store.ts'; import { fakeS3 } from './helpers.ts'; function obj(key: string, lastModified?: string) { @@ -153,3 +153,23 @@ describe('fetchRecord', () => { assert.ok(warnings.some((w) => w.includes('unknown failureType'))); }); }); + +describe('loadRecord', () => { + const page = { Contents: [obj('zankyo/fn/2026/09/22/r1.json')] }; + + it('returns the record when its functionName matches the key', async () => { + const rec = await loadRecord(fakeS3([page], VALID_RECORD), 'bkt', { requestId: 'r1' }); + assert.equal(rec.functionName, 'fn'); + }); + + it('rejects with exitCode 4 when the body names a function other than its key', async () => { + const forged = JSON.stringify({ + ...(JSON.parse(VALID_RECORD) as Record), + functionName: 'other-fn', + }); + await assert.rejects( + () => loadRecord(fakeS3([page], forged), 'bkt', { requestId: 'r1' }), + (e: unknown) => e instanceof CliError && e.exitCode === 4, + ); + }); +}); From 7478e452d9f9d21c9c5333889082a2ad0c5cdbe4 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:00:20 +0900 Subject: [PATCH 24/97] =?UTF-8?q?fix(construct):=20s3:PutObject=20?= =?UTF-8?q?=E3=81=AE=E5=AF=BE=E8=B1=A1=E3=82=92=E9=96=A2=E6=95=B0=E3=81=94?= =?UTF-8?q?=E3=81=A8=E3=81=AE=20zankyo/{=E9=96=A2=E6=95=B0=E5=90=8D}/=20?= =?UTF-8?q?=E3=81=AB=E7=B5=9E=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit attachTo は zankyo/* 全体への PutObject を付けていた。同じバケットを 共有する関数は、互いの関数名の下にもレコードを置けた。CLI の突き合わせは キーと本文の食い違いしか見ないため、キーごと偽った記録は防げなかった。 書き込み先を zankyo/{関数名}/* に限る。関数名は関数自身への Ref なので、 role の DefaultPolicy に入れると Function との循環依存になる。 関数ごとの独立した AWS::IAM::Policy として付ける。 --- README.md | 2 ++ SECURITY.md | 5 +++-- construct/src/zankyo.ts | 19 +++++++++++++------ construct/tests/zankyo.test.ts | 30 ++++++++++++++++++++++++++++++ proxy/src/record.rs | 2 +- 5 files changed, 49 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 39bf8d0..e4d3a0c 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,8 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json - レコードは**利用者自身のアカウントの S3** にのみ保存。外部送信ゼロ。 - 関数に付与するのは `s3:PutObject` のみ(+KMS 時は Encrypt/GenerateDataKey)。 + 書き込み先は `zankyo/{function-name}/` 配下に限るので、バケットを共有する + 別の関数のレコードは書けません(CDK construct の場合)。 - CLI は、キーの関数名と本文の `functionName` が食い違うレコードを replay・diff・redrive に使いません(exit 4)。 - proxy が listen するのは `127.0.0.1` のみ。 diff --git a/SECURITY.md b/SECURITY.md index 9769167..30e2afc 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -19,8 +19,9 @@ zankyo は失敗イベントを扱うため、記録経路そのものを最小 - **PII scrub**: 既定で有効。フィールド名 denylist とパターン検出 (email・JWT・クレジットカード番号等)の hybrid で、 `ZANKYO_SCRUB_MODE=off` を明示しない限り無効化できません。 -- **権限**: CDK construct が付与するのは記録バケットへの - `s3:PutObject` のみ。読み取り権限は関数に付きません。 +- **権限**: CDK construct が付与するのは記録バケットの + `zankyo/{function-name}/` 配下への `s3:PutObject` のみ。読み取り権限は + 関数に付きません。バケットを共有する関数どうしも、互いのレコードは書けません。 - **暗号化**: SSE-S3 が既定。`ZANKYO_KMS_KEY` で SSE-KMS を選択でき、 その場合に限り KMS の encrypt / data key 権限が付きます。 - **fail-open**: proxy 自身の障害で関数本体を止めない設計です。 diff --git a/construct/src/zankyo.ts b/construct/src/zankyo.ts index 01bf71b..fe8883d 100644 --- a/construct/src/zankyo.ts +++ b/construct/src/zankyo.ts @@ -123,12 +123,19 @@ export class Zankyo extends Construct { } // 記録に必要なのは PutObject のみ。grantPut は LegalHold/Tagging 等まで // 広く付くため、最小権限の方針に合わせアクションを明示する。 - // 書き込み先も zankyo/ プレフィックスに限る — proxy はそれ以外の - // キーを生成しないので、バケットの他領域まで許す必要がない。 - fn.addToRolePolicy( - new iam.PolicyStatement({ - actions: ['s3:PutObject'], - resources: [this.bucket.arnForObjects(`${RECORD_KEY_PREFIX}/*`)], + // 書き込み先は zankyo/{関数名}/ に限る。proxy は自分の関数名の下にしか + // 書かないので、バケットを共有する別の関数がこの関数を名乗るレコード + // (replay/redrive の投入先になる)を置けないようにする。 + // 関数名は関数自身への Ref のため、role の DefaultPolicy に書くと + // 循環依存になる。独立した Policy として付ける。 + fn.role?.attachInlinePolicy( + new iam.Policy(fn, 'ZankyoRecordsPolicy', { + statements: [ + new iam.PolicyStatement({ + actions: ['s3:PutObject'], + resources: [this.bucket.arnForObjects(`${RECORD_KEY_PREFIX}/${fn.functionName}/*`)], + }), + ], }), ); // SSE-KMS 書き込みに必要なのは Encrypt と GenerateDataKey。Decrypt は不要。 diff --git a/construct/tests/zankyo.test.ts b/construct/tests/zankyo.test.ts index 6eee499..c2aee79 100644 --- a/construct/tests/zankyo.test.ts +++ b/construct/tests/zankyo.test.ts @@ -68,6 +68,36 @@ describe('Zankyo', () => { }); }); + it('scopes PutObject to each function own key prefix', () => { + const fnRefs: unknown[] = []; + const t = synth((stack) => { + const z = new Zankyo(stack, 'Z', { + layer: lambda.LayerVersion.fromLayerVersionArn( + stack, + 'L', + 'arn:aws:lambda:us-east-1:123456789012:layer:zankyo:1', + ), + }); + for (const id of ['A', 'B']) { + const f = fn(stack, id); + z.attachTo(f); + fnRefs.push(stack.resolve(f.functionName)); + } + }); + for (const fnRef of fnRefs) { + t.hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + Match.objectLike({ + Action: 's3:PutObject', + Resource: { 'Fn::Join': ['', [Match.anyValue(), '/zankyo/', fnRef, '/*']] }, + }), + ], + }, + }); + } + }); + it('uses an existing bucket and emits scrub fields', () => { const t = synth((stack) => { const bucket = s3.Bucket.fromBucketName(stack, 'B', 'existing-records'); diff --git a/proxy/src/record.rs b/proxy/src/record.rs index 6b53ee5..dcc961f 100644 --- a/proxy/src/record.rs +++ b/proxy/src/record.rs @@ -10,7 +10,7 @@ use time::OffsetDateTime; pub const RECORD_VERSION: &str = "1"; /// S3 キーの先頭セグメント。CLI (cli/src/record.ts)・CDK construct の -/// IAM スコープ (`zankyo/*`) と揃える規約。 +/// IAM スコープ (`zankyo/{function-name}/*`) と揃える規約。 pub const KEY_PREFIX: &str = "zankyo"; #[derive(Debug, Clone, Copy, PartialEq, Eq)] From c1e90958b240a4924dd26b70ef3d774b66d78087 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:00:25 +0900 Subject: [PATCH 25/97] =?UTF-8?q?fix(cli):=20fixture=20--out=20=E3=81=AE?= =?UTF-8?q?=E6=96=B0=E3=81=97=E3=81=84=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=82=92=20mode=200600=20=E3=81=A7=E4=BD=9C=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 以前は umask に従い 0644 などで作っていた。scrub 済みでもイベントの断片を 含むため、共有マシンでは他のユーザーから読めた。既存ファイルを上書きする ときは、そのファイルのモードを変えない。 --- cli/src/commands/fixture.ts | 3 ++- cli/tests/commands.test.ts | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cli/src/commands/fixture.ts b/cli/src/commands/fixture.ts index 49b9506..623a3f1 100644 --- a/cli/src/commands/fixture.ts +++ b/cli/src/commands/fixture.ts @@ -39,7 +39,8 @@ export async function run(argv: string[], deps?: AwsClients): Promise { } const out = strVal(values.out); if (out) { - await writeFile(out, body); + // scrub 済みでもイベントの断片を含むため、新規作成時は所有者だけが読めるようにする + await writeFile(out, body, { mode: 0o600 }); console.log(`wrote ${out} — run: sam local invoke -e ${out}`); } else { process.stdout.write(body); diff --git a/cli/tests/commands.test.ts b/cli/tests/commands.test.ts index a1aec5b..4ab9367 100644 --- a/cli/tests/commands.test.ts +++ b/cli/tests/commands.test.ts @@ -1,5 +1,5 @@ import assert from 'node:assert/strict'; -import { mkdtemp, readFile, rm } from 'node:fs/promises'; +import { mkdtemp, readFile, rm, stat } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { describe, it } from 'node:test'; @@ -61,6 +61,15 @@ describe('zankyo fixture', () => { assert.equal(written.user, 'alice'); }); + it('creates --out with mode 0600', { skip: process.platform === 'win32' }, async (t) => { + const dir = await mkdtemp(join(tmpdir(), 'zankyo-')); + t.after(() => rm(dir, { recursive: true, force: true })); + const outFile = join(dir, 'event.json'); + const s3 = fakeS3([{ Contents: [{ Key: KEY }] }], VALID_RECORD); + await captureStdout(() => runFixture(['r1', '--bucket', 'b', '--out', outFile], deps(s3))); + assert.equal((await stat(outFile)).mode & 0o777, 0o600); + }); + it('rejects when no requestId or --last given', async () => { await assert.rejects(() => runFixture(['--bucket', 'b'], deps(fakeS3([]))), CliError); }); From 4921a1c0fd734ba18bfb276fd9bb6bcca752ea3b Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:00:30 +0900 Subject: [PATCH 26/97] =?UTF-8?q?refactor(cli):=20=E4=BD=BF=E3=82=8F?= =?UTF-8?q?=E3=82=8C=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84=20region=E3=83=BB?= =?UTF-8?q?canonicalize=20=E3=81=A8=E9=87=8D=E8=A4=87=E3=81=97=E3=81=9F?= =?UTF-8?q?=E5=88=86=E5=B2=90=E3=82=92=E6=B6=88=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AwsClients.region は本番コードから読まれていなかった。フィールドを消し、 テストは S3/Lambda クライアントに --region が渡ることを確かめる形にした - diff.ts の canonicalize と sortKeys は、テストからしか呼ばれていなかった - fixtureJson の生テキストと base64 の分岐は同じ処理だったので 1 つにまとめた。 eventPayload の `?? {}` は、buildFixtureEvent が null を弾くため届かない --- cli/src/aws.ts | 2 -- cli/src/diff.ts | 15 --------------- cli/src/fixture.ts | 9 +++------ cli/tests/aws.test.ts | 17 ++++++++++++++--- cli/tests/diff.test.ts | 10 +--------- cli/tests/fixture.test.ts | 5 +++++ cli/tests/helpers.ts | 1 - 7 files changed, 23 insertions(+), 36 deletions(-) diff --git a/cli/src/aws.ts b/cli/src/aws.ts index 9cbf308..41c6cef 100644 --- a/cli/src/aws.ts +++ b/cli/src/aws.ts @@ -74,7 +74,6 @@ class LambdaFunctionInvoker implements FunctionInvoker { export interface AwsClients { s3: RecordReader; lambda: FunctionInvoker; - region: string | undefined; } export function makeClients(values: Record): AwsClients { @@ -93,6 +92,5 @@ export function makeClients(values: Record): AwsClients { return { s3: new S3RecordReader(new S3Client(cfg)), lambda: new LambdaFunctionInvoker(new LambdaClient(cfg)), - region, }; } diff --git a/cli/src/diff.ts b/cli/src/diff.ts index a9452c6..c208817 100644 --- a/cli/src/diff.ts +++ b/cli/src/diff.ts @@ -63,21 +63,6 @@ function diffArrays(a: unknown[], b: unknown[], path: string): JsonDiff[] { return diffs; } -/** キー順を安定化した JSON 文字列。比較・表示用。 */ -export function canonicalize(v: unknown): string { - return JSON.stringify(sortKeys(v), null, 2); -} - -function sortKeys(v: unknown): unknown { - if (Array.isArray(v)) return v.map(sortKeys); - if (isPlainObject(v)) { - const out: Record = {}; - for (const k of Object.keys(v).sort()) out[k] = sortKeys(v[k]); - return out; - } - return v; -} - const KIND_MARK: Record = { added: '+', removed: '-', diff --git a/cli/src/fixture.ts b/cli/src/fixture.ts index 376f990..77e4786 100644 --- a/cli/src/fixture.ts +++ b/cli/src/fixture.ts @@ -22,12 +22,9 @@ export function buildFixtureEvent(rec: ZankyoRecord): unknown { export function fixtureJson(rec: ZankyoRecord): string { const event = buildFixtureEvent(rec); - // 非 JSON イベントはレコードに生テキストで入っている。 + // 非 JSON イベントはレコードに文字列(生テキストか base64)で入っている。 // JSON 再エンコードすると原文と異なるペイロードになるため、そのまま書く。 - if (rec.eventIsRawText && typeof event === 'string') { - return `${event}\n`; - } - if (rec.eventIsBase64 && typeof event === 'string') { + if ((rec.eventIsRawText || rec.eventIsBase64) && typeof event === 'string') { return `${event}\n`; } return `${JSON.stringify(event, null, 2)}\n`; @@ -47,5 +44,5 @@ export function eventPayload(rec: ZankyoRecord): string | Uint8Array { if (rec.eventIsRawText && typeof event === 'string') { return event; } - return JSON.stringify(event ?? {}); + return JSON.stringify(event); } diff --git a/cli/tests/aws.test.ts b/cli/tests/aws.test.ts index 1fab61d..927a56f 100644 --- a/cli/tests/aws.test.ts +++ b/cli/tests/aws.test.ts @@ -1,5 +1,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; +import { LambdaClient } from '@aws-sdk/client-lambda'; +import { S3Client } from '@aws-sdk/client-s3'; import { envTimeout, makeClients } from '../src/aws.ts'; describe('envTimeout', () => { @@ -37,8 +39,17 @@ describe('makeClients', () => { } }); - it('passes region through when given', () => { - const clients = makeClients({ region: 'ap-northeast-1' }); - assert.equal(clients.region, 'ap-northeast-1'); + it('passes --region to the S3 and Lambda clients', async (t) => { + const regions: string[] = []; + async function captureRegion(this: { config: { region: () => Promise } }) { + regions.push(await this.config.region()); + return {}; + } + t.mock.method(S3Client.prototype, 'send', captureRegion); + t.mock.method(LambdaClient.prototype, 'send', captureRegion); + const clients = makeClients({ region: 'sa-east-1' }); + await clients.s3.listObjectsV2({ Bucket: 'b', Prefix: 'zankyo/' }); + await clients.lambda.invoke({ FunctionName: 'fn', Payload: new Uint8Array() }); + assert.deepEqual(regions, ['sa-east-1', 'sa-east-1']); }); }); diff --git a/cli/tests/diff.test.ts b/cli/tests/diff.test.ts index 18cb52f..7a31061 100644 --- a/cli/tests/diff.test.ts +++ b/cli/tests/diff.test.ts @@ -1,6 +1,6 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; -import { canonicalize, diffJson } from '../src/diff.ts'; +import { diffJson } from '../src/diff.ts'; describe('diffJson', () => { it('returns empty for identical inputs', () => { @@ -35,11 +35,3 @@ describe('diffJson', () => { assert.deepEqual(diffs, [{ path: '$.v', kind: 'changed', a: [1], b: 'one' }]); }); }); - -describe('canonicalize', () => { - it('produces key-order-independent output', () => { - const a = canonicalize({ b: 1, a: { d: 2, c: 3 } }); - const b = canonicalize({ a: { c: 3, d: 2 }, b: 1 }); - assert.equal(a, b); - }); -}); diff --git a/cli/tests/fixture.test.ts b/cli/tests/fixture.test.ts index 491e432..eab488d 100644 --- a/cli/tests/fixture.test.ts +++ b/cli/tests/fixture.test.ts @@ -41,6 +41,11 @@ describe('fixtureJson', () => { const raw: ZankyoRecord = { ...base, event: 'not json', eventIsRawText: true }; assert.equal(fixtureJson(raw), 'not json\n'); }); + + it('writes base64 events verbatim (no JSON quoting)', () => { + const b64: ZankyoRecord = { ...base, event: 'iVBORw==', eventIsBase64: true }; + assert.equal(fixtureJson(b64), 'iVBORw==\n'); + }); }); describe('eventPayload', () => { diff --git a/cli/tests/helpers.ts b/cli/tests/helpers.ts index fd3f949..bfe86ea 100644 --- a/cli/tests/helpers.ts +++ b/cli/tests/helpers.ts @@ -59,7 +59,6 @@ export function deps(s3: RecordReader, lambda?: FunctionInvoker): AwsClients { return { s3, lambda: lambda ?? fakeLambda({}), - region: undefined, }; } From 5a147b4fe2a9b418c5ca0d049bc7a72f4e0a4936 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:00:30 +0900 Subject: [PATCH 27/97] =?UTF-8?q?docs(cli):=20exit=20code=20=E3=81=AE=20JS?= =?UTF-8?q?Doc=20=E3=82=92=E5=AE=9F=E8=A3=85=E3=81=AB=E5=90=88=E3=82=8F?= =?UTF-8?q?=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit レコード不在を 2 に含めつつ「見つからない」を 4 としており、文の中で矛盾していた。実装と README に合わせ、レコードの不在・形式不正・再現できないレコードを 4 とする。 --- cli/src/errors.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cli/src/errors.ts b/cli/src/errors.ts index 491f1fd..475dd5e 100644 --- a/cli/src/errors.ts +++ b/cli/src/errors.ts @@ -1,7 +1,8 @@ /** * CLI の失敗を exit code つきで表すエラー型。 - * 利用者の操作ミス(引数不正・レコード不在)は 2、AWS 側の失敗は 3、 - * 「見つからない」は 4 とし、シェルから原因を分岐できるようにする。 + * 利用者の操作ミス(引数不正・設定不足)は 2、AWS 側の失敗は 3、 + * レコードの不在・形式不正・再現できないレコードは 4 とし、 + * シェルから原因を分岐できるようにする。 */ export class CliError extends Error { readonly exitCode: number; From 72bd03901f094489684366d5a73adf581152c1b7 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:00:36 +0900 Subject: [PATCH 28/97] =?UTF-8?q?fix(cli,construct):=20npm=20=E3=81=AE=20t?= =?UTF-8?q?arball=20=E3=81=AB=20LICENSE=20=E3=81=A8=20build=20=E6=B8=88?= =?UTF-8?q?=E3=81=BF=E3=81=AE=20dist=20=E3=82=92=E5=BF=85=E3=81=9A?= =?UTF-8?q?=E5=90=AB=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - prepack で build を実行する。files は dist だけで、dist は git の管理外の ため、clean clone から publish すると dist が無いか古いまま公開されえた - LICENSE を各パッケージに置く。以前は MIT の許諾文が tarball に入っていなかった - package.json に repository・homepage・bugs・keywords・author を足す。 cli/README.md の「リポジトリ直下の README」にもリンクを付ける --- cli/LICENSE | 21 +++++++++++++++++++++ cli/README.md | 2 +- cli/package.json | 20 ++++++++++++++++++++ construct/LICENSE | 21 +++++++++++++++++++++ construct/package.json | 20 ++++++++++++++++++++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 cli/LICENSE create mode 100644 construct/LICENSE diff --git a/cli/LICENSE b/cli/LICENSE new file mode 100644 index 0000000..4107d4c --- /dev/null +++ b/cli/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 seike460 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/cli/README.md b/cli/README.md index 91a869e..60c3403 100644 --- a/cli/README.md +++ b/cli/README.md @@ -3,7 +3,7 @@ `zankyo` — S3 に保存された「同期呼び出しの失敗レコード」を読み、 fixture 生成・差分リプレイ・本番再実行を行う CLI。 失敗レコードを作る Layer (proxy) 側と組み合わせて使う。詳細は -リポジトリ直下の README を参照。 +[リポジトリ直下の README](https://github.com/seike460/lambda-zankyo#readme) を参照。 ## install diff --git a/cli/package.json b/cli/package.json index 00e6066..6376ede 100644 --- a/cli/package.json +++ b/cli/package.json @@ -4,6 +4,25 @@ "description": "Replay failed synchronous Lambda invocations: fixture, diff, redrive (paired with the zankyo Layer)", "type": "module", "license": "MIT", + "author": "seike460", + "repository": { + "type": "git", + "url": "git+https://github.com/seike460/lambda-zankyo.git", + "directory": "cli" + }, + "homepage": "https://github.com/seike460/lambda-zankyo#readme", + "bugs": { + "url": "https://github.com/seike460/lambda-zankyo/issues" + }, + "keywords": [ + "aws", + "lambda", + "serverless", + "replay", + "fixture", + "debugging", + "cli" + ], "bin": { "zankyo": "dist/bin.js" }, @@ -15,6 +34,7 @@ }, "scripts": { "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json", + "prepack": "pnpm run build", "typecheck": "tsc --noEmit", "test": "node --test tests/*.test.ts", "lint": "biome check ." diff --git a/construct/LICENSE b/construct/LICENSE new file mode 100644 index 0000000..4107d4c --- /dev/null +++ b/construct/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 seike460 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/construct/package.json b/construct/package.json index 7df5b37..ae4a505 100644 --- a/construct/package.json +++ b/construct/package.json @@ -4,6 +4,25 @@ "description": "CDK construct that wires the zankyo Lambda layer, records bucket, and IAM to a function", "type": "module", "license": "MIT", + "author": "seike460", + "repository": { + "type": "git", + "url": "git+https://github.com/seike460/lambda-zankyo.git", + "directory": "construct" + }, + "homepage": "https://github.com/seike460/lambda-zankyo#readme", + "bugs": { + "url": "https://github.com/seike460/lambda-zankyo/issues" + }, + "keywords": [ + "aws", + "lambda", + "serverless", + "cdk", + "aws-cdk", + "construct", + "lambda-layer" + ], "main": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ @@ -14,6 +33,7 @@ }, "scripts": { "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json", + "prepack": "pnpm run build", "typecheck": "tsc --noEmit", "test": "node --test tests/*.test.ts", "lint": "biome check ." From ffa62a28a036d1cebbac40997bb6d9a17e093028 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:00:36 +0900 Subject: [PATCH 29/97] =?UTF-8?q?docs(changelog):=20cli=20=E3=81=A8=20cons?= =?UTF-8?q?truct=20=E3=81=AE=E4=BF=AE=E6=AD=A3=E3=82=92=20[Unreleased]=20?= =?UTF-8?q?=E3=81=AB=E8=BF=BD=E8=A8=98=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f97750f..4b73386 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 SSM の取得は子ランタイムの起動と extension の登録より前に待つ。以前の既定値は Lambda の Init 上限(10 秒)と同じで、SSM に届かない VPC では Init が 上限を超えうる +- **cli** — `fixture --out` は、新しく作るファイルを所有者だけが読める + モード(0600)で書く。既存のファイルを上書きするときは、モードを変えない ### Fixed @@ -38,6 +40,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — README と設定の説明で、`ZANKYO_FLUSH_BUDGET_MS` と `ZANKYO_PUT_TIMEOUT_MS` の役割を実際の動作に合わせた。失敗レコードの PUT (呼び出し中と SHUTDOWN 後)は前者、spill 再送の PUT は後者で打ち切る +- **cli / construct** — npm の tarball に LICENSE を同梱する。以前は + MIT の許諾文が配布物に入っていなかった +- **cli / construct** — pack と publish の前(`prepack`)に build を実行する。 + 以前は dist が無いまま、または古いまま公開されうる手順だった +- **cli / construct** — package.json に repository・homepage・bugs・ + keywords・author を追加した。npm のページから GitHub へたどれる ### Security @@ -52,6 +60,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — JSON を文字列化した値(API Gateway・Function URL の `body` 等)の 中のフィールドにも denylist を適用する。以前は `password` などがマスクされずに 残っていた。一致した場合、その文字列は空白なし・キーは辞書順の JSON に書き直す +- **construct** — `attachTo` が付ける `s3:PutObject` の対象を、`zankyo/*` から + 関数ごとの `zankyo/{関数名}/*` に絞った。以前は、バケットを共有する別の関数が、 + この関数を名乗るレコードを置けた。権限は role の DefaultPolicy ではなく、 + 関数ごとの `AWS::IAM::Policy` に入る。既存のスタックを更新すると、デプロイ中の + 短い間だけ PUT が拒否されることがある。その間のレコードは spill に退避され、 + 後で再送される +- **cli** — S3 キーの関数名と本文の `functionName` が食い違うレコードを、 + exit 4 で拒否する。以前は本文の関数名をそのまま replay・diff・redrive の + invoke 先にしていた。バケットに書ける別の関数が、運用者の権限で任意の関数へ + ペイロードを投入させられた ## [0.1.0] - 2026-09-23 From e4c254f324167d527833441b5aef4b86101888b6 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:07:04 +0900 Subject: [PATCH 30/97] =?UTF-8?q?test(cli):=20=E3=83=95=E3=82=A7=E3=82=A4?= =?UTF-8?q?=E3=82=AF=E3=81=8C=E5=8F=97=E3=81=91=E5=8F=96=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E5=85=A5=E5=8A=9B=E3=82=92=E8=A8=98=E9=8C=B2=E3=81=97=E3=80=81?= =?UTF-8?q?exit=20code=20=E3=81=A8=20invoke=20=E5=85=88=E3=82=92=E6=A4=9C?= =?UTF-8?q?=E8=A8=BC=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fakeS3 と fakeLambda / fakeLambdaSeq が、受け取った入力を配列に残すようにした。 ContinuationToken の受け渡し、--function の Prefix、getObject の Key、 diff が 2 つの alias を呼ぶこと、redrive の dry-run で invoke しないことと --confirm の送り先・ペイロードを確かめる。 あわせて、AWS 失敗の exit 3(list / fixture / replay)、replay の関数エラーの exit 1、ZANKYO_RECORD_MAX_MB を超えるレコードの exit 4 のテストを追加した。 --- cli/tests/commands.test.ts | 46 +++++++++++++++++++++++-- cli/tests/helpers.ts | 61 ++++++++++++++++++++++++--------- cli/tests/store.test.ts | 70 +++++++++++++++++++++++++++++++++++++- 3 files changed, 157 insertions(+), 20 deletions(-) diff --git a/cli/tests/commands.test.ts b/cli/tests/commands.test.ts index 4ab9367..462db81 100644 --- a/cli/tests/commands.test.ts +++ b/cli/tests/commands.test.ts @@ -16,10 +16,15 @@ import { fakeLambdaHandler, fakeLambdaSeq, fakeS3, + rejecting, + sentPayload, VALID_RECORD, } from './helpers.ts'; const KEY = 'zankyo/fn/2026/09/22/r1.json'; +const RECORDED_EVENT = { user: 'alice', password: 'x***' }; + +const isExit = (code: number) => (e: unknown) => e instanceof CliError && e.exitCode === code; describe('zankyo list', () => { const s3 = () => @@ -44,6 +49,11 @@ describe('zankyo list', () => { assert(typeof first === 'object' && first !== null && 'key' in first); assert.equal(first.key, KEY); }); + + it('exits 3 when S3 rejects the listing', async () => { + const s3 = { ...fakeS3([]), listObjectsV2: rejecting('AccessDenied') }; + await assert.rejects(() => runList(['--bucket', 'b'], deps(s3)), isExit(3)); + }); }); describe('zankyo fixture', () => { @@ -73,21 +83,47 @@ describe('zankyo fixture', () => { it('rejects when no requestId or --last given', async () => { await assert.rejects(() => runFixture(['--bucket', 'b'], deps(fakeS3([]))), CliError); }); + + it('exits 3 when S3 rejects the read', async () => { + const s3 = { ...fakeS3([{ Contents: [{ Key: KEY }] }]), getObject: rejecting('AccessDenied') }; + await assert.rejects(() => runFixture(['r1', '--bucket', 'b'], deps(s3)), isExit(3)); + }); }); describe('zankyo replay', () => { + const s3 = () => fakeS3([{ Contents: [{ Key: KEY }] }], VALID_RECORD); + it('invokes the recorded event and prints the outcome', async () => { - const s3 = fakeS3([{ Contents: [{ Key: KEY }] }], VALID_RECORD); const lambda = fakeLambda({ StatusCode: 200, Payload: new TextEncoder().encode('{"ok":true}'), }); const { code, out } = await captureStdout(() => - runReplay(['r1', '--bucket', 'b', '--alias', 'dev'], deps(s3, lambda)), + runReplay(['r1', '--bucket', 'b', '--alias', 'dev'], deps(s3(), lambda)), ); assert.equal(code, 0); assert.ok(out.includes('fn:dev')); assert.ok(out.includes('{"ok":true}')); + assert.equal(lambda.inputs.length, 1); + assert.equal(lambda.inputs[0]?.FunctionName, 'fn:dev'); + assert.deepEqual(sentPayload(lambda.inputs[0]), RECORDED_EVENT); + }); + + it('exits 1 when the function returns an error', async () => { + const lambda = fakeLambda({ + StatusCode: 200, + FunctionError: 'Unhandled', + Payload: new TextEncoder().encode('{"errorMessage":"x"}'), + }); + const { code } = await captureStdout(() => + runReplay(['r1', '--bucket', 'b'], deps(s3(), lambda)), + ); + assert.equal(code, 1); + }); + + it('exits 3 when the Invoke API call fails', async () => { + const lambda = { invoke: rejecting('AccessDeniedException') }; + await assert.rejects(() => runReplay(['r1', '--bucket', 'b'], deps(s3(), lambda)), isExit(3)); }); }); @@ -103,6 +139,8 @@ describe('zankyo diff', () => { runDiff(['r1', '--bucket', 'b', '--alias', 'a', '--alias', 'b'], deps(s3(), lambda)), ); assert.equal(code, 0); + assert.deepEqual(lambda.inputs.map((i) => i.FunctionName).sort(), ['fn:a', 'fn:b']); + assert.deepEqual(lambda.inputs.map(sentPayload), [RECORDED_EVENT, RECORDED_EVENT]); }); it('exits 1 when responses differ', async () => { @@ -128,6 +166,7 @@ describe('zankyo redrive', () => { ); assert.equal(code, 0); assert.ok(out.includes('dry-run')); + assert.deepEqual(lambda.inputs, []); }); it('invokes with --confirm and reports function errors', async () => { @@ -140,6 +179,9 @@ describe('zankyo redrive', () => { runRedrive(['r1', '--bucket', 'b', '--confirm'], deps(s3(), lambda)), ); assert.equal(code, 1); + assert.equal(lambda.inputs.length, 1); + assert.equal(lambda.inputs[0]?.FunctionName, 'fn'); + assert.deepEqual(sentPayload(lambda.inputs[0]), RECORDED_EVENT); }); it('refuses to invoke a function other than the one in the record key', async () => { diff --git a/cli/tests/helpers.ts b/cli/tests/helpers.ts index bfe86ea..19ab890 100644 --- a/cli/tests/helpers.ts +++ b/cli/tests/helpers.ts @@ -1,39 +1,51 @@ import type { AwsClients } from '../src/aws.ts'; import type { FunctionInvoker, + GetInput, InvokeInput, InvokeResult, + ListInput, RecordListPage, RecordReader, } from '../src/ports.ts'; /** * コマンドテスト用フェイク。ports.ts の構造的ポートをそのまま満たす - * ので SDK 型への cast は一切要らない。 + * ので SDK 型への cast は一切要らない。受け取った入力は配列に残し、 + * テストから ContinuationToken・Prefix・Key・FunctionName を検証できるようにする。 */ const EMPTY_PAGE: RecordListPage = {}; const EMPTY_RESULT: InvokeResult = {}; -export function fakeS3(listPages: RecordListPage[], getBody?: string): RecordReader { - let calls = 0; +export interface FakeS3 extends RecordReader { + readonly listInputs: ListInput[]; + readonly getInputs: GetInput[]; +} + +export interface FakeLambda extends FunctionInvoker { + readonly inputs: InvokeInput[]; +} + +export function fakeS3(listPages: RecordListPage[], getBody?: string): FakeS3 { + const listInputs: ListInput[] = []; + const getInputs: GetInput[] = []; return { - async listObjectsV2() { - const page = listPages[Math.min(calls, listPages.length - 1)] ?? EMPTY_PAGE; - calls += 1; + listInputs, + getInputs, + async listObjectsV2(input) { + const page = listPages[Math.min(listInputs.length, listPages.length - 1)] ?? EMPTY_PAGE; + listInputs.push(input); return page; }, - async getObject() { + async getObject(input) { + getInputs.push(input); return { Body: { transformToString: async () => getBody ?? '{}' } }; }, }; } -export function fakeLambda(out: InvokeResult): FunctionInvoker { - return { - async invoke() { - return out; - }, - }; +export function fakeLambda(out: InvokeResult): FakeLambda { + return fakeLambdaSeq([out]); } /** 渡された InvokeInput を検査したい場合用。 */ @@ -46,15 +58,30 @@ export function fakeLambdaHandler(handler: (input: InvokeInput) => InvokeResult) } /** 逐次応答を変えたい場合用(diff の 2 alias 等)。 */ -export function fakeLambdaSeq(outs: InvokeResult[]): FunctionInvoker { - let calls = 0; +export function fakeLambdaSeq(outs: InvokeResult[]): FakeLambda { + const inputs: InvokeInput[] = []; return { - async invoke() { - return outs[Math.min(calls++, outs.length - 1)] ?? EMPTY_RESULT; + inputs, + async invoke(input) { + const out = outs[Math.min(inputs.length, outs.length - 1)] ?? EMPTY_RESULT; + inputs.push(input); + return out; }, }; } +/** AWS API の失敗(exit 3 の経路)を再現する。 */ +export function rejecting(message: string): () => Promise { + return async () => { + throw new Error(message); + }; +} + +/** 送られたペイロードを JSON として読み戻す。 */ +export function sentPayload(input: InvokeInput | undefined): unknown { + return input ? JSON.parse(new TextDecoder().decode(input.Payload)) : undefined; +} + export function deps(s3: RecordReader, lambda?: FunctionInvoker): AwsClients { return { s3, diff --git a/cli/tests/store.test.ts b/cli/tests/store.test.ts index 7f3073a..3fd61ad 100644 --- a/cli/tests/store.test.ts +++ b/cli/tests/store.test.ts @@ -2,7 +2,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { CliError } from '../src/errors.ts'; import { fetchRecord, listRecordKeys, loadRecord, resolveRecordKey } from '../src/store.ts'; -import { fakeS3 } from './helpers.ts'; +import { fakeS3, rejecting } from './helpers.ts'; function obj(key: string, lastModified?: string) { return { Key: key, LastModified: lastModified ? new Date(lastModified) : undefined }; @@ -75,6 +75,19 @@ describe('listRecordKeys', () => { ]); const refs = await listRecordKeys(s3, 'bkt', {}); assert.equal(refs.length, 2); + assert.deepEqual( + s3.listInputs.map((i) => [i.Bucket, i.Prefix, i.ContinuationToken]), + [ + ['bkt', 'zankyo/', undefined], + ['bkt', 'zankyo/', 't2'], + ], + ); + }); + + it('narrows the prefix to one function with --function', async () => { + const s3 = fakeS3([{ Contents: [obj('zankyo/fn/2026/09/22/a.json')] }]); + await listRecordKeys(s3, 'bkt', { functionName: 'fn' }); + assert.equal(s3.listInputs[0]?.Prefix, 'zankyo/fn/'); }); it('filters by since', async () => { @@ -112,6 +125,29 @@ describe('resolveRecordKey', () => { ]); const key = await resolveRecordKey(s3, 'bkt', { requestId: 'target-id' }); assert.equal(key, 'zankyo/fn/2026/09/22/target-id.json'); + assert.deepEqual( + s3.listInputs.map((i) => i.ContinuationToken), + [undefined, 't2'], + ); + }); + + it('narrows the prefix to one function with --function', async () => { + const s3 = fakeS3([{ Contents: [obj('zankyo/fn/2026/09/22/r1.json')] }]); + await resolveRecordKey(s3, 'bkt', { requestId: 'r1', functionName: 'fn' }); + await resolveRecordKey(s3, 'bkt', { last: true, functionName: 'fn' }); + assert.deepEqual( + s3.listInputs.map((i) => i.Prefix), + ['zankyo/fn/', 'zankyo/fn/'], + ); + }); + + it('maps an S3 list failure to exitCode 3', async () => { + const s3 = { ...fakeS3([]), listObjectsV2: rejecting('AccessDenied') }; + await assert.rejects( + () => resolveRecordKey(s3, 'bkt', { requestId: 'r1' }), + (e: unknown) => + e instanceof CliError && e.exitCode === 3 && e.message.includes('AccessDenied'), + ); }); it('throws exitCode 4 when not found', async () => { @@ -128,6 +164,38 @@ describe('fetchRecord', () => { const s3 = fakeS3([], VALID_RECORD); const rec = await fetchRecord(s3, 'bkt', 'zankyo/fn/2026/09/22/r1.json'); assert.equal(rec.requestId, 'r1'); + assert.deepEqual(s3.getInputs, [{ Bucket: 'bkt', Key: 'zankyo/fn/2026/09/22/r1.json' }]); + }); + + it('maps an S3 read failure to exitCode 3', async () => { + const s3 = { ...fakeS3([], VALID_RECORD), getObject: rejecting('NoSuchKey') }; + await assert.rejects( + () => fetchRecord(s3, 'bkt', 'k'), + (e: unknown) => e instanceof CliError && e.exitCode === 3 && e.message.includes('NoSuchKey'), + ); + }); + + it('refuses an object over ZANKYO_RECORD_MAX_MB with exitCode 4 without reading it', async () => { + let read = false; + const s3 = { + ...fakeS3([]), + async getObject() { + return { + ContentLength: 32 * 1024 * 1024 + 1, + Body: { + transformToString: async () => { + read = true; + return VALID_RECORD; + }, + }, + }; + }, + }; + await assert.rejects( + () => fetchRecord(s3, 'bkt', 'k'), + (e: unknown) => e instanceof CliError && e.exitCode === 4, + ); + assert.equal(read, false); }); it('throws on schema mismatch', async () => { From f64f7047187620983d6a6c3aeddb9bf63a8011dd Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:07:15 +0900 Subject: [PATCH 31/97] =?UTF-8?q?fix(cli):=20list=20=E3=81=AE=E8=B5=B0?= =?UTF-8?q?=E6=9F=BB=E4=B8=8A=E9=99=90=E3=82=92=E3=80=81=E9=99=A4=E5=A4=96?= =?UTF-8?q?=E5=BE=8C=E3=81=AE=E4=BB=B6=E6=95=B0=E3=81=A7=E3=81=AF=E3=81=AA?= =?UTF-8?q?=E3=81=8F=E3=83=9A=E3=83=BC=E3=82=B8=E6=95=B0=E3=81=A7=E6=95=B0?= =?UTF-8?q?=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit listRecordKeys は、--since で除外した後の件数で打ち切りを判定していた。 古いページがすべて除外されると件数が増えず、ZANKYO_LIST_MAX_PAGES を 超えてバケットを最後まで走査していた。resolveRecordKey と同じく ページ数で数える。ZANKYO_LIST_PAGE_SIZE が S3 の上限 1000 を超えても、 上限ページ数は変わらない。 --- CHANGELOG.md | 3 +++ cli/README.md | 2 +- cli/src/store.ts | 9 ++++++--- cli/tests/store.test.ts | 24 ++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b73386..1c4a3f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — README と設定の説明で、`ZANKYO_FLUSH_BUDGET_MS` と `ZANKYO_PUT_TIMEOUT_MS` の役割を実際の動作に合わせた。失敗レコードの PUT (呼び出し中と SHUTDOWN 後)は前者、spill 再送の PUT は後者で打ち切る +- **cli** — `list --since` で古いページがすべて除外されると、 + `ZANKYO_LIST_MAX_PAGES` を超えてバケットを最後まで走査していた。 + 走査の上限を、除外後の件数ではなくページ数で数える - **cli / construct** — npm の tarball に LICENSE を同梱する。以前は MIT の許諾文が配布物に入っていなかった - **cli / construct** — pack と publish の前(`prepack`)に build を実行する。 diff --git a/cli/README.md b/cli/README.md index 60c3403..9a8ba30 100644 --- a/cli/README.md +++ b/cli/README.md @@ -32,7 +32,7 @@ AWS API 呼び出しのタイムアウトは env で調整できます |---|---|---| | `ZANKYO_CONNECT_TIMEOUT_MS` | `5000` | AWS API 接続の打ち切り | | `ZANKYO_REQUEST_TIMEOUT_MS` | `30000` | AWS API 応答の打ち切り | -| `ZANKYO_LIST_PAGE_SIZE` | `200` | ListObjectsV2 の 1 ページ件数 | +| `ZANKYO_LIST_PAGE_SIZE` | `200` | ListObjectsV2 の 1 ページ件数(S3 は 1000 件までしか返さない) | | `ZANKYO_LIST_MAX_PAGES` | `50` | レコード探索のページ走査上限 | | `ZANKYO_RECORD_MAX_MB` | `32` | レコード1件の読み取り上限(MiB) | diff --git a/cli/src/store.ts b/cli/src/store.ts index 47858f6..1520ea2 100644 --- a/cli/src/store.ts +++ b/cli/src/store.ts @@ -45,6 +45,7 @@ export async function listRecordKeys( : RECORD_PREFIX_SLASH; const refs: RecordRef[] = []; let token: string | undefined; + let pages = 0; do { const out = await listPage(s3, bucket, prefix, token); for (const o of out.Contents ?? []) { @@ -53,16 +54,18 @@ export async function listRecordKeys( refs.push({ key: o.Key, lastModified: o.LastModified }); } token = out.IsTruncated ? out.NextContinuationToken : undefined; + pages += 1; // S3 の list はキー辞書順(= 日付パーティション昇順)なので、 // 途中で打ち切ると「最新」の判定が最古側のページだけで決まる。 // --limit 指定時も新しい順に並べてから切るため、 - // 上限ページまでは必ず走査する。 - } while (token && refs.length < pageSize() * maxPages()); + // 上限ページまでは必ず走査する。上限は --since で除外した分も含めた + // ページ数で数える(件数で数えると、古いページが続く限り止まらない)。 + } while (token && pages < maxPages()); if (token) { // 打ち切りを黙らせると --last が実際より古いレコードを // 「最新」と答える。絞り込み手段を添えて stderr へ警告する。 console.error( - `zankyo: listing truncated at ${refs.length} objects; results may miss newer records — narrow with --function or increase ZANKYO_LIST_MAX_PAGES`, + `zankyo: listing truncated after ${pages} pages; results may miss newer records — narrow with --function or increase ZANKYO_LIST_MAX_PAGES`, ); } refs.sort((a, b) => (b.lastModified?.getTime() ?? 0) - (a.lastModified?.getTime() ?? 0)); diff --git a/cli/tests/store.test.ts b/cli/tests/store.test.ts index 3fd61ad..9fd4059 100644 --- a/cli/tests/store.test.ts +++ b/cli/tests/store.test.ts @@ -90,6 +90,30 @@ describe('listRecordKeys', () => { assert.equal(s3.listInputs[0]?.Prefix, 'zankyo/fn/'); }); + it('stops at ZANKYO_LIST_MAX_PAGES even when --since filters out every page', async (t) => { + const saved = process.env.ZANKYO_LIST_MAX_PAGES; + process.env.ZANKYO_LIST_MAX_PAGES = '2'; + const warnings: string[] = []; + t.mock.method(console, 'error', (...args: unknown[]) => warnings.push(args.join(' '))); + t.after(() => { + if (saved === undefined) { + delete process.env.ZANKYO_LIST_MAX_PAGES; + } else { + process.env.ZANKYO_LIST_MAX_PAGES = saved; + } + }); + const oldPage = (token: string) => ({ + Contents: [obj(`zankyo/fn/2026/01/01/${token}.json`, '2026-01-01T00:00:00Z')], + IsTruncated: true, + NextContinuationToken: token, + }); + const s3 = fakeS3([oldPage('t2'), oldPage('t3'), oldPage('t4'), oldPage('t5'), {}]); + const refs = await listRecordKeys(s3, 'bkt', { since: new Date('2026-09-01T00:00:00Z') }); + assert.deepEqual(refs, []); + assert.equal(s3.listInputs.length, 2); + assert.ok(warnings.some((w) => w.includes('listing truncated after 2 pages'))); + }); + it('filters by since', async () => { const s3 = fakeS3([ { From 7a6efa49d813642c475382ecd85bf6b0884fa641 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:07:26 +0900 Subject: [PATCH 32/97] =?UTF-8?q?fix(cli):=20=E9=9D=9E=20JSON=20=E3=82=A4?= =?UTF-8?q?=E3=83=99=E3=83=B3=E3=83=88=E3=81=AE=E3=83=AC=E3=82=B3=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=82=92=20replay=E3=83=BBdiff=E3=83=BBredrive=20?= =?UTF-8?q?=E3=81=AE=20invoke=20=E5=89=8D=E3=81=AB=20exit=204=20=E3=81=A7?= =?UTF-8?q?=E6=AD=A2=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lambda の Invoke API は、Payload を JSON と定め、JSON でない本文を InvalidRequestContentException で拒否する (https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)。 以前は eventIsRawText の原文や eventIsBase64 のデコード結果をそのまま送り、 README もそれで再送できると説明していた。eventPayload で invoke の前に止め、 fixture の案内と README・cli/README の exit code 表を実際の動作に合わせる。 fixture は従来どおり、保存された形のまま書き出す。 --- CHANGELOG.md | 5 +++++ README.md | 10 ++++++---- cli/README.md | 2 +- cli/src/commands/fixture.ts | 6 +++--- cli/src/fixture.ts | 21 +++++++++++---------- cli/src/invoke.ts | 8 +++----- cli/tests/commands.test.ts | 19 +++++++++++++++++++ cli/tests/fixture.test.ts | 23 +++++++++++------------ proxy/src/handlers.rs | 2 +- 9 files changed, 60 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c4a3f4..4b49bfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — README と設定の説明で、`ZANKYO_FLUSH_BUDGET_MS` と `ZANKYO_PUT_TIMEOUT_MS` の役割を実際の動作に合わせた。失敗レコードの PUT (呼び出し中と SHUTDOWN 後)は前者、spill 再送の PUT は後者で打ち切る +- **cli** — replay・diff・redrive は、非 JSON イベント(`eventIsRawText` / + `eventIsBase64`)のレコードを、invoke の前に exit 4 で止める。Lambda の + Invoke API は JSON でない本文を `InvalidRequestContentException` で拒否する。 + 以前は原文のまま送り、README もそれで再送できると説明していた。 + fixture は従来どおり、保存された形のまま書き出す - **cli** — `list --since` で古いページがすべて除外されると、 `ZANKYO_LIST_MAX_PAGES` を超えてバケットを最後まで走査していた。 走査の上限を、除外後の件数ではなくページ数で数える diff --git a/README.md b/README.md index e4d3a0c..d8fe8ae 100644 --- a/README.md +++ b/README.md @@ -158,11 +158,13 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json 補助フィールド(該当時のみ付与): - `eventIsRawText: true` — 元イベントが JSON でない生テキストの場合。 - `event` は文字列として保持され、replay/redrive/diff は JSON 再エンコードせず - 原文のままペイロードに使います。fixture はそのまま書き出します。 + `event` は文字列として保持され、fixture はそのまま書き出します。 - `eventIsBase64: true` — 元イベントが UTF-8 でないバイナリの場合。 - `event` は base64 文字列として保持され、replay/redrive/diff は - デコードして元のバイト列を再送します。 + `event` は base64 文字列として保持され、fixture はそのまま書き出します。 +- 上の 2 つ(非 JSON イベント)は、replay/redrive/diff の対象外です(exit 4)。 + Lambda の [Invoke API](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) + は JSON のペイロードしか受け付けず、JSON でない本文を + `InvalidRequestContentException` で拒否するためです。 - `truncated: true` — イベントが `ZANKYO_MAX_EVENT_KB` を超えた場合。 先頭のみ保持のため fixture/replay/redrive/diff はすべて対象外 (部分イベントの replay は誤結果を生むため拒否)。 diff --git a/cli/README.md b/cli/README.md index 9a8ba30..f224ac6 100644 --- a/cli/README.md +++ b/cli/README.md @@ -44,4 +44,4 @@ AWS API 呼び出しのタイムアウトは env で調整できます | 1 | diff: 応答に差異 / replay・redrive: 関数がエラーを返した | | 2 | 引数・設定ミス | | 3 | AWS API 呼び出しの失敗 | -| 4 | レコードが見つからない / 形式不正(キーと本文の関数名の食い違いを含む) / 再現不能(truncated・event 欠落) | +| 4 | レコードが見つからない / 形式不正(キーと本文の関数名の食い違いを含む) / 再現不能(truncated・event 欠落・replay/diff/redrive での非 JSON イベント) | diff --git a/cli/src/commands/fixture.ts b/cli/src/commands/fixture.ts index 623a3f1..2e8c559 100644 --- a/cli/src/commands/fixture.ts +++ b/cli/src/commands/fixture.ts @@ -30,11 +30,11 @@ export async function run(argv: string[], deps?: AwsClients): Promise { functionName: strVal(values.function), }); const body = fixtureJson(rec); - // 非 JSON イベントは sam local invoke -e(JSON 前提)では使えない。 - // そのまま書き出すが、用途を誤解させないよう stderr で断っておく。 + // 非 JSON イベントは sam local invoke -e も Lambda の Invoke API も(JSON 前提) + // 受け付けない。そのまま書き出すが、用途を誤解させないよう stderr で断っておく。 if (rec.eventIsRawText || rec.eventIsBase64) { console.error( - 'note: this record holds a non-JSON event; `sam local invoke -e` expects JSON — use `zankyo replay`/`redrive` to send the original payload', + 'note: this record holds a non-JSON event, written as-is; `sam local invoke -e` and `zankyo replay`/`diff`/`redrive` accept only JSON events', ); } const out = strVal(values.out); diff --git a/cli/src/fixture.ts b/cli/src/fixture.ts index 77e4786..1bd1964 100644 --- a/cli/src/fixture.ts +++ b/cli/src/fixture.ts @@ -31,18 +31,19 @@ export function fixtureJson(rec: ZankyoRecord): string { } /** - * replay/redrive/diff で Lambda へ送るペイロード。 - * JSON イベントはエンコード文字列、eventIsRawText の生テキストは原文のまま、 - * eventIsBase64 は元のバイト列へデコードして返す - * (文字列化すると元イベントと異なる入力になる)。 + * replay/redrive/diff で Lambda へ送るペイロード(JSON エンコード文字列)。 + * Invoke API は JSON でない本文を InvalidRequestContentException で拒否する。 + * 非 JSON イベント(eventIsRawText / eventIsBase64)は、文字列へ包むと + * 元イベントと異なる入力になるため、invoke の前に止める。 */ -export function eventPayload(rec: ZankyoRecord): string | Uint8Array { +export function eventPayload(rec: ZankyoRecord): string { const event = buildFixtureEvent(rec); - if (rec.eventIsBase64 && typeof event === 'string') { - return Buffer.from(event, 'base64'); - } - if (rec.eventIsRawText && typeof event === 'string') { - return event; + if (rec.eventIsRawText || rec.eventIsBase64) { + throw new CliError( + 'record holds a non-JSON event; the Lambda Invoke API accepts only JSON payloads', + 4, + 'use `zankyo fixture` to export the stored event as-is', + ); } return JSON.stringify(event); } diff --git a/cli/src/invoke.ts b/cli/src/invoke.ts index 95a17b2..7d995d4 100644 --- a/cli/src/invoke.ts +++ b/cli/src/invoke.ts @@ -21,15 +21,13 @@ export function qualifiedName(functionName: string, alias?: string): string { export async function invokeFunction( lambda: FunctionInvoker, functionTarget: string, - /** 送信するペイロード。fixture.ts の eventPayload が作る - * (JSON エンコード済み文字列・生テキスト・またはバイナリ)。 */ - payload: string | Uint8Array, + /** 送信する JSON エンコード済みのペイロード。fixture.ts の eventPayload が作る。 */ + payload: string, ): Promise { - const bytes = typeof payload === 'string' ? new TextEncoder().encode(payload) : payload; const out = await lambda .invoke({ FunctionName: functionTarget, - Payload: bytes, + Payload: new TextEncoder().encode(payload), }) .catch((e) => { // S3 側と同じく AWS 失敗は exit 3 で統一する(README の exit code 表) diff --git a/cli/tests/commands.test.ts b/cli/tests/commands.test.ts index 462db81..3bd6fd0 100644 --- a/cli/tests/commands.test.ts +++ b/cli/tests/commands.test.ts @@ -26,6 +26,12 @@ const RECORDED_EVENT = { user: 'alice', password: 'x***' }; const isExit = (code: number) => (e: unknown) => e instanceof CliError && e.exitCode === code; +const RAW_TEXT_RECORD = JSON.stringify({ + ...(JSON.parse(VALID_RECORD) as Record), + event: 'not json', + eventIsRawText: true, +}); + describe('zankyo list', () => { const s3 = () => fakeS3([{ Contents: [{ Key: KEY, LastModified: new Date('2026-09-22T00:00:00Z') }] }]); @@ -125,6 +131,19 @@ describe('zankyo replay', () => { const lambda = { invoke: rejecting('AccessDeniedException') }; await assert.rejects(() => runReplay(['r1', '--bucket', 'b'], deps(s3(), lambda)), isExit(3)); }); + + it('exits 4 without invoking when the record holds a non-JSON event', async () => { + const lambda = fakeLambda({ StatusCode: 200 }); + await assert.rejects( + () => + runReplay( + ['r1', '--bucket', 'b'], + deps(fakeS3([{ Contents: [{ Key: KEY }] }], RAW_TEXT_RECORD), lambda), + ), + isExit(4), + ); + assert.deepEqual(lambda.inputs, []); + }); }); describe('zankyo diff', () => { diff --git a/cli/tests/fixture.test.ts b/cli/tests/fixture.test.ts index eab488d..81c3ccd 100644 --- a/cli/tests/fixture.test.ts +++ b/cli/tests/fixture.test.ts @@ -53,21 +53,20 @@ describe('eventPayload', () => { assert.equal(eventPayload(base), '{"input":"data"}'); }); - it('passes raw text through unchanged', () => { + it('rejects raw text events with exitCode 4 (Invoke accepts only JSON)', () => { const raw: ZankyoRecord = { ...base, event: 'hello, world', eventIsRawText: true }; - assert.equal(eventPayload(raw), 'hello, world'); + assert.throws( + () => eventPayload(raw), + (e: unknown) => e instanceof CliError && e.exitCode === 4, + ); }); - it('decodes base64 events back to the original bytes', () => { - const original = new Uint8Array([0x89, 0x50, 0x4e, 0x47]); - const rec: ZankyoRecord = { - ...base, - event: Buffer.from(original).toString('base64'), - eventIsBase64: true, - }; - const payload = eventPayload(rec); - assert.ok(payload instanceof Uint8Array); - assert.deepEqual([...payload], [...original]); + it('rejects base64 events with exitCode 4 (Invoke accepts only JSON)', () => { + const b64: ZankyoRecord = { ...base, event: 'iVBORw==', eventIsBase64: true }; + assert.throws( + () => eventPayload(b64), + (e: unknown) => e instanceof CliError && e.exitCode === 4, + ); }); it('still rejects truncated records', () => { diff --git a/proxy/src/handlers.rs b/proxy/src/handlers.rs index c673172..d055336 100644 --- a/proxy/src/handlers.rs +++ b/proxy/src/handlers.rs @@ -69,7 +69,7 @@ pub(crate) async fn handle_next( if !request_id.is_empty() { // JSON でないイベントは UTF-8 なら生テキスト、それ以外は // base64 で保持する。from_utf8_lossy は U+FFFD に潰れて - // replay で元イベントと異なる入力になるため使わない。 + // fixture で原文を取り出せなくなるため使わない。 let (event, encoding) = match serde_json::from_slice::(&bytes) { Ok(v) => (v, EventEncoding::Json), Err(_) => match String::from_utf8(bytes.to_vec()) { From f72d7270ec98146b5a2eb2303a54072db892ae57 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:07:33 +0900 Subject: [PATCH 33/97] =?UTF-8?q?chore(cli):=20npm=20=E3=81=AE=20tarball?= =?UTF-8?q?=20=E3=81=8B=E3=82=89=E4=BD=BF=E3=82=8F=E3=82=8C=E3=81=AA?= =?UTF-8?q?=E3=81=84=20d.ts=20=E3=81=A8=20source=20map=20=E3=82=92?= =?UTF-8?q?=E5=A4=96=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CLI は main / types / exports を持たず、bin だけを公開する。型定義は 使われず、source map は tarball に含まれない ../src を指していた。 tsconfig.build.json の declaration と sourceMap を外し、 tarball は 51 ファイル・約 81KB から 19 ファイル・約 39KB になる。 --- CHANGELOG.md | 2 ++ cli/tsconfig.build.json | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b49bfc..768ad2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 上限を超えうる - **cli** — `fixture --out` は、新しく作るファイルを所有者だけが読める モード(0600)で書く。既存のファイルを上書きするときは、モードを変えない +- **cli** — npm の tarball から、使われない型定義(`.d.ts`)と source map を外した。 + source map は tarball に含まれない `src/` を指していた ### Fixed diff --git a/cli/tsconfig.build.json b/cli/tsconfig.build.json index 47a66d7..796337f 100644 --- a/cli/tsconfig.build.json +++ b/cli/tsconfig.build.json @@ -2,8 +2,6 @@ "extends": "./tsconfig.json", "compilerOptions": { "noEmit": false, - "declaration": true, - "sourceMap": true, "outDir": "dist", "rootDir": "src" }, From bd243c6855ca09521a412400294c8af11b8ffe6f Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:07:33 +0900 Subject: [PATCH 34/97] =?UTF-8?q?ci:=20build=20=E5=BE=8C=E3=81=AB=20CLI=20?= =?UTF-8?q?=E3=81=AE=20bin=EF=BC=88dist=EF=BC=89=E3=82=92=E8=B5=B7?= =?UTF-8?q?=E5=8B=95=E3=81=97=E3=81=A6=E7=A2=BA=E3=81=8B=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CLI のテストは src を型除去で実行するため、公開する dist の import の 書き換えや package.json の bin のパスの誤りを検出できなかった。 ts-quality ジョブで、bin が指すファイルを --version で起動する。 bin.js は全コマンドを静的に import するので、全モジュールの解決も確かめられる。 --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 211d953..56658f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,11 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm lint # biome check . - run: pnpm build # tsc emit — zankyo-cdk/dist を生成(examples の typecheck/test が依存) + # CLI のテストは src を型除去で実行する。公開する bin(package.json の bin が指す dist)の + # import 書き換えやパスの誤りは、ここで実際に起動して確かめる(bin.js は全コマンドを静的 import する) + - name: smoke-test the cli bin (dist) + working-directory: cli + run: node "$(node -p 'require("./package.json").bin.zankyo')" --version - run: pnpm typecheck # tsc --noEmit in each package - run: pnpm test # node --test in each package From f2973e75c0749df801b0cd137f6df711717a5125 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:17:59 +0900 Subject: [PATCH 35/97] =?UTF-8?q?fix(construct):=20=E6=97=A2=E5=AE=9A?= =?UTF-8?q?=E3=81=AE=20SAR=20=E3=82=A2=E3=83=97=E3=83=AA=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=20ID=20=E3=82=92=E3=83=97=E3=83=AC?= =?UTF-8?q?=E3=83=BC=E3=82=B9=E3=83=9B=E3=83=AB=E3=83=80=E3=81=8B=E3=82=89?= =?UTF-8?q?=E5=85=AC=E9=96=8B=E4=B8=AD=E3=81=AE=20ARN=20=E3=81=AB=E7=9B=B4?= =?UTF-8?q?=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 既定値が us-east-1 / 000000000000 のままで、layer を渡さない構成は存在しない SAR アプリを参照してデプロイに失敗していた。公開中の ap-northeast-1 / 446537410535 の ARN に直し、公開前を前提にした JSDoc を書き換える。README に ARN と、公開アプリは他リージョンからもデプロイできることを記載する。 既定の SAR 経路(ApplicationId・SemanticVersion・x86_64 / arm64 の Output 選択)を検証するテストを追加する。版と Output 名は sar/template.yaml と突き合わせる。 --- CHANGELOG.md | 5 ++++ README.md | 5 +++- construct/src/zankyo.ts | 11 ++++--- construct/tests/zankyo.test.ts | 54 ++++++++++++++++++++++++++++++++-- 4 files changed, 65 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 768ad2c..5a15093 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 以前は dist が無いまま、または古いまま公開されうる手順だった - **cli / construct** — package.json に repository・homepage・bugs・ keywords・author を追加した。npm のページから GitHub へたどれる +- **construct** — 既定の SAR アプリケーション ID が、プレースホルダ + (us-east-1 / アカウント 000000000000)のままだった。`layer` を渡さない構成は、 + 存在しないアプリを参照してデプロイに失敗していた。公開中の + `arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo` + に直した。公開アプリなので、ほかのリージョンのスタックからもデプロイできる ### Security diff --git a/README.md b/README.md index d8fe8ae..99c29e9 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,10 @@ agent は `SHUTDOWN` だけを購読して待機します。登録前や `SHUTDO ### 1. Layer の導入 - **SAR(推奨)**: Serverless Application Repository から `lambda-zankyo` - を 1 クリック導入(`sar/template.yaml` 参照)。 + を 1 クリック導入(`sar/template.yaml` 参照)。アプリケーション ID は + `arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo` + です。公開アプリなので、ap-northeast-1 以外のリージョンにもデプロイできます + ([AWS ドキュメント](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-publishing-applications.html))。 - **セルフホスト**: `node scripts/build-layer.mts` で両 arch の zip を作り、 通常の Lambda Layer として発行します(GitHub Releases にも zip を添付)。 diff --git a/construct/src/zankyo.ts b/construct/src/zankyo.ts index fe8883d..f3cc210 100644 --- a/construct/src/zankyo.ts +++ b/construct/src/zankyo.ts @@ -10,13 +10,12 @@ import { import { Construct } from 'constructs'; /** - * SAR 上のアプリケーション ID。 - * SAR の applicationId は公開時に確定する ARN のため、初回 publish までは - * `layer` props でのセルフホストを推奨する(SPEC: GitHub Releases zip 同梱)。 - * props.sarApplicationId で任意の公開済み ARN を指すこともできる。 + * SAR で公開している lambda-zankyo のアプリケーション ID。 + * 公開アプリなので、ap-northeast-1 以外のリージョンのスタックからもデプロイできる。 + * props.sarApplicationId で、自分で公開した別のアプリを指すこともできる。 */ export const ZANKYO_APPLICATION_ID = - 'arn:aws:serverlessrepo:us-east-1:000000000000:applications/lambda-zankyo'; + 'arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo'; /** SAR アプリが出力する LayerVersion ARN の Output 名(sar/template.yaml と契約)。 */ const SAR_LAYER_OUTPUT = 'LayerVersionArn'; @@ -50,7 +49,7 @@ export interface ZankyoProps { readonly semanticVersion?: string; /** * セルフホストする LayerVersion。指定時は SAR アプリをデプロイせず - * この Layer をそのまま使う(SAR 審査中・独自ビルド向け)。 + * この Layer をそのまま使う(独自ビルドや、SAR を使えない環境向け)。 */ readonly layer?: lambda.ILayerVersion; /** diff --git a/construct/tests/zankyo.test.ts b/construct/tests/zankyo.test.ts index c2aee79..b4beffe 100644 --- a/construct/tests/zankyo.test.ts +++ b/construct/tests/zankyo.test.ts @@ -1,19 +1,44 @@ +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; import { describe, it } from 'node:test'; import { App, aws_kms as kms, aws_lambda as lambda, Stack, aws_s3 as s3 } from 'aws-cdk-lib'; import { Match, Template } from 'aws-cdk-lib/assertions'; import { Zankyo } from '../src/index.ts'; -function fn(stack: Stack, id: string): lambda.Function { +const PUBLISHED_APPLICATION_ID = + 'arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo'; + +/** SAR に公開するアプリの定義。construct の既定の版と Output 名は、これと揃える。 */ +const sarTemplate = readFileSync(new URL('../../sar/template.yaml', import.meta.url), 'utf8'); + +function fn( + stack: Stack, + id: string, + architecture: lambda.Architecture = lambda.Architecture.X86_64, +): lambda.Function { return new lambda.Function(stack, id, { runtime: lambda.Runtime.NODEJS_22_X, handler: 'index.handler', + architecture, code: lambda.Code.fromInline('exports.handler = async () => "ok"'), }); } +/** スタックに 1 つずつある SAR アプリの論理 ID と、関数に付いた Layer を返す。 */ +function sarWiring(t: Template): { appId: string | undefined; layers: unknown } { + t.resourceCountIs('AWS::Serverless::Application', 1); + t.resourceCountIs('AWS::Lambda::Function', 1); + const [appId] = Object.keys(t.findResources('AWS::Serverless::Application')); + const [f] = Object.values(t.findResources('AWS::Lambda::Function')); + return { appId, layers: f?.Properties?.Layers }; +} + +function newStack(): Stack { + return new Stack(new App(), 'TestStack'); +} + function synth(setup: (stack: Stack) => void): Template { - const app = new App(); - const stack = new Stack(app, 'TestStack'); + const stack = newStack(); setup(stack); return Template.fromStack(stack); } @@ -36,6 +61,29 @@ describe('Zankyo', () => { }); }); + it('deploys the published SAR application at the version in sar/template.yaml', () => { + const semanticVersion = /^ {4}SemanticVersion: (\S+)$/m.exec(sarTemplate)?.[1]; + assert.ok(semanticVersion, 'sar/template.yaml declares SemanticVersion'); + const t = synth((stack) => { + new Zankyo(stack, 'Z').attachTo(fn(stack, 'Fn')); + }); + t.hasResourceProperties('AWS::Serverless::Application', { + Location: { ApplicationId: PUBLISHED_APPLICATION_ID, SemanticVersion: semanticVersion }, + }); + assert.match(sarTemplate, /^Outputs:\n(?:.*\n)*? {2}LayerVersionArn:$/m); + const { appId, layers } = sarWiring(t); + assert.deepEqual(layers, [{ 'Fn::GetAtt': [appId, 'Outputs.LayerVersionArn'] }]); + }); + + it('uses the arm64 SAR output when arm64 is set', () => { + const t = synth((stack) => { + new Zankyo(stack, 'Z', { arm64: true }).attachTo(fn(stack, 'Fn', lambda.Architecture.ARM_64)); + }); + assert.match(sarTemplate, /^Outputs:\n(?:.*\n)*? {2}LayerVersionArnArm64:$/m); + const { appId, layers } = sarWiring(t); + assert.deepEqual(layers, [{ 'Fn::GetAtt': [appId, 'Outputs.LayerVersionArnArm64'] }]); + }); + it('attachTo wires env, layer and PutObject permission', () => { const t = synth((stack) => { const z = new Zankyo(stack, 'Z', { From cdac3537a3cc70b8feae99b032d10664ab872bbe Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:18:07 +0900 Subject: [PATCH 36/97] =?UTF-8?q?fix(construct):=20recordRetentionDays=20?= =?UTF-8?q?=E3=82=92=201=20=E4=BB=A5=E4=B8=8A=E3=81=AE=E6=95=B4=E6=95=B0?= =?UTF-8?q?=E3=81=AB=E9=99=90=E3=82=8A=E3=80=81synth=20=E3=81=A7=E6=A4=9C?= =?UTF-8?q?=E8=A8=BC=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit S3 のライフサイクルの Days は 1 以上の整数でなければならない。負数と小数は CDK の Duration が synth で弾くが、0 は synth を通り、デプロイで初めて失敗していた。バケットを新規作成するときに検証し、満たさなければ例外を投げる。CfnParameter などの未解決の token は検証しない。 --- CHANGELOG.md | 3 +++ construct/src/zankyo.ts | 16 +++++++++++---- construct/tests/zankyo.test.ts | 36 +++++++++++++++++++++++++++++++++- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a15093..08189d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 存在しないアプリを参照してデプロイに失敗していた。公開中の `arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo` に直した。公開アプリなので、ほかのリージョンのスタックからもデプロイできる +- **construct** — `recordRetentionDays` が 1 以上の整数でなければ、synth で + 例外を投げる。以前は 0 が synth を通り、S3 のライフサイクル設定でデプロイが + 失敗していた ### Security diff --git a/construct/src/zankyo.ts b/construct/src/zankyo.ts index f3cc210..e669603 100644 --- a/construct/src/zankyo.ts +++ b/construct/src/zankyo.ts @@ -6,6 +6,7 @@ import { RemovalPolicy, aws_s3 as s3, aws_sam as sam, + Token, } from 'aws-cdk-lib'; import { Construct } from 'constructs'; @@ -34,7 +35,7 @@ export interface ZankyoProps { * 新規作成する。 */ readonly bucket?: s3.IBucket; - /** 新規バケットのレコード保持日数(既定 30)。bucket 指定時は無関係。 */ + /** 新規バケットのレコード保持日数(1 以上の整数、既定 30)。bucket 指定時は無関係。 */ readonly recordRetentionDays?: number; /** SSE-KMS に使うキー。未指定なら SSE-S3。 */ readonly kmsKey?: kms.IKey; @@ -83,9 +84,7 @@ export class Zankyo extends Construct { ...(props.kmsKey ? { encryption: s3.BucketEncryption.KMS, encryptionKey: props.kmsKey } : { encryption: s3.BucketEncryption.S3_MANAGED }), - lifecycleRules: [ - { expiration: Duration.days(props.recordRetentionDays ?? DEFAULT_RETENTION_DAYS) }, - ], + lifecycleRules: [{ expiration: Duration.days(retentionDays(props.recordRetentionDays)) }], // 失敗レコードは監査証跡になりうるため、誤削除より残す方を既定にする removalPolicy: RemovalPolicy.RETAIN, }); @@ -141,3 +140,12 @@ export class Zankyo extends Construct { this.kmsKey?.grant(fn, 'kms:Encrypt', 'kms:GenerateDataKey'); } } + +/** S3 のライフサイクルの Days は 1 以上の整数。0 は synth を通り、デプロイで初めて失敗する。 */ +function retentionDays(days: number | undefined): number { + const value = days ?? DEFAULT_RETENTION_DAYS; + if (!Token.isUnresolved(value) && !(Number.isInteger(value) && value >= 1)) { + throw new Error(`Zankyo: recordRetentionDays must be a positive integer (got ${value})`); + } + return value; +} diff --git a/construct/tests/zankyo.test.ts b/construct/tests/zankyo.test.ts index b4beffe..fcb2e0d 100644 --- a/construct/tests/zankyo.test.ts +++ b/construct/tests/zankyo.test.ts @@ -1,7 +1,14 @@ import assert from 'node:assert/strict'; import { readFileSync } from 'node:fs'; import { describe, it } from 'node:test'; -import { App, aws_kms as kms, aws_lambda as lambda, Stack, aws_s3 as s3 } from 'aws-cdk-lib'; +import { + App, + CfnParameter, + aws_kms as kms, + aws_lambda as lambda, + Stack, + aws_s3 as s3, +} from 'aws-cdk-lib'; import { Match, Template } from 'aws-cdk-lib/assertions'; import { Zankyo } from '../src/index.ts'; @@ -84,6 +91,33 @@ describe('Zankyo', () => { assert.deepEqual(layers, [{ 'Fn::GetAtt': [appId, 'Outputs.LayerVersionArnArm64'] }]); }); + it('rejects a recordRetentionDays that S3 lifecycle cannot accept', () => { + for (const days of [0, -1, 1.5, Number.NaN]) { + assert.throws( + () => new Zankyo(newStack(), 'Z', { recordRetentionDays: days }), + /recordRetentionDays must be a positive integer/, + ); + } + }); + + it('accepts a recordRetentionDays of 1 and an unresolved token', () => { + const t = synth((stack) => { + new Zankyo(stack, 'Z', { recordRetentionDays: 1 }); + }); + t.hasResourceProperties('AWS::S3::Bucket', { + LifecycleConfiguration: { Rules: [Match.objectLike({ ExpirationInDays: 1 })] }, + }); + const withToken = synth((stack) => { + const days = new CfnParameter(stack, 'Days', { type: 'Number' }).valueAsNumber; + new Zankyo(stack, 'Z', { recordRetentionDays: days }); + }); + withToken.hasResourceProperties('AWS::S3::Bucket', { + LifecycleConfiguration: { + Rules: [Match.objectLike({ ExpirationInDays: { Ref: 'Days' } })], + }, + }); + }); + it('attachTo wires env, layer and PutObject permission', () => { const t = synth((stack) => { const z = new Zankyo(stack, 'Z', { From cd35977758643e2845f8b9bd90bc4f6c82a75d7a Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:18:16 +0900 Subject: [PATCH 37/97] =?UTF-8?q?fix(construct):=20SAR=20=E3=81=AE=20Layer?= =?UTF-8?q?=20=E3=81=A8=E9=96=A2=E6=95=B0=E3=81=AE=E3=82=A2=E3=83=BC?= =?UTF-8?q?=E3=82=AD=E3=83=86=E3=82=AF=E3=83=81=E3=83=A3=E3=81=8C=E9=A3=9F?= =?UTF-8?q?=E3=81=84=E9=81=95=E3=81=86=E3=81=A8=20attachTo=20=E3=81=A7?= =?UTF-8?q?=E6=AD=A2=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit arm64 は construct 単位の指定で、attachTo は関数の architecture と突き合わせていなかった。arm64 の関数に x86_64 の Layer を付けても synth が通り、wrapper と extension が別アーキテクチャのバイナリを exec できずに関数が起動しなくなる(fail-open にならない)。AWS は Layer と関数のアーキテクチャの一致を利用者が確かめる前提としているため、SAR 経由のときは attachTo で比べ、食い違えば例外を投げる。layer を渡したセルフホストの構成は対象外とする。 --- CHANGELOG.md | 3 +++ construct/src/zankyo.ts | 17 +++++++++++++++++ construct/tests/zankyo.test.ts | 31 +++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08189d4..ae35f9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 存在しないアプリを参照してデプロイに失敗していた。公開中の `arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo` に直した。公開アプリなので、ほかのリージョンのスタックからもデプロイできる +- **construct** — `attachTo` は、SAR の Layer のアーキテクチャ(`arm64`)と関数の + アーキテクチャが食い違うと例外を投げる。以前は synth が通り、関数は + 別アーキテクチャのバイナリを exec できずに起動しなくなっていた - **construct** — `recordRetentionDays` が 1 以上の整数でなければ、synth で 例外を投げる。以前は 0 が synth を通り、S3 のライフサイクル設定でデプロイが 失敗していた diff --git a/construct/src/zankyo.ts b/construct/src/zankyo.ts index e669603..51d4f3f 100644 --- a/construct/src/zankyo.ts +++ b/construct/src/zankyo.ts @@ -55,6 +55,7 @@ export interface ZankyoProps { readonly layer?: lambda.ILayerVersion; /** * SAR アプリの arm64 用 Output を使う(既定 false = x86_64)。 + * attachTo する関数のアーキテクチャと揃える。食い違うと attachTo が例外を投げる。 * layer を渡した場合は無関係。 */ readonly arm64?: boolean; @@ -69,6 +70,8 @@ export class Zankyo extends Construct { /** 失敗レコードの保存先バケット。 */ readonly bucket: s3.IBucket; private readonly layer: lambda.ILayerVersion; + /** SAR から取り出した Layer のアーキテクチャ。layer を渡した場合は undefined。 */ + private readonly sarArchitecture: lambda.Architecture | undefined; private readonly kmsKey: kms.IKey | undefined; private readonly scrubFields: readonly string[] | undefined; @@ -88,6 +91,11 @@ export class Zankyo extends Construct { // 失敗レコードは監査証跡になりうるため、誤削除より残す方を既定にする removalPolicy: RemovalPolicy.RETAIN, }); + this.sarArchitecture = props.layer + ? undefined + : props.arm64 + ? lambda.Architecture.ARM_64 + : lambda.Architecture.X86_64; this.layer = props.layer ?? lambda.LayerVersion.fromLayerVersionArn(this, 'SarLayer', this.sarLayerArn(props)); @@ -110,6 +118,15 @@ export class Zankyo extends Construct { * 記録先への PutObject(+ KMS)権限付与。 */ public attachTo(fn: lambda.Function): void { + // 別アーキテクチャのバイナリは exec できず、ランタイムごと起動しなくなる(fail-open にならない)。 + // Layer の互換性は利用者が確かめる前提で、デプロイで止まる保証がないため synth で止める + if (this.sarArchitecture && fn.architecture.name !== this.sarArchitecture.name) { + throw new Error( + `Zankyo: ${fn.node.path} runs on ${fn.architecture.name}, but this Zankyo uses the ` + + `${this.sarArchitecture.name} SAR layer. Set arm64 to match the function, or use a ` + + 'separate Zankyo per architecture.', + ); + } fn.addLayers(this.layer); fn.addEnvironment('AWS_LAMBDA_EXEC_WRAPPER', WRAPPER_PATH); fn.addEnvironment('ZANKYO_BUCKET', this.bucket.bucketName); diff --git a/construct/tests/zankyo.test.ts b/construct/tests/zankyo.test.ts index fcb2e0d..f60f2a1 100644 --- a/construct/tests/zankyo.test.ts +++ b/construct/tests/zankyo.test.ts @@ -91,6 +91,37 @@ describe('Zankyo', () => { assert.deepEqual(layers, [{ 'Fn::GetAtt': [appId, 'Outputs.LayerVersionArnArm64'] }]); }); + it('rejects a function whose architecture differs from the SAR layer', () => { + const cases = [ + { arm64: false, architecture: lambda.Architecture.ARM_64 }, + { arm64: true, architecture: lambda.Architecture.X86_64 }, + ]; + for (const { arm64, architecture } of cases) { + const stack = newStack(); + const z = new Zankyo(stack, 'Z', { arm64 }); + const f = fn(stack, 'Fn', architecture); + assert.throws(() => z.attachTo(f), /runs on .* SAR layer\. Set arm64/); + assert.equal(f.node.tryFindChild('ZankyoRecordsPolicy'), undefined); + } + }); + + it('does not check the architecture of a self-hosted layer', () => { + const t = synth((stack) => { + const z = new Zankyo(stack, 'Z', { + layer: lambda.LayerVersion.fromLayerVersionArn( + stack, + 'L', + 'arn:aws:lambda:us-east-1:123456789012:layer:zankyo-arm64:1', + ), + }); + z.attachTo(fn(stack, 'Fn', lambda.Architecture.ARM_64)); + }); + t.resourceCountIs('AWS::Serverless::Application', 0); + t.hasResourceProperties('AWS::Lambda::Function', { + Layers: ['arn:aws:lambda:us-east-1:123456789012:layer:zankyo-arm64:1'], + }); + }); + it('rejects a recordRetentionDays that S3 lifecycle cannot accept', () => { for (const days of [0, -1, 1.5, Number.NaN]) { assert.throws( From 43bce28ccd170fcc2dbfc1058cfff9dfd6cfc31d Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:18:24 +0900 Subject: [PATCH 38/97] =?UTF-8?q?test(construct):=20KMS=20=E3=81=AE?= =?UTF-8?q?=E7=92=B0=E5=A2=83=E5=A4=89=E6=95=B0=E3=83=BB=E3=83=90=E3=82=B1?= =?UTF-8?q?=E3=83=83=E3=83=88=E6=9A=97=E5=8F=B7=E5=8C=96=E3=83=BB=E4=BB=98?= =?UTF-8?q?=E4=B8=8E=E3=81=99=E3=82=8B=20KMS=20=E6=A8=A9=E9=99=90=E3=82=92?= =?UTF-8?q?=E6=A4=9C=E8=A8=BC=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit KMS 指定時のテストは IAM の Action に Encrypt と GenerateDataKey が含まれることしか見ていなかった。ZANKYO_KMS_KEY の注入が落ちると proxy は SSE-S3 のヘッダで PUT し、利用者の CMK を使わないまま気付けない。ZANKYO_KMS_KEY がキーの ARN であること、バケットが aws:kms で暗号化されること、KMS の権限が Encrypt と GenerateDataKey だけで Decrypt を含まないことを検証する。KMS 未指定では ZANKYO_KMS_KEY を設定せず、SSE-S3 になることも確かめる。 --- construct/tests/zankyo.test.ts | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/construct/tests/zankyo.test.ts b/construct/tests/zankyo.test.ts index f60f2a1..66113b0 100644 --- a/construct/tests/zankyo.test.ts +++ b/construct/tests/zankyo.test.ts @@ -165,10 +165,18 @@ describe('Zankyo', () => { Variables: Match.objectLike({ AWS_LAMBDA_EXEC_WRAPPER: '/opt/zankyo-wrapper', ZANKYO_BUCKET: Match.anyValue(), + ZANKYO_KMS_KEY: Match.absent(), }), }, Layers: Match.anyValue(), }); + t.hasResourceProperties('AWS::S3::Bucket', { + BucketEncryption: { + ServerSideEncryptionConfiguration: [ + { ServerSideEncryptionByDefault: { SSEAlgorithm: 'AES256' } }, + ], + }, + }); t.hasResourceProperties('AWS::IAM::Policy', { PolicyDocument: { Statement: Match.arrayWith([ @@ -235,9 +243,11 @@ describe('Zankyo', () => { }); }); - it('grants kms encrypt when a key is provided', () => { + it('encrypts with the given key and grants only encrypt-side kms actions', () => { + let keyArn: unknown; const t = synth((stack) => { const key = new kms.Key(stack, 'K'); + keyArn = stack.resolve(key.keyArn); const z = new Zankyo(stack, 'Z', { kmsKey: key, layer: lambda.LayerVersion.fromLayerVersionArn( @@ -248,15 +258,29 @@ describe('Zankyo', () => { }); z.attachTo(fn(stack, 'Fn')); }); + t.hasResourceProperties('AWS::Lambda::Function', { + Environment: { Variables: Match.objectLike({ ZANKYO_KMS_KEY: keyArn }) }, + }); + t.hasResourceProperties('AWS::S3::Bucket', { + BucketEncryption: { + ServerSideEncryptionConfiguration: [ + { ServerSideEncryptionByDefault: { SSEAlgorithm: 'aws:kms', KMSMasterKeyID: keyArn } }, + ], + }, + }); t.hasResourceProperties('AWS::IAM::Policy', { PolicyDocument: { Statement: Match.arrayWith([ Match.objectLike({ - Action: Match.arrayWith(['kms:Encrypt', 'kms:GenerateDataKey']), + Action: ['kms:Encrypt', 'kms:GenerateDataKey'], Effect: 'Allow', + Resource: keyArn, }), ]), }, }); + for (const policy of Object.values(t.findResources('AWS::IAM::Policy'))) { + assert.doesNotMatch(JSON.stringify(policy), /kms:Decrypt|kms:\*/); + } }); }); From 2b1b35b4c88e3f1f4724af9143cd2fc2495a0d71 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:18:29 +0900 Subject: [PATCH 39/97] =?UTF-8?q?docs(construct):=20npm=20=E3=81=AE?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AB=E5=87=BA=E3=81=99=20README?= =?UTF-8?q?=20=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit construct に README が無く、npm の zankyo-cdk のページに使い方が何も表示されなかった。install、attachTo が行う設定、props の一覧、Layer の入手先(SAR の ARN とセルフホスト)、arm64 の関数の扱いを書く。ルートの README からもリンクし、arm64 を関数のアーキテクチャに揃える必要があることを記載する。 --- CHANGELOG.md | 2 ++ README.md | 3 ++ construct/README.md | 73 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 construct/README.md diff --git a/CHANGELOG.md b/CHANGELOG.md index ae35f9f..5b159be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **construct** — `recordRetentionDays` が 1 以上の整数でなければ、synth で 例外を投げる。以前は 0 が synth を通り、S3 のライフサイクル設定でデプロイが 失敗していた +- **construct** — npm のページに使い方が何も表示されなかった。props と + Layer の入手先を書いた README をパッケージに含める ### Security diff --git a/README.md b/README.md index 99c29e9..b113f79 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,9 @@ zankyo.attachTo(myFunction); bucket 未指定なら「パブリックアクセス全ブロック + lifecycle 30 日 + enforceSSL」のバケットを自動作成します。 +layer 未指定なら、上の SAR アプリを参照します。`arm64` は関数のアーキテクチャに +揃えてください。食い違うと `attachTo` が例外を投げます +(props の一覧は [construct/README.md](https://github.com/seike460/lambda-zankyo/blob/main/construct/README.md))。 ### 3. CLI diff --git a/construct/README.md b/construct/README.md new file mode 100644 index 0000000..58b33b9 --- /dev/null +++ b/construct/README.md @@ -0,0 +1,73 @@ +# zankyo-cdk + +`lambda-zankyo` の Layer を Lambda 関数に取り付ける AWS CDK construct です。 +Layer の参照(SAR)・記録用バケット・環境変数・IAM 権限を、まとめて配線します。 +記録の対象は、同期(RequestResponse)呼び出しの失敗です。Layer と CLI を含む全体は、 +[リポジトリ直下の README](https://github.com/seike460/lambda-zankyo#readme) を参照してください。 + +## install + +```bash +npm install zankyo-cdk # peer dependency: aws-cdk-lib(v2)と constructs(v10) +``` + +## usage + +```ts +import { Zankyo } from 'zankyo-cdk'; + +const zankyo = new Zankyo(this, 'Zankyo'); +zankyo.attachTo(myFunction); +``` + +`attachTo(fn)` は、関数に次の設定をします。 + +- zankyo の Layer を追加する +- `AWS_LAMBDA_EXEC_WRAPPER=/opt/zankyo-wrapper` と `ZANKYO_BUCKET` を設定する + (指定があれば `ZANKYO_KMS_KEY`・`ZANKYO_SCRUB_FIELDS` も) +- 記録先 `zankyo/{関数名}/*` への `s3:PutObject` を付与する + (`kmsKey` 指定時は `kms:Encrypt`・`kms:GenerateDataKey` も) + +`bucket` を渡さない場合は、パブリックアクセス全ブロック・SSL 必須・ +ライフサイクル(既定 30 日)のバケットを作ります。スタックを削除しても、 +このバケットは残ります(`RemovalPolicy.RETAIN`)。 + +## props + +| prop | 既定 | 用途 | +|---|---|---| +| `bucket` | 新規作成 | 失敗レコードの保存先 | +| `recordRetentionDays` | `30` | 新規バケットのレコード保持日数(1 以上の整数)。`bucket` 指定時は無関係 | +| `kmsKey` | なし(SSE-S3) | SSE-KMS に使うキー | +| `scrubFields` | なし | 既定の denylist に足すフィールド名(`ZANKYO_SCRUB_FIELDS`) | +| `sarApplicationId` | 公開中の SAR アプリ | SAR アプリケーションの ARN | +| `semanticVersion` | この construct に対応する版 | SAR アプリの版 | +| `layer` | なし(SAR を使う) | セルフホストの LayerVersion。指定時は SAR をデプロイしない | +| `arm64` | `false` | SAR の arm64 用 Layer を使う。`layer` 指定時は無関係 | + +## Layer の入手先 + +- **SAR(既定)**: `arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo`。 + 公開アプリなので、ap-northeast-1 以外のリージョンのスタックからもデプロイできます + ([AWS ドキュメント](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-publishing-applications.html))。 +- **セルフホスト**: GitHub Releases の zip を Lambda Layer として発行し、 + `layer` に渡します。 + +## arm64 の関数 + +SAR の Layer は、`arm64` の指定で x86_64 用と arm64 用を切り替えます。 +関数のアーキテクチャと食い違うと、`attachTo` が例外を投げます。 +別のアーキテクチャのバイナリは起動できず、関数ごと動かなくなるためです。 +両方のアーキテクチャの関数があるときは、Zankyo をアーキテクチャごとに作り、 +バケットを共有します。 + +```ts +const zankyo = new Zankyo(this, 'Zankyo'); +const zankyoArm = new Zankyo(this, 'ZankyoArm', { arm64: true, bucket: zankyo.bucket }); +zankyo.attachTo(x86Function); +zankyoArm.attachTo(arm64Function); +``` + +## License + +MIT From e0a9bf4966258fc1816ee9da37a1ce320fdabc84 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:18:34 +0900 Subject: [PATCH 40/97] =?UTF-8?q?ci:=20construct=20=E3=81=AE=E5=9E=8B?= =?UTF-8?q?=E6=A4=9C=E6=9F=BB=E3=81=A8=E3=83=86=E3=82=B9=E3=83=88=E3=82=92?= =?UTF-8?q?=20aws-cdk-lib=20=E3=81=AE=20peer=20=E4=B8=8B=E9=99=90=E3=81=A7?= =?UTF-8?q?=E3=82=82=E5=AE=9F=E8=A1=8C=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit peerDependencies の aws-cdk-lib は ^2.200.0 だが、CI は devDependencies の 2.270.0 でしか検証していなかった。rust-msrv と同じく宣言値を正とし、package.json の下限を入れ直して construct の typecheck と test を実行するジョブを追加する。ローカルで 2.200.0 に差し替え、型検査と 11 件のテストが通ることを確かめた。 --- .github/workflows/ci.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 56658f3..e76b7de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,27 @@ jobs: - run: pnpm typecheck # tsc --noEmit in each package - run: pnpm test # node --test in each package + construct-peer-min: + name: construct (aws-cdk-lib peer minimum) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version-file: .nvmrc + cache: pnpm + - run: pnpm install --frozen-lockfile + # construct/package.json の peerDependencies の下限を正とし、devDependencies より + # 古い宣言値でも型検査とテストが通ることを確かめる(lockfile の書き換えはこのジョブ内だけ) + - name: install the declared aws-cdk-lib minimum + working-directory: construct + run: | + min=$(node -p 'require("./package.json").peerDependencies["aws-cdk-lib"].replace(/^[\^~]/, "")') + pnpm add --save-dev "aws-cdk-lib@$min" + - working-directory: construct + run: pnpm typecheck && pnpm test + rust-quality: name: rust (fmt + clippy + test) runs-on: ubuntu-latest From ee007451793c9205c3bdd41ac1b603933f9cc436 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:18:39 +0900 Subject: [PATCH 41/97] =?UTF-8?q?docs(changelog):=20v0.1.0=20=E3=81=AE?= =?UTF-8?q?=E3=82=BF=E3=82=B0=E3=81=A8=E5=85=AC=E9=96=8B=E3=81=97=E3=81=9F?= =?UTF-8?q?=20SAR=20=E3=83=A1=E3=82=BF=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE?= =?UTF-8?q?=E5=B7=AE=E5=88=86=E3=82=92=E6=B3=A8=E8=A8=98=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit タグ v0.1.0 は d220009 を指すが、公開した SAR 0.1.0 の LicenseUrl・ReadmeUrl はタグの後の 83e4929 の内容だった。83e4929 が変えたのは sar/template.yaml と construct/package.json だけで、npm の zankyo-cdk@0.1.0 はタグ時点の publishConfig で同じ main・types になることも併記する。 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b159be..5a61c07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -98,6 +98,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Initial release. +タグ `v0.1.0` は d220009 を指す。公開した SAR 0.1.0 のメタデータ(`LicenseUrl`・ +`ReadmeUrl` のパス)は、タグの後のコミット 83e4929 の内容である。タグの +`sar/template.yaml` のままでは、この 2 つのパスがリポジトリの外を指す。83e4929 は +ほかに `construct/package.json` の `main`・`types` を dist に向けたが、npm の +`zankyo-cdk@0.1.0` はタグ時点の `publishConfig` で同じ値になっている。 +proxy・CLI・construct のコードは、タグと 83e4929 で同じである。 + ### Added - **proxy** — `AWS_LAMBDA_EXEC_WRAPPER` 経由で Runtime API を仲介し、失敗した From 950a336298f37b061d3c1c7dc42f9cc202caf4b4 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:41:54 +0900 Subject: [PATCH 42/97] =?UTF-8?q?chore:=20=E4=BD=BF=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84=20score.config.json=20=E3=81=A8=20.?= =?UTF-8?q?gitignore=20=E3=81=AE=20*.xlsx=20=E3=82=92=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - score.config.json | 1 - 2 files changed, 2 deletions(-) delete mode 100644 score.config.json diff --git a/.gitignore b/.gitignore index 7f06e7b..e472152 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,3 @@ apikey # Test artifacts coverage/ -*.xlsx diff --git a/score.config.json b/score.config.json deleted file mode 100644 index 17a3f07..0000000 --- a/score.config.json +++ /dev/null @@ -1 +0,0 @@ -{ "threshold": 9.0, "samples": 3, "maxChars": 160000, "maxFileChars": 6000, "maxFiles": 400 } From aeadaed04718a84030a9ce53844c492da12962e1 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:41:54 +0900 Subject: [PATCH 43/97] =?UTF-8?q?chore(biome):=20=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=82=92=20Biome=202.5.14=20=E3=81=AE=E5=BD=A2=E5=BC=8F?= =?UTF-8?q?=E3=81=B8=E7=A7=BB=E8=A1=8C=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- biome.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/biome.json b/biome.json index 76ab6fa..05989fb 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.2.4/schema.json", + "$schema": "https://biomejs.dev/schemas/2.5.14/schema.json", "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true }, "files": { "includes": [ @@ -22,7 +22,7 @@ "linter": { "enabled": true, "rules": { - "recommended": true, + "preset": "recommended", "suspicious": { "noExplicitAny": "error" }, From fe36e025f3295766ee1cfc569b3091ffbe6960d2 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:41:58 +0900 Subject: [PATCH 44/97] =?UTF-8?q?ci:=20Node=20=E3=82=92=20engines=20?= =?UTF-8?q?=E3=81=AE=E4=B8=8B=E9=99=90=2024=20=E3=81=AB=E5=90=88=E3=82=8F?= =?UTF-8?q?=E3=81=9B=E3=80=8124=20=E3=81=A8=2026=20=E3=81=A7=E3=83=86?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 12 ++++++++++-- .nvmrc | 2 +- README.md | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e76b7de..48832c4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,14 +14,19 @@ concurrency: jobs: ts-quality: - name: ts (biome + tsc + test) + name: ts (biome + tsc + test, node ${{ matrix.node }}) runs-on: ubuntu-latest + strategy: + fail-fast: false + # 24 = engines の下限(.nvmrc と同じ)、26 = 次の LTS + matrix: + node: [24, 26] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: - node-version-file: .nvmrc + node-version: ${{ matrix.node }} cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm lint # biome check . @@ -113,6 +118,9 @@ jobs: run: | cargo install cross --locked --version 0.2.5 cross build --release --target aarch64-unknown-linux-musl -p zankyo + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version-file: .nvmrc - name: package layer zips # 直前ステップで両 arch をビルド済みなので梱包だけ行う env: diff --git a/.nvmrc b/.nvmrc index 7273c0f..a45fd52 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -25 +24 diff --git a/README.md b/README.md index b113f79..c983a82 100644 --- a/README.md +++ b/README.md @@ -267,8 +267,8 @@ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収 で同一依存が解決されます。 - ツールチェーンも固定: `rust-toolchain.toml`(Rust 1.98.1。最低要件は `proxy/Cargo.toml` の `rust-version` = 1.94.1 で、CI で検証)、`.nvmrc` - (Node 25。最低要件は engines の `>=24`)、`package.json` の - `packageManager`(pnpm 10.13.1)。 + (Node 24。engines の下限 `>=24` と同じで、CI は Node 24 と 26 で検証)、 + `package.json` の `packageManager`(pnpm 10.13.1)。 - CI の全 GitHub Actions はコミット SHA でピン留めしています (`.github/workflows/ci.yml` の `@ # vN` コメント参照)。 - `scripts/build-layer.mts` は決定的 zip を生成します: エントリの From 4c20c1b9e32017418bba6ea7519ffba39715a31b Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:41:59 +0900 Subject: [PATCH 45/97] =?UTF-8?q?ci:=20CI=20=E3=81=A8=20Layer=20=E3=83=93?= =?UTF-8?q?=E3=83=AB=E3=83=89=E3=81=AE=20cargo=20=E3=81=AB=20--locked=20?= =?UTF-8?q?=E3=82=92=E4=BB=98=E3=81=91=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 8 ++++---- README.md | 3 ++- scripts/build-layer.mts | 9 +++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 48832c4..44e627d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,8 +69,8 @@ jobs: - uses: dtolnay/rust-toolchain@6bed0761d98439e5a578e2877258200ad565ba87 # stable - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2 - run: cargo fmt --all -- --check - - run: cargo clippy --workspace --all-targets -- -D warnings - - run: cargo test --workspace + - run: cargo clippy --locked --workspace --all-targets -- -D warnings + - run: cargo test --locked --workspace rust-msrv: name: rust (MSRV) @@ -113,11 +113,11 @@ jobs: - name: install musl tools + cmake (aws-lc-sys build) run: sudo apt-get update && sudo apt-get install -y musl-tools cmake zip - name: build x86_64 - run: cargo build --release --target x86_64-unknown-linux-musl -p zankyo + run: cargo build --locked --release --target x86_64-unknown-linux-musl -p zankyo - name: build aarch64 via cross (docker) run: | cargo install cross --locked --version 0.2.5 - cross build --release --target aarch64-unknown-linux-musl -p zankyo + cross build --locked --release --target aarch64-unknown-linux-musl -p zankyo - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version-file: .nvmrc diff --git a/README.md b/README.md index c983a82..94179c7 100644 --- a/README.md +++ b/README.md @@ -264,7 +264,8 @@ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収 - 依存は lockfile 固定: `Cargo.lock`(Rust)と `pnpm-lock.yaml`(JS/TS) をコミット済み。`pnpm install --frozen-lockfile` / `cargo build --locked` - で同一依存が解決されます。 + で同一依存が解決されます。CI のビルド・テストと `scripts/build-layer.mts` + も `--locked` を付けます。`Cargo.toml` と lockfile がずれていれば失敗します。 - ツールチェーンも固定: `rust-toolchain.toml`(Rust 1.98.1。最低要件は `proxy/Cargo.toml` の `rust-version` = 1.94.1 で、CI で検証)、`.nvmrc` (Node 24。engines の下限 `>=24` と同じで、CI は Node 24 と 26 で検証)、 diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index d27260f..e465449 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -62,10 +62,11 @@ for (const arch of arches) { } if (!skipBuild && builderCmd) { console.log(`== building ${target} ==`); - execFileSync(builderCmd, [...builderArgs, '--release', '--target', target, '-p', 'zankyo'], { - cwd: ROOT, - stdio: 'inherit', - }); + execFileSync( + builderCmd, + [...builderArgs, '--locked', '--release', '--target', target, '-p', 'zankyo'], + { cwd: ROOT, stdio: 'inherit' }, + ); } const stage = mkdtempSync(join(tmpdir(), 'zankyo-layer-')); From 7f45dae617620e879c1e69145dbb54f2a37c390b Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:42:06 +0900 Subject: [PATCH 46/97] =?UTF-8?q?fix(layer):=20Layer=20=E3=81=AE=20zip=20?= =?UTF-8?q?=E3=81=AB=20LICENSE=20=E3=81=A8=E7=AC=AC=E4=B8=89=E8=80=85?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=82=BB=E3=83=B3=E3=82=B9=E3=82=92=E5=90=8C?= =?UTF-8?q?=E6=A2=B1=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 5 + CHANGELOG.md | 4 + README.md | 4 + sar/template.yaml | 3 +- scripts/build-layer.mts | 141 +++++++++++++++++++++++++-- scripts/licenses/nugine-simd-LICENSE | 21 ++++ 6 files changed, 168 insertions(+), 10 deletions(-) create mode 100644 scripts/licenses/nugine-simd-LICENSE diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44e627d..67be815 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -126,6 +126,11 @@ jobs: env: SKIP_BUILD: '1' run: node scripts/build-layer.mts + - name: check the license files in the layer zips + run: | + for z in dist/layer/*.zip; do + unzip -tq "$z" share/licenses/zankyo/LICENSE share/licenses/zankyo/THIRD_PARTY_LICENSES + done - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: zankyo-layer diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a61c07..aed8fb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 走査の上限を、除外後の件数ではなくページ数で数える - **cli / construct** — npm の tarball に LICENSE を同梱する。以前は MIT の許諾文が配布物に入っていなかった +- **layer** — Layer の zip に、LICENSE と `THIRD_PARTY_LICENSES` を同梱する + (`/opt/share/licenses/zankyo/`)。以前は、MIT の許諾文も、バイナリに静的リンク + した crate(tokio・hyper・aws-lc-rs・ring など)のライセンスと著作権表示も + 入っていなかった - **cli / construct** — pack と publish の前(`prepack`)に build を実行する。 以前は dist が無いまま、または古いまま公開されうる手順だった - **cli / construct** — package.json に repository・homepage・bugs・ diff --git a/README.md b/README.md index 94179c7..01c51a1 100644 --- a/README.md +++ b/README.md @@ -282,3 +282,7 @@ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収 ## License MIT + +Layer の zip は `share/licenses/zankyo/`(Lambda 上では `/opt/share/licenses/zankyo/`)に、 +この LICENSE と `THIRD_PARTY_LICENSES` を含みます。`THIRD_PARTY_LICENSES` は、 +バイナリに入る Rust crate のライセンスと著作権表示の原文です。 diff --git a/sar/template.yaml b/sar/template.yaml index 84d188b..b93a122 100644 --- a/sar/template.yaml +++ b/sar/template.yaml @@ -22,7 +22,8 @@ Metadata: Resources: # scripts/build-layer.mts の出力を配置して sam publish する。 - # Layer zip の中身は bin/zankyo + zankyo-wrapper(exec wrapper 入口)。 + # Layer zip の中身は bin/zankyo・extensions/zankyo・zankyo-wrapper(exec wrapper 入口)と、 + # share/licenses/zankyo/ のライセンス表示(LICENSE・THIRD_PARTY_LICENSES)。 ZankyoLayerX86: Type: AWS::Serverless::LayerVersion Properties: diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index e465449..e703f86 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -1,15 +1,27 @@ #!/usr/bin/env node //! zankyo Layer zip のビルド。x86_64 / aarch64 の musl 静的バイナリを作り、 -//! Lambda が /opt に展開するレイアウト(bin/zankyo + zankyo-wrapper)で zip 化する。 +//! Lambda が /opt に展開するレイアウト(ENTRIES)で zip 化する。 //! //! 前提: cross (https://github.com/cross-rs/cross) か musl ツールチェーン。 //! `BUILDER="cargo zigbuild"` のように `cargo build` 相当の //! コマンド行を差し替えられる。 //! `SKIP_BUILD=1` でビルドを省き target/ 済みのバイナリだけ梱包する。 +//! 梱包でも THIRD_PARTY_LICENSES の生成に `cargo metadata` を使う。 //! Node 24+ は型注釈を strip してそのまま実行する(ビルド不要)。 import { execFileSync, spawnSync } from 'node:child_process'; -import { chmodSync, cpSync, mkdirSync, mkdtempSync, rmSync, utimesSync } from 'node:fs'; +import { + chmodSync, + cpSync, + mkdirSync, + mkdtempSync, + readdirSync, + readFileSync, + rmSync, + statSync, + utimesSync, + writeFileSync, +} from 'node:fs'; import { tmpdir } from 'node:os'; import { dirname, isAbsolute, join, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -22,6 +34,112 @@ const TARGETS: Record = { aarch64: 'aarch64-unknown-linux-musl', }; +const EXECUTABLES = ['bin/zankyo', 'extensions/zankyo', 'zankyo-wrapper']; +// /opt 直下の LICENSE は他の Layer と同名になりうるため、ディレクトリを分ける。 +const NOTICE_DIR = 'share/licenses/zankyo'; +const NOTICES = [`${NOTICE_DIR}/LICENSE`, `${NOTICE_DIR}/THIRD_PARTY_LICENSES`]; +/// zip のエントリ。zip には引数の順で入る。 +const ENTRIES = [...EXECUTABLES, ...NOTICES]; + +interface CargoPackage { + id: string; + name: string; + version: string; + license: string | null; + license_file: string | null; + repository: string | null; + manifest_path: string; +} +interface CargoMetadata { + packages: CargoPackage[]; + workspace_members: string[]; + resolve: { + nodes: { id: string; deps: { pkg: string; dep_kinds: { kind: string | null }[] }[] }[]; + }; +} + +const LICENSE_FILE = /^(licen[cs]e|copying|copyright|notice)/i; +/// crates.io のパッケージにライセンスの本文が無い crate。本文は、そのパッケージを +/// 作った上流のコミット(Nugine/simd d74c030)の LICENSE を写した。 +const LICENSE_FALLBACK: Record = { + 'base64-simd': 'scripts/licenses/nugine-simd-LICENSE', + vsimd: 'scripts/licenses/nugine-simd-LICENSE', +}; + +const byCodePoint = (a: string, b: string) => (a < b ? -1 : a > b ? 1 : 0); + +/** + * バイナリに入る crate の、ライセンスと著作権表示の原文を 1 つのテキストにまとめる。 + * 対象は zankyo から normal 依存でたどれる crate(build-/dev-dependencies は配布物に入らない)。 + * 同じ本文は 1 回だけ載せ、見出しにその本文を持つ crate をすべて並べる。 + */ +function thirdPartyLicenses(target: string): string { + const meta: CargoMetadata = JSON.parse( + execFileSync( + 'cargo', + ['metadata', '--format-version', '1', '--locked', '--filter-platform', target], + { cwd: ROOT, encoding: 'utf8', maxBuffer: 256 * 1024 * 1024 }, + ), + ); + const root = meta.packages.find( + (p) => p.name === 'zankyo' && meta.workspace_members.includes(p.id), + ); + if (!root) throw new Error('cargo metadata: zankyo is not a workspace member'); + const nodes = new Map(meta.resolve.nodes.map((n) => [n.id, n])); + const reached = new Set(); + const queue = [root.id]; + for (let id = queue.pop(); id !== undefined; id = queue.pop()) { + for (const dep of nodes.get(id)?.deps ?? []) { + if (!reached.has(dep.pkg) && dep.dep_kinds.some((k) => k.kind === null)) { + reached.add(dep.pkg); + queue.push(dep.pkg); + } + } + } + const crates = meta.packages + .filter((p) => reached.has(p.id)) + .sort((a, b) => byCodePoint(a.name, b.name) || byCodePoint(a.version, b.version)); + + const headingsByText = new Map(); + for (const c of crates) { + const dir = dirname(c.manifest_path); + const files = new Set( + readdirSync(dir) + .filter((f) => LICENSE_FILE.test(f) && statSync(join(dir, f)).isFile()) + .sort(byCodePoint), + ); + if (c.license_file) files.add(c.license_file); + const sources = [...files].map((f) => ({ label: f, path: join(dir, f) })); + if (sources.length === 0) { + const fallback = LICENSE_FALLBACK[c.name]; + if (!fallback) { + throw new Error(`${c.name} ${c.version} ships no license file; add it to LICENSE_FALLBACK`); + } + sources.push({ label: `LICENSE from ${c.repository}`, path: join(ROOT, fallback) }); + } + for (const { label, path } of sources) { + const text = readFileSync(path, 'utf8').replace(/\r\n?/g, '\n').trimEnd(); + const heading = `${c.name} ${c.version}: ${label}`; + const headings = headingsByText.get(text); + if (headings) headings.push(heading); + else headingsByText.set(text, [heading]); + } + } + + const rule = '='.repeat(80); + return [ + `Third-party licenses for zankyo ${root.version} (${target})`, + '', + 'The zankyo binary in this layer is built from the Rust crates listed below.', + 'This file reproduces the license and notice files that each crate ships.', + 'A text shared by several crates appears once, under all of their names.', + '', + ...crates.map((c) => ` ${c.name} ${c.version} (${c.license ?? c.license_file})`), + ...[...headingsByText].flatMap(([text, headings]) => ['', rule, ...headings, rule, '', text]), + '', + ].join('\n'); +} + const arches = (process.env.ARCHES ?? 'x86_64 aarch64').split(/\s+/).filter(Boolean); if (arches.length === 0) { console.error('ARCHES is empty; nothing to build'); @@ -69,31 +187,36 @@ for (const arch of arches) { ); } + const thirdParty = thirdPartyLicenses(target); const stage = mkdtempSync(join(tmpdir(), 'zankyo-layer-')); try { mkdirSync(join(stage, 'bin'), { recursive: true }); mkdirSync(join(stage, 'extensions'), { recursive: true }); + mkdirSync(join(stage, NOTICE_DIR), { recursive: true }); cpSync(join(ROOT, 'target', target, 'release', 'zankyo'), join(stage, 'bin/zankyo')); cpSync(join(ROOT, 'proxy/layer/zankyo-wrapper'), join(stage, 'zankyo-wrapper')); // /opt/extensions/zankyo: platform が external extension として // 別プロセス起動し、SHUTDOWN(timeout)イベントを届ける。 cpSync(join(ROOT, 'proxy/layer/extensions/zankyo'), join(stage, 'extensions/zankyo')); - for (const f of ['bin/zankyo', 'zankyo-wrapper', 'extensions/zankyo']) { + cpSync(join(ROOT, 'LICENSE'), join(stage, NOTICE_DIR, 'LICENSE')); + writeFileSync(join(stage, NOTICE_DIR, 'THIRD_PARTY_LICENSES'), thirdParty); + for (const f of EXECUTABLES) { chmodSync(join(stage, f), 0o755); } + for (const f of NOTICES) { + chmodSync(join(stage, f), 0o644); + } // 決定的 zip: mtime を epoch 固定(zip 側で 1980-01-01 に揃う)、 - // -X で拡張属性を捨てる。エントリは引数順なので固定すれば - // 同一バイナリから同一 zip になる。 - for (const f of ['bin', 'bin/zankyo', 'extensions', 'extensions/zankyo', 'zankyo-wrapper']) { + // -X で拡張属性を捨てる。ディレクトリのエントリは作らず、ファイルを + // 固定の引数順で渡すので、同一バイナリから同一 zip になる。 + for (const f of ENTRIES) { utimesSync(join(stage, f), EPOCH, EPOCH); } const zip = join(outDir, `zankyo-${arch}.zip`); // zip は既存アーカイブへ追記・更新するので、先に消して // 古いレイアウトのエントリが混入しないようにする。 rmSync(zip, { force: true }); - execFileSync('zip', ['-qX', zip, 'bin/zankyo', 'extensions/zankyo', 'zankyo-wrapper'], { - cwd: stage, - }); + execFileSync('zip', ['-qX', zip, ...ENTRIES], { cwd: stage }); console.log(`wrote ${zip}`); // SAR テンプレートの ContentUri(sar/dist/layer-*.zip)に合わせて複写する。 diff --git a/scripts/licenses/nugine-simd-LICENSE b/scripts/licenses/nugine-simd-LICENSE new file mode 100644 index 0000000..2c7eabb --- /dev/null +++ b/scripts/licenses/nugine-simd-LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Nugine + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file From 4f74dadfcec13871b51e821e6e00597aabbf2c5b Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:42:20 +0900 Subject: [PATCH 47/97] =?UTF-8?q?test(examples):=20=E3=83=87=E3=83=A2?= =?UTF-8?q?=E9=96=A2=E6=95=B0=E3=81=AE=E6=A8=A9=E9=99=90=E3=81=8C=20s3:Put?= =?UTF-8?q?Object=20=E3=81=A0=E3=81=91=E3=81=A7=E3=81=82=E3=82=8B=E3=81=93?= =?UTF-8?q?=E3=81=A8=E3=82=92=E5=8E=B3=E5=AF=86=E3=81=AB=E6=A4=9C=E8=A8=BC?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/tests/demo-stack.test.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/examples/tests/demo-stack.test.ts b/examples/tests/demo-stack.test.ts index ff73115..f3fd093 100644 --- a/examples/tests/demo-stack.test.ts +++ b/examples/tests/demo-stack.test.ts @@ -32,10 +32,27 @@ describe('DemoStack', () => { }); it('grants only s3:PutObject to demo functions', () => { - template.hasResourceProperties('AWS::IAM::Policy', { + template.resourceCountIs('AWS::IAM::Policy', 3); + template.allResourcesProperties('AWS::IAM::Policy', { PolicyDocument: { - Statement: Match.arrayWith([Match.objectLike({ Action: 's3:PutObject', Effect: 'Allow' })]), + Statement: [Match.objectLike({ Action: 's3:PutObject', Effect: 'Allow' })], }, + Roles: [{ Ref: Match.stringLikeRegexp('^(Thrower|Sleeper|InitError)ServiceRole') }], + }); + template.allResourcesProperties('AWS::IAM::Role', { + Policies: Match.absent(), + ManagedPolicyArns: [ + { + 'Fn::Join': [ + '', + [ + 'arn:', + { Ref: 'AWS::Partition' }, + ':iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ], + ], + }, + ], }); }); }); From 4ca709555603272a89a8ad360349284e678e7a82 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:42:23 +0900 Subject: [PATCH 48/97] =?UTF-8?q?fix(examples):=20E2E=20=E6=89=8B=E9=A0=86?= =?UTF-8?q?=E3=81=AE=20invoke=20=E3=81=A8=20sam=20local=20=E3=81=A7?= =?UTF-8?q?=E3=81=AE=E5=86=8D=E7=8F=BE=E3=82=92=E3=80=81=E3=81=9D=E3=81=AE?= =?UTF-8?q?=E3=81=BE=E3=81=BE=E5=AE=9F=E8=A1=8C=E3=81=A7=E3=81=8D=E3=82=8B?= =?UTF-8?q?=E5=BD=A2=E3=81=AB=E7=9B=B4=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/README.md | 32 +++++++++++++++++++++++------ examples/handlers/init-error.mjs | 4 ++++ examples/handlers/sleeper.mjs | 4 ++++ examples/handlers/thrower.mjs | 4 ++++ examples/lib/demo-stack.ts | 34 ++++++++----------------------- examples/tests/demo-stack.test.ts | 13 ++++++++++++ 6 files changed, 60 insertions(+), 31 deletions(-) create mode 100644 examples/handlers/init-error.mjs create mode 100644 examples/handlers/sleeper.mjs create mode 100644 examples/handlers/thrower.mjs diff --git a/examples/README.md b/examples/README.md index f1111c3..78764ae 100644 --- a/examples/README.md +++ b/examples/README.md @@ -21,19 +21,25 @@ pnpm --filter zankyo-examples run deploy ```bash # 1. handler error を直接 invoke(RequestResponse = 同期呼び出し) +# AWS CLI v2 は --payload を base64 と解釈するため、JSON のまま渡す指定を付ける aws lambda invoke --function-name ZankyoDemo-ThrowerXXX \ + --cli-binary-format raw-in-base64-out \ --payload '{"email":"a@b.com","password":"x"}' out.json # 2. timeout ケース(3s でタイムアウトする関数) -aws lambda invoke --function-name ZankyoDemo-SleeperXXX --payload '{}' out.json +aws lambda invoke --function-name ZankyoDemo-SleeperXXX \ + --cli-binary-format raw-in-base64-out --payload '{}' out.json # 3. レコードが S3 にあることを確認 export ZANKYO_BUCKET=<デプロイで作られたバケット> zankyo list --since 1h -# 4. fixture → sam local で再現 -zankyo fixture --last --out event.json -sam local invoke -e event.json +# 4. fixture → sam local で再現(Docker が必要) +zankyo fixture --last --function ZankyoDemo-ThrowerXXX --out event.json +pnpm --filter zankyo-examples run synth +echo '{"Parameters":{"AWS_LAMBDA_EXEC_WRAPPER":""}}' > env.json +sam local invoke -t examples/cdk.out/ZankyoDemo.template.json Thrower \ + -e event.json --env-vars env.json # 5. 関数を修正して新バージョン → 差分比較 zankyo diff --alias old --alias new @@ -47,5 +53,19 @@ zankyo redrive --confirm - `InitError` はデプロイ直後の初回起動でしか init error を起こさない。 実行環境が再利用されると再度 init error にならない点に注意 (新しい実行環境の確保は、関数設定の軽微な変更→保存で誘発できる)。 -- timeout の SHUTDOWN フラッシュはベストエフォート。 - 取りこぼした場合は `/tmp/zankyo/` spill または頻度計測の対象。 +- 手順 4 の `--last` は全関数で最新のレコードを選ぶ。手順 2 の timeout レコードを + 避けるため、`--function` で Thrower に絞る。 +- 手順 4 の `sam local invoke` は、関数を construct ID(`Thrower`)で指定する。 + sam local は SAR の Layer を取得しないため、`AWS_LAMBDA_EXEC_WRAPPER` が + 存在しない `/opt/zankyo-wrapper` を指したままになり、ランタイムが起動しない。 + `env.json` はこの変数を空にして wrapper を外す。 +- sam はテンプレートの SAR アプリ(`AWS::Serverless::Application`)を解決するため、 + Serverless Application Repository の API を呼ぶ。デプロイと同じ AWS 認証情報と + リージョンの設定で実行する。 +- デモのハンドラは `handlers/` のファイルで持つ。sam local は inline code + (`Code.fromInline`)の関数を実行しない。 +- timeout の SHUTDOWN フラッシュはベストエフォート。shutdown ウィンドウ内に + PutObject が終わらないと、レコードは spill(既定 `/tmp/zankyo/<関数名>`)に残る。 + timeout 後の reset は `/tmp` を消さないため、同じ実行環境が次の呼び出しで + init し直すと、起動時の回収が S3 へ再送する。実行環境がそのまま破棄されると、 + そのレコードは届かない。 diff --git a/examples/handlers/init-error.mjs b/examples/handlers/init-error.mjs new file mode 100644 index 0000000..ce3522e --- /dev/null +++ b/examples/handlers/init-error.mjs @@ -0,0 +1,4 @@ +export const handler = async () => 'never reached'; + +// モジュール評価時点で投げる = init error の再現 +throw new Error('demo init failure'); diff --git a/examples/handlers/sleeper.mjs b/examples/handlers/sleeper.mjs new file mode 100644 index 0000000..e88fa1d --- /dev/null +++ b/examples/handlers/sleeper.mjs @@ -0,0 +1,4 @@ +export const handler = async () => { + await new Promise((r) => setTimeout(r, 60_000)); + return 'never reached'; +}; diff --git a/examples/handlers/thrower.mjs b/examples/handlers/thrower.mjs new file mode 100644 index 0000000..d319dfc --- /dev/null +++ b/examples/handlers/thrower.mjs @@ -0,0 +1,4 @@ +export const handler = async (event) => { + // PII 混入イベントで scrub の動作も確認する + throw new Error(`demo failure for ${JSON.stringify(event)}`); +}; diff --git a/examples/lib/demo-stack.ts b/examples/lib/demo-stack.ts index 1a8cfcb..840937d 100644 --- a/examples/lib/demo-stack.ts +++ b/examples/lib/demo-stack.ts @@ -1,28 +1,12 @@ +import { join } from 'node:path'; import { Duration, aws_lambda as lambda, Stack, type StackProps } from 'aws-cdk-lib'; import type { Construct } from 'constructs'; import { Zankyo } from 'zankyo-cdk'; -// ハンドラは検証目的を一目で分かるよう inline で書く。 -// esbuild 等のバンドル依存をデモに持ち込まないための選択。 -const THROWING = ` -exports.handler = async (event) => { - // PII 混入イベントで scrub の動作も確認する - throw new Error('demo failure for ' + JSON.stringify(event)); -}; -`; - -const SLEEPING = ` -exports.handler = async () => { - await new Promise((r) => setTimeout(r, 60_000)); - return 'never reached'; -}; -`; - -// モジュール評価時点で投げる = init error の再現 -const INIT_ERROR = ` -throw new Error('demo init failure'); -exports.handler = async () => 'never reached'; -`; +// ハンドラは handlers/ に素の JS で置き、esbuild 等のバンドル依存をデモに持ち込まない。 +// inline code にしないのは、sam local が inline code を実行しないため +// (README の手順 4 で fixture を再現する)。 +const HANDLERS_DIR = join(import.meta.dirname, '../handlers'); /** * 3 種類の失敗(handler error / timeout / init error)を起こす関数を @@ -40,24 +24,24 @@ export class DemoStack extends Stack { const base = { runtime: lambda.Runtime.NODEJS_22_X, - handler: 'index.handler', + code: lambda.Code.fromAsset(HANDLERS_DIR), memorySize: 256, } as const; const thrower = new lambda.Function(this, 'Thrower', { ...base, - code: lambda.Code.fromInline(THROWING), + handler: 'thrower.handler', timeout: Duration.seconds(10), }); const sleeper = new lambda.Function(this, 'Sleeper', { ...base, - code: lambda.Code.fromInline(SLEEPING), + handler: 'sleeper.handler', // timeout を短くして SHUTDOWN フラッシュ経路を踏む timeout: Duration.seconds(3), }); const initError = new lambda.Function(this, 'InitError', { ...base, - code: lambda.Code.fromInline(INIT_ERROR), + handler: 'init-error.handler', timeout: Duration.seconds(10), }); diff --git a/examples/tests/demo-stack.test.ts b/examples/tests/demo-stack.test.ts index f3fd093..f485d3d 100644 --- a/examples/tests/demo-stack.test.ts +++ b/examples/tests/demo-stack.test.ts @@ -1,3 +1,6 @@ +import assert from 'node:assert/strict'; +import { existsSync } from 'node:fs'; +import { join } from 'node:path'; import { describe, it } from 'node:test'; import { App } from 'aws-cdk-lib'; import { Match, Template } from 'aws-cdk-lib/assertions'; @@ -55,4 +58,14 @@ describe('DemoStack', () => { ], }); }); + + it('ships the handlers as files, which sam local can run', () => { + template.allResourcesProperties('AWS::Lambda::Function', { + Code: { S3Key: Match.anyValue(), ZipFile: Match.absent() }, + }); + for (const fn of Object.values(template.findResources('AWS::Lambda::Function'))) { + const module = String(fn.Properties.Handler).replace(/\.handler$/, ''); + assert.ok(existsSync(join(import.meta.dirname, '../handlers', `${module}.mjs`)), module); + } + }); }); From 50798c66851d2221baae6f7d413874954a5dd2ab Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:48:25 +0900 Subject: [PATCH 49/97] =?UTF-8?q?fix(sar):=20SourceCodeUrl=20=E3=82=92?= =?UTF-8?q?=E3=83=AA=E3=83=9D=E3=82=B8=E3=83=88=E3=83=AA=E3=81=AE=E3=83=AB?= =?UTF-8?q?=E3=83=BC=E3=83=88=E3=81=8B=E3=82=89=E3=80=81=E3=81=9D=E3=81=AE?= =?UTF-8?q?=E7=89=88=E3=81=AE=E3=82=BF=E3=82=B0=E3=81=AB=E5=90=91=E3=81=91?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 ++ sar/template.yaml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aed8fb6..bcfed56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 モード(0600)で書く。既存のファイルを上書きするときは、モードを変えない - **cli** — npm の tarball から、使われない型定義(`.d.ts`)と source map を外した。 source map は tarball に含まれない `src/` を指していた +- **sar** — SAR の `SourceCodeUrl` を、リポジトリのルートから、その版のタグ + (`/tree/v<版>`)に変えた。SAR の各版から、対応するソースをたどれる ### Fixed diff --git a/sar/template.yaml b/sar/template.yaml index b93a122..eef7ccc 100644 --- a/sar/template.yaml +++ b/sar/template.yaml @@ -18,7 +18,7 @@ Metadata: Labels: [lambda, observability, replay, debugging, incidents] HomePageUrl: https://github.com/seike460/lambda-zankyo SemanticVersion: 0.1.0 - SourceCodeUrl: https://github.com/seike460/lambda-zankyo + SourceCodeUrl: https://github.com/seike460/lambda-zankyo/tree/v0.1.0 Resources: # scripts/build-layer.mts の出力を配置して sam publish する。 From 0122ad4661da1e261a4b510b4a598674ccf0d314 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 08:48:25 +0900 Subject: [PATCH 50/97] =?UTF-8?q?ci:=20=E3=83=AA=E3=83=AA=E3=83=BC?= =?UTF-8?q?=E3=82=B9=E3=81=A7=E4=B8=8A=E3=81=92=E3=82=8B=E7=89=88=E3=81=AE?= =?UTF-8?q?=E4=B8=80=E8=87=B4=E3=82=92=20pnpm=20gate=20=E3=81=A8=20CI=20?= =?UTF-8?q?=E3=81=A7=E7=A2=BA=E3=81=8B=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 ++ README.md | 9 +++++-- package.json | 3 ++- scripts/check-versions.mts | 51 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 scripts/check-versions.mts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 67be815..dd78d60 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,6 +30,8 @@ jobs: cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm lint # biome check . + # npm の 2 パッケージ・proxy の crate・SAR の版と、SourceCodeUrl のタグ・CHANGELOG の見出し + - run: pnpm check:versions - run: pnpm build # tsc emit — zankyo-cdk/dist を生成(examples の typecheck/test が依存) # CLI のテストは src を型除去で実行する。公開する bin(package.json の bin が指す dist)の # import 書き換えやパスの誤りは、ここで実際に起動して確かめる(bin.js は全コマンドを静的 import する) diff --git a/README.md b/README.md index 01c51a1..b39e380 100644 --- a/README.md +++ b/README.md @@ -232,7 +232,7 @@ cli/ # TypeScript CLI (node --test、AWS SDK v3、引数は node:util) construct/ # CDK construct (aws-cdk-lib v2、SAR 参照 + bucket/IAM 配線) examples/ # デモスタック(handler error / timeout / init error) sar/ # SAR 公開用 SAM テンプレート -scripts/ # build-layer.mts(musl 静的バイナリ → layer zip) +scripts/ # build-layer.mts(musl 静的バイナリ → layer zip)、check-versions.mts(版の一致) SPEC.md # 仕様書(決定事項・スコープ外・Open Questions) ``` @@ -240,7 +240,7 @@ SPEC.md # 仕様書(決定事項・スコープ外・Open Questions) ```bash pnpm install # JS/TS 依存 -pnpm gate # lint + build + typecheck + test(全パッケージ) +pnpm gate # lint + 版の一致 + build + typecheck + test(全パッケージ) cargo test --workspace # Rust ユニットテスト cargo fmt --all -- --check && cargo clippy -- -D warnings ``` @@ -250,6 +250,11 @@ cargo fmt --all -- --check && cargo clippy -- -D warnings - Rust: ロジック(scrub/record/config/inflight)は IO と分離した ユニットテスト。proxy/extension 経路はモック Runtime API/S3 への 統合テスト(`proxy/tests/`)で検証。 +- 版: リリースでは、`cli/package.json`・`construct/package.json`・ + `proxy/Cargo.toml`(と `Cargo.lock`)・`sar/template.yaml` の `SemanticVersion` を + 同じ版に上げます。SAR の `SourceCodeUrl` はその版のタグを指し、`CHANGELOG.md` には + その版の見出しを置きます。`pnpm check:versions`(`pnpm gate` と CI が実行)で確かめます。 + construct の既定の SAR 版は、construct のテストが `sar/template.yaml` と突き合わせます。 ### 保守性の指針 diff --git a/package.json b/package.json index 41359d0..918227f 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "typecheck": "pnpm -r run typecheck", "test": "pnpm -r run test", "build": "pnpm -r --if-present run build", - "gate": "pnpm lint && pnpm build && pnpm typecheck && pnpm test" + "check:versions": "node scripts/check-versions.mts", + "gate": "pnpm lint && pnpm check:versions && pnpm build && pnpm typecheck && pnpm test" }, "devDependencies": { "@biomejs/biome": "2.5.14", diff --git a/scripts/check-versions.mts b/scripts/check-versions.mts new file mode 100644 index 0000000..2b75952 --- /dev/null +++ b/scripts/check-versions.mts @@ -0,0 +1,51 @@ +#!/usr/bin/env node +//! リリースで上げる版が、すべての配布物でそろっているかを確かめる。 +//! 対象は npm の 2 パッケージ・proxy の crate(Cargo.lock を含む)・SAR の SemanticVersion。 +//! あわせて、SAR の SourceCodeUrl がその版のタグを指すこと、 +//! CHANGELOG.md にその版の見出しがあることを確かめる。 +//! construct の既定の SAR 版は、construct/tests/zankyo.test.ts が sar/template.yaml と突き合わせる。 + +import { readFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..'); + +const read = (path: string) => readFileSync(join(ROOT, path), 'utf8'); +const capture = (text: string | undefined, pattern: RegExp) => + text === undefined ? undefined : pattern.exec(text)?.[1]; + +const sarTemplate = read('sar/template.yaml'); +const sarMetadata = (key: string) => capture(sarTemplate, new RegExp(`^ {4}${key}: (\\S+)$`, 'm')); +const cargoPackage = capture(read('proxy/Cargo.toml'), /^\[package\]\n((?:(?!\[).*\n)*)/m); + +const versions: [source: string, version: string | undefined][] = [ + ['cli/package.json', JSON.parse(read('cli/package.json')).version], + ['construct/package.json', JSON.parse(read('construct/package.json')).version], + ['proxy/Cargo.toml', capture(cargoPackage, /^version = "([^"]+)"$/m)], + ['Cargo.lock (zankyo)', capture(read('Cargo.lock'), /^name = "zankyo"\nversion = "([^"]+)"$/m)], + ['sar/template.yaml SemanticVersion', sarMetadata('SemanticVersion')], +]; + +const problems: string[] = []; +const version = versions[0]?.[1]; +if (version === undefined || versions.some(([, v]) => v !== version)) { + problems.push( + 'versions differ:', + ...versions.map(([source, v]) => ` ${source}: ${v ?? '(not found)'}`), + ); +} else { + const sourceCodeUrl = `${sarMetadata('HomePageUrl')}/tree/v${version}`; + if (sarMetadata('SourceCodeUrl') !== sourceCodeUrl) { + problems.push(`sar/template.yaml SourceCodeUrl is not ${sourceCodeUrl}`); + } + if (!read('CHANGELOG.md').includes(`\n## [${version}] - `)) { + problems.push(`CHANGELOG.md has no "## [${version}] - " heading`); + } +} + +if (problems.length > 0) { + console.error(problems.join('\n')); + process.exit(1); +} +console.log(`versions agree: ${version}`); From 366d8365fafcd6922cd3ebcfea19eb9c769a5459 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:02:31 +0900 Subject: [PATCH 51/97] =?UTF-8?q?ci:=20main=20=E3=81=B8=E3=81=AE=20push=20?= =?UTF-8?q?=E3=81=AE=20run=20=E3=82=92=E5=8F=96=E3=82=8A=E6=B6=88=E3=81=95?= =?UTF-8?q?=E3=81=9A=E3=80=81=E3=81=A9=E3=81=AE=E3=82=B3=E3=83=9F=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=81=AB=E3=82=82=20CI=20=E3=81=AE=E7=B5=90=E6=9E=9C?= =?UTF-8?q?=E3=82=92=E6=AE=8B=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd78d60..5fa37ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,8 +8,10 @@ on: permissions: contents: read +# PR は新しい push で古い run を取り消す。main の push は run ごとの group にして、 +# 取り消しも待機中の run の置き換えも起こさず、どのコミットにも結果を残す concurrency: - group: ci-${{ github.ref }} + group: ci-${{ github.event_name == 'pull_request' && github.ref || github.run_id }} cancel-in-progress: true jobs: From 74b571968e0a2fd6479a8b49b0b8e49699bb85ec Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:02:31 +0900 Subject: [PATCH 52/97] =?UTF-8?q?ci:=20pnpm/action-setup=20=E3=82=92=20v6.?= =?UTF-8?q?1.0=20=E3=81=AB=E3=80=81rustsec/audit-check=20=E3=82=92=20node2?= =?UTF-8?q?4=20=E3=81=AE=E3=82=B3=E3=83=9F=E3=83=83=E3=83=88=E3=81=AB?= =?UTF-8?q?=E4=B8=8A=E3=81=92=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5fa37ec..a427c9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: node: [24, 26] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: ${{ matrix.node }} @@ -48,7 +48,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version-file: .nvmrc @@ -96,14 +96,16 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version-file: .nvmrc cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm audit --prod - - uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 # v2 + # 最新のリリース v2.0.0 は node20 で動く。action.yml の runs.using を node24 に + # 変えただけの main のコミット(#48、未リリース)に固定する + - uses: rustsec/audit-check@858dc40f52ca2b8570b7a997c1c4e35c6fc9a432 # main (v2.0.0 + node24) with: token: ${{ secrets.GITHUB_TOKEN }} From 51970107e4b45391fc89cfce22913d940e9d46b8 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:02:31 +0900 Subject: [PATCH 53/97] =?UTF-8?q?ci:=20Layer=20=E3=81=AE=20zip=20=E3=81=AE?= =?UTF-8?q?=E3=82=A8=E3=83=B3=E3=83=88=E3=83=AA=E3=83=BBmode=E3=83=BB?= =?UTF-8?q?=E9=9D=99=E7=9A=84=E3=83=AA=E3=83=B3=E3=82=AF=E3=82=92=E6=A4=9C?= =?UTF-8?q?=E6=9F=BB=E3=81=97=E3=80=81x86=5F64=20=E3=81=AE=E3=83=90?= =?UTF-8?q?=E3=82=A4=E3=83=8A=E3=83=AA=E3=82=92=E8=B5=B7=E5=8B=95=E3=81=97?= =?UTF-8?q?=E3=81=A6=E7=A2=BA=E3=81=8B=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a427c9d..9d61675 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -132,11 +132,38 @@ jobs: env: SKIP_BUILD: '1' run: node scripts/build-layer.mts - - name: check the license files in the layer zips + # エントリの並びと mode(実行ファイルは 755、ライセンス表示は 644)と CRC を確かめる。 + # bin/zankyo は arch どおりの ELF で、動的リンカ(PT_INTERP)を要求しない静的リンクであること + - name: check the layer zips run: | - for z in dist/layer/*.zip; do - unzip -tq "$z" share/licenses/zankyo/LICENSE share/licenses/zankyo/THIRD_PARTY_LICENSES + expected=$(printf '%s\n' \ + '-rwxr-xr-x bin/zankyo' \ + '-rwxr-xr-x extensions/zankyo' \ + '-rwxr-xr-x zankyo-wrapper' \ + '-rw-r--r-- share/licenses/zankyo/LICENSE' \ + '-rw-r--r-- share/licenses/zankyo/THIRD_PARTY_LICENSES') + for pair in x86_64:X86-64 aarch64:AArch64; do + arch=${pair%%:*} machine=${pair#*:} + z=dist/layer/zankyo-$arch.zip + unzip -tq "$z" + diff <(echo "$expected") <(unzip -Z "$z" | awk '$3 == "unx" { print $1, $NF }') + unzip -q "$z" -d "$RUNNER_TEMP/layer-$arch" + bin=$RUNNER_TEMP/layer-$arch/bin/zankyo + if ! readelf -h "$bin" | grep -q "Machine: .*$machine\$"; then + echo "$z: bin/zankyo is not $machine" >&2 + exit 1 + fi + if readelf -l "$bin" | grep -q INTERP; then + echo "$z: bin/zankyo is dynamically linked" >&2 + exit 1 + fi done + # 引数なし・Lambda の外(AWS_LAMBDA_RUNTIME_API なし)では、usage を出して EX_USAGE(64)で終わる + - name: smoke-test the x86_64 binary in the zip + run: | + rc=0 + "$RUNNER_TEMP/layer-x86_64/bin/zankyo" || rc=$? + test "$rc" -eq 64 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: zankyo-layer From 7a8bde4c85fe453bfdefa0c260efd62cc5556409 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:02:42 +0900 Subject: [PATCH 54/97] =?UTF-8?q?chore(layer):=20cross=20=E3=81=AE=20aarch?= =?UTF-8?q?64=20=E3=83=93=E3=83=AB=E3=83=89=E7=94=A8=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=83=86=E3=83=8A=E3=82=92=20digest=20=E3=81=A7=E5=9B=BA?= =?UTF-8?q?=E5=AE=9A=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cross.toml | 5 +++++ README.md | 1 + 2 files changed, 6 insertions(+) create mode 100644 Cross.toml diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 0000000..e27f5fe --- /dev/null +++ b/Cross.toml @@ -0,0 +1,5 @@ +# cross が aarch64 の Layer バイナリをビルドするコンテナ。タグは付け替えられるため、 +# digest で固定する。cross の版(.github/workflows/ci.yml の +# `cargo install cross --version`)を上げるときは、同じ版のタグの digest に更新する。 +[target.aarch64-unknown-linux-musl] +image = "ghcr.io/cross-rs/aarch64-unknown-linux-musl:0.2.5@sha256:702154f52b2d8091671aa2c84d5582d849f949977228c735ff8462f93cc0e1e4" diff --git a/README.md b/README.md index b39e380..c06a626 100644 --- a/README.md +++ b/README.md @@ -277,6 +277,7 @@ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収 `package.json` の `packageManager`(pnpm 10.13.1)。 - CI の全 GitHub Actions はコミット SHA でピン留めしています (`.github/workflows/ci.yml` の `@ # vN` コメント参照)。 + aarch64 をビルドする cross のコンテナは、`Cross.toml` で digest に固定しています。 - `scripts/build-layer.mts` は決定的 zip を生成します: エントリの mtime を最古(zip 表現の下限 1980-01-01)に揃え、`zip -X` で 拡張属性を捨て、エントリ順を固定の引数順で渡します。 From 1df997de6e3ebe82d7403d7a3f5d418486b86af4 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:02:42 +0900 Subject: [PATCH 55/97] =?UTF-8?q?chore(scripts):=20scripts=20=E3=81=AE=20.?= =?UTF-8?q?mts=20=E3=82=92=20pnpm=20typecheck=20=E3=81=A7=E5=9E=8B?= =?UTF-8?q?=E6=A4=9C=E6=9F=BB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ package.json | 3 ++- pnpm-lock.yaml | 3 +++ scripts/build-layer.mts | 2 +- scripts/tsconfig.json | 21 +++++++++++++++++++++ 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 scripts/tsconfig.json diff --git a/README.md b/README.md index c06a626..c86a86a 100644 --- a/README.md +++ b/README.md @@ -247,6 +247,8 @@ cargo fmt --all -- --check && cargo clippy -- -D warnings - TS: strict + `noUncheckedIndexedAccess` + `exactOptionalPropertyTypes`、 Biome でフォーマット統一。テストは `node --test`(外部サービス不要)。 + `scripts/*.mts` は Node が型を除去して直接実行します。型は `pnpm typecheck` が + `scripts/tsconfig.json` で検査します。 - Rust: ロジック(scrub/record/config/inflight)は IO と分離した ユニットテスト。proxy/extension 経路はモック Runtime API/S3 への 統合テスト(`proxy/tests/`)で検証。 diff --git a/package.json b/package.json index 918227f..d10ce23 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "lint": "biome check .", "format": "biome check --write .", - "typecheck": "pnpm -r run typecheck", + "typecheck": "pnpm -r run typecheck && tsc -p scripts", "test": "pnpm -r run test", "build": "pnpm -r --if-present run build", "check:versions": "node scripts/check-versions.mts", @@ -17,6 +17,7 @@ }, "devDependencies": { "@biomejs/biome": "2.5.14", + "@types/node": "26.6.2", "typescript": "7.0.2" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e1d351..0c6576d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@biomejs/biome': specifier: 2.5.14 version: 2.5.14 + '@types/node': + specifier: 26.6.2 + version: 26.6.2 typescript: specifier: 7.0.2 version: 7.0.2 diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index e703f86..c11fe55 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -165,7 +165,7 @@ const builderArgv = () => .filter(Boolean); const skipBuild = process.env.SKIP_BUILD === '1'; // 梱包専用(SKIP_BUILD=1)では builder に一切触れない。 -const [builderCmd, ...builderArgs] = skipBuild ? [undefined] : builderArgv(); +const [builderCmd, ...builderArgs] = skipBuild ? [] : builderArgv(); if (!skipBuild && !builderCmd) { console.error('BUILDER is empty'); process.exit(1); diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 0000000..339afe7 --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2023", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": ["ES2023"], + "strict": true, + "noUncheckedIndexedAccess": true, + "exactOptionalPropertyTypes": true, + "noImplicitOverride": true, + "noFallthroughCasesInSwitch": true, + "verbatimModuleSyntax": true, + "erasableSyntaxOnly": true, + "isolatedModules": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "types": ["node"] + }, + "include": ["*.mts"] +} From 39fb1e6c41f4dc42e91347a6d23a08df04d46474 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:02:42 +0900 Subject: [PATCH 56/97] =?UTF-8?q?docs:=20=E3=83=AA=E3=83=AA=E3=83=BC?= =?UTF-8?q?=E3=82=B9=E3=81=AE=E6=89=8B=E9=A0=86=E3=82=92=20RELEASING.md=20?= =?UTF-8?q?=E3=81=AB=E6=9B=B8=E3=81=8D=E3=80=81SAR=20=E3=83=86=E3=83=B3?= =?UTF-8?q?=E3=83=97=E3=83=AC=E3=83=BC=E3=83=88=E3=81=AE=E5=85=AC=E9=96=8B?= =?UTF-8?q?=E6=89=8B=E9=A0=86=E3=81=AE=E8=AA=AC=E6=98=8E=E3=82=92=E7=9B=B4?= =?UTF-8?q?=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 + RELEASING.md | 144 ++++++++++++++++++++++++++++++++++++++++++++++ sar/template.yaml | 3 +- 3 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 RELEASING.md diff --git a/README.md b/README.md index c86a86a..940edf3 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ agent は `SHUTDOWN` だけを購読して待機します。登録前や `SHUTDO ([AWS ドキュメント](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-publishing-applications.html))。 - **セルフホスト**: `node scripts/build-layer.mts` で両 arch の zip を作り、 通常の Lambda Layer として発行します(GitHub Releases にも zip を添付)。 + v0.1.0 より後のリリースには、zip の `SHA256SUMS` も添付します。 いずれも関数に Layer を付け、環境変数を設定します: @@ -234,6 +235,7 @@ examples/ # デモスタック(handler error / timeout / init error) sar/ # SAR 公開用 SAM テンプレート scripts/ # build-layer.mts(musl 静的バイナリ → layer zip)、check-versions.mts(版の一致) SPEC.md # 仕様書(決定事項・スコープ外・Open Questions) +RELEASING.md # リリースの手順(SAR・npm・GitHub Release) ``` ## 開発 @@ -257,6 +259,7 @@ cargo fmt --all -- --check && cargo clippy -- -D warnings 同じ版に上げます。SAR の `SourceCodeUrl` はその版のタグを指し、`CHANGELOG.md` には その版の見出しを置きます。`pnpm check:versions`(`pnpm gate` と CI が実行)で確かめます。 construct の既定の SAR 版は、construct のテストが `sar/template.yaml` と突き合わせます。 + 公開までの手順は [RELEASING.md](https://github.com/seike460/lambda-zankyo/blob/main/RELEASING.md) にあります。 ### 保守性の指針 diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000..74dc7c5 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,144 @@ +# Releasing + +リリースの手順です。例として版を `0.1.1` と書きます。公開先は次の 4 つです。 + +- SAR: `arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo` +- npm: `zankyo-cdk`(construct)と `lambda-zankyo`(cli) +- GitHub Release: Layer の zip 2 つと `SHA256SUMS` + +公開する成果物は、すべてタグを打った commit から作ります。v0.1.0 は、SAR をタグの後の +commit から公開したため、タグと SAR のメタデータが食い違いました(CHANGELOG 参照)。 + +## 準備 + +- docker と cross 0.2.5(`cargo install cross --locked --version 0.2.5`)。 + aarch64 のコンテナは `Cross.toml` が digest で固定しています。 +- SAM CLI と、アカウント 446537410535 の AWS 認証情報。 +- `sam package` が成果物を置く S3 バケット。公開するリージョン(ap-northeast-1)に作り、 + SAR が読めるようにバケットポリシーを付けます + ([AWS SAM CLI での公開](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-publishing-applications.html))。 + + ```json + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { "Service": "serverlessrepo.amazonaws.com" }, + "Action": "s3:GetObject", + "Resource": "arn:aws:s3:::<バケット名>/*", + "Condition": { "StringEquals": { "aws:SourceAccount": "446537410535" } } + } + ] + } + ``` + +- 2 つの npm パッケージの publish 権限と、`gh` の認証。 + +## 1. 版をそろえる + +リリース用のブランチで、次の 7 か所を同じ commit で新しい版にします。 + +1. `cli/package.json` の `version` +2. `construct/package.json` の `version` +3. `proxy/Cargo.toml` の `version` +4. `Cargo.lock` の `zankyo`(`cargo update -p zankyo` で更新します) +5. `sar/template.yaml` の `SemanticVersion` と `SourceCodeUrl`(`/tree/v0.1.1`) +6. `construct/src/zankyo.ts` の `DEFAULT_SEMANTIC_VERSION` +7. `CHANGELOG.md`。`## [Unreleased]` の中身を `## [0.1.1] - YYYY-MM-DD` へ移し、 + 空の `## [Unreleased]` を上に残します。末尾のリンクも + `[Unreleased]: .../compare/v0.1.1...HEAD` と `[0.1.1]: .../releases/tag/v0.1.1` にします。 + +`pnpm gate` の `check:versions` が 1〜5 と 7 の見出しを、construct のテストが 6 を確かめます。 +`examples/package.json` は公開しないので対象外です。次のコマンドがすべて通ることを確かめます。 + +```bash +pnpm install --frozen-lockfile +pnpm gate +cargo fmt --all -- --check +cargo clippy --locked --workspace --all-targets -- -D warnings +cargo test --locked --workspace +pnpm audit --prod +``` + +## 2. main にマージしてタグを打つ + +PR の CI がすべて通ってから main にマージします。main の CI も通ったことを確かめます。 + +```bash +git switch main +git pull --ff-only +git status --porcelain # 何も出ないこと +git tag -a v0.1.1 -m "v0.1.1" +git push origin v0.1.1 +``` + +以降の手順は、この commit(main の先端=タグ)のまま、作業ツリーを変えずに行います。 + +## 3. Layer の zip を作る + +```bash +node scripts/build-layer.mts +(cd dist/layer && shasum -a 256 zankyo-x86_64.zip zankyo-aarch64.zip > SHA256SUMS) +``` + +`dist/layer/zankyo-{x86_64,aarch64}.zip` と、SAR 用の同じ zip +`sar/dist/layer-{x86_64,aarch64}.zip` ができます。 + +## 4. SAR に公開する + +`sam publish` は、`sam package` 済みのテンプレートしか受け付けません。`sam package` が +Layer の zip と `LicenseUrl`・`ReadmeUrl` のファイルを S3 に上げ、そこを指す +テンプレートを書き出します。 + +```bash +sam package --template-file sar/template.yaml --s3-bucket <バケット名> \ + --output-template-file sar/packaged.yaml --region ap-northeast-1 +sam publish --template sar/packaged.yaml --region ap-northeast-1 +``` + +公開した版と、公開の設定が残っていることを確かめます。 + +```bash +app=arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo +aws serverlessrepo get-application --application-id "$app" --semantic-version 0.1.1 \ + --region ap-northeast-1 --query 'Version.[SemanticVersion,SourceCodeUrl]' +aws serverlessrepo get-application-policy --application-id "$app" --region ap-northeast-1 +``` + +ポリシーには、`Principals` が `["*"]` の文があるはずです。 + +## 5. npm に公開する + +construct の既定の SAR 版は、この版を指します。そのため、SAR の公開を確かめてから +construct を公開します。pack と publish の前に、`prepack` が dist をビルドし直します。 +先に tarball を作り、`dist/`・`README.md`・`LICENSE`・`package.json` が入っていることを +確かめます。 + +```bash +tmp=$(mktemp -d) +(cd construct && pnpm pack --pack-destination "$tmp") +(cd cli && pnpm pack --pack-destination "$tmp") +for t in "$tmp"/*.tgz; do tar -tzf "$t"; done + +(cd construct && pnpm publish) +(cd cli && pnpm publish) +npm view zankyo-cdk@0.1.1 version +npm view lambda-zankyo@0.1.1 version +``` + +npm の provenance(出どころの証明)は、GitHub Actions などのクラウド CI から +公開したときだけ付けられます。手元から公開するこの手順では付きません +([npm Docs](https://docs.npmjs.com/generating-provenance-statements))。 + +## 6. GitHub Release を作る + +`CHANGELOG.md` のこの版の節を、リリースノートにします。 + +```bash +gh release create v0.1.1 --verify-tag --title v0.1.1 --notes-file <この版の節を書いたファイル> \ + dist/layer/zankyo-x86_64.zip dist/layer/zankyo-aarch64.zip dist/layer/SHA256SUMS +``` + +利用者は、`sha256sum -c SHA256SUMS`(macOS では `shasum -a 256 -c SHA256SUMS`)で +zip を確かめられます。 diff --git a/sar/template.yaml b/sar/template.yaml index eef7ccc..0520821 100644 --- a/sar/template.yaml +++ b/sar/template.yaml @@ -21,7 +21,8 @@ Metadata: SourceCodeUrl: https://github.com/seike460/lambda-zankyo/tree/v0.1.0 Resources: - # scripts/build-layer.mts の出力を配置して sam publish する。 + # ContentUri は scripts/build-layer.mts が書き出す zip。sam package で S3 に上げ、 + # 書き出したテンプレートを sam publish する(手順は RELEASING.md)。 # Layer zip の中身は bin/zankyo・extensions/zankyo・zankyo-wrapper(exec wrapper 入口)と、 # share/licenses/zankyo/ のライセンス表示(LICENSE・THIRD_PARTY_LICENSES)。 ZankyoLayerX86: From 8c296d5a335b929ef9b56d3f7aaa57b44b41a36f Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:09:58 +0900 Subject: [PATCH 57/97] =?UTF-8?q?docs(changelog):=200.1.0=20=E3=81=AE=20CL?= =?UTF-8?q?I=20=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E3=81=A8=20construct?= =?UTF-8?q?=20=E3=81=AE=E4=BE=8B=E3=82=92=E5=AE=9F=E8=A3=85=E3=81=AB?= =?UTF-8?q?=E5=90=88=E3=82=8F=E3=81=9B=E3=80=81=E4=BE=9D=E5=AD=98=E3=81=AE?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=82=92=E8=A8=98=E8=BC=89=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - [0.1.0] の CLI コマンドは list / fixture / replay / diff / redrive の 5 つ。 存在しない show / invoke / store を載せ、replay と redrive が抜けていた - construct の例を new Zankyo(this, 'Zankyo').attachTo(fn) に直す。 id は必須で、new Zankyo(stack) は型エラーになる - scrub の対象に、0.1.0 のパターン検出(email・カード番号・JWT・ AWS アクセスキー・Bearer・電話番号・IPv4)をすべて書く - [Unreleased] に proxy の依存(hmac・sha2・base64)の更新を足す --- CHANGELOG.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcfed56..ac8090f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — 宣言する MSRV(`rust-version`)を、ロック済み依存の実際の要件 1.94.1 に合わせた。CI で宣言値のビルドを検証する +- **proxy** — 依存の hmac を 0.13 に、sha2 を 0.11 に、base64 を 0.23 に上げた - **proxy** — denylist に一致した値が配列なら、要素ごとにマスクして配列の形を 保つ。以前は配列全体を 1 つの文字列 `"***"` に置き換えていた - **proxy** — `ZANKYO_SSM_TIMEOUT_MS` の既定値を 10000 から 2000 に下げた。 @@ -121,12 +122,14 @@ proxy・CLI・construct のコードは、タグと 83e4929 で同じである - `/opt/extensions/zankyo` の external extension が `SHUTDOWN` を捕捉し、 `/tmp` の `.inflight` ステージから timeout レコードを復元 - イベント保持は UTF-8 安全(JSON は JSON、非 JSON は raw text、 - 非 UTF-8 は base64)。denylist フィールドとカード番号パターンを scrub + 非 UTF-8 は base64)。フィールド名 denylist とパターン検出(email・ + カード番号(Luhn 検証付き)・JWT・AWS アクセスキー・Bearer トークン・ + 電話番号・IPv4)で scrub - SSM Parameter Store の JSON overlay で設定上書き可能。fail-open 設計で zankyo 側の障害はハンドラを止めない -- **cli** (`lambda-zankyo`) — `list` / `show` / `diff` / `fixture` / `invoke` / - `store` コマンド。fixture 出力は `sam local invoke -e` にそのまま渡せる -- **construct** (`zankyo-cdk`) — `new Zankyo(stack).attachTo(fn)` で SAR 参照・ +- **cli** (`lambda-zankyo`) — `list` / `fixture` / `replay` / `diff` / `redrive` + コマンド。fixture 出力は `sam local invoke -e` にそのまま渡せる +- **construct** (`zankyo-cdk`) — `new Zankyo(this, 'Zankyo').attachTo(fn)` で SAR 参照・ env 注入・IAM 権限を一括配線する CDK construct - **sar/** — Serverless Application Repository 公開用 SAM テンプレート (x86_64 / arm64 の 2 Layer を 1 アプリとして公開) From 482b03ada436378794cc914cf799828beb94cdbd Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:10:04 +0900 Subject: [PATCH 58/97] =?UTF-8?q?docs:=20=E6=88=90=E5=8A=9F=E5=91=BC?= =?UTF-8?q?=E3=81=B3=E5=87=BA=E3=81=97=E3=81=AE=20/tmp=20=E3=82=B9?= =?UTF-8?q?=E3=83=86=E3=83=BC=E3=82=B8=E3=81=A8=E3=80=81SHUTDOWN=20?= =?UTF-8?q?=E3=81=AE=20reason=20=E3=82=92=E5=95=8F=E3=82=8F=E3=81=AA?= =?UTF-8?q?=E3=81=84=20timeout=20=E8=A8=98=E9=8C=B2=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85=E3=81=A9=E3=81=8A=E3=82=8A=E3=81=AB=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README と proxy.rs の rustdoc は「失敗判定が必要な経路だけボディを読む」と 書いていた。実際は /next のイベントも毎回読み、timeout 捕捉のため /tmp へ ステージして、完了時に消す。成功呼び出しでしないのは spill と S3 への PUT - README・SPEC・extension.rs は、SHUTDOWN reason=timeout だけを失敗としていた。 実際は reason(timeout・failure・spindown)を問わず、未完の呼び出しを failureType=timeout で記録し、reason は errorContext.errorType に入る。 ランタイムの終了時と init 時の残りのステージは errorType=Shutdown - SPEC の timeout 捕捉は「メモリに保持」ではなく、/tmp のステージを extension が読む仕組みに直す --- ARCHITECTURE.md | 2 +- README.md | 13 ++++++++++--- SPEC.md | 8 ++++---- proxy/src/extension.rs | 3 ++- proxy/src/proxy.rs | 7 ++++--- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 5bd3641..f2fe46e 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -104,7 +104,7 @@ agent は passthrough 判定でも終了せず、`SHUTDOWN` だけを購読し 3. 失敗時: イベントを scrub → レコード JSON を生成 → /tmp へ先書き (write-ahead spill)→ bounded な S3 PutObject を **応答転送の前に** 完了させる。呼び出し終了で環境が freeze されると非同期 PUT は - 進まないため、失敗経路だけこの順序を取る(成功経路はコスト 0)。 + 進まないため、失敗経路だけこの順序を取る(成功経路は spill も PUT もしない)。 PUT が間に合わなければ spill が残り、定期回収・次回 init が拾う。 4. SHUTDOWN(reason: timeout/failure/spindown): external extension の agent が残った `.inflight` ステージを読み、「応答が返らなかった diff --git a/README.md b/README.md index 940edf3..6d797d1 100644 --- a/README.md +++ b/README.md @@ -30,10 +30,12 @@ Lambda Service ──Runtime API──▶ zankyo proxy (Rust, Layer) ──▶ - Layer 内の**単一 Rust バイナリ**が Runtime API proxy と external extension agent を兼務(起動方法でモードが分かれる)。 -- **成功呼び出しは素通り**。失敗判定が必要な経路(`/response`・`/error`・ - `/init/error`)だけボディを読み、常時コスト・レイテンシを最小化します。 +- **成功呼び出しは記録しません**。S3 への PUT も spill もしません。ボディを読むのは + `/next`・`/response`・`/error`・`/init/error` だけで、ほかの経路はそのまま中継します。 + `/next` のイベントは timeout 捕捉のため `/tmp` に置き、呼び出しが完了したら消します + (下の「timeout 捕捉」)。 - 失敗の定義: `/error` 呼出 / `/init/error` / `/response` 内の `errorType` - 含有 / `SHUTDOWN reason=timeout`(未完呼び出しを timeout 記録化)。 + 含有 / `SHUTDOWN` の時点で応答を返していない呼び出し(reason を問わず timeout として記録)。 - **fail-open 設計**: zankyo 側の障害(設定ミス・bind 失敗・S3 エラー)で 関数本体を止めません。記録だけ諦めて passthrough します。 @@ -47,6 +49,11 @@ layer は `/opt/extensions/zankyo` を配置し、platform が agent を timeout レコードへ変換し S3 へフラッシュします(ベストエフォート。 shutdown ウィンドウに間に合わなければ spill が残り、次回 init が拾います)。 +`SHUTDOWN` の reason(`timeout`・`failure`・`spindown`)は問いません。どの reason でも +`failureType` は `timeout` で、reason は `errorContext.errorType`(`Timeout`・`Failure`・ +`Spindown`)で見分けます。呼び出し中にランタイムが終了した場合と、init 時に前の実行環境の +ステージが残っていた場合も timeout として記録し、`errorType` は `Shutdown` です。 + 記録しない状態(`ZANKYO_DISABLED`・バケット未設定・設定エラー)でも、 agent は `SHUTDOWN` だけを購読して待機します。登録前や `SHUTDOWN` 前に 終了した extension は、終了コードに関係なく Lambda が Init 失敗として diff --git a/SPEC.md b/SPEC.md index 0b3a11e..0e68784 100644 --- a/SPEC.md +++ b/SPEC.md @@ -35,10 +35,10 @@ Lambda Service ──Runtime API──▶ zankyo proxy (Rust, Layer) ──▶ - Layer 内の単一バイナリが **Runtime API proxy と external extension を兼務**する。 - proxy: `AWS_LAMBDA_RUNTIME_API` を localhost の自分に向け、`/next`・`/response`・`/error`・`/init/error` を中継。 - - extension: `/extension/register` して `/event/next` をポーリングし、INVOKE/SHUTDOWN(reason=timeout/spindown)を受信。 -- **成功呼び出しは素通り**(観測しない=常時コスト・レイテンシ最小)。 -- 失敗の定義: `/error` 呼出・`/init/error`・`/response` 内の errorType 含有・SHUTDOWN reason=timeout。 -- timeout 捕捉: in-flight イベントをメモリに保持 → SHUTDOWN 受信時に S3 へベストエフォートフラッシュ(shutdown ウィンドウ内に PutObject が完了しない場合は取りこぼす旨を README に明記)。 + - extension: `/extension/register` して `/event/next` をポーリングし、INVOKE/SHUTDOWN(reason=timeout/failure/spindown)を受信。 +- **成功呼び出しは記録しない**(S3 PUT・spill なし)。`/next` のイベントは timeout 捕捉のため `/tmp` に一時ステージし、完了時に削除する。 +- 失敗の定義: `/error` 呼出・`/init/error`・`/response` 内の errorType 含有・SHUTDOWN の時点で応答を返していない呼び出し(reason を問わず failureType=timeout。reason は errorContext.errorType に写す)。 +- timeout 捕捉: proxy が in-flight イベントを `/tmp` の `.inflight` にステージ → SHUTDOWN を受けた extension がそれを読み、S3 へベストエフォートフラッシュ(shutdown ウィンドウ内に PutObject が完了しない場合は取りこぼす旨を README に明記)。 - 対象ランタイム: `AWS_LAMBDA_EXEC_WRAPPER` を尊重する全 managed runtime(nodejs/python/java/dotnet/ruby)。`provided.*` は bootstrap が exec wrapper を尊重する場合のみ。 ## データ仕様 diff --git a/proxy/src/extension.rs b/proxy/src/extension.rs index 95514a4..2e715fb 100644 --- a/proxy/src/extension.rs +++ b/proxy/src/extension.rs @@ -2,7 +2,8 @@ //! 単一バイナリが proxy と external extension を兼務するため、 //! `/register` で INVOKE/SHUTDOWN(記録しない場合は SHUTDOWN だけ)を購読し、 //! `/event/next` をポーリングする。 -//! SHUTDOWN(reason=timeout)を受けたら in-flight 呼び出しをフラッシュする。 +//! SHUTDOWN を受けたら、reason を問わず in-flight 呼び出しを timeout レコードとして +//! フラッシュする。 use crate::config::{ Config, DEFAULT_EXT_BODY_KB, DEFAULT_EXT_MAX_POLL_FAILURES, DEFAULT_EXT_RETRY_MS, diff --git a/proxy/src/proxy.rs b/proxy/src/proxy.rs index cbdb9a9..092e4ac 100644 --- a/proxy/src/proxy.rs +++ b/proxy/src/proxy.rs @@ -1,9 +1,10 @@ //! Runtime API プロキシ。 //! //! 子プロセス(実ランタイム)から見ると zankyo が Runtime API 本体に -//! 見える。`/next`・`/response`・`/error`・`/init/error` だけを解釈し、 -//! それ以外のパスは一切触らず中継する(成功呼び出しの観測コストを -//! ゼロに近づけるため、ボディを読むのは失敗判定が必要な経路だけ)。 +//! 見える。ボディを読んで解釈するのは `/next`・`/response`・`/error`・ +//! `/init/error` だけで、それ以外のパスは一切触らず中継する。 +//! `/next` のイベントは timeout 捕捉のため `/tmp` にステージし、完了時に消す。 +//! 成功呼び出しでは spill も S3 への PUT もしない。 //! 各ルートの処理は `handlers.rs`、上流転送は `upstream.rs`。 use crate::store::Recorder; From c16d5b4e3c00a24ac63c797bef9f1195aca1ffd8 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:10:15 +0900 Subject: [PATCH 59/97] =?UTF-8?q?docs(scrub):=20=E4=BE=8B=E5=A4=96?= =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=81=AA=E3=81=A9?= =?UTF-8?q?=E3=81=AE=E8=87=AA=E7=94=B1=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=81=AB=20denylist=20=E3=81=8C=E5=8A=B9=E3=81=8B=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=81=93=E3=81=A8=E3=82=92=E6=9B=B8=E3=81=8D=E3=80=81?= =?UTF-8?q?=E3=83=87=E3=83=A2=E3=81=8B=E3=82=89=E5=A4=96=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit errorMessage・stackTrace とエラー応答の中の文字列には、パターン検出しか 掛からない。README と SECURITY.md はこれを書いておらず、 throw new Error('invalid: ' + JSON.stringify(event)) のような書き方で password などが平文のまま S3 に残ることが読み取れなかった。 デモの thrower もイベントを例外メッセージに埋め込んでおり、 E2E 手順 1 の password が errorMessage と response に平文で残っていた。 例外メッセージからイベントを外し、テストで確かめる。 --- README.md | 6 ++++++ SECURITY.md | 4 ++++ examples/README.md | 3 +++ examples/handlers/thrower.mjs | 7 ++++--- examples/tests/demo-stack.test.ts | 11 +++++++++++ 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6d797d1..1a735e1 100644 --- a/README.md +++ b/README.md @@ -200,6 +200,12 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json 対象は文字列値だけです。数値型の値(`"cardNo": 4111111111111111` 等)と オブジェクトのキー名(`{"alice@example.com": …}` 等)は検査しません。 該当するフィールド名を `ZANKYO_SCRUB_FIELDS` に足すと、値ごとマスクされます。 +- **自由テキストには denylist が効きません**。`errorContext` の `errorMessage`・ + `stackTrace` や、エラー応答の中のメッセージ・スタックトレースの文字列には、 + パターン検出だけが掛かります(`ZANKYO_SCRUB_FIELDS` も効きません)。 + `throw new Error('invalid: ' + JSON.stringify(event))` のように例外メッセージへ + イベントを埋め込むと、`password` などの値が平文のまま S3 に残ります。 + 例外メッセージには、イベントや秘密の値を入れないでください。 - **mask モード**は形状保持(`j***@e***.com`、`***1234`)で再現性を維持。 - **hash モード**は HMAC-SHA256 擬似名化(鍵は関数名+バケット由来の 決定的 seed。暗号化ではなく「同じ値→同じハッシュ」の再現性が目的)。 diff --git a/SECURITY.md b/SECURITY.md index 30e2afc..e7955d3 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -47,3 +47,7 @@ zankyo は失敗イベントを扱うため、記録経路そのものを最小 - scrub はヒューリスティックです。denylist に無い秘密情報は `ZANKYO_SCRUB_FIELDS` で必ず追加してください。パターン検出は 文字列値だけが対象で、数値型の値とオブジェクトのキー名は検査しません。 +- denylist(`ZANKYO_SCRUB_FIELDS` を含む)が効くのは、フィールド名のある値だけです。 + 例外メッセージ(`errorMessage`)やスタックトレースのような自由テキストには、 + パターン検出だけが掛かります。例外メッセージにイベントや秘密の値を埋め込むと、 + パターンに当たらない値は平文のまま S3 に残ります。 diff --git a/examples/README.md b/examples/README.md index 78764ae..2d16ac0 100644 --- a/examples/README.md +++ b/examples/README.md @@ -64,6 +64,9 @@ zankyo redrive --confirm リージョンの設定で実行する。 - デモのハンドラは `handlers/` のファイルで持つ。sam local は inline code (`Code.fromInline`)の関数を実行しない。 +- 手順 1 の `password` は、レコードの `event` の中で denylist によりマスクされる。 + 例外メッセージには denylist が効かないため(README「PII scrub」)、デモの例外メッセージには + イベントを入れていない。 - timeout の SHUTDOWN フラッシュはベストエフォート。shutdown ウィンドウ内に PutObject が終わらないと、レコードは spill(既定 `/tmp/zankyo/<関数名>`)に残る。 timeout 後の reset は `/tmp` を消さないため、同じ実行環境が次の呼び出しで diff --git a/examples/handlers/thrower.mjs b/examples/handlers/thrower.mjs index d319dfc..507dde1 100644 --- a/examples/handlers/thrower.mjs +++ b/examples/handlers/thrower.mjs @@ -1,4 +1,5 @@ -export const handler = async (event) => { - // PII 混入イベントで scrub の動作も確認する - throw new Error(`demo failure for ${JSON.stringify(event)}`); +export const handler = async () => { + // scrub の確認はレコードの event で行う。例外メッセージには denylist が効かないため、 + // イベントを埋め込まない(README「PII scrub」) + throw new Error('demo failure'); }; diff --git a/examples/tests/demo-stack.test.ts b/examples/tests/demo-stack.test.ts index f485d3d..69af46e 100644 --- a/examples/tests/demo-stack.test.ts +++ b/examples/tests/demo-stack.test.ts @@ -2,6 +2,7 @@ import assert from 'node:assert/strict'; import { existsSync } from 'node:fs'; import { join } from 'node:path'; import { describe, it } from 'node:test'; +import { pathToFileURL } from 'node:url'; import { App } from 'aws-cdk-lib'; import { Match, Template } from 'aws-cdk-lib/assertions'; import { DemoStack } from '../lib/demo-stack.ts'; @@ -68,4 +69,14 @@ describe('DemoStack', () => { assert.ok(existsSync(join(import.meta.dirname, '../handlers', `${module}.mjs`)), module); } }); + + it('keeps the event out of the thrower error message, where the denylist does not apply', async () => { + const { handler } = await import( + pathToFileURL(join(import.meta.dirname, '../handlers/thrower.mjs')).href + ); + await assert.rejects( + handler({ password: 'demo-password-value' }), + (e: unknown) => e instanceof Error && !e.message.includes('demo-password-value'), + ); + }); }); From eba46c207a6831b0df52a8b2e434ad879350f1f8 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:10:19 +0900 Subject: [PATCH 60/97] =?UTF-8?q?docs(readme):=20=E8=87=AA=E5=8B=95?= =?UTF-8?q?=E4=BD=9C=E6=88=90=E3=83=90=E3=82=B1=E3=83=83=E3=83=88=E3=81=AE?= =?UTF-8?q?=20RETAIN=E3=80=81SSM=20=E7=B5=8C=E8=B7=AF=E3=81=AE=E6=A8=A9?= =?UTF-8?q?=E9=99=90=E3=80=81CI=20=E3=81=A8=E5=90=8C=E3=81=98=20clippy=20?= =?UTF-8?q?=E3=82=92=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - construct が作るバケットは RemovalPolicy.RETAIN で、cdk destroy の後も レコードごと残る。README と examples の README に書く。props のコメントに recordRetentionDays・sarApplicationId・semanticVersion を足す - ZANKYO_SSM_PARAM を使うと、関数のロールに ssm:GetParameter が要る。 カスタマー管理キーの SecureString なら kms:Decrypt も要る。construct は 付けず、取得に失敗すると env の設定だけで動くことを書く - 開発手順の clippy を CI と同じ --locked --workspace --all-targets にする。 以前の手順では tests を lint せず、CI だけが落ちることがあった --- README.md | 19 ++++++++++++++----- examples/README.md | 2 ++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1a735e1..e3a1a71 100644 --- a/README.md +++ b/README.md @@ -85,15 +85,18 @@ ZANKYO_BUCKET=<記録用バケット名> import { Zankyo } from 'zankyo-cdk'; const zankyo = new Zankyo(this, 'Zankyo', { - // bucket?, kmsKey?, scrubFields?, layer? (セルフホスト時), arm64? + // bucket?, recordRetentionDays?, kmsKey?, scrubFields?, + // sarApplicationId?, semanticVersion?, layer? (セルフホスト時), arm64? }); zankyo.attachTo(myFunction); // → Layer 追加 + AWS_LAMBDA_EXEC_WRAPPER/ZANKYO_* env 注入 // + s3:PutObject(+ kms:Encrypt/GenerateDataKey)権限を role へ ``` -bucket 未指定なら「パブリックアクセス全ブロック + lifecycle 30 日 + -enforceSSL」のバケットを自動作成します。 +bucket 未指定なら「パブリックアクセス全ブロック + lifecycle 30 日 +(`recordRetentionDays` で変更)+ enforceSSL」のバケットを自動作成します。 +このバケットは `RemovalPolicy.RETAIN` で、`cdk destroy` でスタックを消しても +レコードごと残ります。不要になったら、中身を消してからバケットを削除してください。 layer 未指定なら、上の SAR アプリを参照します。`arm64` は関数のアーキテクチャに 揃えてください。食い違うと `attachTo` が例外を投げます (props の一覧は [construct/README.md](https://github.com/seike460/lambda-zankyo/blob/main/construct/README.md))。 @@ -118,6 +121,11 @@ exit code: `0` 成功 / `1` diff差異・関数エラー / `2` 引数ミス / `3 `ZANKYO_SSM_PARAM` 指定時は SSM Parameter の JSON(同じキー名)が env を部分上書きします。複数関数で設定を一元管理するための経路です。 +このとき関数のロールに `ssm:GetParameter` が要ります。カスタマー管理キーで暗号化した +SecureString なら、そのキーの `kms:Decrypt` も要ります +([AWS ドキュメント](https://docs.aws.amazon.com/kms/latest/developerguide/services-parameter-store.html#parameter-policy-kms-encryption))。 +CDK construct はこの権限を付けないので、別に付与してください。取得に失敗すると、warn を +出して env の設定だけで動きます(バケットを SSM 側にだけ書いた場合は、記録しません)。 | env | 既定 | 用途 | |---|---|---| @@ -217,6 +225,7 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json - 関数に付与するのは `s3:PutObject` のみ(+KMS 時は Encrypt/GenerateDataKey)。 書き込み先は `zankyo/{function-name}/` 配下に限るので、バケットを共有する 別の関数のレコードは書けません(CDK construct の場合)。 + `ZANKYO_SSM_PARAM` を使う場合だけ、`ssm:GetParameter` を別に付与します(「設定」参照)。 - CLI は、キーの関数名と本文の `functionName` が食い違うレコードを replay・diff・redrive に使いません(exit 4)。 - proxy が listen するのは `127.0.0.1` のみ。 @@ -256,8 +265,8 @@ RELEASING.md # リリースの手順(SAR・npm・GitHub Release) ```bash pnpm install # JS/TS 依存 pnpm gate # lint + 版の一致 + build + typecheck + test(全パッケージ) -cargo test --workspace # Rust ユニットテスト -cargo fmt --all -- --check && cargo clippy -- -D warnings +cargo test --locked --workspace # Rust のユニットテストと統合テスト +cargo fmt --all -- --check && cargo clippy --locked --workspace --all-targets -- -D warnings ``` - TS: strict + `noUncheckedIndexedAccess` + `exactOptionalPropertyTypes`、 diff --git a/examples/README.md b/examples/README.md index 2d16ac0..e7b4cd5 100644 --- a/examples/README.md +++ b/examples/README.md @@ -67,6 +67,8 @@ zankyo redrive --confirm - 手順 1 の `password` は、レコードの `event` の中で denylist によりマスクされる。 例外メッセージには denylist が効かないため(README「PII scrub」)、デモの例外メッセージには イベントを入れていない。 +- `cdk destroy` しても、レコード用のバケットは残る(`RemovalPolicy.RETAIN`)。 + 不要なら、中のレコードを消してからバケットを削除する。 - timeout の SHUTDOWN フラッシュはベストエフォート。shutdown ウィンドウ内に PutObject が終わらないと、レコードは spill(既定 `/tmp/zankyo/<関数名>`)に残る。 timeout 後の reset は `/tmp` を消さないため、同じ実行環境が次の呼び出しで From 69ab6c688f60842ccd6bf3fd437a897ddc292672 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:14:17 +0900 Subject: [PATCH 61/97] =?UTF-8?q?docs(security):=20=E5=A4=B1=E6=95=97?= =?UTF-8?q?=E3=83=AC=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=20PUT=20=E3=81=AE?= =?UTF-8?q?=E5=89=8D=E3=81=AB=20/tmp=20=E3=81=B8=E5=85=88=E6=9B=B8?= =?UTF-8?q?=E3=81=8D=E3=81=99=E3=82=8B=20write-ahead=20spill=20=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E3=81=A9=E3=81=8A=E3=82=8A=E3=81=AB=E6=9B=B8?= =?UTF-8?q?=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- SECURITY.md | 5 +++-- proxy/src/config.rs | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e3a1a71..3a74cc7 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ CDK construct はこの権限を付けないので、別に付与してくださ | `ZANKYO_MAX_EVENT_KB` | `256` | イベント保存の上限(超過は先頭のみ + `truncated`) | | `ZANKYO_FLUSH_BUDGET_MS` | `1200` | 失敗レコードの PutObject 上限時間(呼び出し中の記録と SHUTDOWN フラッシュ)。失敗時の応答はこの時間まで遅れうる | | `ZANKYO_PUT_TIMEOUT_MS` | `5000` | spill 再送の PutObject 上限時間(起動時・定期回収) | -| `ZANKYO_SPILL_DIR` | `/tmp/zankyo/` | S3 失敗時・SHUTDOWN 時のローカル退避先(既定は関数名でスコープ) | +| `ZANKYO_SPILL_DIR` | `/tmp/zankyo/` | `.inflight` ステージと、PUT 前に先書きする失敗レコード(未送信分は再送まで残る)の置き場(既定は関数名でスコープ) | | `ZANKYO_SPILL_MAX_FILES` | `64` | spill 保持数の上限。超過分は古いものから破棄 | | `ZANKYO_SPILL_RETRY_MS` | `60000` | spill 再送を試みる間隔(生存中の定期回収) | | `ZANKYO_SPILL_MAX_AGE_SECS` | `604800` | spill ファイルの有効期間。超過分は再送せず破棄 | diff --git a/SECURITY.md b/SECURITY.md index e7955d3..e975967 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -31,8 +31,9 @@ zankyo は失敗イベントを扱うため、記録経路そのものを最小 イベント本文・認証情報を含めません。 - **/tmp 上の一時ファイル**: timeout 捕捉のため呼び出し中のイベントを `/tmp/zankyo//zankyo-*.inflight` へ生のままステージします - (scrub 前のイベントが一時的にディスク上に存在します)。また S3 - への PUT 失敗時は scrub 済みレコードを同 dir へ退避します。 + (scrub 前のイベントが一時的にディスク上に存在します)。また失敗レコードは、 + S3 への PUT の前に scrub 済みのものを同 dir へ先書きします(write-ahead)。 + PUT が成功すれば消し、失敗すれば再送用に残します。 いずれも mode 0600・zankyo 作成時は 0700 の関数スコープ dir・ 呼び出し完了/送信成功で削除で、書き込み先は同一 sandbox 内に 限られます。 diff --git a/proxy/src/config.rs b/proxy/src/config.rs index 6b51c32..7691cd8 100644 --- a/proxy/src/config.rs +++ b/proxy/src/config.rs @@ -70,7 +70,7 @@ pub struct Config { pub flush_budget_ms: u64, /// spill 再送(起動時・定期回収)の PutObject 上限時間。 pub put_timeout_ms: u64, - /// S3 失敗時・SHUTDOWN 時のローカル退避先。 + /// `.inflight` ステージと、PUT 前に先書きする失敗レコード(write-ahead spill)の置き場。 pub spill_dir: String, /// spill dir に保持するファイル数の上限。超過分は古いものから破棄。 pub spill_max_files: usize, From 0dc6ce2f57be7d4389d52d0faedfa7706ef1d61a Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:14:17 +0900 Subject: [PATCH 62/97] =?UTF-8?q?docs(readme):=20exactOptionalPropertyType?= =?UTF-8?q?s=20=E3=81=8C=E6=9C=89=E5=8A=B9=E3=81=AA=E3=81=AE=E3=81=AF=20cl?= =?UTF-8?q?i=20=E3=81=A8=20scripts=20=E3=81=A0=E3=81=91=E3=81=A0=E3=81=A8?= =?UTF-8?q?=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a74cc7..a539b38 100644 --- a/README.md +++ b/README.md @@ -269,8 +269,11 @@ cargo test --locked --workspace # Rust のユニットテストと統合テス cargo fmt --all -- --check && cargo clippy --locked --workspace --all-targets -- -D warnings ``` -- TS: strict + `noUncheckedIndexedAccess` + `exactOptionalPropertyTypes`、 - Biome でフォーマット統一。テストは `node --test`(外部サービス不要)。 +- TS: strict + `noUncheckedIndexedAccess`、Biome でフォーマット統一。 + `cli/` と `scripts/` は `exactOptionalPropertyTypes` も有効です。`construct/` と + `examples/` では無効です。aws-cdk-lib の型がこの設定と合わないためです + (例: `s3.Bucket` を `s3.IBucket` に代入できない)。 + テストは `node --test`(外部サービス不要)。 `scripts/*.mts` は Node が型を除去して直接実行します。型は `pnpm typecheck` が `scripts/tsconfig.json` で検査します。 - Rust: ロジック(scrub/record/config/inflight)は IO と分離した From 3df7473ad319d7e05688dc24f3ab35d125344644 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 09:14:17 +0900 Subject: [PATCH 63/97] =?UTF-8?q?docs(spec):=20SPEC=20=E3=82=92=E7=8F=BE?= =?UTF-8?q?=E8=A1=8C=E3=81=AE=E6=A7=8B=E6=88=90=E3=83=BB=E5=85=AC=E9=96=8B?= =?UTF-8?q?=E6=B8=88=E3=81=BF=E3=81=AE=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E5=90=8D=E3=83=BBtruncate=20=E3=81=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E3=81=AB=E5=90=88=E3=82=8F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SPEC.md | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/SPEC.md b/SPEC.md index 0e68784..85aa45d 100644 --- a/SPEC.md +++ b/SPEC.md @@ -10,12 +10,12 @@ sync invoke で失敗した Lambda 呼び出しの「イベント+エラー応 - AWS が sync 向けに payload を永続化するフックを持たないのは構造的(sync は応答が呼び出し元に返る設計。AWS の責任分界は「エラーを返す、リトライは client」)。10 年追加されていない。 - Powertools `logEvent`・Middy はコード変更前提。Datadog は商用で fixture 出力・sam local 連携・差分リプレイなし。Keploy は開発時記録が主眼で eBPF は Lambda 環境内で不可。 -## 決定事項(ユーザー確定済み) +## 決定事項 | 項目 | 決定 | |---|---| | 名称 | **lambda-zankyo**(残響) | -| プロキシ実装 | **Rust 単一バイナリ**(依存ゼロ、x86_64/arm64) | +| プロキシ実装 | **Rust 単一バイナリ**(musl 静的リンクで実行時の共有ライブラリ依存なし、x86_64/arm64) | | timeout 捕捉 | **Extension API の SHUTDOWN イベント**(reason=timeout)で in-flight イベントをフラッシュ | | PII scrub | **ハイブリッド**(フィールド名 denylist+パターン検出)、既定 ON | | 配布 | **SAR(Serverless Application Repository)公開** | @@ -27,15 +27,16 @@ sync invoke で失敗した Lambda 呼び出しの「イベント+エラー応 ``` Lambda Service ──Runtime API──▶ zankyo proxy (Rust, Layer) ──▶ 実ランタイム(handler) - ▲ │ - │ ├─ Extensions API /register(SHUTDOWN 受信のため) - │ └─ 失敗時のみ: イベント+エラー → scrub → S3(+KMS) + ▲ │ └─ /tmp に .inflight ステージ共有 + │ ├─ 失敗時のみ: イベント+エラー → scrub → S3(+KMS) + │ └─ zankyo agent (/opt/extensions 起動) + │ └─ Extensions API /register(SHUTDOWN 受信用) └── AWS_LAMBDA_EXEC_WRAPPER=/opt/zankyo-wrapper で差し込み ``` -- Layer 内の単一バイナリが **Runtime API proxy と external extension を兼務**する。 - - proxy: `AWS_LAMBDA_RUNTIME_API` を localhost の自分に向け、`/next`・`/response`・`/error`・`/init/error` を中継。 - - extension: `/extension/register` して `/event/next` をポーリングし、INVOKE/SHUTDOWN(reason=timeout/failure/spindown)を受信。 +- Layer 内の単一バイナリが **Runtime API proxy と external extension を兼務**する(起動方法でモードが分かれる)。プロセス構成とデータフローの詳細は ARCHITECTURE.md。 + - proxy: exec wrapper から起動し、`AWS_LAMBDA_RUNTIME_API` を localhost の自分に向け、`/next`・`/response`・`/error`・`/init/error` を中継。 + - extension(agent): layer の `/opt/extensions/zankyo` から platform が別プロセスとして起動する(internal extension には SHUTDOWN が届かないため)。`/extension/register` して `/event/next` をポーリングし、INVOKE/SHUTDOWN(reason=timeout/failure/spindown)を受信。 - **成功呼び出しは記録しない**(S3 PUT・spill なし)。`/next` のイベントは timeout 捕捉のため `/tmp` に一時ステージし、完了時に削除する。 - 失敗の定義: `/error` 呼出・`/init/error`・`/response` 内の errorType 含有・SHUTDOWN の時点で応答を返していない呼び出し(reason を問わず failureType=timeout。reason は errorContext.errorType に写す)。 - timeout 捕捉: proxy が in-flight イベントを `/tmp` の `.inflight` にステージ → SHUTDOWN を受けた extension がそれを読み、S3 へベストエフォートフラッシュ(shutdown ウィンドウ内に PutObject が完了しない場合は取りこぼす旨を README に明記)。 @@ -67,7 +68,7 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json ``` - scrub は **記録に `scrubReport` を併記**して「何をどう消したか」を監査可能にする(再現の障害にならない範囲で構造は保持)。 -- 6MB を超えるイベントは先頭 N KB+`truncated: true` フラグ(既定 N=256KB、env で変更可)。 +- `ZANKYO_MAX_EVENT_KB`(既定 256)を超えるイベントは先頭だけを保持し、`truncated: true` を付ける。`truncated` のレコードは fixture・replay・diff・redrive の対象外。 ## 設定(環境変数。`ZANKYO_SSM_PARAM` 指定時は SSM の JSON を優先) @@ -87,7 +88,7 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json - **パターン検出**: email / クレカ番号(Luhn 検証付き)/ JWT / API キー形状 / 電話番号 / IPv4。対象は文字列値のみ(数値型の値・キー名は対象外)。 - 既定 mask は `***` ではなく `j***@e***.com` 型の**形状保持マスク**(再現性を損なわないため)。 -## CLI(TypeScript strict + Biome。`npx zankyo`) +## CLI(TypeScript strict + Biome。npm パッケージ `lambda-zankyo`、コマンド名 `zankyo`。`npx lambda-zankyo` でも可) | コマンド | 内容 | |---|---| @@ -110,13 +111,14 @@ new Zankyo(this, 'Zankyo', { bucket?, kmsKey?, scrubFields? }) ## 配布 -- **Layer**: SAR で公開(1 クリック導入)。GitHub Releases にも zip を同時添付(SAR 審査中・セルフホスト用)。 -- **CLI**: npm で公開(`zankyo` または `lambda-zankyo`。パッケージ名空きは初回 publish 時に確認)。 -- **Construct**: npm(`zankyo-cdk` 等)または CLI と同一パッケージで export。 +- **Layer**: SAR で公開(1 クリック導入。`arn:aws:serverlessrepo:ap-northeast-1:446537410535:applications/lambda-zankyo`)。GitHub Releases にも zip を添付(セルフホスト用)。 +- **CLI**: npm パッケージ `lambda-zankyo`(コマンド名 `zankyo`)。 +- **Construct**: npm パッケージ `zankyo-cdk`。 +- 公開の手順は RELEASING.md。 - リポジトリ構成(monorepo): ``` lambda-zankyo/ - proxy/ # Rust(cargo lambda または cross で x86_64/arm64 ビルド) + proxy/ # Rust(cross または cargo build で x86_64/arm64 の musl 静的バイナリ。梱包は scripts/build-layer.mts) cli/ # TypeScript + Biome + AWS SDK v3 construct/ # TypeScript + Biome + aws-cdk-lib examples/ # 失敗するデモ関数(throw / timeout / init error) @@ -135,14 +137,14 @@ new Zankyo(this, 'Zankyo', { bucket?, kmsKey?, scrubFields? }) - scrub は**既定 ON**、無効化は `ZANKYO_SCRUB_MODE=off` の明示のみ。`scrubReport` で適用結果を証跡化。 - レコードの保存先は**利用者自身のアカウントの S3**(外部送信ゼロ)。IAM 権限は `s3:PutObject` 限定。 -- 依存の vendoring/lockfile、CI での `cargo audit` / `npm audit`。 +- 依存は lockfile(`Cargo.lock` / `pnpm-lock.yaml`)で固定し、CI で `cargo audit` / `pnpm audit` を実行する。 ## Open Questions 1. exec wrapper の chain(`ZANKYO_CHAIN_WRAPPER=/opt/other-wrapper` で次の wrapper を呼ぶ方式)は実現可能か。 2. SnapStart 環境で extension ライフサイクルが変わるか(init タイミングのずれ)。 3. RESPONSE_STREAM 呼出での失敗応答捕捉(チャンク応答中の error)。 -4. timeout 時の SHUTDOWN ウィンドウに PutObject が間に合うか実測(バッファ先を /tmp にも残し次 init で回収する二重化は有効か)。 +4. timeout 時の SHUTDOWN ウィンドウに PutObject が間に合うか実測。/tmp にも残して次の init で回収する二重化は実装済み(`.inflight` ステージと write-ahead spill。ARCHITECTURE.md のデータフロー参照)。 5. API Gateway 29s timeout のような「呼び出し元側 timeout」(Lambda は成功している)の扱い。 ## E2E 検証手順 From 09d639f5e9b238c6cf6ada78c96026aefb129f74 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 13:21:35 +0900 Subject: [PATCH 64/97] =?UTF-8?q?fix(scrub):=20ZANKYO=5FSCRUB=5FMODE=3Doff?= =?UTF-8?q?=20=E3=81=A7=E3=81=AF=20errorMessage=20=E3=81=AA=E3=81=A9?= =?UTF-8?q?=E3=81=AE=E8=87=AA=E7=94=B1=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=82=82=E6=9B=B8=E3=81=8D=E6=8F=9B=E3=81=88=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scrub() は Off で処理を止めるが、scrub_text() は mode を見ずに パターン置換を掛けていた。off を設定しても、errorContext の errorMessage・stackTrace にある email・AWS アクセスキー・Bearer トークンが マスクされ、「off は scrub を切る」という設定と文書の説明と食い違っていた。 - scrub_text() は Off なら入力をそのまま返す - 自由テキストの単体テストと、/error 経路で off のレコードを確かめる 統合テストを足す(修正を外すと両方とも失敗する) - SPEC の設定表に off を足し、README に off は自由テキストも 置き換えないことを書く。CHANGELOG の Fixed に記載する --- CHANGELOG.md | 3 +++ README.md | 3 ++- SPEC.md | 2 +- proxy/src/scrub.rs | 14 ++++++++++++++ proxy/tests/proxy_it.rs | 37 +++++++++++++++++++++++++++++++++++++ 5 files changed, 57 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac8090f..0b878bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — README と設定の説明で、`ZANKYO_FLUSH_BUDGET_MS` と `ZANKYO_PUT_TIMEOUT_MS` の役割を実際の動作に合わせた。失敗レコードの PUT (呼び出し中と SHUTDOWN 後)は前者、spill 再送の PUT は後者で打ち切る +- **proxy** — `ZANKYO_SCRUB_MODE=off` でも、`errorContext` の `errorMessage`・ + `stackTrace` などの自由テキストにはパターン検出のマスクが掛かっていた。 + 説明どおり、off では自由テキストも原文のまま記録する - **cli** — replay・diff・redrive は、非 JSON イベント(`eventIsRawText` / `eventIsBase64`)のレコードを、invoke の前に exit 4 で止める。Lambda の Invoke API は JSON でない本文を `InvalidRequestContentException` で拒否する。 diff --git a/README.md b/README.md index a539b38..8164e25 100644 --- a/README.md +++ b/README.md @@ -217,7 +217,8 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json - **mask モード**は形状保持(`j***@e***.com`、`***1234`)で再現性を維持。 - **hash モード**は HMAC-SHA256 擬似名化(鍵は関数名+バケット由来の 決定的 seed。暗号化ではなく「同じ値→同じハッシュ」の再現性が目的)。 -- 無効化は `ZANKYO_SCRUB_MODE=off` の明示設定のみ。 +- 無効化は `ZANKYO_SCRUB_MODE=off` の明示設定のみ。off では自由テキストを含め、 + 何も置き換えません。 ## セキュリティ diff --git a/SPEC.md b/SPEC.md index 85aa45d..d2b87c1 100644 --- a/SPEC.md +++ b/SPEC.md @@ -78,7 +78,7 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json | `ZANKYO_KMS_KEY` | SSE-S3 | 暗号化キー | | `ZANKYO_SSM_PARAM` | なし | 設定 JSON を保持する SSM Parameter 名。指定時は env より優先 | | `ZANKYO_SCRUB_FIELDS` | 既定 denylist | 追加フィールド名(カンマ区切り) | -| `ZANKYO_SCRUB_MODE` | `mask` | `mask` / `hash`(HMAC 擬似名化) | +| `ZANKYO_SCRUB_MODE` | `mask` | `mask` / `hash`(HMAC 擬似名化)/ `off` | | `ZANKYO_MAX_EVENT_KB` | `256` | イベント保存の上限 | | `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ | diff --git a/proxy/src/scrub.rs b/proxy/src/scrub.rs index 5eb1519..e5e2c72 100644 --- a/proxy/src/scrub.rs +++ b/proxy/src/scrub.rs @@ -215,7 +215,11 @@ impl Scrubber { /// 自由テキスト(errorMessage 等)に対するパターン置換。 /// denylist 照合はフィールド名を持たないテキストには適用しない。 + /// `ScrubMode::Off` では `scrub` と同じく何も置き換えない。 pub fn scrub_text(&self, s: &str, report: &mut ScrubReport) -> String { + if self.mode == ScrubMode::Off { + return s.to_string(); + } self.scrub_string(s, report) } @@ -501,6 +505,16 @@ mod tests { assert_eq!(r.fields_redacted, 0); } + #[test] + fn off_mode_leaves_free_text() { + // off は errorMessage 等の自由テキストにもパターン置換を掛けない + let s = Scrubber::new(ScrubMode::Off, &BTreeSet::new(), "seed"); + let text = "alice@example.com AKIAIOSFODNN7EXAMPLE Authorization: Bearer abcdefghijk123"; + let mut r = ScrubReport::default(); + assert_eq!(s.scrub_text(text, &mut r), text); + assert!(r.patterns_applied.is_empty()); + } + #[test] fn extra_fields_extend_denylist() { let extra: BTreeSet = ["mysecret".to_string()].into_iter().collect(); diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index 81fd851..d21faaf 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -587,6 +587,43 @@ async fn error_context_pii_is_scrubbed() { assert!(msg.contains("***")); } +#[tokio::test] +async fn scrub_off_keeps_error_context_verbatim() { + // ZANKYO_SCRUB_MODE=off は errorMessage・stackTrace の自由テキストも書き換えない + let (api_addr, _api) = spawn_mock(runtime_api_handler()).await; + let (s3_addr, s3_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let inflight = Arc::new(InFlight::new()); + let (recorder, _spill) = recorder_with_env(&s3_addr, &[("ZANKYO_SCRUB_MODE", "off")]); + let proxy = spawn_proxy(&api_addr, inflight, recorder).await; + + call( + &proxy, + Method::GET, + "/2018-06-01/runtime/invocation/next", + None, + ) + .await; + let message = "duplicate email alice@example.com key AKIAIOSFODNN7EXAMPLE"; + let trace = [ + "Error: Bearer abcdefghijk123", + " at handler (index.js:3:9)", + ]; + call( + &proxy, + Method::POST, + "/2018-06-01/runtime/invocation/req-123/error", + Some(json!({"errorType": "E", "errorMessage": message, "stackTrace": trace})), + ) + .await; + assert!(wait_for(2_000, || !captured(&s3_hits).is_empty()).await); + let (_, _, body) = captured(&s3_hits).remove(0); + let rec: Value = serde_json::from_slice(&body).unwrap(); + assert_eq!(rec["event"]["password"], "hunter2"); + assert_eq!(rec["errorContext"]["errorMessage"], message); + assert_eq!(rec["errorContext"]["stackTrace"], trace.join("\n")); + assert_eq!(rec["scrubReport"]["patternsApplied"], json!([])); +} + #[tokio::test] async fn second_error_call_does_not_overwrite_record() { // 同一 requestId の /error 再試行は記録済みフラグで抑止される From 129ed09892a607f5173ec09c1075def07c0730c5 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 13:21:49 +0900 Subject: [PATCH 65/97] =?UTF-8?q?docs(spec):=20=E3=83=91=E3=82=BF=E3=83=BC?= =?UTF-8?q?=E3=83=B3=E6=A4=9C=E5=87=BA=E3=81=AE=E5=AF=BE=E8=B1=A1=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E3=81=A9=E3=81=8A=E3=82=8A=20AWS=20=E3=82=A2?= =?UTF-8?q?=E3=82=AF=E3=82=BB=E3=82=B9=E3=82=AD=E3=83=BC=E3=81=A8=20Bearer?= =?UTF-8?q?=20=E3=83=88=E3=83=BC=E3=82=AF=E3=83=B3=E3=81=A8=E6=9B=B8?= =?UTF-8?q?=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SPEC は検出対象を「API キー形状」と書き、Bearer トークンを載せていなかった。 scrub_data.rs の検出器は AWS アクセスキー(AKIA などの接頭辞)と Bearer トークンで、一般の API キーは検出しない。README・CHANGELOG と 同じ一覧(email / クレカ番号 / JWT / AWS アクセスキー / Bearer トークン / 電話番号 / IPv4)に揃える。 --- SPEC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SPEC.md b/SPEC.md index d2b87c1..4367a44 100644 --- a/SPEC.md +++ b/SPEC.md @@ -85,7 +85,7 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json ### scrub 規則(ハイブリッド) - **フィールド名 denylist**: `password, secret, token, apiKey, authorization, privateKey, sessionId, cookie, cookies, ssn, creditCard, cvv, pin`(大文字小文字・セパレータ不問)+ `ZANKYO_SCRUB_FIELDS`。文字列化された JSON(API Gateway の `body` 等)の中のフィールドにも適用する。 -- **パターン検出**: email / クレカ番号(Luhn 検証付き)/ JWT / API キー形状 / 電話番号 / IPv4。対象は文字列値のみ(数値型の値・キー名は対象外)。 +- **パターン検出**: email / クレカ番号(Luhn 検証付き)/ JWT / AWS アクセスキー / Bearer トークン / 電話番号 / IPv4。対象は文字列値のみ(数値型の値・キー名は対象外)。 - 既定 mask は `***` ではなく `j***@e***.com` 型の**形状保持マスク**(再現性を損なわないため)。 ## CLI(TypeScript strict + Biome。npm パッケージ `lambda-zankyo`、コマンド名 `zankyo`。`npx lambda-zankyo` でも可) From 02a2aae795e0dd4bd3d429f82adff847a595852c Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 14:42:43 +0900 Subject: [PATCH 66/97] =?UTF-8?q?fix(proxy):=20spill=20=E3=81=A8=20PUT=20?= =?UTF-8?q?=E3=81=8C=E3=81=A8=E3=82=82=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=81=A8=E3=81=8D=E3=80=81.inflight=20=E3=82=B9?= =?UTF-8?q?=E3=83=86=E3=83=BC=E3=82=B8=E3=82=92=E6=B6=88=E3=81=95=E3=81=9A?= =?UTF-8?q?=E3=81=AB=E6=AE=8B=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 残った .inflight を timeout レコードへ変換する recover_inflights は、 PUT の結果に関係なくステージを削除していた。spill の書き込みも失敗して いると、ステージがレコードの最後のコピーで、記録が失われていた。 spill か PUT のどちらかが成功したときだけ削除する。 読み取りに失敗したステージも、パースできないステージと区別して残す。 --- CHANGELOG.md | 5 +++ proxy/src/store.rs | 60 ++++++++++++++++++--------- proxy/tests/proxy_it.rs | 92 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b878bc..fae27b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — `ZANKYO_SCRUB_MODE=off` でも、`errorContext` の `errorMessage`・ `stackTrace` などの自由テキストにはパターン検出のマスクが掛かっていた。 説明どおり、off では自由テキストも原文のまま記録する +- **proxy** — 残った `.inflight` ステージを timeout レコードへ変換するとき、 + `/tmp` への spill と S3 への PUT がともに失敗しても、ステージを削除していた。 + このステージはレコードの最後のコピーで、記録が失われていた。どちらかが + 成功したときだけ削除し、両方失敗したら次の回収まで残す。読み取りに失敗した + ステージも、削除せずに残す - **cli** — replay・diff・redrive は、非 JSON イベント(`eventIsRawText` / `eventIsBase64`)のレコードを、invoke の前に exit 4 で止める。Lambda の Invoke API は JSON でない本文を `InvalidRequestContentException` で拒否する。 diff --git a/proxy/src/store.rs b/proxy/src/store.rs index 5400b37..f869a94 100644 --- a/proxy/src/store.rs +++ b/proxy/src/store.rs @@ -38,11 +38,14 @@ pub struct EventInput { } /// `stage_save` と `stage_timeout` が返す PUT 待ちジョブ。 -/// spill 済みのため、PUT が間に合わなくてもレコードは残る。 +/// spill 済みなら、PUT が間に合わなくてもレコードは残る。 pub struct StagedRecord { pub request_id: String, pub key: String, pub body: Vec, + /// spill の書き込みに成功したか。false の間は、PUT が届くまで + /// 元の `.inflight` ステージがこのレコードの最後のコピーになる。 + pub spilled: bool, } pub struct Recorder { @@ -110,13 +113,15 @@ impl Recorder { // spill に残った時点でレコードは保全済み — inflight ステージを // 消してよい。spill 失敗時はステージを残し、init 時の // timeout 変換に救いを残す(PUT 成功でも消える)。 - if self.spill(&request_id, &body) { + let spilled = self.spill(&request_id, &body); + if spilled { self.clear_inflight(&request_id); } Some(StagedRecord { request_id, key, body, + spilled, }) } @@ -170,27 +175,40 @@ impl Recorder { /// (前環境の残滓、reason 不明 → None)と external extension の /// SHUTDOWN フラッシュ(reason あり)から呼ぶ。 /// 稼働中に呼ぶと進行中の呼び出しを未完と誤認するため禁。 - /// 変換後はステージを消す — レコードは spill json として残るので - /// PUT に失敗しても recover_spills が拾う。 + /// 変換後、レコードが spill か S3 に残った場合だけステージを消す。 + /// spill 済みなら PUT に失敗しても recover_spills が拾う。 pub async fn recover_inflights(&self, reason: Option<&str>) { let dir = Path::new(&self.cfg.spill_dir); for path in spill::pending_inflights(dir) { - let Some(inv) = std::fs::read(&path) - .ok() - .and_then(|b| Invocation::from_staged(&b)) - else { - // 読めない・パースできないステージは復旧不能 — 消す + let body = match std::fs::read(&path) { + Ok(b) => b, + // 読めないのは一時的な失敗でありうる。最後の証跡なので消さず、 + // 次回の回収に回す(完了して消えたステージは黙って飛ばす) + Err(e) => { + if e.kind() != std::io::ErrorKind::NotFound { + warn!(path = %path.display(), error = %e, "failed to read inflight stage; kept"); + } + continue; + } + }; + let Some(inv) = Invocation::from_staged(&body) else { + // パースできないステージは復旧不能 — 消す if std::fs::remove_file(&path).is_ok() { - warn!(path = %path.display(), "dropping unreadable inflight stage"); + warn!(path = %path.display(), "dropping malformed inflight stage"); } continue; }; if let Some(job) = self.stage_timeout(&inv, reason) { - self.commit_staged(&job).await; - // 変換済みのステージは消す(stage_timeout 側でも - // 正規名を消すが、ファイル名と埋め込み rid が - // 食い違う場合に備えて path 側も消す) - let _ = std::fs::remove_file(&path); + let saved = self.commit_staged(&job).await; + // spill か S3 に残ったときだけステージを消す(stage_timeout 側でも + // 正規名を消すが、ファイル名と埋め込み rid が食い違う場合に + // 備えて path 側も消す)。両方失敗したらステージが最後の + // コピーなので残し、次回の回収で変換し直す。 + if job.spilled || saved { + let _ = std::fs::remove_file(&path); + } else { + warn!(request_id = %inv.request_id, "timed-out record not persisted; inflight stage kept"); + } } else { // 変換に失敗したステージは残し、次回 init の再試行に任せる warn!(request_id = %inv.request_id, "failed to stage timed-out record"); @@ -200,8 +218,9 @@ impl Recorder { /// stage 済みのレコードを S3 へ PUT する(時間は flush budget で /// 打ち切る)。届いたら spill を消す(残すと次回 init で同一キーへ - /// 冗長な PUT が走る)。失敗しても spill は残るため記録は保全される。 - pub async fn commit_staged(&self, job: &StagedRecord) { + /// 冗長な PUT が走る)。失敗しても spill 済みなら記録は保全される。 + /// 戻り値は PUT が届いたか。 + pub async fn commit_staged(&self, job: &StagedRecord) -> bool { match tokio::time::timeout(self.flush_budget(), self.put(&job.key, job.body.clone())).await { Ok(Ok(())) => { @@ -212,12 +231,15 @@ impl Recorder { // S3 に届いたのでローカルの証跡は全部消す // (spill 失敗で残った .inflight もここで拾う) self.clear_inflight(&job.request_id); + true } Ok(Err(e)) => { - warn!(request_id = %job.request_id, error = %e, "s3 put failed; spill kept") + warn!(request_id = %job.request_id, error = %e, "s3 put failed; spill kept"); + false } Err(_) => { - warn!(request_id = %job.request_id, "s3 put exceeded budget; spill kept") + warn!(request_id = %job.request_id, "s3 put exceeded budget; spill kept"); + false } } } diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index d21faaf..eb6e7ff 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -720,6 +720,98 @@ async fn leftover_inflight_stage_becomes_timeout_record() { assert!(!spill_dir.join("zankyo-req-stuck.json").exists()); } +/// `up` が false の間は PutObject を 403 で拒否する S3 モック。 +/// 403 は SDK が再試行しないため、失敗が 1 回の PUT で確定する。 +async fn spawn_switchable_s3() -> (String, Captured, Arc) { + let up = Arc::new(std::sync::atomic::AtomicBool::new(false)); + let (addr, hits) = spawn_mock({ + let up = up.clone(); + move |_m, _p, _h, _b| { + if up.load(std::sync::atomic::Ordering::SeqCst) { + return ok_empty(); + } + Response::builder() + .status(StatusCode::FORBIDDEN) + .body(boxed_full(Bytes::from_static( + b"AccessDeniedAccess Denied", + ))) + .unwrap() + } + }) + .await; + (addr, hits, up) +} + +#[tokio::test] +async fn inflight_stage_survives_when_spill_and_put_both_fail() { + // spill の書き込みと S3 PUT がともに失敗すると、.inflight ステージが + // timeout レコードの最後のコピーになる。消さずに残し、両方が回復した後の + // 回収で記録できること。 + let (s3_addr, s3_hits, s3_up) = spawn_switchable_s3().await; + let (recorder, spill_dir) = recorder_to(&s3_addr); + recorder.stage_inflight(&Invocation { + request_id: "req-last".to_string(), + event: json!({"input": 1}), + encoding: EventEncoding::Json, + invoked_at: OffsetDateTime::now_utc(), + }); + let stage = spill_dir.join("zankyo-req-last.inflight"); + // spill の書き込み先をディレクトリで塞ぎ、rename を失敗させる + let spill_blocker = spill_dir.join("zankyo-req-last.json"); + std::fs::create_dir(&spill_blocker).unwrap(); + let record_puts = || { + captured(&s3_hits) + .into_iter() + .filter(|(m, p, _)| m == "PUT" && p.contains("req-last.json")) + .count() + }; + + recorder.recover_inflights(None).await; + + assert_eq!(record_puts(), 1, "the PUT must have been attempted"); + assert!(stage.exists(), "the last copy of the record must survive"); + + std::fs::remove_dir(&spill_blocker).unwrap(); + s3_up.store(true, std::sync::atomic::Ordering::SeqCst); + recorder.recover_inflights(None).await; + + assert_eq!(record_puts(), 2); + assert!(!stage.exists()); + assert!(!spill_blocker.exists()); +} + +#[tokio::test] +async fn unreadable_inflight_stage_is_kept_for_retry() { + // 読み取りの失敗は一時的でありうる。パースできないステージとは違い、 + // 最後の証跡なので消さない。読めるようになった後の回収で記録する。 + use std::os::unix::fs::PermissionsExt; + let (s3_addr, s3_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let (recorder, spill_dir) = recorder_to(&s3_addr); + recorder.stage_inflight(&Invocation { + request_id: "req-locked".to_string(), + event: json!({"input": 1}), + encoding: EventEncoding::Json, + invoked_at: OffsetDateTime::now_utc(), + }); + let stage = spill_dir.join("zankyo-req-locked.inflight"); + std::fs::set_permissions(&stage, std::fs::Permissions::from_mode(0o000)).unwrap(); + if std::fs::read(&stage).is_ok() { + // root はモードに関係なく読めるため、この条件を作れない + return; + } + + recorder.recover_inflights(None).await; + + assert!(stage.exists(), "an unreadable stage must not be deleted"); + assert!(captured(&s3_hits).is_empty()); + + std::fs::set_permissions(&stage, std::fs::Permissions::from_mode(0o600)).unwrap(); + recorder.recover_inflights(None).await; + + assert_eq!(captured(&s3_hits).len(), 1); + assert!(!stage.exists()); +} + #[tokio::test] async fn failed_put_keeps_spill_until_recovery_resends_it() { // S3 が PutObject を拒否する間は spill が残り、回復後の recover_spills が From d813d7a599ac44fe01f3d250de56654c9dd756d9 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 14:44:07 +0900 Subject: [PATCH 67/97] =?UTF-8?q?fix(proxy):=20init=20=E6=99=82=E3=81=AB?= =?UTF-8?q?=E5=9B=9E=E5=8F=8E=E3=81=99=E3=82=8B=20.inflight=20=E3=81=AE?= =?UTF-8?q?=E4=B8=80=E8=A6=A7=E3=82=92=E3=80=81=E4=B8=AD=E7=B6=99=E3=82=92?= =?UTF-8?q?=E5=A7=8B=E3=82=81=E3=82=8B=E5=89=8D=E3=81=AB=E7=A2=BA=E5=AE=9A?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 起動時の回収タスクは、serve の開始後に .inflight を列挙していた。 初回の /next が先に届くと、実行中の呼び出しのステージまで拾い、 timeout レコードとして S3 に記録しうる。 startup_recovery で一覧を先に確定し、その一覧だけをバックグラウンドへ渡す。 回収を後回しにして初回 /next と競合させるテストを追加した。 --- CHANGELOG.md | 3 +++ proxy/src/orchestrate.rs | 30 ++++++++++++++++++---------- proxy/src/spill.rs | 4 ++-- proxy/src/store.rs | 27 ++++++++++++++++++------- proxy/tests/proxy_it.rs | 43 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 88 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fae27b2..970f64b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 このステージはレコードの最後のコピーで、記録が失われていた。どちらかが 成功したときだけ削除し、両方失敗したら次の回収まで残す。読み取りに失敗した ステージも、削除せずに残す +- **proxy** — init 時の回収は、Runtime API の中継を始めた後に `.inflight` + ステージを列挙していた。初回の `/next` が先に届くと、実行中の呼び出しを + timeout として S3 に記録しうる。回収する一覧は、中継を始める前に確定する - **cli** — replay・diff・redrive は、非 JSON イベント(`eventIsRawText` / `eventIsBase64`)のレコードを、invoke の前に exit 4 で止める。Lambda の Invoke API は JSON でない本文を `InvalidRequestContentException` で拒否する。 diff --git a/proxy/src/orchestrate.rs b/proxy/src/orchestrate.rs index a9c26d6..204b0f5 100644 --- a/proxy/src/orchestrate.rs +++ b/proxy/src/orchestrate.rs @@ -94,17 +94,11 @@ pub async fn run(argv: &[OsString]) -> u8 { // 前回の実行で残った spill があれば再送する。非同期・ベストエフォートで、 // 起動経路を遅らせない。初回再送は pending へ積み、終了時の drain に // 含める(早期終了時に PUT が途中で切られないようにする)。 - // 先に inflight 残滓を変換する — 「応答なく環境が畳まれた呼び出し」 - // を timeout レコード化してから、溜まった spill 全件を再送する順。 - // 順序不変条件: このタスクは serve 開始前に積む。稼働後に - // recover_inflights を呼ぶと進行中の呼び出しを未完と誤認する。 + // 順序不変条件: 回収する inflight 残滓の一覧は serve 開始前に確定する + // (startup_recovery)。稼働後に列挙すると進行中の呼び出しを未完と誤認する。 { - let rec = recorder.clone(); - pending.lock().await.set.spawn(async move { - // 前環境の残滓は shutdown reason が分からない(None=unknown) - rec.recover_inflights(None).await; - rec.recover_spills().await; - }); + let recovery = startup_recovery(recorder.clone()); + pending.lock().await.set.spawn(recovery); } // 生存中も定期再送する。S3 の一時障害が回復した時点で // /tmp を空に戻し、溜まったままの状態を放置しない。 @@ -194,6 +188,22 @@ pub async fn run(argv: &[OsString]) -> u8 { code } +/// 起動時の回収処理を作る。先に inflight 残滓を変換する — +/// 「応答なく環境が畳まれた呼び出し」を timeout レコード化してから、 +/// 溜まった spill 全件を再送する順。 +/// 回収する `.inflight` の一覧は、この関数を呼んだ時点で確定させる。 +/// 返す Future の中で列挙すると、serve 開始後に届いた初回 `/next` の +/// ステージまで拾い、実行中の呼び出しを timeout と誤記録しうる。 +/// そのため serve を始める前に呼ぶ。 +pub fn startup_recovery(recorder: Arc) -> impl std::future::Future + Send { + let leftovers = recorder.pending_inflights(); + async move { + // 前環境の残滓は shutdown reason が分からない(None=unknown) + recorder.recover_inflight_paths(leftovers, None).await; + recorder.recover_spills().await; + } +} + /// 自分自身を Runtime API として listen する。 async fn bind_proxy_listener() -> Option { match TcpListener::bind("127.0.0.1:0").await { diff --git a/proxy/src/spill.rs b/proxy/src/spill.rs index 7e3b942..0c29d41 100644 --- a/proxy/src/spill.rs +++ b/proxy/src/spill.rs @@ -98,8 +98,8 @@ pub fn clear_inflight(dir: &Path, request_id: &str) { /// 残っている inflight ステージを列挙する。 /// 実行環境が応答を返す前に畳まれた呼び出し=未完の証跡。 -/// init 直後と SHUTDOWN 受信時のみ呼ぶこと(稼働中に読むと -/// 進行中の呼び出しを未完と誤認する)。 +/// init 時は serve 開始前、それ以外は SHUTDOWN 受信時のみ呼ぶこと +/// (稼働中に読むと進行中の呼び出しを未完と誤認する)。 pub fn pending_inflights(dir: &Path) -> Vec { let Ok(entries) = std::fs::read_dir(dir) else { return Vec::new(); diff --git a/proxy/src/store.rs b/proxy/src/store.rs index f869a94..7100f75 100644 --- a/proxy/src/store.rs +++ b/proxy/src/store.rs @@ -14,7 +14,7 @@ use crate::spill; use aws_sdk_s3::primitives::ByteStream; use aws_sdk_s3::types::ServerSideEncryption; use serde_json::Value; -use std::path::Path; +use std::path::{Path, PathBuf}; use std::time::Duration; use time::OffsetDateTime; use tracing::{info, warn}; @@ -170,16 +170,29 @@ impl Recorder { spill::clear_inflight(Path::new(&self.cfg.spill_dir), request_id); } + /// 残っている inflight ステージを列挙する。 + /// 稼働中に列挙すると進行中の呼び出しまで含むため、init 時は + /// serve 開始前、それ以外は SHUTDOWN 受信後にだけ呼ぶ。 + pub fn pending_inflights(&self) -> Vec { + spill::pending_inflights(Path::new(&self.cfg.spill_dir)) + } + /// 残った inflight ステージを timeout レコードへ変換する。 - /// 「応答を返す前に環境が畳まれた呼び出し」の回収で、init 直後 - /// (前環境の残滓、reason 不明 → None)と external extension の - /// SHUTDOWN フラッシュ(reason あり)から呼ぶ。 + /// external extension の SHUTDOWN フラッシュ(reason あり)から呼ぶ。 /// 稼働中に呼ぶと進行中の呼び出しを未完と誤認するため禁。 + pub async fn recover_inflights(&self, reason: Option<&str>) { + self.recover_inflight_paths(self.pending_inflights(), reason) + .await; + } + + /// 列挙済みの inflight ステージを timeout レコードへ変換する。 + /// 「応答を返す前に環境が畳まれた呼び出し」の回収で、init 直後 + /// (前環境の残滓、reason 不明 → None)は serve 開始前に確定した + /// 一覧を、SHUTDOWN 時は `recover_inflights` 経由で渡す。 /// 変換後、レコードが spill か S3 に残った場合だけステージを消す。 /// spill 済みなら PUT に失敗しても recover_spills が拾う。 - pub async fn recover_inflights(&self, reason: Option<&str>) { - let dir = Path::new(&self.cfg.spill_dir); - for path in spill::pending_inflights(dir) { + pub async fn recover_inflight_paths(&self, paths: Vec, reason: Option<&str>) { + for path in paths { let body = match std::fs::read(&path) { Ok(b) => b, // 読めないのは一時的な失敗でありうる。最後の証跡なので消さず、 diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index eb6e7ff..a8305d7 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -720,6 +720,49 @@ async fn leftover_inflight_stage_becomes_timeout_record() { assert!(!spill_dir.join("zankyo-req-stuck.json").exists()); } +#[tokio::test] +async fn startup_recovery_leaves_the_first_invocation_alone() { + // 起動時回収の対象は serve 開始前に確定する。回収が動き出す前に + // 初回 /next が届いても、実行中の呼び出しを timeout と誤記録しない。 + let (api_addr, _api) = spawn_mock(runtime_api_handler()).await; + let (s3_addr, s3_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let (recorder, spill_dir) = recorder_to(&s3_addr); + // 前の実行環境が残したステージ + recorder.stage_inflight(&Invocation { + request_id: "req-leftover".to_string(), + event: json!({"input": 1}), + encoding: EventEncoding::Json, + invoked_at: OffsetDateTime::now_utc(), + }); + let recovery = zankyo::orchestrate::startup_recovery(recorder.clone()); + let proxy = spawn_proxy(&api_addr, Arc::new(InFlight::new()), recorder).await; + + // 回収を後回しにし、その前に初回 /next を通す + call( + &proxy, + Method::GET, + "/2018-06-01/runtime/invocation/next", + None, + ) + .await; + let running = spill_dir.join("zankyo-req-123.inflight"); + assert!(running.exists()); + recovery.await; + + let puts: Vec = captured(&s3_hits) + .into_iter() + .filter(|(m, _, _)| m == "PUT") + .map(|(_, p, _)| p) + .collect(); + assert_eq!(puts.len(), 1, "{puts:?}"); + assert!(puts[0].contains("req-leftover.json")); + assert!(!spill_dir.join("zankyo-req-leftover.inflight").exists()); + assert!( + running.exists(), + "the running invocation must not be recorded as a timeout" + ); +} + /// `up` が false の間は PutObject を 403 で拒否する S3 モック。 /// 403 は SDK が再試行しないため、失敗が 1 回の PUT で確定する。 async fn spawn_switchable_s3() -> (String, Captured, Arc) { From e05878e0b28a889d2db193c64a96c7154480e0af Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 14:45:35 +0900 Subject: [PATCH 68/97] =?UTF-8?q?fix(cli):=20=E6=95=B0=E5=80=A4=E3=81=AE?= =?UTF-8?q?=E7=92=B0=E5=A2=83=E5=A4=89=E6=95=B0=E3=81=AF=E6=AD=A3=E3=81=AE?= =?UTF-8?q?=E6=95=B4=E6=95=B0=E3=81=A0=E3=81=91=E3=82=92=E5=8F=97=E3=81=91?= =?UTF-8?q?=E4=BB=98=E3=81=91=E3=80=81=E5=B0=8F=E6=95=B0=E3=81=AF=E6=97=A2?= =?UTF-8?q?=E5=AE=9A=E5=80=A4=E3=81=AB=E5=80=92=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit envNum は正の数を Math.floor で丸めていた。ZANKYO_LIST_PAGE_SIZE=0.5 は MaxKeys: 0 を送り、ZANKYO_RECORD_MAX_MB=0.5 は読み取り上限を 0 にしていた。 正の整数でない値は、ほかの不正値と同じく既定値を使う。 タイムアウト系は、Node.js のタイマーの上限を超える値も既定値に倒す。 上限を超えるとタイマーが 1 ms で発火し、AWS API の呼び出しを打ち切っていた。 --- CHANGELOG.md | 5 +++++ cli/README.md | 3 +++ cli/src/aws.ts | 17 +++++++++++------ cli/tests/aws.test.ts | 24 +++++++++++++++++++++++- cli/tests/store.test.ts | 39 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 81 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 970f64b..272ba68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Invoke API は JSON でない本文を `InvalidRequestContentException` で拒否する。 以前は原文のまま送り、README もそれで再送できると説明していた。 fixture は従来どおり、保存された形のまま書き出す +- **cli** — 数値の環境変数(`ZANKYO_LIST_PAGE_SIZE`・`ZANKYO_RECORD_MAX_MB` など)の + 小数を切り捨てていた。`0.5` は 0 になり、`MaxKeys: 0` の一覧や、上限 0 バイトの + 読み取りになっていた。正の整数でない値は、既定値を使う。タイムアウトの値が + Node.js のタイマーの上限(2147483647 ms)を超える場合も、既定値を使う。以前は + 1 ms で打ち切られ、AWS API の呼び出しがすべて失敗していた - **cli** — `list --since` で古いページがすべて除外されると、 `ZANKYO_LIST_MAX_PAGES` を超えてバケットを最後まで走査していた。 走査の上限を、除外後の件数ではなくページ数で数える diff --git a/cli/README.md b/cli/README.md index f224ac6..1811250 100644 --- a/cli/README.md +++ b/cli/README.md @@ -36,6 +36,9 @@ AWS API 呼び出しのタイムアウトは env で調整できます | `ZANKYO_LIST_MAX_PAGES` | `50` | レコード探索のページ走査上限 | | `ZANKYO_RECORD_MAX_MB` | `32` | レコード1件の読み取り上限(MiB) | +値は正の整数で指定します。小数・0・負数など、正の整数でない値は既定値を使います。 +タイムアウトの値が Node.js のタイマーの上限(2147483647 ms)を超える場合も、既定値を使います。 + ## exit codes | code | 意味 | diff --git a/cli/src/aws.ts b/cli/src/aws.ts index 41c6cef..932cca4 100644 --- a/cli/src/aws.ts +++ b/cli/src/aws.ts @@ -19,18 +19,23 @@ import type { } from './ports.ts'; /** - * 正の整数の環境変数を読む汎用ヘルパ。未設定・非数値・0 以下は - * fallback に倒す(壊れた設定で CLI を止めない)。 + * 正の整数の環境変数を読む汎用ヘルパ。未設定・非数値・0 以下・小数・ + * `max` 超えは fallback に倒す(壊れた設定で CLI を止めない)。 + * 小数は切り捨てない。0.5 が 0 になり、件数や上限を 0 にしてしまうため。 */ -export const envNum = (name: string, fallback: number): number => { +export const envNum = (name: string, fallback: number, max = Number.MAX_SAFE_INTEGER): number => { const v = process.env[name]; if (v === undefined || v === '') return fallback; const n = Number(v); - return Number.isFinite(n) && n > 0 ? Math.floor(n) : fallback; + return Number.isSafeInteger(n) && n > 0 && n <= max ? n : fallback; }; -/** タイムアウト系 env の読み取り(envNum の別名。用途を名前で示す)。 */ -export const envTimeout = envNum; +/** Node.js のタイマーが扱える上限(ms)。超えると 1ms で発火する。 */ +const TIMER_MAX_MS = 2_147_483_647; + +/** タイムアウト系 env の読み取り。タイマーの上限を超える値も fallback に倒す。 */ +export const envTimeout = (name: string, fallback: number): number => + envNum(name, fallback, TIMER_MAX_MS); /** * 個別の send() 呼び出しへ渡す abort シグナル。 diff --git a/cli/tests/aws.test.ts b/cli/tests/aws.test.ts index 927a56f..051b481 100644 --- a/cli/tests/aws.test.ts +++ b/cli/tests/aws.test.ts @@ -2,7 +2,7 @@ import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { LambdaClient } from '@aws-sdk/client-lambda'; import { S3Client } from '@aws-sdk/client-s3'; -import { envTimeout, makeClients } from '../src/aws.ts'; +import { envNum, envTimeout, makeClients } from '../src/aws.ts'; describe('envTimeout', () => { it('returns fallback when unset or empty', () => { @@ -21,6 +21,28 @@ describe('envTimeout', () => { assert.equal(envTimeout('ZANKYO_TEST_TMO', 100), 100); delete process.env.ZANKYO_TEST_TMO; }); + + it('falls back when the value does not fit a Node.js timer', () => { + // タイマーは 2^31-1 ms を超えると 1ms で発火し、全呼び出しを打ち切る + process.env.ZANKYO_TEST_TMO = '2147483648'; + assert.equal(envTimeout('ZANKYO_TEST_TMO', 100), 100); + process.env.ZANKYO_TEST_TMO = '2147483647'; + assert.equal(envTimeout('ZANKYO_TEST_TMO', 100), 2147483647); + delete process.env.ZANKYO_TEST_TMO; + }); +}); + +describe('envNum', () => { + it('falls back unless the value is a positive integer', () => { + // 切り捨てると 0.5 は 0 になり、1.5 は指定と違う 1 になる + for (const v of ['0.5', '1.5', '0', '-1', 'NaN', 'Infinity']) { + process.env.ZANKYO_TEST_NUM = v; + assert.equal(envNum('ZANKYO_TEST_NUM', 7), 7, v); + } + process.env.ZANKYO_TEST_NUM = '12'; + assert.equal(envNum('ZANKYO_TEST_NUM', 7), 12); + delete process.env.ZANKYO_TEST_NUM; + }); }); describe('makeClients', () => { diff --git a/cli/tests/store.test.ts b/cli/tests/store.test.ts index 9fd4059..5ef8d33 100644 --- a/cli/tests/store.test.ts +++ b/cli/tests/store.test.ts @@ -8,6 +8,15 @@ function obj(key: string, lastModified?: string) { return { Key: key, LastModified: lastModified ? new Date(lastModified) : undefined }; } +/** 差し替えた env を元の値へ戻す。 */ +function restoreEnv(name: string, saved: string | undefined): void { + if (saved === undefined) { + delete process.env[name]; + } else { + process.env[name] = saved; + } +} + const VALID_RECORD = JSON.stringify({ version: '1', functionName: 'fn', @@ -114,6 +123,18 @@ describe('listRecordKeys', () => { assert.ok(warnings.some((w) => w.includes('listing truncated after 2 pages'))); }); + it('uses the default page size when ZANKYO_LIST_PAGE_SIZE is not a positive integer', async (t) => { + const saved = process.env.ZANKYO_LIST_PAGE_SIZE; + t.after(() => restoreEnv('ZANKYO_LIST_PAGE_SIZE', saved)); + // 切り捨てると 0.5 は MaxKeys: 0 になり、S3 から 1 件も取れない + for (const v of ['0.5', '1.5']) { + process.env.ZANKYO_LIST_PAGE_SIZE = v; + const s3 = fakeS3([{ Contents: [] }]); + await listRecordKeys(s3, 'bkt', {}); + assert.equal(s3.listInputs[0]?.MaxKeys, 200, v); + } + }); + it('filters by since', async () => { const s3 = fakeS3([ { @@ -222,6 +243,24 @@ describe('fetchRecord', () => { assert.equal(read, false); }); + it('uses the default size limit when ZANKYO_RECORD_MAX_MB is not a positive integer', async (t) => { + const saved = process.env.ZANKYO_RECORD_MAX_MB; + t.after(() => restoreEnv('ZANKYO_RECORD_MAX_MB', saved)); + // 切り捨てると 0.5 は上限 0 バイトになり、どのレコードも読めない + process.env.ZANKYO_RECORD_MAX_MB = '0.5'; + const s3 = { + ...fakeS3([]), + async getObject() { + return { + ContentLength: VALID_RECORD.length, + Body: { transformToString: async () => VALID_RECORD }, + }; + }, + }; + const rec = await fetchRecord(s3, 'bkt', 'zankyo/fn/2026/09/22/r1.json'); + assert.equal(rec.requestId, 'r1'); + }); + it('throws on schema mismatch', async () => { const s3 = fakeS3([], '{"hello":1}'); await assert.rejects(() => fetchRecord(s3, 'bkt', 'k'), CliError); From 0e6b874ee5a6d679f1f9a59088dbc4a78d3f5955 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 14:47:20 +0900 Subject: [PATCH 69/97] =?UTF-8?q?fix(examples):=20=E3=83=87=E3=83=A2?= =?UTF-8?q?=E3=81=AE=E9=96=A2=E6=95=B0=E5=90=8D=E3=81=A8=E3=83=90=E3=82=B1?= =?UTF-8?q?=E3=83=83=E3=83=88=E5=90=8D=E3=82=92=E3=82=B9=E3=82=BF=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=81=AE=E5=87=BA=E5=8A=9B=E3=81=8B=E3=82=89=E8=AA=AD?= =?UTF-8?q?=E3=81=BF=E3=80=81E2E=20=E6=89=8B=E9=A0=86=E3=81=AE=E3=83=97?= =?UTF-8?q?=E3=83=AC=E3=83=BC=E3=82=B9=E3=83=9B=E3=83=AB=E3=83=80=E3=82=92?= =?UTF-8?q?=E3=81=AA=E3=81=8F=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit invoke と fixture の例が、実在しない ZankyoDemo-ThrowerXXX などの関数名と、 バケット名のプレースホルダを使っていた。関数名は CloudFormation が生成するため、 書かれたとおりには実行できなかった。 DemoStack に関数名とバケット名の CfnOutput を追加し、README は describe-stacks でそれを読んでから実行する。README が読む出力が テンプレートにあることをテストで確かめる。 --- examples/README.md | 24 +++++++++++++++++++----- examples/lib/demo-stack.ts | 9 ++++++++- examples/tests/demo-stack.test.ts | 24 +++++++++++++++++++++++- 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/examples/README.md b/examples/README.md index e7b4cd5..aba5653 100644 --- a/examples/README.md +++ b/examples/README.md @@ -19,23 +19,35 @@ pnpm --filter zankyo-examples run deploy ## 検証の流れ +関数名とバケット名は CloudFormation が生成します。デプロイ後、スタックの出力 +(`ThrowerFunctionName`・`SleeperFunctionName`・`InitErrorFunctionName`・ +`RecordsBucketName`)から読みます。`cdk deploy` の最後にも表示されます。 + ```bash +# 0. スタックの出力から、関数名とバケット名を読む +stack_output() { + aws cloudformation describe-stacks --stack-name ZankyoDemo \ + --query "Stacks[0].Outputs[?OutputKey=='$1'].OutputValue" --output text +} +THROWER=$(stack_output ThrowerFunctionName) +SLEEPER=$(stack_output SleeperFunctionName) +export ZANKYO_BUCKET=$(stack_output RecordsBucketName) + # 1. handler error を直接 invoke(RequestResponse = 同期呼び出し) # AWS CLI v2 は --payload を base64 と解釈するため、JSON のまま渡す指定を付ける -aws lambda invoke --function-name ZankyoDemo-ThrowerXXX \ +aws lambda invoke --function-name "$THROWER" \ --cli-binary-format raw-in-base64-out \ --payload '{"email":"a@b.com","password":"x"}' out.json # 2. timeout ケース(3s でタイムアウトする関数) -aws lambda invoke --function-name ZankyoDemo-SleeperXXX \ +aws lambda invoke --function-name "$SLEEPER" \ --cli-binary-format raw-in-base64-out --payload '{}' out.json -# 3. レコードが S3 にあることを確認 -export ZANKYO_BUCKET=<デプロイで作られたバケット> +# 3. レコードが S3 にあることを確認(ZANKYO_BUCKET は手順 0 で設定済み) zankyo list --since 1h # 4. fixture → sam local で再現(Docker が必要) -zankyo fixture --last --function ZankyoDemo-ThrowerXXX --out event.json +zankyo fixture --last --function "$THROWER" --out event.json pnpm --filter zankyo-examples run synth echo '{"Parameters":{"AWS_LAMBDA_EXEC_WRAPPER":""}}' > env.json sam local invoke -t examples/cdk.out/ZankyoDemo.template.json Thrower \ @@ -50,6 +62,8 @@ zankyo redrive --confirm ## 注意 +- 手順 5・6 の `` には、手順 3 の `zankyo list` が表示する `REQUEST_ID` を入れる。 + 手順 5 の `old`・`new` には、修正前と修正後の版に付けたエイリアスを指定する。 - `InitError` はデプロイ直後の初回起動でしか init error を起こさない。 実行環境が再利用されると再度 init error にならない点に注意 (新しい実行環境の確保は、関数設定の軽微な変更→保存で誘発できる)。 diff --git a/examples/lib/demo-stack.ts b/examples/lib/demo-stack.ts index 840937d..27db321 100644 --- a/examples/lib/demo-stack.ts +++ b/examples/lib/demo-stack.ts @@ -1,5 +1,5 @@ import { join } from 'node:path'; -import { Duration, aws_lambda as lambda, Stack, type StackProps } from 'aws-cdk-lib'; +import { CfnOutput, Duration, aws_lambda as lambda, Stack, type StackProps } from 'aws-cdk-lib'; import type { Construct } from 'constructs'; import { Zankyo } from 'zankyo-cdk'; @@ -48,5 +48,12 @@ export class DemoStack extends Stack { for (const fn of [thrower, sleeper, initError]) { zankyo.attachTo(fn); } + + // 関数名は CloudFormation が生成するため固定できない。README の手順は + // describe-stacks でこの出力を読み、invoke・fixture の対象を決める。 + new CfnOutput(this, 'ThrowerFunctionName', { value: thrower.functionName }); + new CfnOutput(this, 'SleeperFunctionName', { value: sleeper.functionName }); + new CfnOutput(this, 'InitErrorFunctionName', { value: initError.functionName }); + new CfnOutput(this, 'RecordsBucketName', { value: zankyo.bucket.bucketName }); } } diff --git a/examples/tests/demo-stack.test.ts b/examples/tests/demo-stack.test.ts index 69af46e..ba2536b 100644 --- a/examples/tests/demo-stack.test.ts +++ b/examples/tests/demo-stack.test.ts @@ -1,5 +1,5 @@ import assert from 'node:assert/strict'; -import { existsSync } from 'node:fs'; +import { existsSync, readFileSync } from 'node:fs'; import { join } from 'node:path'; import { describe, it } from 'node:test'; import { pathToFileURL } from 'node:url'; @@ -60,6 +60,28 @@ describe('DemoStack', () => { }); }); + it('outputs every name the README reads, so its steps run as written', () => { + const readme = readFileSync(join(import.meta.dirname, '../README.md'), 'utf8'); + // 関数名は CloudFormation が生成する。固定名のプレースホルダは実行できない + assert.doesNotMatch(readme, /ZankyoDemo-\w+XXX/); + const keys = [...readme.matchAll(/stack_output (\w+)/g)].map((m) => m[1]); + assert.deepEqual(keys, ['ThrowerFunctionName', 'SleeperFunctionName', 'RecordsBucketName']); + const idOf = (type: string, prefix: string) => + Object.keys(template.findResources(type)).find((id) => id.startsWith(prefix)); + template.hasOutput('ThrowerFunctionName', { + Value: { Ref: idOf('AWS::Lambda::Function', 'Thrower') }, + }); + template.hasOutput('SleeperFunctionName', { + Value: { Ref: idOf('AWS::Lambda::Function', 'Sleeper') }, + }); + template.hasOutput('InitErrorFunctionName', { + Value: { Ref: idOf('AWS::Lambda::Function', 'InitError') }, + }); + template.hasOutput('RecordsBucketName', { + Value: { Ref: idOf('AWS::S3::Bucket', 'Zankyo') }, + }); + }); + it('ships the handlers as files, which sam local can run', () => { template.allResourcesProperties('AWS::Lambda::Function', { Code: { S3Key: Match.anyValue(), ZipFile: Match.absent() }, From 57461f3340f22e910fcbaafef86e70bcc1b6b93f Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 15:09:37 +0900 Subject: [PATCH 70/97] =?UTF-8?q?docs(cli):=20exit=204=20=E3=81=AE?= =?UTF-8?q?=E8=AA=AC=E6=98=8E=E3=81=AB=E5=BD=A2=E5=BC=8F=E4=B8=8D=E6=AD=A3?= =?UTF-8?q?=E3=83=BB=E3=82=B5=E3=82=A4=E3=82=BA=E8=B6=85=E9=81=8E=E3=83=BB?= =?UTF-8?q?=E5=86=8D=E7=8F=BE=E4=B8=8D=E8=83=BD=E3=82=92=E5=8A=A0=E3=81=88?= =?UTF-8?q?=E3=80=812=20=E3=81=A4=E3=81=AE=20README=20=E3=82=92=E6=8F=83?= =?UTF-8?q?=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit README の exit code は、exit 4 を「レコード不在」とだけ書いていた。実装は store.ts・record.ts・fixture.ts で、空・非 JSON・スキーマ不一致・キーと本文の 関数名の食い違い・ZANKYO_RECORD_MAX_MB 超過・truncated・event 欠落・ replay/diff/redrive での非 JSON イベントにも exit 4 を返す。 cli/README.md の表と同じ内容の表に置き換え、両方にサイズ超過を足した。 errors.ts のコメントにもサイズ超過を加えた。 --- CHANGELOG.md | 3 +++ README.md | 9 ++++++++- cli/README.md | 2 +- cli/src/errors.ts | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 272ba68..41e6835 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **cli** — `list --since` で古いページがすべて除外されると、 `ZANKYO_LIST_MAX_PAGES` を超えてバケットを最後まで走査していた。 走査の上限を、除外後の件数ではなくページ数で数える +- **cli** — README の exit code の説明で、exit 4 を「レコード不在」だけとしていた。 + 形式不正・サイズ超過(`ZANKYO_RECORD_MAX_MB` 超)・再現不能のレコードも exit 4 に + なる。CLI の README からも、サイズ超過が抜けていた - **cli / construct** — npm の tarball に LICENSE を同梱する。以前は MIT の許諾文が配布物に入っていなかった - **layer** — Layer の zip に、LICENSE と `THIRD_PARTY_LICENSES` を同梱する diff --git a/README.md b/README.md index 8164e25..80bc6d3 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,14 @@ zankyo redrive --confirm # 本番再投入(既定 dry- ``` 共通フラグ: `--bucket` / `--region` / `--profile` / `--json`。 -exit code: `0` 成功 / `1` diff差異・関数エラー / `2` 引数ミス / `3` AWS 失敗 / `4` レコード不在。 + +| exit code | 意味 | +|---|---| +| 0 | 成功(diff: 応答一致 / replay・redrive: 関数が成功応答) | +| 1 | diff: 応答に差異 / replay・redrive: 関数がエラーを返した | +| 2 | 引数・設定ミス | +| 3 | AWS API 呼び出しの失敗 | +| 4 | レコードが見つからない / 形式不正(空・JSON でない・スキーマ不一致・キーと本文の関数名の食い違い) / サイズ超過(`ZANKYO_RECORD_MAX_MB`、既定 32 MiB を超える) / 再現不能(truncated・event 欠落・replay/diff/redrive での非 JSON イベント) | ## 設定(環境変数) diff --git a/cli/README.md b/cli/README.md index 1811250..e5b3e1d 100644 --- a/cli/README.md +++ b/cli/README.md @@ -47,4 +47,4 @@ AWS API 呼び出しのタイムアウトは env で調整できます | 1 | diff: 応答に差異 / replay・redrive: 関数がエラーを返した | | 2 | 引数・設定ミス | | 3 | AWS API 呼び出しの失敗 | -| 4 | レコードが見つからない / 形式不正(キーと本文の関数名の食い違いを含む) / 再現不能(truncated・event 欠落・replay/diff/redrive での非 JSON イベント) | +| 4 | レコードが見つからない / 形式不正(空・JSON でない・スキーマ不一致・キーと本文の関数名の食い違い) / サイズ超過(`ZANKYO_RECORD_MAX_MB`、既定 32 MiB を超える) / 再現不能(truncated・event 欠落・replay/diff/redrive での非 JSON イベント) | diff --git a/cli/src/errors.ts b/cli/src/errors.ts index 475dd5e..dd81a1f 100644 --- a/cli/src/errors.ts +++ b/cli/src/errors.ts @@ -1,7 +1,7 @@ /** * CLI の失敗を exit code つきで表すエラー型。 * 利用者の操作ミス(引数不正・設定不足)は 2、AWS 側の失敗は 3、 - * レコードの不在・形式不正・再現できないレコードは 4 とし、 + * レコードの不在・形式不正・サイズ超過・再現できないレコードは 4 とし、 * シェルから原因を分岐できるようにする。 */ export class CliError extends Error { From d576bd52bbbd143d7a3163bed262cce2e36d5e6d Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 15:09:44 +0900 Subject: [PATCH 71/97] =?UTF-8?q?fix(cli):=20S3=20=E3=81=AE=E3=83=AC?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E6=9C=AC=E6=96=87=E3=82=92=E8=AA=AD?= =?UTF-8?q?=E3=82=80=E9=80=94=E4=B8=AD=E3=81=AE=E5=A4=B1=E6=95=97=E3=82=92?= =?UTF-8?q?=20exit=203=20=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getObject の失敗は exit 3 にしていたが、応答後に本文のストリームを読む transformToString の失敗は CliError に包んでいなかった。通信断などで bin.ts の既定の exit 2(引数・設定ミス)になり、README の exit code 表と 食い違っていた。getObject と同じメッセージで exit 3 に写す。 --- CHANGELOG.md | 2 ++ cli/src/store.ts | 6 +++++- cli/tests/store.test.ts | 21 +++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41e6835..5b4300b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **cli** — README の exit code の説明で、exit 4 を「レコード不在」だけとしていた。 形式不正・サイズ超過(`ZANKYO_RECORD_MAX_MB` 超)・再現不能のレコードも exit 4 に なる。CLI の README からも、サイズ超過が抜けていた +- **cli** — S3 からレコードの本文を読む途中で通信が切れると、exit 2(引数・設定ミス)で + 終わっていた。getObject の失敗と同じく、AWS 側の失敗として exit 3 にする - **cli / construct** — npm の tarball に LICENSE を同梱する。以前は MIT の許諾文が配布物に入っていなかった - **layer** — Layer の zip に、LICENSE と `THIRD_PARTY_LICENSES` を同梱する diff --git a/cli/src/store.ts b/cli/src/store.ts index 1520ea2..5ec6999 100644 --- a/cli/src/store.ts +++ b/cli/src/store.ts @@ -107,7 +107,11 @@ export async function fetchRecord( 'zankyo records are expected to be small; refusing to buffer a huge object', ); } - const text = await out.Body?.transformToString('utf-8'); + // 本文は getObject の応答後にストリームで読む。読み取り途中の通信断も + // AWS 側の失敗なので、getObject の失敗と同じ exit 3 にする。 + const text = await out.Body?.transformToString('utf-8').catch((e) => { + throw new CliError(`failed to read s3://${bucket}/${key}: ${errMessage(e)}`, 3); + }); if (text === undefined) { throw new CliError(`empty object: s3://${bucket}/${key}`, 4); } diff --git a/cli/tests/store.test.ts b/cli/tests/store.test.ts index 5ef8d33..d145d07 100644 --- a/cli/tests/store.test.ts +++ b/cli/tests/store.test.ts @@ -220,6 +220,27 @@ describe('fetchRecord', () => { ); }); + it('maps a failure while reading the S3 body to exitCode 3', async () => { + // getObject が応答した後でも、本文のストリームは通信断で失敗しうる + const s3 = { + ...fakeS3([]), + async getObject() { + return { + Body: { + transformToString: async (): Promise => { + throw new Error('socket hang up'); + }, + }, + }; + }, + }; + await assert.rejects( + () => fetchRecord(s3, 'bkt', 'k'), + (e: unknown) => + e instanceof CliError && e.exitCode === 3 && e.message.includes('socket hang up'), + ); + }); + it('refuses an object over ZANKYO_RECORD_MAX_MB with exitCode 4 without reading it', async () => { let read = false; const s3 = { From 070041c38f2828e06e1b24c19084abdd8ff716c1 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 15:09:44 +0900 Subject: [PATCH 72/97] =?UTF-8?q?docs(spec):=20E2E=20=E6=89=8B=E9=A0=86?= =?UTF-8?q?=E3=81=AE=20redrive=20=E3=81=AB=20--confirm=20=E3=82=92?= =?UTF-8?q?=E4=BB=98=E3=81=91=E3=80=81fixture=20=E3=82=92=20--function=20?= =?UTF-8?q?=E3=81=A7=E7=B5=9E=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit redrive は既定で dry-run のため、手順 6 のままでは関数を呼ばず、 成功応答を確かめられなかった。--confirm を付ける。 手順 4 の fixture --last は全関数で最新のレコードを選ぶため、手順 2 の timeout レコードを拾いうる。examples/README.md と同じく --function で絞る。 --- SPEC.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SPEC.md b/SPEC.md index 4367a44..f79cdec 100644 --- a/SPEC.md +++ b/SPEC.md @@ -152,7 +152,7 @@ new Zankyo(this, 'Zankyo', { bucket?, kmsKey?, scrubFields? }) 1. `examples/` のデモ関数(`zankyo demo deploy` 相当の CDK app)をデプロイ。 2. 失敗するイベント・timeout するイベントを直接 invoke(RequestResponse)で発火。 3. `s3 ls zankyo/...` にレコードがあり、`event`/`errorContext`/`scrubReport` が揃っていること。PII フィールドがマスクされていること。 -4. `zankyo fixture --last` で `sam local invoke -e` が通り、同じエラーが再現すること。 +4. `zankyo fixture --last --function <失敗する関数>` で `sam local invoke -e` が通り、同じエラーが再現すること(`--last` は全関数で最新のレコードを選ぶため、`--function` を付けないと timeout レコードを拾いうる)。 5. 関数を修正して新バージョンを発行 → `zankyo diff --alias old --alias new` で差異が出ること。 -6. `zankyo redrive ` で修復後の本番関数が成功応答を返すこと。 +6. `zankyo redrive --confirm` で修復後の本番関数が成功応答を返すこと(`--confirm` を付けないと dry-run で、関数を呼ばない)。 7. timeout ケースで SHUTDOWN フラッシュによるレコードが残ること(取りこぼしがあれば頻度を計測・文書化)。 From d04040a0ee4b79e86dcd4675a781ae6a5b575b87 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 15:09:52 +0900 Subject: [PATCH 73/97] =?UTF-8?q?docs(proxy):=20=E5=85=A8=E7=B5=8C?= =?UTF-8?q?=E8=B7=AF=E3=81=AE=E3=83=9C=E3=83=87=E3=82=A3=E3=82=92=E4=B8=8A?= =?UTF-8?q?=E9=99=90=E3=81=BE=E3=81=A7=E8=AA=AD=E3=82=93=E3=81=A7=E3=81=8B?= =?UTF-8?q?=E3=82=89=E4=B8=AD=E7=B6=99=E3=81=99=E3=82=8B=E5=8B=95=E4=BD=9C?= =?UTF-8?q?=E3=82=92=E3=80=81=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=A8?= =?UTF-8?q?=20README=20=E3=81=AB=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit proxy.rs のコメントと README は、ボディを読むのは /next・/response・ /error・/init/error だけで、ほかの経路は触らず中継すると書いていた。 実際の handle() は経路判定の前に、全リクエストのボディを ZANKYO_MAX_BODY_KB まで読み、超えたら中継せず 413 を返す。 動作ではなく説明を直す。Runtime API で記録しない経路は /restore/next (ボディなし)と /restore/error(エラー情報)で、子プロセスから届く Extensions API・Telemetry API も小さな JSON しか送らない。Lambda が 受け付ける最大のボディは応答(同期 6 MB、ストリーミング 200 MB)で、 これは記録する /response 経路に届く。既定の 8192 KiB を超える正当な ボディは、記録しない経路には来ない。 記録しない経路(/restore/error)でも 413 になることを、既存の 上限超過テストに加えて固定する。 --- CHANGELOG.md | 4 ++++ README.md | 6 ++++-- proxy/src/proxy.rs | 10 +++++++--- proxy/tests/proxy_it.rs | 16 ++++++++-------- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b4300b..de8c3ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — init 時の回収は、Runtime API の中継を始めた後に `.inflight` ステージを列挙していた。初回の `/next` が先に届くと、実行中の呼び出しを timeout として S3 に記録しうる。回収する一覧は、中継を始める前に確定する +- **proxy** — README とコードの説明では、ボディを読むのは `/next`・`/response`・ + `/error`・`/init/error` だけで、ほかの経路はそのまま中継するとしていた。実際は + 経路を問わず、リクエストボディを `ZANKYO_MAX_BODY_KB` まで読んでから中継し、 + 超えたら中継せずに 413 を返す。説明を実際の動作に合わせた - **cli** — replay・diff・redrive は、非 JSON イベント(`eventIsRawText` / `eventIsBase64`)のレコードを、invoke の前に exit 4 で止める。Lambda の Invoke API は JSON でない本文を `InvalidRequestContentException` で拒否する。 diff --git a/README.md b/README.md index 80bc6d3..b64ec99 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,10 @@ Lambda Service ──Runtime API──▶ zankyo proxy (Rust, Layer) ──▶ - Layer 内の**単一 Rust バイナリ**が Runtime API proxy と external extension agent を兼務(起動方法でモードが分かれる)。 -- **成功呼び出しは記録しません**。S3 への PUT も spill もしません。ボディを読むのは - `/next`・`/response`・`/error`・`/init/error` だけで、ほかの経路はそのまま中継します。 +- **成功呼び出しは記録しません**。S3 への PUT も spill もしません。ボディを解釈するのは + `/next`・`/response`・`/error`・`/init/error` だけで、ほかの経路は記録せずに中継します。 + ランタイムが送るリクエストボディは、経路を問わず `ZANKYO_MAX_BODY_KB` まで読んでから + 中継します。上限を超えたら中継せず、413 を返します。 `/next` のイベントは timeout 捕捉のため `/tmp` に置き、呼び出しが完了したら消します (下の「timeout 捕捉」)。 - 失敗の定義: `/error` 呼出 / `/init/error` / `/response` 内の `errorType` diff --git a/proxy/src/proxy.rs b/proxy/src/proxy.rs index 092e4ac..8e8597e 100644 --- a/proxy/src/proxy.rs +++ b/proxy/src/proxy.rs @@ -1,8 +1,11 @@ //! Runtime API プロキシ。 //! //! 子プロセス(実ランタイム)から見ると zankyo が Runtime API 本体に -//! 見える。ボディを読んで解釈するのは `/next`・`/response`・`/error`・ -//! `/init/error` だけで、それ以外のパスは一切触らず中継する。 +//! 見える。リクエストボディは経路を問わず `ZANKYO_MAX_BODY_KB` まで読んで +//! から転送し、超えたら上流へ中継せず 413 を返す。ボディを解釈して記録に +//! 使うのは `/next`・`/response`・`/error`・`/init/error` だけで、それ以外の +//! パス(`/restore/*` や、子プロセスから届く Extensions API・Telemetry API +//! など)は記録せず中継する。 //! `/next` のイベントは timeout 捕捉のため `/tmp` にステージし、完了時に消す。 //! 成功呼び出しでは spill も S3 への PUT もしない。 //! 各ルートの処理は `handlers.rs`、上流転送は `upstream.rs`。 @@ -171,7 +174,8 @@ async fn handle(req: Request, st: &ProxyState) -> Response .await } _ => { - // 対象外パス(/restore/next 等)は中継のみ + // 対象外パス(/restore/next 等)は記録せず中継だけする。 + // ボディは上で上限付きで読み済み(超過は 413 で返している) forward_or_502( st, &parts.method, diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index a8305d7..1dfcd19 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -1165,16 +1165,16 @@ async fn oversized_body_is_rejected_without_forwarding() { let (recorder, _spill) = recorder_to(&s3_addr); let proxy = spawn_proxy(&api_addr, inflight, recorder).await; - // MAX_BODY_BYTES (8MiB) を超えるボディは上流へ転送せず 413 を返す + // MAX_BODY_BYTES (8MiB) を超えるボディは上流へ転送せず 413 を返す。 + // 記録しない経路(/restore/error 等)も、経路判定の前に同じ上限で読む let big = Bytes::from(vec![b'x'; 9 * 1024 * 1024]); - let (status, _) = call_raw( - &proxy, - Method::POST, + for path in [ "/2018-06-01/runtime/invocation/req-x/response", - big, - ) - .await; - assert_eq!(status, StatusCode::PAYLOAD_TOO_LARGE); + "/2018-06-01/runtime/restore/error", + ] { + let (status, _) = call_raw(&proxy, Method::POST, path, big.clone()).await; + assert_eq!(status, StatusCode::PAYLOAD_TOO_LARGE, "{path}"); + } tokio::time::sleep(Duration::from_millis(200)).await; assert!(captured(&api_hits).is_empty()); } From 61c743906adaa443f2dd4f32bdc6fd4b752a1ba3 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 15:09:52 +0900 Subject: [PATCH 74/97] =?UTF-8?q?docs(proxy):=20=E9=9D=9E=20JSON=20?= =?UTF-8?q?=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E3=81=AE=20CLI=20=E3=81=A7?= =?UTF-8?q?=E3=81=AE=E6=89=B1=E3=81=84=E3=82=92=E3=80=81record.rs=20?= =?UTF-8?q?=E3=81=AE=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=A7=E5=AE=9F?= =?UTF-8?q?=E8=A3=85=E3=81=AB=E5=90=88=E3=82=8F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit eventIsRawText・eventIsBase64 のコメントは、CLI が replay/redrive で原文を 送る・base64 をデコードして再送すると書いていた。実際の CLI は、fixture では 保存した形のまま書き出し、replay/diff/redrive では invoke せず exit 4 で止める。 --- proxy/src/record.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/proxy/src/record.rs b/proxy/src/record.rs index dcc961f..ec503b6 100644 --- a/proxy/src/record.rs +++ b/proxy/src/record.rs @@ -72,12 +72,13 @@ pub struct FailureRecord { #[serde(rename = "errorContext")] pub error_context: ErrorContext, /// イベントが非 JSON ボディの生テキストで保存されている場合 true。 - /// CLI は replay/redrive 時に JSON 再エンコードせず原文を送る。 + /// CLI の fixture は原文のまま書き出す。replay/diff/redrive は + /// Invoke API が JSON しか受け付けないため、invoke せず exit 4 で止める。 #[serde(rename = "eventIsRawText", skip_serializing_if = "is_false")] pub event_is_raw_text: bool, /// イベントが UTF-8 でないバイナリの場合 true。 - /// `event` は base64 文字列として保持され、CLI は replay 時に - /// デコードして元のバイト列を再送する。 + /// `event` は base64 文字列として保持され、CLI の fixture はその文字列を + /// そのまま書き出す。replay/diff/redrive は生テキストと同じく exit 4 で止める。 #[serde(rename = "eventIsBase64", skip_serializing_if = "is_false")] pub event_is_base64: bool, #[serde(rename = "scrubReport")] From 80d2a8d33e9dde306aa5ffdbf47d00d8778efbc2 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 15:39:23 +0900 Subject: [PATCH 75/97] =?UTF-8?q?docs(spec):=20SHUTDOWN=20=E3=81=AE?= =?UTF-8?q?=E8=A8=98=E9=8C=B2=E3=82=92=20reason=20=E3=82=92=E5=95=8F?= =?UTF-8?q?=E3=82=8F=E3=81=AA=E3=81=84=E5=AE=9F=E8=A3=85=E3=81=AB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=81=A6=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SPEC.md の決定事項表は、SHUTDOWN の reason=timeout のときだけ in-flight イベントをフラッシュすると読めた。同じ SPEC の失敗の定義(41 行)と README、extension.rs の実装は、reason(timeout・failure・spindown)を 問わずに記録する。表をこの動作に合わせた。 同じ食い違いが、inflight.rs のモジュールコメント(SHUTDOWN(timeout)時)と build-layer.mts のコメント(SHUTDOWN(timeout)イベント)にもあったので直した。 動作は変えていない。 --- SPEC.md | 2 +- proxy/src/inflight.rs | 2 +- scripts/build-layer.mts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SPEC.md b/SPEC.md index f79cdec..76d635c 100644 --- a/SPEC.md +++ b/SPEC.md @@ -16,7 +16,7 @@ sync invoke で失敗した Lambda 呼び出しの「イベント+エラー応 |---|---| | 名称 | **lambda-zankyo**(残響) | | プロキシ実装 | **Rust 単一バイナリ**(musl 静的リンクで実行時の共有ライブラリ依存なし、x86_64/arm64) | -| timeout 捕捉 | **Extension API の SHUTDOWN イベント**(reason=timeout)で in-flight イベントをフラッシュ | +| timeout 捕捉 | **Extension API の SHUTDOWN イベント**で in-flight イベントをフラッシュ(reason を問わない。timeout/failure/spindown のどれでも記録) | | PII scrub | **ハイブリッド**(フィールド名 denylist+パターン検出)、既定 ON | | 配布 | **SAR(Serverless Application Repository)公開** | | CLI スコープ | **fixture 生成+差分リプレイ+本番再実行(redrive)** まで MVP | diff --git a/proxy/src/inflight.rs b/proxy/src/inflight.rs index a54cea3..2d682c2 100644 --- a/proxy/src/inflight.rs +++ b/proxy/src/inflight.rs @@ -1,7 +1,7 @@ //! in-flight 呼び出しの保持。 //! //! `/next` でイベントを観測してから `/response`・`/error` で確定するまでの間、 -//! イベントをメモリに置く。SHUTDOWN(timeout)時には残っているものを +//! イベントをメモリに置く。SHUTDOWN 時には reason を問わず、残っているものを //! 「応答が返らなかった失敗」としてフラッシュする。 use serde_json::Value; diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index c11fe55..dff510d 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -196,7 +196,7 @@ for (const arch of arches) { cpSync(join(ROOT, 'target', target, 'release', 'zankyo'), join(stage, 'bin/zankyo')); cpSync(join(ROOT, 'proxy/layer/zankyo-wrapper'), join(stage, 'zankyo-wrapper')); // /opt/extensions/zankyo: platform が external extension として - // 別プロセス起動し、SHUTDOWN(timeout)イベントを届ける。 + // 別プロセス起動し、SHUTDOWN イベント(reason は問わない)を届ける。 cpSync(join(ROOT, 'proxy/layer/extensions/zankyo'), join(stage, 'extensions/zankyo')); cpSync(join(ROOT, 'LICENSE'), join(stage, NOTICE_DIR, 'LICENSE')); writeFileSync(join(stage, NOTICE_DIR, 'THIRD_PARTY_LICENSES'), thirdParty); From 79f00255a49e90458b54398dd72ff17627d4d9ef Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 15:52:22 +0900 Subject: [PATCH 76/97] =?UTF-8?q?fix(layer):=20Rust=20=E6=A8=99=E6=BA=96?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=81=A8=20musl?= =?UTF-8?q?=20libc=20=E3=81=AE=E8=A1=A8=E7=A4=BA=E3=82=92=20Layer=20?= =?UTF-8?q?=E3=81=AE=20THIRD=5FPARTY=5FLICENSES=20=E3=81=AB=E5=8A=A0?= =?UTF-8?q?=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit THIRD_PARTY_LICENSES は、Cargo の normal 依存の crate だけを載せていた。 musl ターゲットのバイナリには、rustc が self-contained として持つ部品も 静的リンクされる。Rust 標準ライブラリ(compiler_builtins を含む)、 musl libc(libc.a と crt*.o)、LLVM の libunwind.a と crtbegin/crtend である。 これらの許諾文と著作権表示が、両アーキテクチャの zip に入っていなかった。 - scripts/licenses/ に、上流の原文をそのまま写した。版と写した元は次のとおり - rust-lang/rust 1.98.1(rust-toolchain.toml の版): COPYRIGHT・LICENSE-APACHE・ LICENSE-MIT・LICENSES/Unicode-3.0.txt(core の Unicode データ)・ library/compiler-builtins/LICENSE.txt - musl v1.2.5 の COPYRIGHT(Rust 1.98.1 の musl-toolchain.sh の MUSL_VER) - rust-lang/llvm-project 52ed14f(Rust 1.98.1 のサブモジュール、LLVM 22.1.8)の libunwind/LICENSE.TXT と compiler-rt/LICENSE.TXT - build-layer.mts の TOOLCHAIN_NOTICES が、写した元の URL を見出しにして、 crate と同じ重複排除で THIRD_PARTY_LICENSES に足す。zip のエントリ・mode・ mtime の扱いは変えていない - rustc の版が 1.98.1 でなければ、ビルドの前に梱包を止める。Rust を上げたときに、 古い版の表示のまま梱包しないため - CI の "check the layer zips" は、両 arch の THIRD_PARTY_LICENSES が、これらの 原文をそのまま含むことを確かめる。scripts/licenses/ から原文が消えても落ちる - README の License 節と CHANGELOG の [Unreleased] に書いた --- .github/workflows/ci.yml | 22 ++ CHANGELOG.md | 4 +- README.md | 11 +- scripts/build-layer.mts | 112 ++++++- .../llvm-22.1.8/compiler-rt/LICENSE.TXT | 311 ++++++++++++++++++ .../llvm-22.1.8/libunwind/LICENSE.TXT | 311 ++++++++++++++++++ scripts/licenses/musl-1.2.5/COPYRIGHT | 193 +++++++++++ scripts/licenses/rust-1.98.1/COPYRIGHT | 34 ++ scripts/licenses/rust-1.98.1/LICENSE-APACHE | 176 ++++++++++ scripts/licenses/rust-1.98.1/LICENSE-MIT | 25 ++ .../rust-1.98.1/LICENSES/Unicode-3.0.txt | 39 +++ .../library/compiler-builtins/LICENSE.txt | 275 ++++++++++++++++ 12 files changed, 1500 insertions(+), 13 deletions(-) create mode 100644 scripts/licenses/llvm-22.1.8/compiler-rt/LICENSE.TXT create mode 100644 scripts/licenses/llvm-22.1.8/libunwind/LICENSE.TXT create mode 100644 scripts/licenses/musl-1.2.5/COPYRIGHT create mode 100644 scripts/licenses/rust-1.98.1/COPYRIGHT create mode 100644 scripts/licenses/rust-1.98.1/LICENSE-APACHE create mode 100644 scripts/licenses/rust-1.98.1/LICENSE-MIT create mode 100644 scripts/licenses/rust-1.98.1/LICENSES/Unicode-3.0.txt create mode 100644 scripts/licenses/rust-1.98.1/library/compiler-builtins/LICENSE.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d61675..49219f7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,21 +133,43 @@ jobs: SKIP_BUILD: '1' run: node scripts/build-layer.mts # エントリの並びと mode(実行ファイルは 755、ライセンス表示は 644)と CRC を確かめる。 + # THIRD_PARTY_LICENSES は、crate でない静的リンクの部品(Rust 標準ライブラリ・musl libc・ + # LLVM の libunwind と crtbegin/crtend)の表示も、scripts/licenses/ の原文のまま含むこと。 # bin/zankyo は arch どおりの ELF で、動的リンカ(PT_INTERP)を要求しない静的リンクであること - name: check the layer zips run: | + shopt -s failglob expected=$(printf '%s\n' \ '-rwxr-xr-x bin/zankyo' \ '-rwxr-xr-x extensions/zankyo' \ '-rwxr-xr-x zankyo-wrapper' \ '-rw-r--r-- share/licenses/zankyo/LICENSE' \ '-rw-r--r-- share/licenses/zankyo/THIRD_PARTY_LICENSES') + notices=( + scripts/licenses/rust-*/COPYRIGHT + scripts/licenses/rust-*/LICENSE-APACHE + scripts/licenses/rust-*/LICENSE-MIT + scripts/licenses/rust-*/LICENSES/Unicode-3.0.txt + scripts/licenses/rust-*/library/compiler-builtins/LICENSE.txt + scripts/licenses/musl-*/COPYRIGHT + scripts/licenses/llvm-*/libunwind/LICENSE.TXT + scripts/licenses/llvm-*/compiler-rt/LICENSE.TXT) for pair in x86_64:X86-64 aarch64:AArch64; do arch=${pair%%:*} machine=${pair#*:} z=dist/layer/zankyo-$arch.zip unzip -tq "$z" diff <(echo "$expected") <(unzip -Z "$z" | awk '$3 == "unx" { print $1, $NF }') unzip -q "$z" -d "$RUNNER_TEMP/layer-$arch" + node -e ' + const { readFileSync } = require("node:fs"); + const [file, ...notices] = process.argv.slice(1); + const text = readFileSync(file, "utf8"); + const missing = notices.filter((n) => !text.includes(readFileSync(n, "utf8").trimEnd())); + if (missing.length > 0) { + console.error(file + " lacks:\n " + missing.join("\n ")); + process.exit(1); + } + ' "$RUNNER_TEMP/layer-$arch/share/licenses/zankyo/THIRD_PARTY_LICENSES" "${notices[@]}" bin=$RUNNER_TEMP/layer-$arch/bin/zankyo if ! readelf -h "$bin" | grep -q "Machine: .*$machine\$"; then echo "$z: bin/zankyo is not $machine" >&2 diff --git a/CHANGELOG.md b/CHANGELOG.md index de8c3ef..9d3bdcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,7 +83,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **layer** — Layer の zip に、LICENSE と `THIRD_PARTY_LICENSES` を同梱する (`/opt/share/licenses/zankyo/`)。以前は、MIT の許諾文も、バイナリに静的リンク した crate(tokio・hyper・aws-lc-rs・ring など)のライセンスと著作権表示も - 入っていなかった + 入っていなかった。`THIRD_PARTY_LICENSES` は、crate のほかに、musl ターゲットで + 静的リンクされる Rust 標準ライブラリ・musl libc・LLVM の libunwind と + crtbegin/crtend の表示も含む - **cli / construct** — pack と publish の前(`prepack`)に build を実行する。 以前は dist が無いまま、または古いまま公開されうる手順だった - **cli / construct** — package.json に repository・homepage・bugs・ diff --git a/README.md b/README.md index b64ec99..a64dca5 100644 --- a/README.md +++ b/README.md @@ -331,4 +331,13 @@ MIT Layer の zip は `share/licenses/zankyo/`(Lambda 上では `/opt/share/licenses/zankyo/`)に、 この LICENSE と `THIRD_PARTY_LICENSES` を含みます。`THIRD_PARTY_LICENSES` は、 -バイナリに入る Rust crate のライセンスと著作権表示の原文です。 +バイナリに静的リンクされるもののライセンスと著作権表示の原文です。 +対象は、Rust の crate と、Rust の musl ターゲットがリンクするツールチェーンの部品です。 +部品は、Rust 標準ライブラリ(compiler_builtins を含む)・musl libc・ +LLVM の libunwind と crtbegin/crtend です。 + +部品の原文は `scripts/licenses/` にあります。写した元の URL と版は、 +`scripts/build-layer.mts` の `TOOLCHAIN_NOTICES` にあります。 +版は、`rust-toolchain.toml` の Rust 1.98.1 と、その Rust が musl ターゲットに同梱する +musl 1.2.5・LLVM 22.1.8 です。Rust を上げるときは、部品の原文も更新します。 +rustc の版が違うと、`scripts/build-layer.mts` は梱包を止めます。 diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index dff510d..58a7b5d 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -6,7 +6,7 @@ //! `BUILDER="cargo zigbuild"` のように `cargo build` 相当の //! コマンド行を差し替えられる。 //! `SKIP_BUILD=1` でビルドを省き target/ 済みのバイナリだけ梱包する。 -//! 梱包でも THIRD_PARTY_LICENSES の生成に `cargo metadata` を使う。 +//! 梱包でも THIRD_PARTY_LICENSES の生成に `cargo metadata` と `rustc --version` を使う。 //! Node 24+ は型注釈を strip してそのまま実行する(ビルド不要)。 import { execFileSync, spawnSync } from 'node:child_process'; @@ -66,12 +66,78 @@ const LICENSE_FALLBACK: Record = { vsimd: 'scripts/licenses/nugine-simd-LICENSE', }; +/// crate のほかに、musl ターゲットのバイナリへ静的リンクされるツールチェーンの部品。 +/// Rust 標準ライブラリと、その Rust が *-unknown-linux-musl に self-contained として +/// 同梱する musl libc(libc.a と crt*.o)と、LLVM の libunwind.a・crtbegin/crtend。 +/// cross と cargo build の経路(CI とリリースの手順)では、rustc がこれらをリンクする。 +/// cargo zigbuild は crt と libc を zig が同梱する musl に置き換えるため、版が合わないことがある。 +/// 本文は source の版から scripts/licenses/ に写した。musl と LLVM の版は、Rust の +/// src/ci/docker/scripts/musl-toolchain.sh と src/llvm-project(サブモジュール)が示す。 +/// rustc の版が RUST_VERSION と違えば梱包を止める。Rust を上げたら、ここと本文を見直す。 +const RUST_VERSION = '1.98.1'; +const MUSL_VERSION = '1.2.5'; +const LLVM_VERSION = '22.1.8'; +const LLVM_COMMIT = '52ed14fcd56afc30f9cccd8ca8ce237c2eef7e04'; +interface Notice { + /// scripts/licenses/ からの相対パス + path: string; + /// 写した元(版を固定した URL) + source: string; +} +const rust = (path: string): Notice => ({ + path: `rust-${RUST_VERSION}/${path}`, + source: `https://github.com/rust-lang/rust/blob/${RUST_VERSION}/${path}`, +}); +const llvm = (path: string): Notice => ({ + path: `llvm-${LLVM_VERSION}/${path}`, + source: `https://github.com/rust-lang/llvm-project/blob/${LLVM_COMMIT}/${path}`, +}); +const TOOLCHAIN_NOTICES: { component: string; license: string; notices: Notice[] }[] = [ + { + component: `Rust standard library ${RUST_VERSION}`, + // Unicode-3.0 は core の Unicode データ(library/core/src/unicode/unicode_data.rs) + license: '(MIT OR Apache-2.0) AND Unicode-3.0', + notices: [ + rust('COPYRIGHT'), + rust('LICENSE-APACHE'), + rust('LICENSE-MIT'), + rust('LICENSES/Unicode-3.0.txt'), + ], + }, + { + component: `Rust ${RUST_VERSION} compiler_builtins`, + license: 'MIT AND Apache-2.0 WITH LLVM-exception', + notices: [rust('library/compiler-builtins/LICENSE.txt')], + }, + { + component: `musl libc ${MUSL_VERSION}`, + license: 'MIT', + notices: [ + { + path: `musl-${MUSL_VERSION}/COPYRIGHT`, + source: `https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT?h=v${MUSL_VERSION}`, + }, + ], + }, + { + component: `LLVM ${LLVM_VERSION} libunwind`, + license: 'Apache-2.0 WITH LLVM-exception', + notices: [llvm('libunwind/LICENSE.TXT')], + }, + { + component: `LLVM ${LLVM_VERSION} compiler-rt crtbegin/crtend`, + license: 'Apache-2.0 WITH LLVM-exception', + notices: [llvm('compiler-rt/LICENSE.TXT')], + }, +]; + const byCodePoint = (a: string, b: string) => (a < b ? -1 : a > b ? 1 : 0); /** - * バイナリに入る crate の、ライセンスと著作権表示の原文を 1 つのテキストにまとめる。 - * 対象は zankyo から normal 依存でたどれる crate(build-/dev-dependencies は配布物に入らない)。 - * 同じ本文は 1 回だけ載せ、見出しにその本文を持つ crate をすべて並べる。 + * バイナリに入る crate とツールチェーンの部品の、ライセンスと著作権表示の原文を + * 1 つのテキストにまとめる。crate は zankyo から normal 依存でたどれるもの + * (build-/dev-dependencies は配布物に入らない)。部品は TOOLCHAIN_NOTICES。 + * 同じ本文は 1 回だけ載せ、見出しにその本文を持つものをすべて並べる。 */ function thirdPartyLicenses(target: string): string { const meta: CargoMetadata = JSON.parse( @@ -101,6 +167,12 @@ function thirdPartyLicenses(target: string): string { .sort((a, b) => byCodePoint(a.name, b.name) || byCodePoint(a.version, b.version)); const headingsByText = new Map(); + const add = (heading: string, path: string) => { + const text = readFileSync(path, 'utf8').replace(/\r\n?/g, '\n').trimEnd(); + const headings = headingsByText.get(text); + if (headings) headings.push(heading); + else headingsByText.set(text, [heading]); + }; for (const c of crates) { const dir = dirname(c.manifest_path); const files = new Set( @@ -118,11 +190,12 @@ function thirdPartyLicenses(target: string): string { sources.push({ label: `LICENSE from ${c.repository}`, path: join(ROOT, fallback) }); } for (const { label, path } of sources) { - const text = readFileSync(path, 'utf8').replace(/\r\n?/g, '\n').trimEnd(); - const heading = `${c.name} ${c.version}: ${label}`; - const headings = headingsByText.get(text); - if (headings) headings.push(heading); - else headingsByText.set(text, [heading]); + add(`${c.name} ${c.version}: ${label}`, path); + } + } + for (const { component, notices } of TOOLCHAIN_NOTICES) { + for (const { path, source } of notices) { + add(`${component}: ${source}`, join(ROOT, 'scripts/licenses', path)); } } @@ -131,10 +204,19 @@ function thirdPartyLicenses(target: string): string { `Third-party licenses for zankyo ${root.version} (${target})`, '', 'The zankyo binary in this layer is built from the Rust crates listed below.', - 'This file reproduces the license and notice files that each crate ships.', - 'A text shared by several crates appears once, under all of their names.', + `It also statically links the parts of the Rust ${RUST_VERSION} toolchain listed after`, + 'them: the Rust standard library, and the musl libc and LLVM runtime code that', + 'Rust ships for the musl targets.', + 'This file reproduces the license and notice files of each of them.', + 'A text shared by several of them appears once, under all of their names.', + 'Per-file notices of the Rust standard library are in COPYRIGHT-library.html,', + 'which ships in share/doc/rust/ of the Rust toolchain.', '', + 'Rust crates:', ...crates.map((c) => ` ${c.name} ${c.version} (${c.license ?? c.license_file})`), + '', + 'Rust toolchain parts:', + ...TOOLCHAIN_NOTICES.map((t) => ` ${t.component} (${t.license})`), ...[...headingsByText].flatMap(([text, headings]) => ['', rule, ...headings, rule, '', text]), '', ].join('\n'); @@ -145,6 +227,14 @@ if (arches.length === 0) { console.error('ARCHES is empty; nothing to build'); process.exit(1); } +// TOOLCHAIN_NOTICES は RUST_VERSION の Rust の部品を表示する。rustc の版が違えば、ビルドの前に止める。 +const rustc = execFileSync('rustc', ['--version'], { cwd: ROOT, encoding: 'utf8' }).trim(); +if (rustc.split(' ')[1] !== RUST_VERSION) { + console.error( + `${rustc} is not Rust ${RUST_VERSION}; update TOOLCHAIN_NOTICES and scripts/licenses/`, + ); + process.exit(1); +} const outDirEnv = process.env.OUT_DIR ?? 'dist/layer'; const outDir = isAbsolute(outDirEnv) ? outDirEnv : resolve(ROOT, outDirEnv); mkdirSync(outDir, { recursive: true }); diff --git a/scripts/licenses/llvm-22.1.8/compiler-rt/LICENSE.TXT b/scripts/licenses/llvm-22.1.8/compiler-rt/LICENSE.TXT new file mode 100644 index 0000000..5a79a1b --- /dev/null +++ b/scripts/licenses/llvm-22.1.8/compiler-rt/LICENSE.TXT @@ -0,0 +1,311 @@ +============================================================================== +The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: +============================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restrictions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. + +============================================================================== +Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy): +============================================================================== + +The compiler_rt library is dual licensed under both the University of Illinois +"BSD-Like" license and the MIT license. As a user of this code you may choose +to use it under either license. As a contributor, you agree to allow your code +to be used under both. + +Full text of the relevant licenses is included below. + +============================================================================== + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2019 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== + +Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/scripts/licenses/llvm-22.1.8/libunwind/LICENSE.TXT b/scripts/licenses/llvm-22.1.8/libunwind/LICENSE.TXT new file mode 100644 index 0000000..1e31206 --- /dev/null +++ b/scripts/licenses/llvm-22.1.8/libunwind/LICENSE.TXT @@ -0,0 +1,311 @@ +============================================================================== +The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: +============================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restrictions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. + +============================================================================== +Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy): +============================================================================== + +The libunwind library is dual licensed under both the University of Illinois +"BSD-Like" license and the MIT license. As a user of this code you may choose +to use it under either license. As a contributor, you agree to allow your code +to be used under both. + +Full text of the relevant licenses is included below. + +============================================================================== + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2019 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== + +Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/scripts/licenses/musl-1.2.5/COPYRIGHT b/scripts/licenses/musl-1.2.5/COPYRIGHT new file mode 100644 index 0000000..c1628e9 --- /dev/null +++ b/scripts/licenses/musl-1.2.5/COPYRIGHT @@ -0,0 +1,193 @@ +musl as a whole is licensed under the following standard MIT license: + +---------------------------------------------------------------------- +Copyright © 2005-2020 Rich Felker, et al. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +---------------------------------------------------------------------- + +Authors/contributors include: + +A. Wilcox +Ada Worcester +Alex Dowad +Alex Suykov +Alexander Monakov +Andre McCurdy +Andrew Kelley +Anthony G. Basile +Aric Belsito +Arvid Picciani +Bartosz Brachaczek +Benjamin Peterson +Bobby Bingham +Boris Brezillon +Brent Cook +Chris Spiegel +Clément Vasseur +Daniel Micay +Daniel Sabogal +Daurnimator +David Carlier +David Edelsohn +Denys Vlasenko +Dmitry Ivanov +Dmitry V. Levin +Drew DeVault +Emil Renner Berthing +Fangrui Song +Felix Fietkau +Felix Janda +Gianluca Anzolin +Hauke Mehrtens +He X +Hiltjo Posthuma +Isaac Dunham +Jaydeep Patil +Jens Gustedt +Jeremy Huntwork +Jo-Philipp Wich +Joakim Sindholt +John Spencer +Julien Ramseier +Justin Cormack +Kaarle Ritvanen +Khem Raj +Kylie McClain +Leah Neukirchen +Luca Barbato +Luka Perkov +M Farkas-Dyck (Strake) +Mahesh Bodapati +Markus Wichmann +Masanori Ogino +Michael Clark +Michael Forney +Mikhail Kremnyov +Natanael Copa +Nicholas J. Kain +orc +Pascal Cuoq +Patrick Oppenlander +Petr Hosek +Petr Skocik +Pierre Carrier +Reini Urban +Rich Felker +Richard Pennington +Ryan Fairfax +Samuel Holland +Segev Finer +Shiz +sin +Solar Designer +Stefan Kristiansson +Stefan O'Rear +Szabolcs Nagy +Timo Teräs +Trutz Behn +Valentin Ochs +Will Dietz +William Haddon +William Pitcock + +Portions of this software are derived from third-party works licensed +under terms compatible with the above MIT license: + +The TRE regular expression implementation (src/regex/reg* and +src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed +under a 2-clause BSD license (license text in the source files). The +included version has been heavily modified by Rich Felker in 2012, in +the interests of size, simplicity, and namespace cleanliness. + +Much of the math library code (src/math/* and src/complex/*) is +Copyright © 1993,2004 Sun Microsystems or +Copyright © 2003-2011 David Schultz or +Copyright © 2003-2009 Steven G. Kargl or +Copyright © 2003-2009 Bruce D. Evans or +Copyright © 2008 Stephen L. Moshier or +Copyright © 2017-2018 Arm Limited +and labelled as such in comments in the individual source files. All +have been licensed under extremely permissive terms. + +The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008 +The Android Open Source Project and is licensed under a two-clause BSD +license. It was taken from Bionic libc, used on Android. + +The AArch64 memcpy and memset code (src/string/aarch64/*) are +Copyright © 1999-2019, Arm Limited. + +The implementation of DES for crypt (src/crypt/crypt_des.c) is +Copyright © 1994 David Burren. It is licensed under a BSD license. + +The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was +originally written by Solar Designer and placed into the public +domain. The code also comes with a fallback permissive license for use +in jurisdictions that may not recognize the public domain. + +The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011 +Valentin Ochs and is licensed under an MIT-style license. + +The x86_64 port was written by Nicholas J. Kain and is licensed under +the standard MIT terms. + +The mips and microblaze ports were originally written by Richard +Pennington for use in the ellcc project. The original code was adapted +by Rich Felker for build system and code conventions during upstream +integration. It is licensed under the standard MIT terms. + +The mips64 port was contributed by Imagination Technologies and is +licensed under the standard MIT terms. + +The powerpc port was also originally written by Richard Pennington, +and later supplemented and integrated by John Spencer. It is licensed +under the standard MIT terms. + +All other files which have no copyright comments are original works +produced specifically for use as part of this library, written either +by Rich Felker, the main author of the library, or by one or more +contibutors listed above. Details on authorship of individual files +can be found in the git version control history of the project. The +omission of copyright and license comments in each file is in the +interest of source tree size. + +In addition, permission is hereby granted for all public header files +(include/* and arch/*/bits/*) and crt files intended to be linked into +applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit +the copyright notice and permission notice otherwise required by the +license, and to use these files without any requirement of +attribution. These files include substantial contributions from: + +Bobby Bingham +John Spencer +Nicholas J. Kain +Rich Felker +Richard Pennington +Stefan Kristiansson +Szabolcs Nagy + +all of whom have explicitly granted such permission. + +This file previously contained text expressing a belief that most of +the files covered by the above exception were sufficiently trivial not +to be subject to copyright, resulting in confusion over whether it +negated the permissions granted in the license. In the spirit of +permissive licensing, and of not having licensing issues being an +obstacle to adoption, that text has been removed. diff --git a/scripts/licenses/rust-1.98.1/COPYRIGHT b/scripts/licenses/rust-1.98.1/COPYRIGHT new file mode 100644 index 0000000..4dad74f --- /dev/null +++ b/scripts/licenses/rust-1.98.1/COPYRIGHT @@ -0,0 +1,34 @@ +Short version for non-lawyers: + +The Rust Project is dual-licensed under Apache 2.0 and MIT +terms. + +It is Copyright (c) The Rust Project Contributors. + +Longer version: + +Copyrights in the Rust project are retained by their contributors. No +copyright assignment is required to contribute to the Rust project. + +Some files include explicit copyright notices and/or license notices. +For full authorship information, see the version control history or + + +Except as otherwise noted, Rust is licensed under the Apache License, Version +2.0 or or the MIT +license or , at your option. + +We track licenses for third-party materials in two ways: + +* We use [REUSE](https://reuse.software) to track license information for + in-tree source files - both those authored by the Rust project and those + authored by third parties. See `REUSE.toml`, and our cached output of the + `reuse` tool which is committed to `license-metadata.json`. +* We use `cargo` to track license information for out-of-tree dependencies. + +These two sources of information are collected by the tool `generate-copyright` +into a file called `COPYRIGHT.html`, which is shipped with each binary release +of Rust. Please refer to that file for detailed information as to the components of +any given Rust release. We also produce a `COPYRIGHT-library.html` file which only +covers the subset of source code used in the Rust Standard Library, as opposed +to the toolchain as a whole. diff --git a/scripts/licenses/rust-1.98.1/LICENSE-APACHE b/scripts/licenses/rust-1.98.1/LICENSE-APACHE new file mode 100644 index 0000000..1b5ec8b --- /dev/null +++ b/scripts/licenses/rust-1.98.1/LICENSE-APACHE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/scripts/licenses/rust-1.98.1/LICENSE-MIT b/scripts/licenses/rust-1.98.1/LICENSE-MIT new file mode 100644 index 0000000..a2070c4 --- /dev/null +++ b/scripts/licenses/rust-1.98.1/LICENSE-MIT @@ -0,0 +1,25 @@ +Copyright (c) The Rust Project Contributors + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/scripts/licenses/rust-1.98.1/LICENSES/Unicode-3.0.txt b/scripts/licenses/rust-1.98.1/LICENSES/Unicode-3.0.txt new file mode 100644 index 0000000..ee8e69b --- /dev/null +++ b/scripts/licenses/rust-1.98.1/LICENSES/Unicode-3.0.txt @@ -0,0 +1,39 @@ +UNICODE LICENSE V3 + +COPYRIGHT AND PERMISSION NOTICE + +Copyright © 1991-2024 Unicode, Inc. + +NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR +SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT +DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of data files and any associated documentation (the "Data Files") or +software and any associated documentation (the "Software") to deal in the +Data Files or Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, and/or sell +copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that either (a) +this copyright and permission notice appear with all copies of the Data +Files or Software, or (b) this copyright and permission notice appear in +associated Documentation. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +THIRD PARTY RIGHTS. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE +BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA +FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written +authorization of the copyright holder. diff --git a/scripts/licenses/rust-1.98.1/library/compiler-builtins/LICENSE.txt b/scripts/licenses/rust-1.98.1/library/compiler-builtins/LICENSE.txt new file mode 100644 index 0000000..00ae614 --- /dev/null +++ b/scripts/licenses/rust-1.98.1/library/compiler-builtins/LICENSE.txt @@ -0,0 +1,275 @@ +The compiler-builtins crate is available for use under both the MIT license +and the Apache-2.0 license with the LLVM exception (MIT AND Apache-2.0 WITH +LLVM-exception). + +The libm crate is available for use under the MIT license. + +As a contributor, you agree that your code may be used under any of the +following: the MIT license, the Apache-2.0 license, or the Apache-2.0 license +with the LLVM exception. In other words, original (non-derivative) work is +licensed under MIT OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception. This is +the default license for all other source in this repository. + +Text of the relevant licenses is provided below: + +------------------------------------------------------------------------------ +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. +------------------------------------------------------------------------------ + +Portions of this software are derived from third-party works licensed under +terms compatible with the above Apache-2.0 WITH LLVM-exception AND MIT +license: + +* compiler-builtins is derived from LLVM's compiler-rt (https://llvm.org/). + Work derived from compiler-rt prior to 2019-01-19 is usable under the MIT + license, with the following copyright: + + Copyright (c) 2009-2016 by the contributors listed in CREDITS.TXT + + The relevant CREDITS.TXT is located at + https://github.com/llvm/llvm-project/blob/main/compiler-rt/CREDITS.TXT. + +* Work derived from compiler-rt after 2019-01-19 is usable under the + Apache-2.0 license with the LLVM exception. + +* The bundled `math` module is from the libm crate, usable under the MIT + license. For further details and copyrights, see see libm/LICENSE.txt at + https://github.com/rust-lang/compiler-builtins. + +Additionally, some source files may contain comments with specific copyrights +or licenses. From 6a445dc0563522f2df501863ee578eedbc5b56b0 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 22:59:57 +0900 Subject: [PATCH 77/97] =?UTF-8?q?fix(layer):=20build-layer.mts=20=E3=81=AE?= =?UTF-8?q?=20BUILDER=20=E3=82=92=20cross=20build=20=E3=81=A8=20cargo=20bu?= =?UTF-8?q?ild=20=E3=81=AB=E9=99=90=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit THIRD_PARTY_LICENSES の musl libc と LLVM の部品の表示は、rustc が self-contained として持つ版に合わせてある。cross build と cargo build (CI とリリースの手順)では、rustc がこれらをリンクする。一方、BUILDER には 任意のコマンド行を渡せた。cargo zigbuild のように、zig が持つ musl libc と CRT をリンクするビルダーでも Layer を作れ、その zip は表示と中身が食い違う。 - BUILDER は "cross build" と "cargo build" だけを受け付ける。ほかの値は、 rustc の検査や出力先の作成より前に、理由を出して止まる。未指定のときの 選び方(cross があれば cross build)は変えていない - ヘッダーと TOOLCHAIN_NOTICES のコメントから、zigbuild を使える旨の記述を外した - scripts/build-layer.test.mts を足し、pnpm test で実行する。偽の rustc・cargo・ cross を PATH に置き、BUILDER="cargo zigbuild" では何も起動せずに止まること、 cross build と cargo build は通ることを確かめる - README の License 節と CHANGELOG に書いた --- CHANGELOG.md | 3 + README.md | 5 ++ package.json | 2 +- scripts/build-layer.mts | 55 +++++++++--------- scripts/build-layer.test.mts | 109 +++++++++++++++++++++++++++++++++++ 5 files changed, 147 insertions(+), 27 deletions(-) create mode 100644 scripts/build-layer.test.mts diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d3bdcd..acc5e9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 source map は tarball に含まれない `src/` を指していた - **sar** — SAR の `SourceCodeUrl` を、リポジトリのルートから、その版のタグ (`/tree/v<版>`)に変えた。SAR の各版から、対応するソースをたどれる +- **layer** — `scripts/build-layer.mts` の `BUILDER` は、`cross build` と + `cargo build` だけを受け付ける。`cargo zigbuild` などは、zig が持つ musl libc と + CRT をリンクしうる。その場合、Layer のライセンス表示と中身が食い違う ### Fixed diff --git a/README.md b/README.md index a64dca5..318bcb9 100644 --- a/README.md +++ b/README.md @@ -341,3 +341,8 @@ LLVM の libunwind と crtbegin/crtend です。 版は、`rust-toolchain.toml` の Rust 1.98.1 と、その Rust が musl ターゲットに同梱する musl 1.2.5・LLVM 22.1.8 です。Rust を上げるときは、部品の原文も更新します。 rustc の版が違うと、`scripts/build-layer.mts` は梱包を止めます。 + +これらの表示は、`cross build` か `cargo build` でビルドしたバイナリに合わせています。 +この 2 つでは、rustc が自分の musl libc と LLVM の部品をリンクします。 +`cargo zigbuild` などは、libc と CRT を別の版に置き換えることがあります。 +そのため、`scripts/build-layer.mts` の `BUILDER` は、この 2 つだけを受け付けます。 diff --git a/package.json b/package.json index d10ce23..12cf690 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "lint": "biome check .", "format": "biome check --write .", "typecheck": "pnpm -r run typecheck && tsc -p scripts", - "test": "pnpm -r run test", + "test": "pnpm -r run test && node --test scripts/*.test.mts", "build": "pnpm -r --if-present run build", "check:versions": "node scripts/check-versions.mts", "gate": "pnpm lint && pnpm check:versions && pnpm build && pnpm typecheck && pnpm test" diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index 58a7b5d..41a5dab 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -3,8 +3,8 @@ //! Lambda が /opt に展開するレイアウト(ENTRIES)で zip 化する。 //! //! 前提: cross (https://github.com/cross-rs/cross) か musl ツールチェーン。 -//! `BUILDER="cargo zigbuild"` のように `cargo build` 相当の -//! コマンド行を差し替えられる。 +//! `BUILDER` で "cross build" と "cargo build" のどちらを使うかを選べる。 +//! ほかのビルダーは受け付けない(理由は TOOLCHAIN_NOTICES の説明)。 //! `SKIP_BUILD=1` でビルドを省き target/ 済みのバイナリだけ梱包する。 //! 梱包でも THIRD_PARTY_LICENSES の生成に `cargo metadata` と `rustc --version` を使う。 //! Node 24+ は型注釈を strip してそのまま実行する(ビルド不要)。 @@ -69,8 +69,9 @@ const LICENSE_FALLBACK: Record = { /// crate のほかに、musl ターゲットのバイナリへ静的リンクされるツールチェーンの部品。 /// Rust 標準ライブラリと、その Rust が *-unknown-linux-musl に self-contained として /// 同梱する musl libc(libc.a と crt*.o)と、LLVM の libunwind.a・crtbegin/crtend。 -/// cross と cargo build の経路(CI とリリースの手順)では、rustc がこれらをリンクする。 -/// cargo zigbuild は crt と libc を zig が同梱する musl に置き換えるため、版が合わないことがある。 +/// cross build と cargo build(CI とリリースの手順)では、rustc がこれらをリンクする。 +/// ほかのビルダー(cargo zigbuild など)は libc と crt を別の版に置き換えうるため、 +/// BUILDER で受け付けない。 /// 本文は source の版から scripts/licenses/ に写した。musl と LLVM の版は、Rust の /// src/ci/docker/scripts/musl-toolchain.sh と src/llvm-project(サブモジュール)が示す。 /// rustc の版が RUST_VERSION と違えば梱包を止める。Rust を上げたら、ここと本文を見直す。 @@ -227,6 +228,29 @@ if (arches.length === 0) { console.error('ARCHES is empty; nothing to build'); process.exit(1); } +// BUILDER は `cargo build` 相当のコマンド行全体で、TOOLCHAIN_NOTICES の部品をリンクする +// "cross build" と "cargo build" だけを受け付ける。分割は空白区切りのみで +// シェル式のクォートは解釈しない。未指定なら cross があれば使い、 +// 無ければ cargo に落ちる。梱包専用(SKIP_BUILD=1)では builder に一切触れない。 +const BUILDERS = ['cross build', 'cargo build']; +const skipBuild = process.env.SKIP_BUILD === '1'; +const builder = skipBuild + ? undefined + : ( + process.env.BUILDER ?? + (spawnSync('cross', ['--version'], { stdio: 'ignore' }).status === 0 + ? 'cross build' + : 'cargo build') + ) + .split(/\s+/) + .filter(Boolean) + .join(' '); +if (builder !== undefined && !BUILDERS.includes(builder)) { + console.error(`BUILDER must be one of: ${BUILDERS.join(', ')} (got "${builder}")`); + process.exit(1); +} +const [builderCmd, ...builderArgs] = builder?.split(' ') ?? []; + // TOOLCHAIN_NOTICES は RUST_VERSION の Rust の部品を表示する。rustc の版が違えば、ビルドの前に止める。 const rustc = execFileSync('rustc', ['--version'], { cwd: ROOT, encoding: 'utf8' }).trim(); if (rustc.split(' ')[1] !== RUST_VERSION) { @@ -239,27 +263,6 @@ const outDirEnv = process.env.OUT_DIR ?? 'dist/layer'; const outDir = isAbsolute(outDirEnv) ? outDirEnv : resolve(ROOT, outDirEnv); mkdirSync(outDir, { recursive: true }); mkdirSync(join(ROOT, 'sar/dist'), { recursive: true }); - -// BUILDER は `cargo build` 相当のコマンド行全体("cross build" や -// "cargo zigbuild")として解釈する。分割は空白区切りのみで -// シェル式のクォートは解釈しない。未指定なら cross があれば使い、 -// 無ければ cargo に落ちる。 -const builderArgv = () => - ( - process.env.BUILDER ?? - (spawnSync('cross', ['--version'], { stdio: 'ignore' }).status === 0 - ? 'cross build' - : 'cargo build') - ) - .split(/\s+/) - .filter(Boolean); -const skipBuild = process.env.SKIP_BUILD === '1'; -// 梱包専用(SKIP_BUILD=1)では builder に一切触れない。 -const [builderCmd, ...builderArgs] = skipBuild ? [] : builderArgv(); -if (!skipBuild && !builderCmd) { - console.error('BUILDER is empty'); - process.exit(1); -} const EPOCH = new Date(0); for (const arch of arches) { @@ -268,7 +271,7 @@ for (const arch of arches) { console.error(`unknown arch: ${arch}`); process.exit(1); } - if (!skipBuild && builderCmd) { + if (builderCmd) { console.log(`== building ${target} ==`); execFileSync( builderCmd, diff --git a/scripts/build-layer.test.mts b/scripts/build-layer.test.mts new file mode 100644 index 0000000..c2cd131 --- /dev/null +++ b/scripts/build-layer.test.mts @@ -0,0 +1,109 @@ +//! build-layer.mts が、ビルドと梱包の前に止まる場合を確かめる。 +//! rustc・cargo・cross は PATH の先頭に置いた偽物に差し替え、本物は起動しない。 +//! 偽の cargo と cross は、起動されたことを記録して失敗する。 + +import assert from 'node:assert/strict'; +import { spawnSync } from 'node:child_process'; +import { + chmodSync, + existsSync, + mkdirSync, + mkdtempSync, + readFileSync, + rmSync, + writeFileSync, +} from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { after, describe, it } from 'node:test'; +import { fileURLToPath } from 'node:url'; + +const SCRIPT = fileURLToPath(new URL('./build-layer.mts', import.meta.url)); +const constant = (name: string) => { + const value = new RegExp(`^const ${name} = '([^']+)';$`, 'm').exec( + readFileSync(SCRIPT, 'utf8'), + )?.[1]; + assert.ok(value, `${name} is not in build-layer.mts`); + return value; +}; +const RUST_VERSION = constant('RUST_VERSION'); + +const work = mkdtempSync(join(tmpdir(), 'build-layer-test-')); +after(() => rmSync(work, { recursive: true, force: true })); + +interface Toolchain { + release?: string; +} + +/// 偽の rustc・cargo・cross を PATH に置いて build-layer.mts を実行する。 +function run(env: Record, toolchain: Toolchain = {}) { + const dir = mkdtempSync(join(work, 'run-')); + const bin = join(dir, 'bin'); + const started = join(dir, 'started'); + const out = join(dir, 'out'); + mkdirSync(bin); + const release = toolchain.release ?? RUST_VERSION; + const tools: Record = { + rustc: [ + 'case "$1" in', + ` --version) echo 'rustc ${release} (fake)' ;;`, + ' *) exit 2 ;;', + 'esac', + ].join('\n'), + cargo: `echo "cargo $*" >> '${started}'; exit 1`, + cross: `echo "cross $*" >> '${started}'; exit 1`, + }; + for (const [name, body] of Object.entries(tools)) { + writeFileSync(join(bin, name), `#!/bin/sh\n${body}\n`); + chmodSync(join(bin, name), 0o755); + } + // 呼び出し元の BUILDER や SKIP_BUILD は引き継がない + const inherited = Object.fromEntries( + Object.entries(process.env).filter(([key]) => !['BUILDER', 'SKIP_BUILD'].includes(key)), + ); + const r = spawnSync(process.execPath, [SCRIPT], { + env: { + ...inherited, + PATH: `${bin}:${process.env.PATH}`, + ARCHES: 'x86_64', + OUT_DIR: out, + ...env, + }, + encoding: 'utf8', + }); + return { + status: r.status, + stderr: r.stderr, + outDirCreated: existsSync(out), + started: existsSync(started) ? readFileSync(started, 'utf8') : '', + }; +} + +describe('build-layer.mts', () => { + // THIRD_PARTY_LICENSES の musl と LLVM の表示は、rustc が自分の部品をリンクする + // cross build と cargo build のもの。zig の libc と crt をリンクする cargo zigbuild は通さない + it('refuses builders other than cross build and cargo build, before starting any tool', () => { + const r = run({ BUILDER: 'cargo zigbuild' }); + assert.equal(r.status, 1); + assert.match( + r.stderr, + /BUILDER must be one of: cross build, cargo build \(got "cargo zigbuild"\)/, + ); + assert.equal(r.started, ''); + assert.equal(r.outDirCreated, false); + }); + + it('accepts cross build and cargo build', () => { + for (const builder of ['cross build', ' cargo build ']) { + // 通った BUILDER は、rustc の版の検査まで進む(版が違うので、ビルドの前に止まる) + const r = run({ BUILDER: builder }, { release: '0.0.0' }); + assert.equal(r.status, 1); + assert.doesNotMatch(r.stderr, /BUILDER/); + assert.match( + r.stderr, + new RegExp(`rustc 0\\.0\\.0 \\(fake\\) .*is not Rust ${RUST_VERSION}`), + ); + assert.equal(r.started, ''); + } + }); +}); From 4dba6de3d9e5607e6488cc066ca7cdc7b8ad5cfc Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 23:00:27 +0900 Subject: [PATCH 78/97] =?UTF-8?q?fix(layer):=20Rust=20=E6=A8=99=E6=BA=96?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=81=AE=20COPYRI?= =?UTF-8?q?GHT-library.html=20=E3=82=92=20Layer=20=E3=81=AB=E5=90=8C?= =?UTF-8?q?=E6=A2=B1=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit THIRD_PARTY_LICENSES に載せた Rust の COPYRIGHT は、標準ライブラリの ファイルごとの表示と依存 crate のライセンスを COPYRIGHT-library.html に 置くと案内している。このファイルは、Layer にもリポジトリにもなかった。 - Rust 1.98.1 の rustc コンポーネントの share/doc/rust/COPYRIGHT-library.html を、 scripts/licenses/rust-1.98.1/ にそのまま写した。写した元は https://static.rust-lang.org/dist/rustc-1.98.1-x86_64-unknown-linux-gnu.tar.xz (channel-rust-1.98.1.toml の xz_hash と一致)。aarch64-apple-darwin と aarch64-unknown-linux-musl の rustc が持つものとも同じバイト列 (sha256 68129500…)。元の URL は RUST_LIBRARY_NOTICE に書いた - 両 arch の zip の share/licenses/zankyo/COPYRIGHT-library.html に置く。 mode は 644、mtime とエントリ順は他のエントリと同じ決定的な扱い。HTML なので THIRD_PARTY_LICENSES には混ぜず、案内の文を「隣のファイル」に直した - 梱包の前に、写しが rustc の sysroot の share/doc/rust/COPYRIGHT-library.html と 同じことを確かめる。Rust を上げて写しを更新し忘れると止まる - CI の "check the layer zips" は、両 arch の zip にこのエントリがあり、 scripts/licenses/ の原文と同じバイト列であることを確かめる - scripts/licenses/ は上流の原文なので、.gitattributes で whitespace の検査と GitHub の言語の集計から外した - テストに、写しが rustc のものと違うか無いときに止まることを加えた - README の License 節、CHANGELOG、sar/template.yaml のコメントに書いた --- .gitattributes | 3 + .github/workflows/ci.yml | 6 +- CHANGELOG.md | 3 +- README.md | 14 +- sar/template.yaml | 2 +- scripts/build-layer.mts | 35 +- scripts/build-layer.test.mts | 30 + .../rust-1.98.1/COPYRIGHT-library.html | 29614 ++++++++++++++++ 8 files changed, 29697 insertions(+), 10 deletions(-) create mode 100644 .gitattributes create mode 100644 scripts/licenses/rust-1.98.1/COPYRIGHT-library.html diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..aded251 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# scripts/licenses/ は、上流の原文をそのまま写したもの。行末の空白も原文のまま残し、 +# GitHub の言語の集計からも外す(COPYRIGHT-library.html は大きな HTML) +scripts/licenses/** -whitespace linguist-vendored diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 49219f7..9516835 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -135,6 +135,7 @@ jobs: # エントリの並びと mode(実行ファイルは 755、ライセンス表示は 644)と CRC を確かめる。 # THIRD_PARTY_LICENSES は、crate でない静的リンクの部品(Rust 標準ライブラリ・musl libc・ # LLVM の libunwind と crtbegin/crtend)の表示も、scripts/licenses/ の原文のまま含むこと。 + # COPYRIGHT-library.html(Rust 標準ライブラリのファイルごとの表示)は、原文と同じバイト列であること。 # bin/zankyo は arch どおりの ELF で、動的リンカ(PT_INTERP)を要求しない静的リンクであること - name: check the layer zips run: | @@ -144,7 +145,8 @@ jobs: '-rwxr-xr-x extensions/zankyo' \ '-rwxr-xr-x zankyo-wrapper' \ '-rw-r--r-- share/licenses/zankyo/LICENSE' \ - '-rw-r--r-- share/licenses/zankyo/THIRD_PARTY_LICENSES') + '-rw-r--r-- share/licenses/zankyo/THIRD_PARTY_LICENSES' \ + '-rw-r--r-- share/licenses/zankyo/COPYRIGHT-library.html') notices=( scripts/licenses/rust-*/COPYRIGHT scripts/licenses/rust-*/LICENSE-APACHE @@ -170,6 +172,8 @@ jobs: process.exit(1); } ' "$RUNNER_TEMP/layer-$arch/share/licenses/zankyo/THIRD_PARTY_LICENSES" "${notices[@]}" + cmp scripts/licenses/rust-*/COPYRIGHT-library.html \ + "$RUNNER_TEMP/layer-$arch/share/licenses/zankyo/COPYRIGHT-library.html" bin=$RUNNER_TEMP/layer-$arch/bin/zankyo if ! readelf -h "$bin" | grep -q "Machine: .*$machine\$"; then echo "$z: bin/zankyo is not $machine" >&2 diff --git a/CHANGELOG.md b/CHANGELOG.md index acc5e9c..f2fd8a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,7 +88,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 した crate(tokio・hyper・aws-lc-rs・ring など)のライセンスと著作権表示も 入っていなかった。`THIRD_PARTY_LICENSES` は、crate のほかに、musl ターゲットで 静的リンクされる Rust 標準ライブラリ・musl libc・LLVM の libunwind と - crtbegin/crtend の表示も含む + crtbegin/crtend の表示も含む。Rust 標準ライブラリのファイルごとの表示は、 + Rust に同梱の `COPYRIGHT-library.html` を、同じディレクトリにそのまま置く - **cli / construct** — pack と publish の前(`prepack`)に build を実行する。 以前は dist が無いまま、または古いまま公開されうる手順だった - **cli / construct** — package.json に repository・homepage・bugs・ diff --git a/README.md b/README.md index 318bcb9..802b9f7 100644 --- a/README.md +++ b/README.md @@ -330,17 +330,23 @@ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収 MIT Layer の zip は `share/licenses/zankyo/`(Lambda 上では `/opt/share/licenses/zankyo/`)に、 -この LICENSE と `THIRD_PARTY_LICENSES` を含みます。`THIRD_PARTY_LICENSES` は、 -バイナリに静的リンクされるもののライセンスと著作権表示の原文です。 +この LICENSE と `THIRD_PARTY_LICENSES`・`COPYRIGHT-library.html` を含みます。 +`THIRD_PARTY_LICENSES` は、バイナリに静的リンクされるもののライセンスと著作権表示の原文です。 対象は、Rust の crate と、Rust の musl ターゲットがリンクするツールチェーンの部品です。 部品は、Rust 標準ライブラリ(compiler_builtins を含む)・musl libc・ LLVM の libunwind と crtbegin/crtend です。 +`COPYRIGHT-library.html` は、Rust 標準ライブラリのファイルごとの著作権表示と、 +標準ライブラリが依存する crate のライセンスです。Rust 1.98.1 の rustc に同梱される +ファイルを、そのまま写しています。 部品の原文は `scripts/licenses/` にあります。写した元の URL と版は、 -`scripts/build-layer.mts` の `TOOLCHAIN_NOTICES` にあります。 +`scripts/build-layer.mts` の `TOOLCHAIN_NOTICES` と `RUST_LIBRARY_NOTICE` にあります。 版は、`rust-toolchain.toml` の Rust 1.98.1 と、その Rust が musl ターゲットに同梱する musl 1.2.5・LLVM 22.1.8 です。Rust を上げるときは、部品の原文も更新します。 -rustc の版が違うと、`scripts/build-layer.mts` は梱包を止めます。 +次の場合、`scripts/build-layer.mts` は梱包を止めます。 + +- rustc の版が違う +- `COPYRIGHT-library.html` の写しが、rustc に同梱されたものと違う これらの表示は、`cross build` か `cargo build` でビルドしたバイナリに合わせています。 この 2 つでは、rustc が自分の musl libc と LLVM の部品をリンクします。 diff --git a/sar/template.yaml b/sar/template.yaml index 0520821..bd14493 100644 --- a/sar/template.yaml +++ b/sar/template.yaml @@ -24,7 +24,7 @@ Resources: # ContentUri は scripts/build-layer.mts が書き出す zip。sam package で S3 に上げ、 # 書き出したテンプレートを sam publish する(手順は RELEASING.md)。 # Layer zip の中身は bin/zankyo・extensions/zankyo・zankyo-wrapper(exec wrapper 入口)と、 - # share/licenses/zankyo/ のライセンス表示(LICENSE・THIRD_PARTY_LICENSES)。 + # share/licenses/zankyo/ のライセンス表示(LICENSE・THIRD_PARTY_LICENSES・COPYRIGHT-library.html)。 ZankyoLayerX86: Type: AWS::Serverless::LayerVersion Properties: diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index 41a5dab..aea7f16 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -13,6 +13,7 @@ import { execFileSync, spawnSync } from 'node:child_process'; import { chmodSync, cpSync, + existsSync, mkdirSync, mkdtempSync, readdirSync, @@ -37,7 +38,11 @@ const TARGETS: Record = { const EXECUTABLES = ['bin/zankyo', 'extensions/zankyo', 'zankyo-wrapper']; // /opt 直下の LICENSE は他の Layer と同名になりうるため、ディレクトリを分ける。 const NOTICE_DIR = 'share/licenses/zankyo'; -const NOTICES = [`${NOTICE_DIR}/LICENSE`, `${NOTICE_DIR}/THIRD_PARTY_LICENSES`]; +const NOTICES = [ + `${NOTICE_DIR}/LICENSE`, + `${NOTICE_DIR}/THIRD_PARTY_LICENSES`, + `${NOTICE_DIR}/COPYRIGHT-library.html`, +]; /// zip のエントリ。zip には引数の順で入る。 const ENTRIES = [...EXECUTABLES, ...NOTICES]; @@ -93,6 +98,14 @@ const llvm = (path: string): Notice => ({ path: `llvm-${LLVM_VERSION}/${path}`, source: `https://github.com/rust-lang/llvm-project/blob/${LLVM_COMMIT}/${path}`, }); +/// Rust 標準ライブラリの著作権表示。library/ のファイルごとの表示と、依存する crate の +/// ライセンスを載せる。Rust の COPYRIGHT が案内するファイルで、Rust のリリースごとに作られ、 +/// rustc コンポーネントの share/doc/rust/ に入る。HTML なので THIRD_PARTY_LICENSES には +/// 混ぜず、隣にそのまま置く。 +const RUST_LIBRARY_NOTICE: Notice = { + path: `rust-${RUST_VERSION}/COPYRIGHT-library.html`, + source: `https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-x86_64-unknown-linux-gnu.tar.xz (rustc/share/doc/rust/COPYRIGHT-library.html)`, +}; const TOOLCHAIN_NOTICES: { component: string; license: string; notices: Notice[] }[] = [ { component: `Rust standard library ${RUST_VERSION}`, @@ -210,8 +223,10 @@ function thirdPartyLicenses(target: string): string { 'Rust ships for the musl targets.', 'This file reproduces the license and notice files of each of them.', 'A text shared by several of them appears once, under all of their names.', - 'Per-file notices of the Rust standard library are in COPYRIGHT-library.html,', - 'which ships in share/doc/rust/ of the Rust toolchain.', + 'The copyright notices of the Rust standard library, for its in-tree files and its', + 'out-of-tree dependencies, are in COPYRIGHT-library.html next to this file.', + 'It is an unchanged copy of the file in', + `${RUST_LIBRARY_NOTICE.source}.`, '', 'Rust crates:', ...crates.map((c) => ` ${c.name} ${c.version} (${c.license ?? c.license_file})`), @@ -259,6 +274,19 @@ if (rustc.split(' ')[1] !== RUST_VERSION) { ); process.exit(1); } +// COPYRIGHT-library.html の写しが、この rustc に同梱されたものと同じことを確かめる。 +const libraryNotice = readFileSync(join(ROOT, 'scripts/licenses', RUST_LIBRARY_NOTICE.path)); +const sysroot = execFileSync('rustc', ['--print', 'sysroot'], { cwd: ROOT, encoding: 'utf8' }); +const shippedLibraryNotice = join(sysroot.trim(), 'share/doc/rust/COPYRIGHT-library.html'); +if ( + !existsSync(shippedLibraryNotice) || + !readFileSync(shippedLibraryNotice).equals(libraryNotice) +) { + console.error( + `scripts/licenses/${RUST_LIBRARY_NOTICE.path} is not the same as ${shippedLibraryNotice}`, + ); + process.exit(1); +} const outDirEnv = process.env.OUT_DIR ?? 'dist/layer'; const outDir = isAbsolute(outDirEnv) ? outDirEnv : resolve(ROOT, outDirEnv); mkdirSync(outDir, { recursive: true }); @@ -293,6 +321,7 @@ for (const arch of arches) { cpSync(join(ROOT, 'proxy/layer/extensions/zankyo'), join(stage, 'extensions/zankyo')); cpSync(join(ROOT, 'LICENSE'), join(stage, NOTICE_DIR, 'LICENSE')); writeFileSync(join(stage, NOTICE_DIR, 'THIRD_PARTY_LICENSES'), thirdParty); + writeFileSync(join(stage, NOTICE_DIR, 'COPYRIGHT-library.html'), libraryNotice); for (const f of EXECUTABLES) { chmodSync(join(stage, f), 0o755); } diff --git a/scripts/build-layer.test.mts b/scripts/build-layer.test.mts index c2cd131..56a0c0f 100644 --- a/scripts/build-layer.test.mts +++ b/scripts/build-layer.test.mts @@ -27,26 +27,41 @@ const constant = (name: string) => { return value; }; const RUST_VERSION = constant('RUST_VERSION'); +const LIBRARY_NOTICE = fileURLToPath( + new URL(`./licenses/rust-${RUST_VERSION}/COPYRIGHT-library.html`, import.meta.url), +); const work = mkdtempSync(join(tmpdir(), 'build-layer-test-')); after(() => rmSync(work, { recursive: true, force: true })); interface Toolchain { release?: string; + /// sysroot の share/doc/rust/COPYRIGHT-library.html。null なら置かない + libraryNotice?: string | null; } /// 偽の rustc・cargo・cross を PATH に置いて build-layer.mts を実行する。 function run(env: Record, toolchain: Toolchain = {}) { const dir = mkdtempSync(join(work, 'run-')); const bin = join(dir, 'bin'); + const sysroot = join(dir, 'sysroot'); const started = join(dir, 'started'); const out = join(dir, 'out'); mkdirSync(bin); + mkdirSync(join(sysroot, 'share/doc/rust'), { recursive: true }); + const notice = toolchain.libraryNotice; + if (notice !== null) { + writeFileSync( + join(sysroot, 'share/doc/rust/COPYRIGHT-library.html'), + notice ?? readFileSync(LIBRARY_NOTICE), + ); + } const release = toolchain.release ?? RUST_VERSION; const tools: Record = { rustc: [ 'case "$1" in', ` --version) echo 'rustc ${release} (fake)' ;;`, + ` --print) echo '${sysroot}' ;;`, ' *) exit 2 ;;', 'esac', ].join('\n'), @@ -106,4 +121,19 @@ describe('build-layer.mts', () => { assert.equal(r.started, ''); } }); + + it('stops when COPYRIGHT-library.html differs from the one shipped with rustc', () => { + for (const libraryNotice of ['another release', null]) { + const r = run({ SKIP_BUILD: '1' }, { libraryNotice }); + assert.equal(r.status, 1); + assert.match( + r.stderr, + new RegExp( + `scripts/licenses/rust-${RUST_VERSION}/COPYRIGHT-library\\.html is not the same`, + ), + ); + assert.equal(r.started, ''); + assert.equal(r.outDirCreated, false); + } + }); }); diff --git a/scripts/licenses/rust-1.98.1/COPYRIGHT-library.html b/scripts/licenses/rust-1.98.1/COPYRIGHT-library.html new file mode 100644 index 0000000..d36165b --- /dev/null +++ b/scripts/licenses/rust-1.98.1/COPYRIGHT-library.html @@ -0,0 +1,29614 @@ + + + + + Copyright notices for The Rust Standard Library + + + +

Copyright notices for The Rust Standard Library

+ +

Table of Contents

+ + +

Short version for non-lawyers

+ +The Rust Standard Library is dual-licensed under Apache 2.0 and MIT terms. + +

Longer version

+ +

Copyrights in the Rust Standard Library are retained by their contributors. No copyright assignment is required to contribute to the Rust project.

+ +

Some files include explicit copyright notices and/or license notices. For full authorship information, see the version control history or https://thanks.rust-lang.org.

+ +

Except as otherwise noted (below and/or in individual files), the Rust Standard Library is licensed under the Apache License, Version 2.0 or the MIT license, at your option.

+ +

This file describes the copyright and licensing information for the source code within The Rust Project git tree related to the Rust Standard Library, and the third-party dependencies used when building the Rust Standard Library.

+ +

In-tree files

+ +

The following licenses cover the in-tree source files that were used in this release:

+ + + + + + +
+ +

+ File/Directory: . +

+ + + +

License: Apache-2.0 OR MIT

+ +

Copyright: The Rust Project Developers (see https://thanks.rust-lang.org)

+ + + + + + +

Exceptions:

+ + + +
+ +

+ File/Directory: library/core/src/unicode +

+ + + +

License: Unicode-3.0

+ +

Copyright: 1991-2024 Unicode, Inc

+ + + + + + +

Exceptions:

+ + + +
+

+ File/Directory: mod.rs +

+ +

License: Apache-2.0 OR MIT

+ +

Copyright: The Rust Project Developers (see https://thanks.rust-lang.org)

+ +
+ + + + + + +
+ + + + + +
+ +

+ File/Directory: library/backtrace +

+ + + +

License: Apache-2.0 OR MIT

+ +

Copyright: 2014 Alex Crichton

+ +

Copyright: The Rust Project Developers (see https://thanks.rust-lang.org)

+ + + + + + +
+ + + + + +
+ +

+ File/Directory: library/std/src/sync/mpmc +

+ + + +

License: Apache-2.0 OR MIT

+ +

Copyright: 2019 The Crossbeam Project Developers

+ +

Copyright: The Rust Project Developers (see https://thanks.rust-lang.org)

+ + + + + + +
+ + + + + +
+

+ File/Directory: library/std/src/sys/sync/mutex/fuchsia.rs +

+ +

License: BSD-2-Clause AND (Apache-2.0 OR MIT)

+ +

Copyright: 2016 The Fuchsia Authors

+ +

Copyright: The Rust Project Developers (see https://thanks.rust-lang.org)

+ +
+ + + + + + +
+ + + + + + +

Out-of-tree dependencies

+ +

The following licenses cover the out-of-tree crates that were used in the +Rust Standard Library in this release:

+ + +

📦 aho-corasick-1.1.4

+

URL: https://crates.io/crates/aho-corasick/1.1.4

+

Authors: Andrew Gallant <jamslam@gmail.com>

+

License: Unlicense OR MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2015 Andrew Gallant
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +
+ UNLICENSE +
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org/>
+
+                
+
+ +

+ + +

📦 anstream-1.0.0

+

URL: https://crates.io/crates/anstream/1.0.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 anstyle-1.0.14

+

URL: https://crates.io/crates/anstyle/1.0.14

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 anstyle-parse-1.0.0

+

URL: https://crates.io/crates/anstyle-parse/1.0.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 anstyle-query-1.1.5

+

URL: https://crates.io/crates/anstyle-query/1.1.5

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 anstyle-wincon-3.0.11

+

URL: https://crates.io/crates/anstyle-wincon/3.0.11

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 anyhow-1.0.102

+

URL: https://crates.io/crates/anyhow/1.0.102

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 autocfg-1.5.0

+

URL: https://crates.io/crates/autocfg/1.5.0

+

Authors: Josh Stone <cuviper@gmail.com>

+

License: Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2018 Josh Stone
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 bitflags-2.11.0

+

URL: https://crates.io/crates/bitflags/2.11.0

+

Authors: The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 cc-1.2.0

+

URL: https://crates.io/crates/cc/1.2.0

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 cc-1.2.59

+

URL: https://crates.io/crates/cc/1.2.59

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 cfg-if-1.0.4

+

URL: https://crates.io/crates/cfg-if/1.0.4

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 clap-4.6.0

+

URL: https://crates.io/crates/clap/4.6.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 clap_builder-4.6.0

+

URL: https://crates.io/crates/clap_builder/4.6.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 clap_derive-4.6.0

+

URL: https://crates.io/crates/clap_derive/4.6.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 clap_lex-1.1.0

+

URL: https://crates.io/crates/clap_lex/1.1.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 colorchoice-1.0.5

+

URL: https://crates.io/crates/colorchoice/1.0.5

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 crossbeam-deque-0.8.6

+

URL: https://crates.io/crates/crossbeam-deque/0.8.6

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2019 The Crossbeam Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 crossbeam-epoch-0.9.18

+

URL: https://crates.io/crates/crossbeam-epoch/0.9.18

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2019 The Crossbeam Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 crossbeam-utils-0.8.21

+

URL: https://crates.io/crates/crossbeam-utils/0.8.21

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2019 The Crossbeam Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 darling-0.23.0

+

URL: https://crates.io/crates/darling/0.23.0

+

Authors: Ted Driggs <ted.driggs@outlook.com>

+

License: MIT

+ + +

Notices: + +

+ LICENSE +
+MIT License
+
+Copyright (c) 2017 Ted Driggs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 darling_core-0.23.0

+

URL: https://crates.io/crates/darling_core/0.23.0

+

Authors: Ted Driggs <ted.driggs@outlook.com>

+

License: MIT

+ + +

Notices: + +

+ LICENSE +
+MIT License
+
+Copyright (c) 2017 Ted Driggs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 darling_macro-0.23.0

+

URL: https://crates.io/crates/darling_macro/0.23.0

+

Authors: Ted Driggs <ted.driggs@outlook.com>

+

License: MIT

+ + +

Notices: + +

+ LICENSE +
+MIT License
+
+Copyright (c) 2017 Ted Driggs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 diff-0.1.13

+

URL: https://crates.io/crates/diff/0.1.13

+

Authors: Utkarsh Kukreti <utkarshkukreti@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+MIT License
+
+Copyright (c) 2015 Utkarsh Kukreti
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 dlmalloc-0.2.13

+

URL: https://crates.io/crates/dlmalloc/0.2.13

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: MIT/Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 either-1.15.0

+

URL: https://crates.io/crates/either/1.15.0

+

Authors: bluss

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 env_filter-1.0.1

+

URL: https://crates.io/crates/env_filter/1.0.1

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 env_logger-0.10.2

+

URL: https://crates.io/crates/env_logger/0.10.2

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 env_logger-0.11.10

+

URL: https://crates.io/crates/env_logger/0.11.10

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 equivalent-1.0.2

+

URL: https://crates.io/crates/equivalent/1.0.2

+

Authors:

+

License: Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016--2023
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 errno-0.3.14

+

URL: https://crates.io/crates/errno/0.3.14

+

Authors: Chris Wong <lambda.fairy@gmail.com>, Dan Gohman <dev@sunfishcode.online>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 Chris Wong
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 fastrand-2.4.1

+

URL: https://crates.io/crates/fastrand/2.4.1

+

Authors: Stjepan Glavina <stjepang@gmail.com>

+

License: Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 find-msvc-tools-0.1.9

+

URL: https://crates.io/crates/find-msvc-tools/0.1.9

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 foldhash-0.1.5

+

URL: https://crates.io/crates/foldhash/0.1.5

+

Authors: Orson Peters <orsonpeters@gmail.com>

+

License: Zlib

+ + +

Notices: + +

+ LICENSE +
+Copyright (c) 2024 Orson Peters
+
+This software is provided 'as-is', without any express or implied warranty. In
+no event will the authors be held liable for any damages arising from the use of
+this software.
+
+Permission is granted to anyone to use this software for any purpose, including
+commercial applications, and to alter it and redistribute it freely, subject to
+the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim
+    that you wrote the original software. If you use this software in a product,
+    an acknowledgment in the product documentation would be appreciated but is
+    not required.
+
+2. Altered source versions must be plainly marked as such, and must not be
+    misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+                
+
+ +

+ + +

📦 foldhash-0.2.0

+

URL: https://crates.io/crates/foldhash/0.2.0

+

Authors: Orson Peters <orsonpeters@gmail.com>

+

License: Zlib

+ + +

Notices: + +

+ LICENSE +
+Copyright (c) 2024 Orson Peters
+
+This software is provided 'as-is', without any express or implied warranty. In
+no event will the authors be held liable for any damages arising from the use of
+this software.
+
+Permission is granted to anyone to use this software for any purpose, including
+commercial applications, and to alter it and redistribute it freely, subject to
+the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim
+    that you wrote the original software. If you use this software in a product,
+    an acknowledgment in the product documentation would be appreciated but is
+    not required.
+
+2. Altered source versions must be plainly marked as such, and must not be
+    misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+                
+
+ +

+ + +

📦 fortanix-sgx-abi-0.6.1

+

URL: https://crates.io/crates/fortanix-sgx-abi/0.6.1

+

Authors: Fortanix, Inc.

+

License: MPL-2.0

+ + + +

📦 getopts-0.2.24

+

URL: https://crates.io/crates/getopts/0.2.24

+

Authors: The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 getrandom-0.3.4

+

URL: https://crates.io/crates/getrandom/0.3.4

+

Authors: The Rand Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2018-2025 The rust-random Project Developers
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 getrandom-0.4.2

+

URL: https://crates.io/crates/getrandom/0.4.2

+

Authors: The Rand Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2018-2026 The rust-random Project Developers
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 gimli-0.32.3

+

URL: https://crates.io/crates/gimli/0.32.3

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 hashbrown-0.12.3

+

URL: https://crates.io/crates/hashbrown/0.12.3

+

Authors: Amanieu d'Antras <amanieu@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016 Amanieu d'Antras
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 hashbrown-0.15.5

+

URL: https://crates.io/crates/hashbrown/0.15.5

+

Authors: Amanieu d'Antras <amanieu@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016 Amanieu d'Antras
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 hashbrown-0.16.1

+

URL: https://crates.io/crates/hashbrown/0.16.1

+

Authors: Amanieu d'Antras <amanieu@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016 Amanieu d'Antras
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 hashbrown-0.17.1

+

URL: https://crates.io/crates/hashbrown/0.17.1

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016 Amanieu d'Antras
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 heck-0.5.0

+

URL: https://crates.io/crates/heck/0.5.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 hermit-abi-0.5.2

+

URL: https://crates.io/crates/hermit-abi/0.5.2

+

Authors: Stefan Lankes

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 humantime-2.3.0

+

URL: https://crates.io/crates/humantime/2.3.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016 The humantime Developers
+
+Includes parts of http date with the following copyright:
+Copyright (c) 2016 Pyfisch
+
+Includes portions of musl libc with the following copyright:
+Copyright © 2005-2013 Rich Felker
+
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 id-arena-2.3.0

+

URL: https://crates.io/crates/id-arena/2.3.0

+

Authors: Nick Fitzgerald <fitzgen@gmail.com>, Aleksey Kladov <aleksey.kladov@gmail.com>

+

License: MIT/Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 ident_case-1.0.1

+

URL: https://crates.io/crates/ident_case/1.0.1

+

Authors: Ted Driggs <ted.driggs@outlook.com>

+

License: MIT/Apache-2.0

+ + +

Notices: + +

+ LICENSE +
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 indexmap-1.9.3

+

URL: https://crates.io/crates/indexmap/1.9.3

+

Authors:

+

License: Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016--2017
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 indexmap-2.13.1

+

URL: https://crates.io/crates/indexmap/2.13.1

+

Authors:

+

License: Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016--2017
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 is-terminal-0.4.17

+

URL: https://crates.io/crates/is-terminal/0.4.17

+

Authors: softprops <d.tangren@gmail.com>, Dan Gohman <dev@sunfishcode.online>

+

License: MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +
+ LICENSE-MIT-atty +
+Portions of this project are derived from atty, which bears the following
+copyright notice and permission notice:
+
+Copyright (c) 2015-2019 Doug Tangren
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 is_terminal_polyfill-1.70.2

+

URL: https://crates.io/crates/is_terminal_polyfill/1.70.2

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 itertools-0.14.0

+

URL: https://crates.io/crates/itertools/0.14.0

+

Authors: bluss

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 itoa-1.0.18

+

URL: https://crates.io/crates/itoa/1.0.18

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 leb128fmt-0.1.0

+

URL: https://crates.io/crates/leb128fmt/0.1.0

+

Authors: Bryant Luk <code@bryantluk.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 libc-0.2.184

+

URL: https://crates.io/crates/libc/0.2.184

+

Authors: The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 libc-0.2.185

+

URL: https://crates.io/crates/libc/0.2.185

+

Authors: The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 linked-hash-map-0.5.6

+

URL: https://crates.io/crates/linked-hash-map/0.5.6

+

Authors: Stepan Koltsov <stepan.koltsov@gmail.com>, Andrew Paseltiner <apaseltiner@gmail.com>

+

License: MIT/Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 linux-raw-sys-0.12.1

+

URL: https://crates.io/crates/linux-raw-sys/0.12.1

+

Authors: Dan Gohman <dev@sunfishcode.online>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ COPYRIGHT +
+Short version for non-lawyers:
+
+`linux-raw-sys` is triple-licensed under Apache 2.0 with the LLVM Exception,
+Apache 2.0, and MIT terms.
+
+
+Longer version:
+
+Copyrights in the `linux-raw-sys` project are retained by their contributors.
+No copyright assignment is required to contribute to the `linux-raw-sys`
+project.
+
+Some files include code derived from Rust's `libstd`; see the comments in
+the code for details.
+
+Except as otherwise noted (below and/or in individual files), `linux-raw-sys`
+is licensed under:
+
+ - the Apache License, Version 2.0, with the LLVM Exception
+   <LICENSE-Apache-2.0_WITH_LLVM-exception> or
+   <http://llvm.org/foundation/relicensing/LICENSE.txt>
+ - the Apache License, Version 2.0
+   <LICENSE-APACHE> or
+   <http://www.apache.org/licenses/LICENSE-2.0>,
+ - or the MIT license
+   <LICENSE-MIT> or
+   <http://opensource.org/licenses/MIT>,
+
+at your option.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 log-0.4.29

+

URL: https://crates.io/crates/log/0.4.29

+

Authors: The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 memchr-2.8.0

+

URL: https://crates.io/crates/memchr/2.8.0

+

Authors: Andrew Gallant <jamslam@gmail.com>, bluss

+

License: Unlicense OR MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2015 Andrew Gallant
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +
+ UNLICENSE +
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org/>
+
+                
+
+ +

+ + +

📦 moto-rt-0.16.0

+

URL: https://crates.io/crates/moto-rt/0.16.0

+

Authors: The Motor OS Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright 2023 The Motor OS Project Developers
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2023 The Motor OS Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 once_cell-1.21.4

+

URL: https://crates.io/crates/once_cell/1.21.4

+

Authors: Aleksey Kladov <aleksey.kladov@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 once_cell_polyfill-1.70.2

+

URL: https://crates.io/crates/once_cell_polyfill/1.70.2

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 ppv-lite86-0.2.21

+

URL: https://crates.io/crates/ppv-lite86/0.2.21

+

Authors: The CryptoCorrosion Contributors

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright 2019 The CryptoCorrosion Contributors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2019 The CryptoCorrosion Contributors
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 pretty_env_logger-0.5.0

+

URL: https://crates.io/crates/pretty_env_logger/0.5.0

+

Authors: Sean McArthur <sean@seanmonstar>

+

License: MIT/Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2017 Sean McArthur
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+                
+
+ +

+ + +

📦 prettyplease-0.2.37

+

URL: https://crates.io/crates/prettyplease/0.2.37

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 proc-macro2-1.0.106

+

URL: https://crates.io/crates/proc-macro2/1.0.106

+

Authors: David Tolnay <dtolnay@gmail.com>, Alex Crichton <alex@alexcrichton.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 quick-xml-0.33.0

+

URL: https://crates.io/crates/quick-xml/0.33.0

+

Authors:

+

License: MIT

+ + +

Notices: + +

+ LICENSE-MIT.md +
+The MIT License (MIT)
+
+Copyright (c) 2016 Johann Tuffe
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 quick-xml-0.37.5

+

URL: https://crates.io/crates/quick-xml/0.37.5

+

Authors:

+

License: MIT

+ + +

Notices: + +

+ LICENSE-MIT.md +
+The MIT License (MIT)
+
+Copyright (c) 2016 Johann Tuffe
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 quickcheck-1.1.0

+

URL: https://crates.io/crates/quickcheck/1.1.0

+

Authors: Andrew Gallant <jamslam@gmail.com>

+

License: Unlicense OR MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2015 Andrew Gallant
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +
+ UNLICENSE +
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org/>
+
+                
+
+ +

+ + +

📦 quote-1.0.45

+

URL: https://crates.io/crates/quote/1.0.45

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 r-efi-5.3.0

+

URL: https://crates.io/crates/r-efi/5.3.0

+

Authors:

+

License: MIT OR Apache-2.0 OR LGPL-2.1-or-later

+ + +

Notices: + +

+ AUTHORS +
+LICENSE:
+        This project is triple-licensed under the MIT License, the Apache
+        License, Version 2.0, and the GNU Lesser General Public License,
+        Version 2.1+.
+
+AUTHORS-MIT:
+        Permission is hereby granted, free of charge, to any person obtaining a
+        copy of this software and associated documentation files (the
+        "Software"), to deal in the Software without restriction, including
+        without limitation the rights to use, copy, modify, merge, publish,
+        distribute, sublicense, and/or sell copies of the Software, and to
+        permit persons to whom the Software is furnished to do so, subject to
+        the following conditions:
+
+        The above copyright notice and this permission notice shall be included
+        in all copies or substantial portions of the Software.
+
+        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+        OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+        MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+        IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+        CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+        TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+        SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+AUTHORS-ASL:
+        Licensed under the Apache License, Version 2.0 (the "License");
+        you may not use this file except in compliance with the License.
+        You may obtain a copy of the License at
+
+                http://www.apache.org/licenses/LICENSE-2.0
+
+        Unless required by applicable law or agreed to in writing, software
+        distributed under the License is distributed on an "AS IS" BASIS,
+        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+        See the License for the specific language governing permissions and
+        limitations under the License.
+
+AUTHORS-LGPL:
+        This program is free software; you can redistribute it and/or modify it
+        under the terms of the GNU Lesser General Public License as published
+        by the Free Software Foundation; either version 2.1 of the License, or
+        (at your option) any later version.
+
+        This program is distributed in the hope that it will be useful, but
+        WITHOUT ANY WARRANTY; without even the implied warranty of
+        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+        Lesser General Public License for more details.
+
+        You should have received a copy of the GNU Lesser General Public License
+        along with this program; If not, see <http://www.gnu.org/licenses/>.
+
+COPYRIGHT: (ordered alphabetically)
+        Copyright (C) 2017-2023 Red Hat, Inc.
+        Copyright (C) 2019-2023 Microsoft Corporation
+        Copyright (C) 2022-2023 David Rheinsberg
+
+AUTHORS: (ordered alphabetically)
+        Alex James <theracermaster@gmail.com>
+        Ayush Singh <ayushsingh1325@gmail.com>
+        Boris-Chengbiao Zhou <bobo1239@web.de>
+        Bret Barkelew <bret@corthon.com>
+        Christopher Zurcher <christopher.zurcher@microsoft.com>
+        David Rheinsberg <david@readahead.eu>
+        Dmitry Mostovenko <trueberserker@gmail.com>
+        Hiroki Tokunaga <tokusan441@gmail.com>
+        Joe Richey <joerichey@google.com>
+        John Schock <joschock@microsoft.com>
+        Michael Kubacki <michael.kubacki@microsoft.com>
+        Oliver Smith-Denny <osde@microsoft.com>
+        Richard Wiedenhöft <richard@wiedenhoeft.xyz>
+        Rob Bradford <robert.bradford@intel.com>, <rbradford@rivosinc.com>
+        Tom Gundersen <teg@jklm.no>
+        Trevor Gross <tmgross@umich.edu>
+
+                
+
+ +

+ + +

📦 r-efi-6.0.0

+

URL: https://crates.io/crates/r-efi/6.0.0

+

Authors:

+

License: MIT OR Apache-2.0 OR LGPL-2.1-or-later

+ + +

Notices: + +

+ AUTHORS +
+LICENSE:
+        This project is triple-licensed under the MIT License, the Apache
+        License, Version 2.0, and the GNU Lesser General Public License,
+        Version 2.1+.
+
+AUTHORS-MIT:
+        Permission is hereby granted, free of charge, to any person obtaining a
+        copy of this software and associated documentation files (the
+        "Software"), to deal in the Software without restriction, including
+        without limitation the rights to use, copy, modify, merge, publish,
+        distribute, sublicense, and/or sell copies of the Software, and to
+        permit persons to whom the Software is furnished to do so, subject to
+        the following conditions:
+
+        The above copyright notice and this permission notice shall be included
+        in all copies or substantial portions of the Software.
+
+        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+        OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+        MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+        IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+        CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+        TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+        SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+AUTHORS-ASL:
+        Licensed under the Apache License, Version 2.0 (the "License");
+        you may not use this file except in compliance with the License.
+        You may obtain a copy of the License at
+
+                http://www.apache.org/licenses/LICENSE-2.0
+
+        Unless required by applicable law or agreed to in writing, software
+        distributed under the License is distributed on an "AS IS" BASIS,
+        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+        See the License for the specific language governing permissions and
+        limitations under the License.
+
+AUTHORS-LGPL:
+        This program is free software; you can redistribute it and/or modify it
+        under the terms of the GNU Lesser General Public License as published
+        by the Free Software Foundation; either version 2.1 of the License, or
+        (at your option) any later version.
+
+        This program is distributed in the hope that it will be useful, but
+        WITHOUT ANY WARRANTY; without even the implied warranty of
+        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+        Lesser General Public License for more details.
+
+        You should have received a copy of the GNU Lesser General Public License
+        along with this program; If not, see <http://www.gnu.org/licenses/>.
+
+COPYRIGHT: (ordered alphabetically)
+        Copyright (C) 2017-2023 Red Hat, Inc.
+        Copyright (C) 2019-2023 Microsoft Corporation
+        Copyright (C) 2022-2023 David Rheinsberg
+
+AUTHORS: (ordered alphabetically)
+        Alan Egerton <eggyal@gmail.com>
+        Alex James <theracermaster@gmail.com>
+        Ayush Singh <ayushsingh1325@gmail.com>
+        Boris-Chengbiao Zhou <bobo1239@web.de>
+        Bret Barkelew <bret@corthon.com>
+        Christopher Zurcher <christopher.zurcher@microsoft.com>
+        David Rheinsberg <david@readahead.eu>
+        Dmitry Mostovenko <trueberserker@gmail.com>
+        Hiroki Tokunaga <tokusan441@gmail.com>
+        Joe Richey <joerichey@google.com>
+        John Schock <joschock@microsoft.com>
+        Michael Kubacki <michael.kubacki@microsoft.com>
+        Oliver Smith-Denny <osde@microsoft.com>
+        Richard Wiedenhöft <richard@wiedenhoeft.xyz>
+        Rob Bradford <robert.bradford@intel.com>, <rbradford@rivosinc.com>
+        Tom Gundersen <teg@jklm.no>
+        Trevor Gross <tmgross@umich.edu>
+
+                
+
+ +

+ + +

📦 r-efi-alloc-2.1.0

+

URL: https://crates.io/crates/r-efi-alloc/2.1.0

+

Authors:

+

License: MIT OR Apache-2.0 OR LGPL-2.1-or-later

+ + +

Notices: + +

+ AUTHORS +
+LICENSE:
+        This project is triple-licensed under the MIT License, the Apache
+        License, Version 2.0, and the GNU Lesser General Public License,
+        Version 2.1+.
+
+AUTHORS-MIT:
+        Permission is hereby granted, free of charge, to any person obtaining a
+        copy of this software and associated documentation files (the
+        "Software"), to deal in the Software without restriction, including
+        without limitation the rights to use, copy, modify, merge, publish,
+        distribute, sublicense, and/or sell copies of the Software, and to
+        permit persons to whom the Software is furnished to do so, subject to
+        the following conditions:
+
+        The above copyright notice and this permission notice shall be included
+        in all copies or substantial portions of the Software.
+
+        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+        OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+        MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+        IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+        CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+        TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+        SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+AUTHORS-ASL:
+        Licensed under the Apache License, Version 2.0 (the "License");
+        you may not use this file except in compliance with the License.
+        You may obtain a copy of the License at
+
+                http://www.apache.org/licenses/LICENSE-2.0
+
+        Unless required by applicable law or agreed to in writing, software
+        distributed under the License is distributed on an "AS IS" BASIS,
+        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+        See the License for the specific language governing permissions and
+        limitations under the License.
+
+AUTHORS-LGPL:
+        This program is free software; you can redistribute it and/or modify it
+        under the terms of the GNU Lesser General Public License as published
+        by the Free Software Foundation; either version 2.1 of the License, or
+        (at your option) any later version.
+
+        This program is distributed in the hope that it will be useful, but
+        WITHOUT ANY WARRANTY; without even the implied warranty of
+        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+        Lesser General Public License for more details.
+
+        You should have received a copy of the GNU Lesser General Public License
+        along with this program; If not, see <http://www.gnu.org/licenses/>.
+
+COPYRIGHT: (ordered alphabetically)
+        Copyright (C) 2017-2022 Red Hat, Inc.
+        Copyright (C) 2022-2025 David Rheinsberg
+
+AUTHORS: (ordered alphabetically)
+        Ayush Singh <ayushsingh1325@gmail.com>
+        David Rheinsberg <david@readahead.eu>
+        Mizuho MORI <morimolymoly@gmail.com>
+        Tom Gundersen <teg@jklm.no>
+        Trevor Gross <tmgross@umich.edu>
+
+                
+
+ +

+ + +

📦 rand-0.10.1

+

URL: https://crates.io/crates/rand/0.10.1

+

Authors: The Rand Project Developers, The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Copyrights in the Rand project are retained by their contributors. No
+copyright assignment is required to contribute to the Rand project.
+
+For full authorship information, see the version control history.
+
+Except as otherwise noted (below and/or in individual files), Rand is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+The Rand project includes code from the Rust project
+published under these same licenses.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2018 Developers of the Rand project
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rand-0.9.2

+

URL: https://crates.io/crates/rand/0.9.2

+

Authors: The Rand Project Developers, The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Copyrights in the Rand project are retained by their contributors. No
+copyright assignment is required to contribute to the Rand project.
+
+For full authorship information, see the version control history.
+
+Except as otherwise noted (below and/or in individual files), Rand is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+The Rand project includes code from the Rust project
+published under these same licenses.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2018 Developers of the Rand project
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rand-0.9.4

+

URL: https://crates.io/crates/rand/0.9.4

+

Authors: The Rand Project Developers, The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Copyrights in the Rand project are retained by their contributors. No
+copyright assignment is required to contribute to the Rand project.
+
+For full authorship information, see the version control history.
+
+Except as otherwise noted (below and/or in individual files), Rand is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+The Rand project includes code from the Rust project
+published under these same licenses.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2018 Developers of the Rand project
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rand_chacha-0.9.0

+

URL: https://crates.io/crates/rand_chacha/0.9.0

+

Authors: The Rand Project Developers, The Rust Project Developers, The CryptoCorrosion Contributors

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Copyrights in the Rand project are retained by their contributors. No
+copyright assignment is required to contribute to the Rand project.
+
+For full authorship information, see the version control history.
+
+Except as otherwise noted (below and/or in individual files), Rand is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+The Rand project includes code from the Rust project
+published under these same licenses.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2018 Developers of the Rand project
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rand_core-0.10.0

+

URL: https://crates.io/crates/rand_core/0.10.0

+

Authors: The Rand Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Copyrights in the Rand project are retained by their contributors. No
+copyright assignment is required to contribute to the Rand project.
+
+For full authorship information, see the version control history.
+
+Except as otherwise noted (below and/or in individual files), Rand is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2018-2026 The Rand Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rand_core-0.9.3

+

URL: https://crates.io/crates/rand_core/0.9.3

+

Authors: The Rand Project Developers, The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Copyrights in the Rand project are retained by their contributors. No
+copyright assignment is required to contribute to the Rand project.
+
+For full authorship information, see the version control history.
+
+Except as otherwise noted (below and/or in individual files), Rand is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+The Rand project includes code from the Rust project
+published under these same licenses.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2018 Developers of the Rand project
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rand_core-0.9.5

+

URL: https://crates.io/crates/rand_core/0.9.5

+

Authors: The Rand Project Developers, The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Copyrights in the Rand project are retained by their contributors. No
+copyright assignment is required to contribute to the Rand project.
+
+For full authorship information, see the version control history.
+
+Except as otherwise noted (below and/or in individual files), Rand is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+The Rand project includes code from the Rust project
+published under these same licenses.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2018 Developers of the Rand project
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rand_xorshift-0.4.0

+

URL: https://crates.io/crates/rand_xorshift/0.4.0

+

Authors: The Rand Project Developers, The Rust Project Developers

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Copyrights in the Rand project are retained by their contributors. No
+copyright assignment is required to contribute to the Rand project.
+
+For full authorship information, see the version control history.
+
+Except as otherwise noted (below and/or in individual files), Rand is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+The Rand project includes code from the Rust project
+published under these same licenses.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     https://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2018 Developers of the Rand project
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rayon-1.11.0

+

URL: https://crates.io/crates/rayon/1.11.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2010 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rayon-core-1.13.0

+

URL: https://crates.io/crates/rayon-core/1.13.0

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2010 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 regex-1.12.3

+

URL: https://crates.io/crates/regex/1.12.3

+

Authors: The Rust Project Developers, Andrew Gallant <jamslam@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 regex-automata-0.4.14

+

URL: https://crates.io/crates/regex-automata/0.4.14

+

Authors: The Rust Project Developers, Andrew Gallant <jamslam@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 regex-syntax-0.8.10

+

URL: https://crates.io/crates/regex-syntax/0.8.10

+

Authors: The Rust Project Developers, Andrew Gallant <jamslam@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rustc-demangle-0.1.27

+

URL: https://crates.io/crates/rustc-demangle/0.1.27

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: MIT/Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rustc-literal-escaper-0.0.8

+

URL: https://crates.io/crates/rustc-literal-escaper/0.0.8

+

Authors:

+

License: Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 rustix-1.1.4

+

URL: https://crates.io/crates/rustix/1.1.4

+

Authors: Dan Gohman <dev@sunfishcode.online>, Jakub Konka <kubkon@jakubkonka.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ COPYRIGHT +
+Short version for non-lawyers:
+
+`rustix` is triple-licensed under Apache 2.0 with the LLVM Exception,
+Apache 2.0, and MIT terms.
+
+
+Longer version:
+
+Copyrights in the `rustix` project are retained by their contributors.
+No copyright assignment is required to contribute to the `rustix`
+project.
+
+Some files include code derived from Rust's `libstd`; see the comments in
+the code for details.
+
+Except as otherwise noted (below and/or in individual files), `rustix`
+is licensed under:
+
+ - the Apache License, Version 2.0, with the LLVM Exception
+   <LICENSE-Apache-2.0_WITH_LLVM-exception> or
+   <http://llvm.org/foundation/relicensing/LICENSE.txt>
+ - the Apache License, Version 2.0
+   <LICENSE-APACHE> or
+   <http://www.apache.org/licenses/LICENSE-2.0>,
+ - or the MIT license
+   <LICENSE-MIT> or
+   <http://opensource.org/licenses/MIT>,
+
+at your option.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 ryu-1.0.23

+

URL: https://crates.io/crates/ryu/1.0.23

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: Apache-2.0 OR BSL-1.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-BOOST +
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 same-file-1.0.6

+

URL: https://crates.io/crates/same-file/1.0.6

+

Authors: Andrew Gallant <jamslam@gmail.com>

+

License: Unlicense/MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2017 Andrew Gallant
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +
+ UNLICENSE +
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org/>
+
+                
+
+ +

+ + +

📦 semver-1.0.28

+

URL: https://crates.io/crates/semver/1.0.28

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 serde-1.0.228

+

URL: https://crates.io/crates/serde/1.0.228

+

Authors: Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 serde-xml-rs-0.8.2

+

URL: https://crates.io/crates/serde-xml-rs/0.8.2

+

Authors: Ingvar Stepanyan <me@rreverser.com>, William Bartlett <bartlettstarman@gmail.com>

+

License: MIT

+ + +

Notices: + +

+ LICENSE +
+MIT License
+
+Copyright (c) 2017 Ingvar Stepanyan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 serde_core-1.0.228

+

URL: https://crates.io/crates/serde_core/1.0.228

+

Authors: Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 serde_derive-1.0.228

+

URL: https://crates.io/crates/serde_derive/1.0.228

+

Authors: Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 serde_json-1.0.149

+

URL: https://crates.io/crates/serde_json/1.0.149

+

Authors: Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 serde_with-3.18.0

+

URL: https://crates.io/crates/serde_with/3.18.0

+

Authors: Jonas Bushart, Marcin Kaźmierczak

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 serde_with_macros-3.18.0

+

URL: https://crates.io/crates/serde_with_macros/3.18.0

+

Authors: Jonas Bushart

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 serde_yaml-0.8.26

+

URL: https://crates.io/crates/serde_yaml/0.8.26

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 shlex-1.3.0

+

URL: https://crates.io/crates/shlex/1.3.0

+

Authors: comex <comexk@gmail.com>, Fenhl <fenhl@fenhl.net>, Adrian Taylor <adetaylor@chromium.org>, Alex Touchet <alextouchet@outlook.com>, Daniel Parks <dp+git@oxidized.org>, Garrett Berg <googberg@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+Copyright 2015 Nicholas Allegra (comex).
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2015 Nicholas Allegra (comex).
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 strsim-0.11.1

+

URL: https://crates.io/crates/strsim/0.11.1

+

Authors: Danny Guo <danny@dannyguo.com>, maxbachmann <oss@maxbachmann.de>

+

License: MIT

+ + +

Notices: + +

+ LICENSE +
+The MIT License (MIT)
+
+Copyright (c) 2015 Danny Guo
+Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
+Copyright (c) 2018 Akash Kurdekar
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 syn-2.0.117

+

URL: https://crates.io/crates/syn/2.0.117

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 syscalls-0.6.18

+

URL: https://crates.io/crates/syscalls/0.6.18

+

Authors: Jason White <rust@jasonwhite.io>, Baojun Wang <wangbj@gmail.com>

+

License: BSD-2-Clause

+ + +

Notices: + +

+ LICENSE +
+The below Copyright and License apply uniformly to all files in this
+repository, unless a different copyright/license is mentioned
+explicitly.
+
+Copyright (c) 2020-2021, Jason White
+Copyright (c) 2018-2019, Trustees of Indiana University
+    ("University Works" via Baojun Wang)
+Copyright (c) 2018-2019, Ryan Newton
+    ("Traditional Works of Scholarship")
+
+All rights reserved.
+
+BSD 2-Clause License
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+                
+
+ +

+ + +

📦 tempfile-3.27.0

+

URL: https://crates.io/crates/tempfile/3.27.0

+

Authors: Steven Allen <steven@stebalien.com>, The Rust Project Developers, Ashley Mannix <ashleymannix@live.com.au>, Jason White <me@jasonwhite.io>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015 Steven Allen
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 termcolor-1.4.1

+

URL: https://crates.io/crates/termcolor/1.4.1

+

Authors: Andrew Gallant <jamslam@gmail.com>

+

License: Unlicense OR MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2015 Andrew Gallant
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +
+ UNLICENSE +
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org/>
+
+                
+
+ +

+ + +

📦 thiserror-2.0.18

+

URL: https://crates.io/crates/thiserror/2.0.18

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 thiserror-impl-2.0.18

+

URL: https://crates.io/crates/thiserror-impl/2.0.18

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 unicode-ident-1.0.24

+

URL: https://crates.io/crates/unicode-ident/1.0.24

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: (MIT OR Apache-2.0) AND Unicode-3.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +
+ LICENSE-UNICODE +
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 1991-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+                
+
+ +

+ + +

📦 unicode-xid-0.2.6

+

URL: https://crates.io/crates/unicode-xid/0.2.6

+

Authors: erick.tryzelaar <erick.tryzelaar@gmail.com>, kwantam <kwantam@gmail.com>, Manish Goregaokar <manishsmail@gmail.com>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ COPYRIGHT +
+Licensed under the Apache License, Version 2.0
+<LICENSE-APACHE or
+http://www.apache.org/licenses/LICENSE-2.0> or the MIT
+license <LICENSE-MIT or http://opensource.org/licenses/MIT>,
+at your option. All files in the project carrying such
+notice may not be copied, modified, or distributed except
+according to those terms.
+
+                
+
+ +
+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2015 The Rust Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 unwinding-0.2.8

+

URL: https://crates.io/crates/unwinding/0.2.8

+

Authors: Gary Guo <gary@garyguo.net>

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 utf8parse-0.2.2

+

URL: https://crates.io/crates/utf8parse/0.2.2

+

Authors: Joe Wilm <joe@jwilm.com>, Christian Duerr <contact@christianduerr.com>

+

License: Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright (c) 2016 Joe Wilm
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 vex-sdk-0.27.1

+

URL: https://crates.io/crates/vex-sdk/0.27.1

+

Authors: Tropical

+

License: MIT

+ + + +

📦 walkdir-2.5.0

+

URL: https://crates.io/crates/walkdir/2.5.0

+

Authors: Andrew Gallant <jamslam@gmail.com>

+

License: Unlicense/MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2015 Andrew Gallant
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +
+ UNLICENSE +
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org/>
+
+                
+
+ +

+ + +

📦 wasip1-1.0.0

+

URL: https://crates.io/crates/wasip1/1.0.0

+

Authors:

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 wasip2-1.0.2+wasi-0.2.9

+

URL: https://crates.io/crates/wasip2/1.0.2+wasi-0.2.9

+

Authors:

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 wasip2-1.0.3+wasi-0.2.9

+

URL: https://crates.io/crates/wasip2/1.0.3+wasi-0.2.9

+

Authors:

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06

+

URL: https://crates.io/crates/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06

+

Authors:

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 wasip3-0.6.0+wasi-0.3.0-rc-2026-03-15

+

URL: https://crates.io/crates/wasip3/0.6.0+wasi-0.3.0-rc-2026-03-15

+

Authors:

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 wasm-encoder-0.244.0

+

URL: https://crates.io/crates/wasm-encoder/0.244.0

+

Authors: Nick Fitzgerald <fitzgen@gmail.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 wasm-metadata-0.244.0

+

URL: https://crates.io/crates/wasm-metadata/0.244.0

+

Authors:

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 wasmparser-0.235.0

+

URL: https://crates.io/crates/wasmparser/0.235.0

+

Authors: Yury Delendik <ydelendik@mozilla.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 wasmparser-0.244.0

+

URL: https://crates.io/crates/wasmparser/0.244.0

+

Authors: Yury Delendik <ydelendik@mozilla.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 wasmprinter-0.235.0

+

URL: https://crates.io/crates/wasmprinter/0.235.0

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 winapi-util-0.1.11

+

URL: https://crates.io/crates/winapi-util/0.1.11

+

Authors: Andrew Gallant <jamslam@gmail.com>

+

License: Unlicense OR MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2017 Andrew Gallant
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+                
+
+ +
+ UNLICENSE +
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org/>
+
+                
+
+ +

+ + +

📦 windows-link-0.2.1

+

URL: https://crates.io/crates/windows-link/0.2.1

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ license-apache-2.0 +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright (c) Microsoft Corporation.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+                
+
+ +
+ license-mit +
+    MIT License
+
+    Copyright (c) Microsoft Corporation.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
+
+                
+
+ +

+ + +

📦 windows-sys-0.61.2

+

URL: https://crates.io/crates/windows-sys/0.61.2

+

Authors:

+

License: MIT OR Apache-2.0

+ + +

Notices: + +

+ license-apache-2.0 +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright (c) Microsoft Corporation.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+                
+
+ +
+ license-mit +
+    MIT License
+
+    Copyright (c) Microsoft Corporation.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
+
+                
+
+ +

+ + +

📦 wit-bindgen-0.51.0

+

URL: https://crates.io/crates/wit-bindgen/0.51.0

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 wit-bindgen-0.57.1

+

URL: https://crates.io/crates/wit-bindgen/0.57.1

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 wit-bindgen-core-0.51.0

+

URL: https://crates.io/crates/wit-bindgen-core/0.51.0

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 wit-bindgen-rust-0.51.0

+

URL: https://crates.io/crates/wit-bindgen-rust/0.51.0

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 wit-bindgen-rust-macro-0.51.0

+

URL: https://crates.io/crates/wit-bindgen-rust-macro/0.51.0

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-Apache-2.0_WITH_LLVM-exception +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+
+                
+
+ +
+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + +

📦 wit-component-0.244.0

+

URL: https://crates.io/crates/wit-component/0.244.0

+

Authors: Peter Huene <peter@huene.dev>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 wit-parser-0.244.0

+

URL: https://crates.io/crates/wit-parser/0.244.0

+

Authors: Alex Crichton <alex@alexcrichton.com>

+

License: Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT

+ + + +

📦 xml-1.2.1

+

URL: https://crates.io/crates/xml/1.2.1

+

Authors: Vladimir Matveev <vmatveev@citrine.cc>, Kornel (https://github.com/kornelski)

+

License: MIT

+ + +

Notices: + +

+ LICENSE +
+The MIT License (MIT)
+
+Copyright (c) 2014 Vladimir Matveev
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 yaml-rust-0.4.5

+

URL: https://crates.io/crates/yaml-rust/0.4.5

+

Authors: Yuheng Chen <yuhengchen@sensetime.com>

+

License: MIT/Apache-2.0

+ + +

Notices: + +

+ LICENSE-APACHE +
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                
+
+ +
+ LICENSE-MIT +
+The MIT License (MIT)
+
+Copyright (c) 2015 Chen Yuheng
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+                
+
+ +

+ + +

📦 zerocopy-0.8.48

+

URL: https://crates.io/crates/zerocopy/0.8.48

+

Authors: Joshua Liebow-Feeser <joshlf@google.com>, Jack Wrenn <jswrenn@amazon.com>

+

License: BSD-2-Clause OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2023 The Fuchsia Authors
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-BSD +
+Copyright 2019 The Fuchsia Authors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2023 The Fuchsia Authors
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+                
+
+ +

+ + +

📦 zerocopy-derive-0.8.48

+

URL: https://crates.io/crates/zerocopy-derive/0.8.48

+

Authors: Joshua Liebow-Feeser <joshlf@google.com>, Jack Wrenn <jswrenn@amazon.com>

+

License: BSD-2-Clause OR Apache-2.0 OR MIT

+ + +

Notices: + +

+ LICENSE-APACHE +
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2023 The Fuchsia Authors
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                
+
+ +
+ LICENSE-BSD +
+Copyright 2019 The Fuchsia Authors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+                
+
+ +
+ LICENSE-MIT +
+Copyright 2023 The Fuchsia Authors
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+                
+
+ +

+ + +

📦 zmij-1.0.21

+

URL: https://crates.io/crates/zmij/1.0.21

+

Authors: David Tolnay <dtolnay@gmail.com>

+

License: MIT

+ + +

Notices: + +

+ LICENSE-MIT +
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+                
+
+ +

+ + + + \ No newline at end of file From e3af76f81fc2b450d6b8db5c2978d1e241b51ba5 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 23:00:56 +0900 Subject: [PATCH 79/97] =?UTF-8?q?fix(layer):=20=E6=A2=B1=E5=8C=85=E3=81=AE?= =?UTF-8?q?=E5=89=8D=E3=81=AB=20rustc=20=E3=81=AE=20LLVM=20=E3=81=AE?= =?UTF-8?q?=E7=89=88=E3=82=82=20LLVM=5FVERSION=20=E3=81=A8=E7=85=A7?= =?UTF-8?q?=E3=82=89=E3=81=97=E5=90=88=E3=82=8F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit libunwind と crtbegin/crtend の表示(scripts/licenses/llvm-22.1.8/)は、 Rust が同梱する LLVM の版に合わせてある。梱包の前の検査は、rustc の版だけを 見ていた。Rust を上げたときに RUST_VERSION と rust-*/ だけを更新すると、 古い LLVM の表示のまま梱包できた。 - rustc -vV の release と LLVM version を、RUST_VERSION と LLVM_VERSION に 照らし合わせる。どちらかが違えば、ビルドの前に止まる - musl の版は rustc から読めないため、コメントで見直しを求める - テストに、rustc の版と LLVM の版がそれぞれ違うときに、何も作らずに止まることを 加えた - README の License 節に書いた --- README.md | 2 +- scripts/build-layer.mts | 16 ++++++++++------ scripts/build-layer.test.mts | 25 ++++++++++++++++++++++++- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 802b9f7..39f9c4b 100644 --- a/README.md +++ b/README.md @@ -345,7 +345,7 @@ LLVM の libunwind と crtbegin/crtend です。 musl 1.2.5・LLVM 22.1.8 です。Rust を上げるときは、部品の原文も更新します。 次の場合、`scripts/build-layer.mts` は梱包を止めます。 -- rustc の版が違う +- rustc の版か、rustc の LLVM の版が違う - `COPYRIGHT-library.html` の写しが、rustc に同梱されたものと違う これらの表示は、`cross build` か `cargo build` でビルドしたバイナリに合わせています。 diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index aea7f16..0dce1f0 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -6,7 +6,7 @@ //! `BUILDER` で "cross build" と "cargo build" のどちらを使うかを選べる。 //! ほかのビルダーは受け付けない(理由は TOOLCHAIN_NOTICES の説明)。 //! `SKIP_BUILD=1` でビルドを省き target/ 済みのバイナリだけ梱包する。 -//! 梱包でも THIRD_PARTY_LICENSES の生成に `cargo metadata` と `rustc --version` を使う。 +//! 梱包でも THIRD_PARTY_LICENSES の生成に `cargo metadata` と `rustc -vV` を使う。 //! Node 24+ は型注釈を strip してそのまま実行する(ビルド不要)。 import { execFileSync, spawnSync } from 'node:child_process'; @@ -79,7 +79,8 @@ const LICENSE_FALLBACK: Record = { /// BUILDER で受け付けない。 /// 本文は source の版から scripts/licenses/ に写した。musl と LLVM の版は、Rust の /// src/ci/docker/scripts/musl-toolchain.sh と src/llvm-project(サブモジュール)が示す。 -/// rustc の版が RUST_VERSION と違えば梱包を止める。Rust を上げたら、ここと本文を見直す。 +/// rustc の版か、rustc の LLVM の版が違えば梱包を止める。musl の版は rustc から +/// 読めないため、Rust を上げたら、ここと本文を見直す。 const RUST_VERSION = '1.98.1'; const MUSL_VERSION = '1.2.5'; const LLVM_VERSION = '22.1.8'; @@ -266,11 +267,14 @@ if (builder !== undefined && !BUILDERS.includes(builder)) { } const [builderCmd, ...builderArgs] = builder?.split(' ') ?? []; -// TOOLCHAIN_NOTICES は RUST_VERSION の Rust の部品を表示する。rustc の版が違えば、ビルドの前に止める。 -const rustc = execFileSync('rustc', ['--version'], { cwd: ROOT, encoding: 'utf8' }).trim(); -if (rustc.split(' ')[1] !== RUST_VERSION) { +// TOOLCHAIN_NOTICES は RUST_VERSION の Rust と、その LLVM の部品を表示する。 +// rustc の版か LLVM の版が違えば、ビルドの前に止める。 +const rustcInfo = execFileSync('rustc', ['-vV'], { cwd: ROOT, encoding: 'utf8' }); +const rustcField = (key: string) => new RegExp(`^${key}: (.*)$`, 'm').exec(rustcInfo)?.[1]; +const rustcLlvm = rustcField('LLVM version'); +if (rustcField('release') !== RUST_VERSION || rustcLlvm !== LLVM_VERSION) { console.error( - `${rustc} is not Rust ${RUST_VERSION}; update TOOLCHAIN_NOTICES and scripts/licenses/`, + `${rustcInfo.split('\n')[0]} (LLVM ${rustcLlvm}) is not Rust ${RUST_VERSION} (LLVM ${LLVM_VERSION}); update TOOLCHAIN_NOTICES and scripts/licenses/`, ); process.exit(1); } diff --git a/scripts/build-layer.test.mts b/scripts/build-layer.test.mts index 56a0c0f..26416b0 100644 --- a/scripts/build-layer.test.mts +++ b/scripts/build-layer.test.mts @@ -27,6 +27,7 @@ const constant = (name: string) => { return value; }; const RUST_VERSION = constant('RUST_VERSION'); +const LLVM_VERSION = constant('LLVM_VERSION'); const LIBRARY_NOTICE = fileURLToPath( new URL(`./licenses/rust-${RUST_VERSION}/COPYRIGHT-library.html`, import.meta.url), ); @@ -36,6 +37,7 @@ after(() => rmSync(work, { recursive: true, force: true })); interface Toolchain { release?: string; + llvm?: string; /// sysroot の share/doc/rust/COPYRIGHT-library.html。null なら置かない libraryNotice?: string | null; } @@ -60,7 +62,7 @@ function run(env: Record, toolchain: Toolchain = {}) { const tools: Record = { rustc: [ 'case "$1" in', - ` --version) echo 'rustc ${release} (fake)' ;;`, + ` -vV) printf 'rustc %s (fake)\\nrelease: %s\\nLLVM version: %s\\n' '${release}' '${release}' '${toolchain.llvm ?? LLVM_VERSION}' ;;`, ` --print) echo '${sysroot}' ;;`, ' *) exit 2 ;;', 'esac', @@ -122,6 +124,27 @@ describe('build-layer.mts', () => { } }); + it('stops when rustc is not RUST_VERSION', () => { + const r = run({ SKIP_BUILD: '1' }, { release: '0.0.0' }); + assert.equal(r.status, 1); + assert.match(r.stderr, new RegExp(`is not Rust ${RUST_VERSION}`)); + assert.equal(r.started, ''); + assert.equal(r.outDirCreated, false); + }); + + it("stops when rustc's LLVM is not LLVM_VERSION", () => { + const r = run({ SKIP_BUILD: '1' }, { llvm: '0.0.0' }); + assert.equal(r.status, 1); + assert.ok( + r.stderr.includes( + `(LLVM 0.0.0) is not Rust ${RUST_VERSION} (LLVM ${LLVM_VERSION}); update TOOLCHAIN_NOTICES`, + ), + r.stderr, + ); + assert.equal(r.started, ''); + assert.equal(r.outDirCreated, false); + }); + it('stops when COPYRIGHT-library.html differs from the one shipped with rustc', () => { for (const libraryNotice of ['another release', null]) { const r = run({ SKIP_BUILD: '1' }, { libraryNotice }); From 8b13ade8ed3df3efa3b90d01580d3a7fa7b98ece Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 23:01:38 +0900 Subject: [PATCH 80/97] =?UTF-8?q?fix(layer):=20crate=20=E3=81=AE=E3=82=B5?= =?UTF-8?q?=E3=83=96=E3=83=87=E3=82=A3=E3=83=AC=E3=82=AF=E3=83=88=E3=83=AA?= =?UTF-8?q?=E3=81=AB=E3=81=82=E3=82=8B=E3=83=A9=E3=82=A4=E3=82=BB=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E3=81=AE=E8=A1=A8=E7=A4=BA=E3=82=82=20THIRD=5FPARTY?= =?UTF-8?q?=5FLICENSES=20=E3=81=AB=E8=BC=89=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit THIRD_PARTY_LICENSES は、crate のパッケージのルートにあるライセンスの ファイルだけを載せていた。crate が別のプロジェクトから取り込んだコードの 表示は、サブディレクトリにある。ring の LICENSE が案内する src/polyfill/once_cell/LICENSE-APACHE と LICENSE-MIT は、載っていなかった。 ring と aws-lc-sys の fiat-crypto、regex-syntax の Unicode の表の表示も 同じだった(COPYRIGHT-library.html と同じ種類の漏れ)。 - パッケージの中を再帰的にたどり、ライセンスのファイルをすべて載せる。 tests・benches・examples は、バイナリに入らないので見ない。順序は コードポイント順で、同じ依存からは同じテキストになる - テストに、偽の cargo metadata と、梱包に要るファイルだけを写したリポジトリで 梱包するものを加えた。zip のエントリ、COPYRIGHT-library.html のバイト列、 サブディレクトリの表示が載り tests/ の表示が載らないことを確かめる - README の License 節と CHANGELOG に書いた --- CHANGELOG.md | 4 +- README.md | 2 + scripts/build-layer.mts | 28 ++++++++--- scripts/build-layer.test.mts | 98 +++++++++++++++++++++++++++++++++--- 4 files changed, 117 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2fd8a5..68d04dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,7 +88,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 した crate(tokio・hyper・aws-lc-rs・ring など)のライセンスと著作権表示も 入っていなかった。`THIRD_PARTY_LICENSES` は、crate のほかに、musl ターゲットで 静的リンクされる Rust 標準ライブラリ・musl libc・LLVM の libunwind と - crtbegin/crtend の表示も含む。Rust 標準ライブラリのファイルごとの表示は、 + crtbegin/crtend の表示も含む。crate の表示には、サブディレクトリにあるもの + (ring が取り込んだ once_cell と fiat-crypto、regex-syntax の Unicode の表など)も + 含む。Rust 標準ライブラリのファイルごとの表示は、 Rust に同梱の `COPYRIGHT-library.html` を、同じディレクトリにそのまま置く - **cli / construct** — pack と publish の前(`prepack`)に build を実行する。 以前は dist が無いまま、または古いまま公開されうる手順だった diff --git a/README.md b/README.md index 39f9c4b..553a500 100644 --- a/README.md +++ b/README.md @@ -333,6 +333,8 @@ Layer の zip は `share/licenses/zankyo/`(Lambda 上では `/opt/share/licens この LICENSE と `THIRD_PARTY_LICENSES`・`COPYRIGHT-library.html` を含みます。 `THIRD_PARTY_LICENSES` は、バイナリに静的リンクされるもののライセンスと著作権表示の原文です。 対象は、Rust の crate と、Rust の musl ターゲットがリンクするツールチェーンの部品です。 +crate の表示には、crate のサブディレクトリにあるものも含めます。crate が別のプロジェクトから +取り込んだコード(ring の once_cell や fiat-crypto など)の表示です。 部品は、Rust 標準ライブラリ(compiler_builtins を含む)・musl libc・ LLVM の libunwind と crtbegin/crtend です。 `COPYRIGHT-library.html` は、Rust 標準ライブラリのファイルごとの著作権表示と、 diff --git a/scripts/build-layer.mts b/scripts/build-layer.mts index 0dce1f0..4e62c94 100644 --- a/scripts/build-layer.mts +++ b/scripts/build-layer.mts @@ -148,6 +148,24 @@ const TOOLCHAIN_NOTICES: { component: string; license: string; notices: Notice[] const byCodePoint = (a: string, b: string) => (a < b ? -1 : a > b ? 1 : 0); +/// crate のパッケージの中で、バイナリに入らないディレクトリ。 +const NOT_BUILT = new Set(['tests', 'benches', 'examples']); + +/** + * crate のパッケージにあるライセンスの本文を、パッケージのルートからの相対パスで返す。 + * サブディレクトリも見る。crate が取り込んだ別のプロジェクトのコード(ring の once_cell と + * fiat-crypto、regex-syntax の Unicode の表など)の表示は、そこにあるため。 + */ +function licenseFiles(dir: string, sub = ''): string[] { + return readdirSync(join(dir, sub), { withFileTypes: true }) + .sort((a, b) => byCodePoint(a.name, b.name)) + .flatMap((e) => { + const path = sub ? `${sub}/${e.name}` : e.name; + if (e.isDirectory()) return NOT_BUILT.has(e.name) ? [] : licenseFiles(dir, path); + return LICENSE_FILE.test(e.name) && statSync(join(dir, path)).isFile() ? [path] : []; + }); +} + /** * バイナリに入る crate とツールチェーンの部品の、ライセンスと著作権表示の原文を * 1 つのテキストにまとめる。crate は zankyo から normal 依存でたどれるもの @@ -190,11 +208,7 @@ function thirdPartyLicenses(target: string): string { }; for (const c of crates) { const dir = dirname(c.manifest_path); - const files = new Set( - readdirSync(dir) - .filter((f) => LICENSE_FILE.test(f) && statSync(join(dir, f)).isFile()) - .sort(byCodePoint), - ); + const files = new Set(licenseFiles(dir)); if (c.license_file) files.add(c.license_file); const sources = [...files].map((f) => ({ label: f, path: join(dir, f) })); if (sources.length === 0) { @@ -222,7 +236,9 @@ function thirdPartyLicenses(target: string): string { `It also statically links the parts of the Rust ${RUST_VERSION} toolchain listed after`, 'them: the Rust standard library, and the musl libc and LLVM runtime code that', 'Rust ships for the musl targets.', - 'This file reproduces the license and notice files of each of them.', + 'This file reproduces the license and notice files of each of them. For a crate,', + 'these include the files in its subdirectories, which cover code it bundles from', + 'other projects.', 'A text shared by several of them appears once, under all of their names.', 'The copyright notices of the Rust standard library, for its in-tree files and its', 'out-of-tree dependencies, are in COPYRIGHT-library.html next to this file.', diff --git a/scripts/build-layer.test.mts b/scripts/build-layer.test.mts index 26416b0..9858fd9 100644 --- a/scripts/build-layer.test.mts +++ b/scripts/build-layer.test.mts @@ -1,11 +1,12 @@ -//! build-layer.mts が、ビルドと梱包の前に止まる場合を確かめる。 +//! build-layer.mts が、ビルドと梱包の前に止まる場合と、梱包(SKIP_BUILD=1)の中身を確かめる。 //! rustc・cargo・cross は PATH の先頭に置いた偽物に差し替え、本物は起動しない。 -//! 偽の cargo と cross は、起動されたことを記録して失敗する。 +//! 偽の cargo と cross は、起動されたことを記録して失敗する(cargo metadata は除く)。 import assert from 'node:assert/strict'; -import { spawnSync } from 'node:child_process'; +import { execFileSync, spawnSync } from 'node:child_process'; import { chmodSync, + cpSync, existsSync, mkdirSync, mkdtempSync, @@ -14,10 +15,11 @@ import { writeFileSync, } from 'node:fs'; import { tmpdir } from 'node:os'; -import { join } from 'node:path'; +import { dirname, join } from 'node:path'; import { after, describe, it } from 'node:test'; import { fileURLToPath } from 'node:url'; +const REPO = fileURLToPath(new URL('..', import.meta.url)); const SCRIPT = fileURLToPath(new URL('./build-layer.mts', import.meta.url)); const constant = (name: string) => { const value = new RegExp(`^const ${name} = '([^']+)';$`, 'm').exec( @@ -40,10 +42,12 @@ interface Toolchain { llvm?: string; /// sysroot の share/doc/rust/COPYRIGHT-library.html。null なら置かない libraryNotice?: string | null; + /// `cargo metadata` が出力する JSON のファイル。無ければ cargo metadata も失敗する + metadata?: string; } -/// 偽の rustc・cargo・cross を PATH に置いて build-layer.mts を実行する。 -function run(env: Record, toolchain: Toolchain = {}) { +/// 偽の rustc・cargo・cross を PATH に置いて build-layer.mts(既定はこのリポジトリのもの)を実行する。 +function run(env: Record, toolchain: Toolchain = {}, script = SCRIPT) { const dir = mkdtempSync(join(work, 'run-')); const bin = join(dir, 'bin'); const sysroot = join(dir, 'sysroot'); @@ -67,7 +71,10 @@ function run(env: Record, toolchain: Toolchain = {}) { ' *) exit 2 ;;', 'esac', ].join('\n'), - cargo: `echo "cargo $*" >> '${started}'; exit 1`, + cargo: [ + ...(toolchain.metadata ? [`[ "$1" = metadata ] && exec cat '${toolchain.metadata}'`] : []), + `echo "cargo $*" >> '${started}'; exit 1`, + ].join('\n'), cross: `echo "cross $*" >> '${started}'; exit 1`, }; for (const [name, body] of Object.entries(tools)) { @@ -78,7 +85,7 @@ function run(env: Record, toolchain: Toolchain = {}) { const inherited = Object.fromEntries( Object.entries(process.env).filter(([key]) => !['BUILDER', 'SKIP_BUILD'].includes(key)), ); - const r = spawnSync(process.execPath, [SCRIPT], { + const r = spawnSync(process.execPath, [script], { env: { ...inherited, PATH: `${bin}:${process.env.PATH}`, @@ -91,6 +98,7 @@ function run(env: Record, toolchain: Toolchain = {}) { return { status: r.status, stderr: r.stderr, + outDir: out, outDirCreated: existsSync(out), started: existsSync(started) ? readFileSync(started, 'utf8') : '', }; @@ -160,3 +168,77 @@ describe('build-layer.mts', () => { } }); }); + +describe('build-layer.mts packaging (SKIP_BUILD=1)', () => { + it('packs COPYRIGHT-library.html, and the license files in the subdirectories of a crate', () => { + // 梱包に要るファイルだけを持つリポジトリの写しと、ビルド済みの体のバイナリを作る + const root = mkdtempSync(join(work, 'repo-')); + for (const path of ['scripts/build-layer.mts', 'scripts/licenses', 'LICENSE', 'proxy/layer']) { + cpSync(join(REPO, path), join(root, path), { recursive: true }); + } + const binary = join(root, 'target/x86_64-unknown-linux-musl/release/zankyo'); + mkdirSync(dirname(binary), { recursive: true }); + writeFileSync(binary, 'zankyo'); + // 別のプロジェクトのコードを取り込み、その表示をサブディレクトリに持つ crate + const crate = join(root, 'registry/vendoring-1.0.0'); + const files: Record = { + 'LICENSE-MIT': 'vendoring: its own license', + 'src/vendored/LICENSE': 'vendored code: the license of the project it came from', + 'tests/data/LICENSE': 'test data: not built into the binary', + }; + for (const [path, text] of Object.entries(files)) { + mkdirSync(dirname(join(crate, path)), { recursive: true }); + writeFileSync(join(crate, path), text); + } + const zankyo = 'path+file:///zankyo#0.1.0'; + const vendoring = 'registry+https://github.com/rust-lang/crates.io-index#vendoring@1.0.0'; + const pkg = (id: string, name: string, dir: string) => ({ + id, + name, + version: id.endsWith('1.0.0') ? '1.0.0' : '0.1.0', + license: 'MIT', + license_file: null, + repository: null, + manifest_path: join(dir, 'Cargo.toml'), + }); + const metadata = join(root, 'metadata.json'); + writeFileSync( + metadata, + JSON.stringify({ + packages: [pkg(zankyo, 'zankyo', join(root, 'proxy')), pkg(vendoring, 'vendoring', crate)], + workspace_members: [zankyo], + resolve: { + nodes: [ + { id: zankyo, deps: [{ pkg: vendoring, dep_kinds: [{ kind: null }] }] }, + { id: vendoring, deps: [] }, + ], + }, + }), + ); + + const r = run({ SKIP_BUILD: '1' }, { metadata }, join(root, 'scripts/build-layer.mts')); + assert.equal(r.status, 0, r.stderr); + const zip = join(r.outDir, 'zankyo-x86_64.zip'); + const entry = (path: string) => + execFileSync('unzip', ['-p', zip, path], { maxBuffer: 64 * 1024 * 1024 }); + assert.deepEqual(execFileSync('unzip', ['-Z1', zip], { encoding: 'utf8' }).split('\n'), [ + 'bin/zankyo', + 'extensions/zankyo', + 'zankyo-wrapper', + 'share/licenses/zankyo/LICENSE', + 'share/licenses/zankyo/THIRD_PARTY_LICENSES', + 'share/licenses/zankyo/COPYRIGHT-library.html', + '', + ]); + assert.ok( + entry('share/licenses/zankyo/COPYRIGHT-library.html').equals(readFileSync(LIBRARY_NOTICE)), + ); + const thirdParty = entry('share/licenses/zankyo/THIRD_PARTY_LICENSES').toString('utf8'); + assert.match(thirdParty, /^vendoring 1\.0\.0: LICENSE-MIT\n=+\n\nvendoring: its own license$/m); + assert.match( + thirdParty, + /^vendoring 1\.0\.0: src\/vendored\/LICENSE\n=+\n\nvendored code: the license of the project it came from$/m, + ); + assert.doesNotMatch(thirdParty, /test data/); + }); +}); From dca7055d729b377b792f2d1273face9824bdc5bd Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 23:02:10 +0900 Subject: [PATCH 81/97] =?UTF-8?q?docs(readme):=20scripts=20=E3=81=AE?= =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=82=92=20pnpm=20test=20=E3=81=8C?= =?UTF-8?q?=E5=AE=9F=E8=A1=8C=E3=81=97=E3=80=81zip=20=E3=81=A8=20unzip=20?= =?UTF-8?q?=E3=82=92=E4=BD=BF=E3=81=86=E3=81=93=E3=81=A8=E3=82=92=E6=9B=B8?= =?UTF-8?q?=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 553a500..202ccd1 100644 --- a/README.md +++ b/README.md @@ -265,7 +265,7 @@ cli/ # TypeScript CLI (node --test、AWS SDK v3、引数は node:util) construct/ # CDK construct (aws-cdk-lib v2、SAR 参照 + bucket/IAM 配線) examples/ # デモスタック(handler error / timeout / init error) sar/ # SAR 公開用 SAM テンプレート -scripts/ # build-layer.mts(musl 静的バイナリ → layer zip)、check-versions.mts(版の一致) +scripts/ # build-layer.mts(musl 静的バイナリ → layer zip)とそのテスト、check-versions.mts(版の一致) SPEC.md # 仕様書(決定事項・スコープ外・Open Questions) RELEASING.md # リリースの手順(SAR・npm・GitHub Release) ``` @@ -285,7 +285,9 @@ cargo fmt --all -- --check && cargo clippy --locked --workspace --all-targets -- (例: `s3.Bucket` を `s3.IBucket` に代入できない)。 テストは `node --test`(外部サービス不要)。 `scripts/*.mts` は Node が型を除去して直接実行します。型は `pnpm typecheck` が - `scripts/tsconfig.json` で検査します。 + `scripts/tsconfig.json` で検査します。`scripts/*.test.mts` も `pnpm test` が実行します。 + build-layer.mts のテストは、rustc と cargo を偽物に差し替えます。 + 梱包の中身を確かめるため、`zip` と `unzip` は本物を使います。 - Rust: ロジック(scrub/record/config/inflight)は IO と分離した ユニットテスト。proxy/extension 経路はモック Runtime API/S3 への 統合テスト(`proxy/tests/`)で検証。 From 8564317369d18ad25bc55ee3dcf3ef1fc03bbe85 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 23:35:19 +0900 Subject: [PATCH 82/97] =?UTF-8?q?fix(proxy):=20external=20extension=20?= =?UTF-8?q?=E3=82=92=20Extensions=20API=20=E3=81=AE=E4=B8=80=E6=99=82?= =?UTF-8?q?=E7=9A=84=E3=81=AA=E5=A4=B1=E6=95=97=E3=81=A7=20SHUTDOWN=20?= =?UTF-8?q?=E5=89=8D=E3=81=AB=E7=B5=82=E4=BA=86=E3=81=95=E3=81=9B=E3=81=AA?= =?UTF-8?q?=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit external extension(agent)は、/register が 1 回失敗しただけで終了していた。 /event/next も、連続失敗が ZANKYO_EXT_MAX_POLL_FAILURES に達すると終了した。 どちらも終了コードは 0 だった。SHUTDOWN の前に終わった extension を、Lambda は 終了コードを問わず Extension.Crash とみなす。Init の失敗や、実行環境の 再起動につながる。記録する agent と記録しない agent の両方が同じだった。 - 登録は ZANKYO_REGISTER_TIMEOUT_MS の時間内で、ZANKYO_EXT_RETRY_MS の間隔で 再試行する。4xx(登録の拒否)と 500 は、送り直しても通らないのですぐに諦める。 1 回の要求の上限は残り時間とし、応答の無い要求は送り直さない - /event/next は SHUTDOWN まで再試行を続ける。諦めるのは、Lambda が 500 を 返したときと、Runtime API に接続できない状態が ZANKYO_EXT_MAX_POLL_FAILURES 回続いたときだけ。500 は、公式の Extensions API リファレンスが 「Container error. Non-recoverable state. Extension should exit promptly.」 と定める。403 などは再試行する(公式 RIE の実装では、接続が切れた後の /event/next は、次のイベントまで 403 で断られる) - 警告は連続失敗の 1・2・4・8… 回目だけに出す - SHUTDOWN の前に抜けたときは、agent の終了コードを 1 にする - /extension/init/error と /extension/exit/error は送らない。どちらも登録で 得る識別子が要り、終了する場面では API が使えない - テストを加えた。登録の一時的な失敗を再試行して SHUTDOWN まで進むこと。 /event/next の失敗が上限を超えて続いても、SHUTDOWN の前に終了しないこと。 登録の 403 と /event/next の 500 では、再試行せずに終了コード 1 で抜けること。 Runtime API に接続できないときは、上限の回数で諦めること - README・ARCHITECTURE・SPEC・CHANGELOG と、設定の説明を直した --- ARCHITECTURE.md | 5 + CHANGELOG.md | 11 ++ README.md | 17 ++- SPEC.md | 2 +- proxy/src/config.rs | 17 +-- proxy/src/extension.rs | 233 ++++++++++++++++++++++++++++++-------- proxy/src/orchestrate.rs | 30 +++-- proxy/tests/proxy_it.rs | 237 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 487 insertions(+), 65 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index f2fe46e..23fbeba 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -35,6 +35,11 @@ proxy が即削除する(残存=未完の証跡)。 agent は passthrough 判定でも終了せず、`SHUTDOWN` だけを購読して 待機する。登録前や `SHUTDOWN` 前に extension が終了すると、 終了コードに関係なく platform が Init を失敗させるため。 +同じ理由で、register と `/event/next` の一時的な失敗は再試行し、 +`SHUTDOWN` まで終了しない。終了するのは、登録の 4xx 拒否・500 +(公式リファレンスが「回復不能。速やかに終了」と定める)・ +Runtime API への接続不能の継続(`ZANKYO_EXT_MAX_POLL_FAILURES` 回)の +ときだけで、終了コードは 1 にする。 ## 品質・保守性の不変条件 diff --git a/CHANGELOG.md b/CHANGELOG.md index 68d04dc..0313ac4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 source map は tarball に含まれない `src/` を指していた - **sar** — SAR の `SourceCodeUrl` を、リポジトリのルートから、その版のタグ (`/tree/v<版>`)に変えた。SAR の各版から、対応するソースをたどれる +- **proxy** — `ZANKYO_EXT_MAX_POLL_FAILURES` は、Runtime API に接続できない状態が + 続いた回数だけを数える。応答が返る失敗(500 を除く)は数えず、`SHUTDOWN` まで + 再試行する。`ZANKYO_EXT_RETRY_MS` は、登録を再試行する間隔にも使う - **layer** — `scripts/build-layer.mts` の `BUILDER` は、`cross build` と `cargo build` だけを受け付ける。`cargo zigbuild` などは、zig が持つ musl libc と CRT をリンクしうる。その場合、Layer のライセンス表示と中身が食い違う @@ -34,6 +37,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 external extension が register せずに終了していた。Lambda はこれを Extension.Crash とみなし、関数の Init を失敗させうる。`SHUTDOWN` だけを 購読して待機するようにした +- **proxy** — external extension(agent)が、Extensions API の一時的な失敗で + `SHUTDOWN` の前に終了していた。登録は 1 回の失敗で、`/event/next` は連続失敗が + `ZANKYO_EXT_MAX_POLL_FAILURES` に達すると、終了コード 0 で終わっていた。 + Lambda はこれを Extension.Crash とみなし、Init の失敗や実行環境の再起動につながる。 + 登録は `ZANKYO_REGISTER_TIMEOUT_MS` の時間内で再試行し、`/event/next` は + `SHUTDOWN` まで再試行を続ける。終了するのは、登録の 4xx 拒否・Lambda の 500 + (AWS が回復不能と定める)・Runtime API への接続不能の継続のときだけで、 + 終了コードは 1 にした - **proxy** — 空文字の `ZANKYO_SSM_PARAM` を未設定として扱う。以前は init の たびに空の名前で SSM を呼び、起動を遅らせていた - **proxy** — external extension 構成で、呼び出し中にランタイムがクラッシュすると、 diff --git a/README.md b/README.md index 202ccd1..fa8c1cf 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,17 @@ agent は `SHUTDOWN` だけを購読して待機します。登録前や `SHUTDO 終了した extension は、終了コードに関係なく Lambda が Init 失敗として 扱うためです。 +同じ理由で、agent は Extensions API の一時的な失敗では終了しません。 +登録は `ZANKYO_REGISTER_TIMEOUT_MS` の時間内で再試行します。 +`/event/next` は、`SHUTDOWN` を受けるまで `ZANKYO_EXT_RETRY_MS` の間隔で再試行します。 +記録しない状態では、設定が壊れている場合に備えて、これらの既定値を使います。 +`SHUTDOWN` の前に終了するのは、次の 3 つの場合だけです。このときの終了コードは 1 です。 + +- 登録が 4xx で拒否された +- Lambda が 500 を返した(AWS はこれを回復不能とし、速やかな終了を求めています。 + [Extensions API リファレンス](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html)) +- Runtime API に接続できない状態が `ZANKYO_EXT_MAX_POLL_FAILURES` 回続いた + ## 使い方 ### 1. Layer の導入 @@ -152,9 +163,9 @@ CDK construct はこの権限を付けないので、別に付与してくださ | `ZANKYO_SPILL_MAX_AGE_SECS` | `604800` | spill ファイルの有効期間。超過分は再送せず破棄 | | `ZANKYO_MAX_BODY_KB` | `8192` | Runtime API が受け付けるボディ上限(KiB) | | `ZANKYO_EXT_BODY_KB` | `1024` | Extensions API イベントボディ上限(KiB) | -| `ZANKYO_REGISTER_TIMEOUT_MS` | `10000` | extension 登録の上限時間 | -| `ZANKYO_EXT_RETRY_MS` | `500` | event/next ポーリング失敗時の再試行間隔 | -| `ZANKYO_EXT_MAX_POLL_FAILURES` | `120` | ポーリング連続失敗の上限(超過でループを抜ける) | +| `ZANKYO_REGISTER_TIMEOUT_MS` | `10000` | extension 登録の上限時間(一時的な失敗の再試行を含む) | +| `ZANKYO_EXT_RETRY_MS` | `500` | Extensions API(登録・event/next)が失敗したときの再試行間隔 | +| `ZANKYO_EXT_MAX_POLL_FAILURES` | `120` | Runtime API に接続できない状態が続いたときの再試行回数の上限(超過で agent が終了する)。応答が返る失敗は数えない | | `ZANKYO_SSM_TIMEOUT_MS` | `2000` | SSM get_parameter の上限時間。Lambda の Init 上限(10 秒)に含まれる | | `ZANKYO_FORWARD_TIMEOUT_MS` | `60000` | `/next` 以外の上流転送の上限時間 | | `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ(passthrough) | diff --git a/SPEC.md b/SPEC.md index 76d635c..3a15464 100644 --- a/SPEC.md +++ b/SPEC.md @@ -36,7 +36,7 @@ Lambda Service ──Runtime API──▶ zankyo proxy (Rust, Layer) ──▶ - Layer 内の単一バイナリが **Runtime API proxy と external extension を兼務**する(起動方法でモードが分かれる)。プロセス構成とデータフローの詳細は ARCHITECTURE.md。 - proxy: exec wrapper から起動し、`AWS_LAMBDA_RUNTIME_API` を localhost の自分に向け、`/next`・`/response`・`/error`・`/init/error` を中継。 - - extension(agent): layer の `/opt/extensions/zankyo` から platform が別プロセスとして起動する(internal extension には SHUTDOWN が届かないため)。`/extension/register` して `/event/next` をポーリングし、INVOKE/SHUTDOWN(reason=timeout/failure/spindown)を受信。 + - extension(agent): layer の `/opt/extensions/zankyo` から platform が別プロセスとして起動する(internal extension には SHUTDOWN が届かないため)。`/extension/register` して `/event/next` をポーリングし、INVOKE/SHUTDOWN(reason=timeout/failure/spindown)を受信。登録と `/event/next` の一時的な失敗は再試行し、SHUTDOWN の前には終了しない(SHUTDOWN 前の終了は Extension.Crash になるため)。例外は、登録の 4xx 拒否・Lambda の 500(回復不能)・Runtime API への接続不能の継続だけ。 - **成功呼び出しは記録しない**(S3 PUT・spill なし)。`/next` のイベントは timeout 捕捉のため `/tmp` に一時ステージし、完了時に削除する。 - 失敗の定義: `/error` 呼出・`/init/error`・`/response` 内の errorType 含有・SHUTDOWN の時点で応答を返していない呼び出し(reason を問わず failureType=timeout。reason は errorContext.errorType に写す)。 - timeout 捕捉: proxy が in-flight イベントを `/tmp` の `.inflight` にステージ → SHUTDOWN を受けた extension がそれを読み、S3 へベストエフォートフラッシュ(shutdown ウィンドウ内に PutObject が完了しない場合は取りこぼす旨を README に明記)。 diff --git a/proxy/src/config.rs b/proxy/src/config.rs index 7691cd8..c30cd8f 100644 --- a/proxy/src/config.rs +++ b/proxy/src/config.rs @@ -23,12 +23,14 @@ pub const DEFAULT_MAX_BODY_KB: usize = 8192; /// Extensions API のイベントボディ上限(KiB)。通知はメタデータだけ /// なので 1MiB で十分。 pub const DEFAULT_EXT_BODY_KB: usize = 1024; -/// extension 登録の上限時間(ms)。 +/// extension 登録の上限時間(ms)。一時的な失敗の再試行もこの時間内に収める。 pub const DEFAULT_REGISTER_TIMEOUT_MS: u64 = 10_000; -/// event/next ポーリング失敗時の再試行間隔(ms)。 +/// Extensions API(register・event/next)が失敗したときの再試行間隔(ms)。 pub const DEFAULT_EXT_RETRY_MS: u64 = 500; -/// ポーリング連続失敗の上限。既定では 500ms × 120 ≒ 60 秒失敗が -/// 続いたら Extensions API の障害とみなしてループを抜ける。 +/// Extensions API に接続できない状態が続いたときの再試行回数の上限。 +/// 既定では 500ms × 120 ≒ 60 秒接続できなければ、Runtime API が無くなった +/// とみなしてループを抜ける。応答が返る失敗(500 以外)はこの回数に数えず、 +/// SHUTDOWN まで再試行を続ける。 pub const DEFAULT_EXT_MAX_POLL_FAILURES: u32 = 120; /// SSM get_parameter の上限時間(ms)。取得は子の起動と extension 登録の /// 前に待つため、Lambda の Init 上限(10 秒)を使い切らない短めの既定にする。 @@ -82,11 +84,12 @@ pub struct Config { pub max_body_kb: usize, /// Extensions API イベントボディの上限(KiB)。 pub ext_body_kb: usize, - /// extension 登録リクエストの上限時間(ms)。 + /// extension 登録の上限時間(ms)。再試行を含む。 pub register_timeout_ms: u64, - /// event/next ポーリング失敗時の再試行間隔(ms)。 + /// Extensions API(register・event/next)が失敗したときの再試行間隔(ms)。 pub ext_retry_ms: u64, - /// ポーリング連続失敗の上限。超えると extension ループを抜ける。 + /// Extensions API に接続できない状態が続いたときの再試行回数の上限。 + /// 超えると extension ループを抜ける。 pub ext_max_poll_failures: u32, /// SSM get_parameter の上限時間(ms)。 pub ssm_timeout_ms: u64, diff --git a/proxy/src/extension.rs b/proxy/src/extension.rs index 2e715fb..18d1ff8 100644 --- a/proxy/src/extension.rs +++ b/proxy/src/extension.rs @@ -4,6 +4,17 @@ //! `/event/next` をポーリングする。 //! SHUTDOWN を受けたら、reason を問わず in-flight 呼び出しを timeout レコードとして //! フラッシュする。 +//! +//! SHUTDOWN の前に終了した extension は、終了コードを問わず Extension.Crash +//! になる(Init 中なら Init の失敗。 +//! )。 +//! そのため一時的な失敗は再試行し、終了するのは回復できない場合だけにする。 +//! register と event/next の 500 は、公式の API リファレンスが「Container error. +//! Non-recoverable state. Extension should exit promptly.」と定める +//! ()。 +//! 終了の前に `/extension/init/error`・`/extension/exit/error` は送らない。 +//! どちらも登録で得る識別子が要り、終了する場面(登録の拒否・500・接続不能)では +//! API が使えないため。 use crate::config::{ Config, DEFAULT_EXT_BODY_KB, DEFAULT_EXT_MAX_POLL_FAILURES, DEFAULT_EXT_RETRY_MS, @@ -13,7 +24,7 @@ use crate::error::{Result, ZankyoError}; use crate::inflight::InFlight; use crate::proxy::{boxed_full, HttpClient}; use crate::store::Recorder; -use http::{Method, Request}; +use http::{Method, Request, StatusCode}; use http_body_util::BodyExt; use serde::Deserialize; use std::sync::Arc; @@ -22,6 +33,51 @@ use tracing::{info, warn}; const EXT_BASE: &str = "/2020-01-01/extension"; +/// Extensions API 呼び出しの失敗。再試行するかどうかを種類で決める。 +#[derive(Debug)] +enum ApiError { + /// 接続できなかった。続くなら Runtime API そのものが無い。 + Unreachable(String), + /// Lambda がエラーのステータスを返した。 + Status(StatusCode, String), + /// 途中での切断・ボディの破損・不正な JSON など。再試行で通りうる。 + Other(String), +} + +impl ApiError { + fn from_client(e: hyper_util::client::legacy::Error) -> Self { + if e.is_connect() { + Self::Unreachable(e.to_string()) + } else { + Self::Other(e.to_string()) + } + } + + /// AWS が「回復不能。速やかに終了すべき」と定める 500 か。 + fn is_container_error(&self) -> bool { + matches!(self, Self::Status(s, _) if *s == StatusCode::INTERNAL_SERVER_ERROR) + } +} + +impl std::fmt::Display for ApiError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::Unreachable(e) => write!(f, "unreachable: {e}"), + Self::Status(status, body) => write!(f, "status {status} body {body}"), + Self::Other(e) => f.write_str(e), + } + } +} + +/// エラー応答のボディを診断用に読む(platform の拒否理由が分かる)。 +async fn error_body(body: hyper::body::Incoming) -> String { + http_body_util::Limited::new(body, 4096) + .collect() + .await + .map(|c| String::from_utf8_lossy(&c.to_bytes()).into_owned()) + .unwrap_or_default() +} + #[derive(Debug, Deserialize)] pub struct ExtensionEvent { #[serde(rename = "eventType")] @@ -36,32 +92,78 @@ pub struct ExtensionEvent { /// `/extension/register`。成功すると extension identifier が返る。 /// 登録に失敗しても proxy 機能は残るので、呼び出し側は warn のみで続行する。 -/// `timeout` は実行環境の初期化を遅らせないための上限。 +/// `timeout` は再試行を含めた登録全体の上限で、実行環境の初期化を遅らせないためのもの。 +/// 一時的な失敗は `retry_delay` の間隔で再試行する(`register_events`)。 pub async fn register( client: &HttpClient, upstream_api: &str, timeout: Duration, + retry_delay: Duration, ) -> Result { - register_events(client, upstream_api, timeout, &["INVOKE", "SHUTDOWN"]).await + register_events( + client, + upstream_api, + timeout, + retry_delay, + &["INVOKE", "SHUTDOWN"], + ) + .await } +/// 登録を `timeout` の範囲で再試行する。Init は 10 秒が上限なので、 +/// 一時的な失敗(接続断・想定外のステータス)で諦めると、Lambda は Init を +/// 失敗させる。4xx(登録の拒否)と 500(回復不能)は、同じ要求を送り直しても +/// 通らないので、すぐに諦める。1 回の要求の上限は残り時間とする — +/// 応答の無いまま打ち切った要求を送り直すと、二重登録で拒否されうるため。 +/// 時刻の足し算はしない(巨大な設定値で Instant があふれて panic しないように)。 async fn register_events( client: &HttpClient, upstream_api: &str, timeout: Duration, + retry_delay: Duration, events: &[&str], ) -> Result { - let body = serde_json::to_vec(&serde_json::json!({ "events": events }))?; + let started = tokio::time::Instant::now(); + let mut attempts: u32 = 0; + loop { + attempts += 1; + let remaining = timeout.saturating_sub(started.elapsed()); + let err = match register_once(client, upstream_api, remaining, events).await { + Ok(id) => return Ok(id), + Err(e) => e, + }; + let rejected = matches!(&err, ApiError::Status(s, _) if s.is_client_error()) + || err.is_container_error(); + if rejected || timeout.saturating_sub(started.elapsed()) <= retry_delay { + return Err(ZankyoError::Upstream(format!( + "extension register failed after {attempts} attempt(s): {err}" + ))); + } + warn!(error = %err, attempts, "extension register failed; retrying"); + tokio::time::sleep(retry_delay).await; + } +} + +/// `/extension/register` を 1 回送る。 +async fn register_once( + client: &HttpClient, + upstream_api: &str, + timeout: Duration, + events: &[&str], +) -> std::result::Result { + let body = serde_json::to_vec(&serde_json::json!({ "events": events })) + .map_err(|e| ApiError::Other(e.to_string()))?; let req = Request::builder() .method(Method::POST) .uri(format!("http://{upstream_api}{EXT_BASE}/register")) .header("Lambda-Extension-Name", "zankyo") .header("content-type", "application/json") - .body(boxed_full(body))?; + .body(boxed_full(body)) + .map_err(|e| ApiError::Other(e.to_string()))?; let resp = tokio::time::timeout(timeout, client.request(req)) .await - .map_err(|_| ZankyoError::Upstream("extension register timed out".into()))? - .map_err(|e| ZankyoError::Upstream(e.to_string()))?; + .map_err(|_| ApiError::Other("extension register timed out".into()))? + .map_err(ApiError::from_client)?; let (parts, body) = resp.into_parts(); if let Some(id) = parts .headers @@ -70,47 +172,40 @@ async fn register_events( { return Ok(id.to_string()); } - // 失敗時はステータスとボディを残す(platform の拒否理由が分かる)。 - let body = http_body_util::Limited::new(body, 4096) - .collect() - .await - .map(|c| String::from_utf8_lossy(&c.to_bytes()).into_owned()) - .unwrap_or_default(); - Err(ZankyoError::Upstream(format!( - "extension register: status {} body {}", - parts.status, body - ))) + Err(ApiError::Status(parts.status, error_body(body).await)) } /// `/event/next` はイベント到着までブロックするロングポーリング。 -/// タイムアウトを付けない(イベントなし=正常な待機)。 +/// タイムアウトを付けない(イベントなし=正常な待機。AWS も付けないよう求めている)。 /// ボディは異常なサイズを読まないよう `body_limit` バイトで切る。 -pub async fn next_event( +async fn next_event( client: &HttpClient, upstream_api: &str, ext_id: &str, body_limit: usize, -) -> Result { +) -> std::result::Result { let req = Request::builder() .method(Method::GET) .uri(format!("http://{upstream_api}{EXT_BASE}/event/next")) .header("Lambda-Extension-Identifier", ext_id) - .body(boxed_full(bytes::Bytes::new()))?; - let resp = client - .request(req) - .await - .map_err(|e| ZankyoError::Upstream(e.to_string()))?; - let body = http_body_util::Limited::new(resp.into_body(), body_limit) + .body(boxed_full(bytes::Bytes::new())) + .map_err(|e| ApiError::Other(e.to_string()))?; + let resp = client.request(req).await.map_err(ApiError::from_client)?; + let (parts, body) = resp.into_parts(); + if !parts.status.is_success() { + return Err(ApiError::Status(parts.status, error_body(body).await)); + } + let body = http_body_util::Limited::new(body, body_limit) .collect() .await - .map_err(|e| ZankyoError::Upstream(format!("event body read failed: {e}")))? + .map_err(|e| ApiError::Other(format!("event body read failed: {e}")))? .to_bytes(); - Ok(serde_json::from_slice(&body)?) + serde_json::from_slice(&body).map_err(|e| ApiError::Other(format!("invalid event: {e}"))) } /// INVOKE/SHUTDOWN を受け取り続けるループ。 /// SHUTDOWN を受けたら in-flight 呼び出しをフラッシュして `true` で戻る。 -/// ポーリング断が続いて諦めた場合は `false`(timeout 捕捉だけを失う +/// Extensions API が回復不能になって諦めた場合は `false`(timeout 捕捉だけを失う /// 縮退運転であり、関数本体の継続には影響しない)。 /// INVOKE の requestId 相関は proxy 側の観測で完結するため、ここでは /// SHUTDOWN 検知のみを担う。 @@ -182,6 +277,7 @@ pub async fn run_agent(client: HttpClient, upstream_api: String, recorder: Arc &client, &upstream_api, Duration::from_millis(DEFAULT_REGISTER_TIMEOUT_MS), + limits.retry_delay, &["SHUTDOWN"], ) .await @@ -240,10 +337,12 @@ pub async fn run_passthrough_agent(client: HttpClient, upstream_api: String) -> .is_some() } -/// `/event/next` ポーリングのノブ。 +/// register と `/event/next` ポーリングのノブ。 struct PollLimits { body_limit: usize, + /// 失敗から次の試行までの間隔。 retry_delay: Duration, + /// Runtime API に接続できない状態が何回続いたら諦めるか。 max_failures: u32, } @@ -258,10 +357,16 @@ impl PollLimits { } /// SHUTDOWN が届くまで `/event/next` をポーリングする。INVOKE は読み捨てる。 -/// ネットワーク断・ボディ破損などの失敗は短い待機を挟んで再試行する — -/// ポーリングを諦めると timeout 捕捉を失うため。ただし連続失敗が上限に -/// 達したら Extensions API の障害とみなして None を返す(無限リトライで -/// zombie 化しない)。 +/// SHUTDOWN の前に抜けると Extension.Crash になるため、失敗しても +/// `retry_delay` の間隔で再試行を続ける。諦めるのは次の 2 つだけ(None を返す)。 +/// - Lambda が 500 を返した。AWS はこれを回復不能とし、速やかな終了を求めている。 +/// - Runtime API に接続できない状態が `max_failures` 回続いた。SHUTDOWN を +/// 送る相手がもう無い(無限リトライで zombie 化しない)。 +/// +/// 403 などは再試行する。公式 RIE(rapid)の実装では、前の `/event/next` の +/// 接続が切れた extension は待機中のままで、次のイベントを配るまで +/// `/event/next` を 403 で断られる。 +/// 警告は連続失敗の 1・2・4・8… 回目だけに出し、ログを溢れさせない。 async fn wait_for_shutdown( client: &HttpClient, upstream_api: &str, @@ -269,20 +374,37 @@ async fn wait_for_shutdown( limits: &PollLimits, ) -> Option { let mut failures: u32 = 0; + let mut unreachable: u32 = 0; loop { - match next_event(client, upstream_api, ext_id, limits.body_limit).await { + let err = match next_event(client, upstream_api, ext_id, limits.body_limit).await { Ok(ev) if ev.event_type == "SHUTDOWN" => return Some(ev), - Ok(_) => failures = 0, - Err(e) => { - failures += 1; - if failures >= limits.max_failures { - warn!(failures, "extension event poll keeps failing; giving up"); - return None; - } - warn!(error = %e, failures, "extension event poll failed; retrying"); - tokio::time::sleep(limits.retry_delay).await; + Ok(_) => { + failures = 0; + unreachable = 0; + continue; } + Err(e) => e, + }; + if err.is_container_error() { + warn!(error = %err, "extensions API reported a non-recoverable error; exiting"); + return None; + } + failures = failures.saturating_add(1); + unreachable = match err { + ApiError::Unreachable(_) => unreachable + 1, + _ => 0, + }; + if unreachable >= limits.max_failures { + warn!( + failures = unreachable, + "extensions API is unreachable; giving up" + ); + return None; } + if failures.is_power_of_two() { + warn!(error = %err, failures, "extension event poll failed; retrying"); + } + tokio::time::sleep(limits.retry_delay).await; } } @@ -352,4 +474,27 @@ mod tests { assert_eq!(ev.shutdown_reason.as_deref(), Some("timeout")); assert_eq!(ev.deadline_ms, Some(1)); } + + #[tokio::test] + async fn poll_gives_up_when_runtime_api_is_gone() { + // 閉じたポートには接続できない。Runtime API が無いとみなし、 + // 上限の回数だけ試して諦める(接続できない相手を待ち続けない) + let addr = std::net::TcpListener::bind("127.0.0.1:0") + .unwrap() + .local_addr() + .unwrap() + .to_string(); + let limits = PollLimits { + body_limit: 1024, + retry_delay: Duration::from_millis(1), + max_failures: 3, + }; + let polled = tokio::time::timeout( + Duration::from_secs(5), + wait_for_shutdown(&crate::proxy::new_client(), &addr, "ext-id", &limits), + ) + .await + .expect("must give up once the runtime API is unreachable"); + assert!(polled.is_none()); + } } diff --git a/proxy/src/orchestrate.rs b/proxy/src/orchestrate.rs index 204b0f5..fa989e2 100644 --- a/proxy/src/orchestrate.rs +++ b/proxy/src/orchestrate.rs @@ -38,6 +38,8 @@ const EXTERNAL_EXT_PATH: &str = "/opt/extensions/zankyo"; /// passthrough でもすぐには終了しない: SHUTDOWN 前に extension が /// 終わると、終了コードに関係なく platform は Init を失敗させる。 /// 記録しない場合も登録して SHUTDOWN まで待つ(fail-open)。 +/// SHUTDOWN の前に戻るのは、登録を拒否されたときと、Extensions API が +/// 回復不能になったときだけ。その場合は 1 を返し、正常終了と区別する。 pub async fn run_agent() -> u8 { let env_map: HashMap = std::env::vars().collect(); run_agent_with_env(&env_map).await @@ -46,7 +48,7 @@ pub async fn run_agent() -> u8 { /// `run_agent` の本体。env を引数で受け、起動判定からの配線を /// プロセスの環境変数に触れずに検証できるようにする。 pub async fn run_agent_with_env(env_map: &HashMap) -> u8 { - match setup::resolve_plan(env_map).await { + let completed = match setup::resolve_plan(env_map).await { StartupPlan::Record(plan) => { let RecordPlan { cfg, @@ -54,15 +56,21 @@ pub async fn run_agent_with_env(env_map: &HashMap) -> u8 { upstream, } = *plan; let recorder = Arc::new(setup::build_recorder(&shared, cfg, env_map)); - extension::run_agent(new_client(), upstream, recorder).await; + extension::run_agent(new_client(), upstream, recorder).await } - StartupPlan::Passthrough => { - if let Some(upstream) = env_map.get("AWS_LAMBDA_RUNTIME_API") { - extension::run_passthrough_agent(new_client(), upstream.clone()).await; + StartupPlan::Passthrough => match env_map.get("AWS_LAMBDA_RUNTIME_API") { + Some(upstream) => { + extension::run_passthrough_agent(new_client(), upstream.clone()).await } - } + // main.rs はこの変数があるときだけ agent を起動する。無ければ待つ相手もいない + None => true, + }, + }; + if completed { + 0 + } else { + 1 } - 0 } /// 実行本体。子プロセスの終了コードをそのまま返す。 @@ -247,7 +255,8 @@ async fn start_extension( inflight: Arc, recorder: Arc, ) -> bool { - match extension::register(&client, &upstream, register_timeout).await { + let retry = std::time::Duration::from_millis(recorder.config().ext_retry_ms); + match extension::register(&client, &upstream, register_timeout, retry).await { Ok(ext_id) => { info!("registered as internal extension"); extension::run_event_loop(client, upstream, ext_id, inflight, recorder).await @@ -261,8 +270,9 @@ async fn start_extension( /// 子の終了コードをそのまま返す。SHUTDOWN フラッシュ後に extension 側が /// 先に終わる場合は正常終了(0)として抜ける。ただし extension が -/// SHUTDOWN 以外の理由(ポーリング断等)で終わった場合は、子プロセスの -/// 完了を待ち続ける — ここで抜けると関数実行中に子を殺してしまう。 +/// SHUTDOWN 以外の理由(登録の拒否・Extensions API の回復不能なエラー等)で +/// 終わった場合は、子プロセスの完了を待ち続ける — ここで抜けると +/// 関数実行中に子を殺してしまう。 /// `shutdown` が None(プロセス内に extension が無い)なら子だけを待つ。 /// 戻り値の Some(handle) は「子が先に終わり extension が生存中」の場合で、 /// 呼び出し側が SHUTDOWN 到着を短く待つ判断に使う。 diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index 1dfcd19..08b9190 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -1157,6 +1157,243 @@ async fn passthrough_agent_stays_registered_until_shutdown() { } } +/// Extensions API モックが返す失敗の応答(ステータスとボディ)。 +type Fault = (StatusCode, &'static str); + +/// 失敗を差し込まない。 +const NO_FAULTS: &[Fault] = &[]; +/// 一時的な登録失敗(Lambda が文書化していない 5xx)。 +const REGISTER_UNAVAILABLE: &[Fault] = &[ + (StatusCode::SERVICE_UNAVAILABLE, ""), + (StatusCode::BAD_GATEWAY, ""), +]; +/// 登録の拒否。同じ要求を送り直しても通らない。 +const REGISTER_FORBIDDEN: &[Fault] = &[( + StatusCode::FORBIDDEN, + r#"{"errorType":"Extension.InvalidExtensionState"}"#, +)]; +/// 再試行で通りうる event/next の失敗。公式 RIE(rapid)の実装では、前の +/// ロングポーリングの接続が切れた extension は、次のイベントが配られるまで 403 で断られる。 +const POLL_GLITCHES: &[Fault] = &[ + ( + StatusCode::FORBIDDEN, + r#"{"errorType":"Extension.InvalidExtensionState"}"#, + ), + (StatusCode::BAD_GATEWAY, ""), + (StatusCode::OK, "not json"), +]; +/// AWS が「回復不能。速やかに終了すべき」と定める 500。 +const POLL_CONTAINER_ERROR: &[Fault] = &[( + StatusCode::INTERNAL_SERVER_ERROR, + r#"{"errorType":"Extension.InternalServerError"}"#, +)]; + +/// 失敗を差し込める Extensions API モックと、その受信回数。 +struct FaultyExtApi { + addr: String, + registers: Arc, + polls: Arc, + /// 立てると、以降の `/event/next` に SHUTDOWN を返す。 + release: Arc, +} + +impl FaultyExtApi { + fn registers(&self) -> usize { + self.registers.load(std::sync::atomic::Ordering::SeqCst) + } + + fn polls(&self) -> usize { + self.polls.load(std::sync::atomic::Ordering::SeqCst) + } + + fn release(&self) { + self.release + .store(true, std::sync::atomic::Ordering::SeqCst); + } +} + +/// `/register` は最初の `register_faults.len()` 回をその応答で断り、以降は +/// 識別子 `ext-test` を払い出す。`/event/next` は SHUTDOWN の解放 +/// (`release`)まで `next_faults` を順に繰り返し返す。`next_faults` が +/// 空なら最初から SHUTDOWN を返す。 +async fn spawn_faulty_extensions_api( + register_faults: &'static [Fault], + next_faults: &'static [Fault], +) -> FaultyExtApi { + use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; + let registers = Arc::new(AtomicUsize::new(0)); + let polls = Arc::new(AtomicUsize::new(0)); + let release = Arc::new(AtomicBool::new(next_faults.is_empty())); + let (addr, _hits) = spawn_mock({ + let (registers, polls, release) = (registers.clone(), polls.clone(), release.clone()); + move |_m, path, _h, _b| { + let reply = |(status, body): Fault| { + Response::builder() + .status(status) + .body(boxed_full(Bytes::from_static(body.as_bytes()))) + .unwrap() + }; + if path == "/2020-01-01/extension/register" { + let n = registers.fetch_add(1, Ordering::SeqCst); + if let Some(fault) = register_faults.get(n) { + return reply(*fault); + } + return Response::builder() + .status(StatusCode::OK) + .header("lambda-extension-identifier", "ext-test") + .body(boxed_full(Bytes::new())) + .unwrap(); + } + if path == "/2020-01-01/extension/event/next" { + let n = polls.fetch_add(1, Ordering::SeqCst); + if !release.load(Ordering::SeqCst) { + return reply(next_faults[n % next_faults.len()]); + } + return ok_body(json!({ + "eventType": "SHUTDOWN", + "shutdownReason": "timeout", + "deadlineMs": OffsetDateTime::now_utc().unix_timestamp() * 1000 + 60_000 + })); + } + reply((StatusCode::NOT_FOUND, "")) + } + }) + .await; + FaultyExtApi { + addr, + registers, + polls, + release, + } +} + +/// 記録しない(passthrough の)agent の env。ノブは既定値が使われる。 +fn passthrough_agent_env(api: &FaultyExtApi) -> HashMap { + HashMap::from([ + ("ZANKYO_DISABLED".to_string(), "1".to_string()), + ("AWS_LAMBDA_RUNTIME_API".to_string(), api.addr.clone()), + ]) +} + +#[tokio::test] +async fn agents_retry_register_until_accepted() { + // 一時的な登録失敗で終了すると、Lambda は Extension.Crash として Init を + // 失敗させる。登録の上限時間内で再試行して SHUTDOWN まで進むこと + let api = spawn_faulty_extensions_api(REGISTER_UNAVAILABLE, NO_FAULTS).await; + let (s3_addr, _s3) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let (recorder, _spill) = recorder_with_env(&s3_addr, &[("ZANKYO_EXT_RETRY_MS", "1")]); + let done = tokio::time::timeout( + Duration::from_secs(5), + zankyo::extension::run_agent(new_client(), api.addr.clone(), recorder), + ) + .await + .expect("recording agent must register and reach SHUTDOWN"); + assert!(done, "recording agent"); + assert_eq!(api.registers(), REGISTER_UNAVAILABLE.len() + 1); + + // 記録しない agent も同じ(既定の再試行間隔 500ms で 2 回待つ) + let api = spawn_faulty_extensions_api(REGISTER_UNAVAILABLE, NO_FAULTS).await; + let code = tokio::time::timeout( + Duration::from_secs(5), + zankyo::orchestrate::run_agent_with_env(&passthrough_agent_env(&api)), + ) + .await + .expect("passthrough agent must register and reach SHUTDOWN"); + assert_eq!(code, 0, "passthrough agent"); + assert_eq!(api.registers(), REGISTER_UNAVAILABLE.len() + 1); +} + +#[tokio::test] +async fn agents_keep_polling_through_failures_until_shutdown() { + // event/next の失敗が続いても SHUTDOWN の前には終了しない。応答が返る失敗は + // 接続できない回数の上限(ここでは 2)に数えない。上限を大きく超えて + // 失敗させても、記録する agent が待ち続けること + let api = spawn_faulty_extensions_api(NO_FAULTS, POLL_GLITCHES).await; + let (s3_addr, s3_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let (recorder, _spill) = recorder_with_env( + &s3_addr, + &[ + ("ZANKYO_EXT_RETRY_MS", "1"), + ("ZANKYO_EXT_MAX_POLL_FAILURES", "2"), + ], + ); + recorder.stage_inflight(&Invocation { + request_id: "req-glitch".to_string(), + event: json!({"input": 1}), + encoding: EventEncoding::Json, + invoked_at: OffsetDateTime::now_utc(), + }); + let agent = tokio::spawn(zankyo::extension::run_agent( + new_client(), + api.addr.clone(), + recorder, + )); + assert!(wait_for(5_000, || api.polls() >= 3 * POLL_GLITCHES.len()).await); + assert!( + !agent.is_finished(), + "recording agent exited before SHUTDOWN" + ); + api.release(); + let done = tokio::time::timeout(Duration::from_secs(5), agent) + .await + .expect("recording agent must return after SHUTDOWN") + .unwrap(); + assert!(done, "recording agent"); + assert!(wait_for(2_000, || !captured(&s3_hits).is_empty()).await); + let (_, path, _) = captured(&s3_hits).remove(0); + assert!(path.contains("req-glitch.json")); + + // 記録しない agent も同じ(既定の再試行間隔 500ms) + let api = spawn_faulty_extensions_api(NO_FAULTS, POLL_GLITCHES).await; + let env = passthrough_agent_env(&api); + let agent = tokio::spawn(async move { zankyo::orchestrate::run_agent_with_env(&env).await }); + assert!(wait_for(5_000, || api.polls() >= POLL_GLITCHES.len()).await); + assert!( + !agent.is_finished(), + "passthrough agent exited before SHUTDOWN" + ); + api.release(); + let code = tokio::time::timeout(Duration::from_secs(5), agent) + .await + .expect("passthrough agent must return after SHUTDOWN") + .unwrap(); + assert_eq!(code, 0, "passthrough agent"); +} + +#[tokio::test] +async fn agents_exit_promptly_when_lambda_rejects_them() { + // 登録の拒否(4xx)は送り直しても通らない。event/next の 500 は、AWS が + // 「回復不能。速やかに終了すべき」と定める。どちらも再試行せずに抜け、 + // agent のプロセスは 1 で終わる(正常終了の 0 と区別する) + for (case, register_faults, next_faults, registers, polls) in [ + ("register rejected", REGISTER_FORBIDDEN, NO_FAULTS, 1, 0), + ("container error", NO_FAULTS, POLL_CONTAINER_ERROR, 1, 1), + ] { + // 記録する agent は既定の再試行間隔(500ms)。再試行すれば 5 秒を超える + let api = spawn_faulty_extensions_api(register_faults, next_faults).await; + let (s3_addr, _s3) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let (recorder, _spill) = recorder_to(&s3_addr); + let done = tokio::time::timeout( + Duration::from_secs(5), + zankyo::extension::run_agent(new_client(), api.addr.clone(), recorder), + ) + .await + .unwrap_or_else(|_| panic!("{case}: recording agent must exit promptly")); + assert!(!done, "{case}"); + assert_eq!((api.registers(), api.polls()), (registers, polls), "{case}"); + + let api = spawn_faulty_extensions_api(register_faults, next_faults).await; + let code = tokio::time::timeout( + Duration::from_secs(5), + zankyo::orchestrate::run_agent_with_env(&passthrough_agent_env(&api)), + ) + .await + .unwrap_or_else(|_| panic!("{case}: passthrough agent must exit promptly")); + assert_eq!(code, 1, "{case}"); + assert_eq!((api.registers(), api.polls()), (registers, polls), "{case}"); + } +} + #[tokio::test] async fn oversized_body_is_rejected_without_forwarding() { let (api_addr, api_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; From a6ae507642050832ffac6c0ffcf6672e2e94ac85 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 23:56:53 +0900 Subject: [PATCH 83/97] =?UTF-8?q?fix(proxy):=20Extensions=20API=20?= =?UTF-8?q?=E3=81=AE=E5=BF=9C=E7=AD=94=E3=83=9C=E3=83=87=E3=82=A3=E3=81=AE?= =?UTF-8?q?=E8=AA=AD=E3=81=BF=E5=8F=96=E3=82=8A=E3=82=92=E6=99=82=E9=96=93?= =?UTF-8?q?=E3=81=A7=E3=82=82=E6=89=93=E3=81=A1=E5=88=87=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit external extension(agent)は、Extensions API の応答ボディをサイズの上限だけで 読んでいた。登録の上限時間は要求の送信とヘッダーの受信にしか効かず、エラー応答の ボディの読み取りには及ばなかった。相手がヘッダーだけ返してボディを閉じないと、 登録は ZANKYO_REGISTER_TIMEOUT_MS を過ぎても戻らずに Init を遅らせた。 /event/next では、エラー応答でも成功応答でも読み取りが止まり、再試行も SHUTDOWN の検知もできなくなった。 - ボディの読み取りは、ヘッダーの後 1 秒(EXT_BODY_TIMEOUT)で打ち切る。 localhost の Extensions API はヘッダーに続けてボディをすぐ送る - 登録では、残り時間が 1 秒より短ければ残り時間で打ち切る。エラー応答の ステータス(4xx の拒否・500)による判断はそのまま使い、ボディは空にする - /event/next で打ち切った応答は、ほかの一時的な失敗と同じく再試行する - テストを加えた。ボディを閉じないエラー応答で、登録が上限時間の内側で戻ること。 時間に余裕があれば再試行して登録できること。/event/next のエラー応答と成功応答の ボディが止まっても、記録する agent と記録しない agent が再試行して SHUTDOWN を 受け取ること --- CHANGELOG.md | 6 ++ proxy/src/extension.rs | 70 +++++++++++++++---- proxy/tests/proxy_it.rs | 148 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 209 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0313ac4..072a0a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,6 +74,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `/error`・`/init/error` だけで、ほかの経路はそのまま中継するとしていた。実際は 経路を問わず、リクエストボディを `ZANKYO_MAX_BODY_KB` まで読んでから中継し、 超えたら中継せずに 413 を返す。説明を実際の動作に合わせた +- **proxy** — external extension(agent)が、Extensions API の応答ボディを + 時間の上限なしに読んでいた。ヘッダーだけ返してボディを閉じない応答で、登録は + `ZANKYO_REGISTER_TIMEOUT_MS` を過ぎても戻らずに Init を遅らせ、`/event/next` は + 再試行も `SHUTDOWN` の検知もできなくなっていた。ボディの読み取りは、ヘッダーの後 + 1 秒で打ち切る(登録では、残り時間がそれより短ければ残り時間で打ち切る)。 + 打ち切った応答は、ほかの一時的な失敗と同じく再試行する - **cli** — replay・diff・redrive は、非 JSON イベント(`eventIsRawText` / `eventIsBase64`)のレコードを、invoke の前に exit 4 で止める。Lambda の Invoke API は JSON でない本文を `InvalidRequestContentException` で拒否する。 diff --git a/proxy/src/extension.rs b/proxy/src/extension.rs index 18d1ff8..3733689 100644 --- a/proxy/src/extension.rs +++ b/proxy/src/extension.rs @@ -33,6 +33,12 @@ use tracing::{info, warn}; const EXT_BASE: &str = "/2020-01-01/extension"; +/// 応答ヘッダーを受けてから、ボディを読み切るまでの上限時間。 +/// Extensions API はヘッダーに続けてボディをすぐ送る。ヘッダーだけ返して +/// ボディを閉じない応答に、登録の期限や、再試行・SHUTDOWN の検知を +/// 止められないようにする。 +const EXT_BODY_TIMEOUT: Duration = Duration::from_secs(1); + /// Extensions API 呼び出しの失敗。再試行するかどうかを種類で決める。 #[derive(Debug)] enum ApiError { @@ -69,12 +75,31 @@ impl std::fmt::Display for ApiError { } } +/// 応答のボディを `max_bytes` バイトまで、`within` の時間内で読む。 +/// サイズだけでなく時間でも打ち切る(`EXT_BODY_TIMEOUT` を参照)。 +async fn read_body( + body: hyper::body::Incoming, + max_bytes: usize, + within: Duration, +) -> std::result::Result { + match tokio::time::timeout( + within, + http_body_util::Limited::new(body, max_bytes).collect(), + ) + .await + { + Ok(Ok(c)) => Ok(c.to_bytes()), + Ok(Err(e)) => Err(format!("body read failed: {e}")), + Err(_) => Err("body read timed out".into()), + } +} + /// エラー応答のボディを診断用に読む(platform の拒否理由が分かる)。 -async fn error_body(body: hyper::body::Incoming) -> String { - http_body_util::Limited::new(body, 4096) - .collect() +/// 読めなかったときは空にし、ステータスによる判断はそのまま続ける。 +async fn error_body(body: hyper::body::Incoming, within: Duration) -> String { + read_body(body, 4096, within) .await - .map(|c| String::from_utf8_lossy(&c.to_bytes()).into_owned()) + .map(|b| String::from_utf8_lossy(&b).into_owned()) .unwrap_or_default() } @@ -144,13 +169,15 @@ async fn register_events( } } -/// `/extension/register` を 1 回送る。 +/// `/extension/register` を 1 回送る。エラー応答のボディの読み取りも含めて +/// `timeout` の内側で終える。 async fn register_once( client: &HttpClient, upstream_api: &str, timeout: Duration, events: &[&str], ) -> std::result::Result { + let started = tokio::time::Instant::now(); let body = serde_json::to_vec(&serde_json::json!({ "events": events })) .map_err(|e| ApiError::Other(e.to_string()))?; let req = Request::builder() @@ -172,17 +199,24 @@ async fn register_once( { return Ok(id.to_string()); } - Err(ApiError::Status(parts.status, error_body(body).await)) + let within = timeout + .saturating_sub(started.elapsed()) + .min(EXT_BODY_TIMEOUT); + Err(ApiError::Status( + parts.status, + error_body(body, within).await, + )) } /// `/event/next` はイベント到着までブロックするロングポーリング。 -/// タイムアウトを付けない(イベントなし=正常な待機。AWS も付けないよう求めている)。 -/// ボディは異常なサイズを読まないよう `body_limit` バイトで切る。 +/// 応答ヘッダーを待つ間はタイムアウトを付けない(イベントなし=正常な待機。 +/// AWS も付けないよう求めている)。ボディは異常なサイズを読まないよう +/// `body_limit` バイトで切り、ヘッダーの後は `body_timeout` で打ち切る。 async fn next_event( client: &HttpClient, upstream_api: &str, ext_id: &str, - body_limit: usize, + limits: &PollLimits, ) -> std::result::Result { let req = Request::builder() .method(Method::GET) @@ -193,13 +227,14 @@ async fn next_event( let resp = client.request(req).await.map_err(ApiError::from_client)?; let (parts, body) = resp.into_parts(); if !parts.status.is_success() { - return Err(ApiError::Status(parts.status, error_body(body).await)); + return Err(ApiError::Status( + parts.status, + error_body(body, limits.body_timeout).await, + )); } - let body = http_body_util::Limited::new(body, body_limit) - .collect() + let body = read_body(body, limits.body_limit, limits.body_timeout) .await - .map_err(|e| ApiError::Other(format!("event body read failed: {e}")))? - .to_bytes(); + .map_err(|e| ApiError::Other(format!("event {e}")))?; serde_json::from_slice(&body).map_err(|e| ApiError::Other(format!("invalid event: {e}"))) } @@ -313,6 +348,7 @@ pub async fn run_agent(client: HttpClient, upstream_api: String, recorder: Arc bool { let limits = PollLimits { body_limit: DEFAULT_EXT_BODY_KB * 1024, + body_timeout: EXT_BODY_TIMEOUT, retry_delay: Duration::from_millis(DEFAULT_EXT_RETRY_MS), max_failures: DEFAULT_EXT_MAX_POLL_FAILURES, }; @@ -340,6 +376,8 @@ pub async fn run_passthrough_agent(client: HttpClient, upstream_api: String) -> /// register と `/event/next` ポーリングのノブ。 struct PollLimits { body_limit: usize, + /// 応答ヘッダーを受けてから、ボディを読み切るまでの上限時間。 + body_timeout: Duration, /// 失敗から次の試行までの間隔。 retry_delay: Duration, /// Runtime API に接続できない状態が何回続いたら諦めるか。 @@ -350,6 +388,7 @@ impl PollLimits { fn from_config(cfg: &Config) -> Self { Self { body_limit: cfg.ext_body_kb.saturating_mul(1024), + body_timeout: EXT_BODY_TIMEOUT, retry_delay: Duration::from_millis(cfg.ext_retry_ms), max_failures: cfg.ext_max_poll_failures, } @@ -376,7 +415,7 @@ async fn wait_for_shutdown( let mut failures: u32 = 0; let mut unreachable: u32 = 0; loop { - let err = match next_event(client, upstream_api, ext_id, limits.body_limit).await { + let err = match next_event(client, upstream_api, ext_id, limits).await { Ok(ev) if ev.event_type == "SHUTDOWN" => return Some(ev), Ok(_) => { failures = 0; @@ -486,6 +525,7 @@ mod tests { .to_string(); let limits = PollLimits { body_limit: 1024, + body_timeout: Duration::from_millis(100), retry_delay: Duration::from_millis(1), max_failures: 3, }; diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index 08b9190..f2af6a5 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -1394,6 +1394,154 @@ async fn agents_exit_promptly_when_lambda_rejects_them() { } } +/// 応答ヘッダーだけを送り、ボディを閉じないまま止まる応答ボディ。 +struct StalledBody; + +impl hyper::body::Body for StalledBody { + type Data = Bytes; + type Error = hyper::Error; + + fn poll_frame( + self: std::pin::Pin<&mut Self>, + _cx: &mut std::task::Context<'_>, + ) -> std::task::Poll, hyper::Error>>> { + std::task::Poll::Pending + } +} + +/// `status` と応答ヘッダーだけを返し、ボディで止まる応答。`/next` の +/// 応答にも使えるよう、Runtime API の requestId ヘッダーを付ける。 +fn stalled(status: StatusCode) -> Response { + Response::builder() + .status(status) + .header("lambda-runtime-aws-request-id", "req-stalled") + .body(StalledBody.boxed()) + .unwrap() +} + +#[tokio::test] +async fn register_returns_within_its_deadline_when_error_body_stalls() { + // エラー応答のボディが閉じなくても、登録は上限時間の内側で諦める + let (api_addr, _api) = + spawn_mock(|_m, _p, _h, _b| stalled(StatusCode::SERVICE_UNAVAILABLE)).await; + let started = Instant::now(); + let registered = tokio::time::timeout( + Duration::from_secs(5), + zankyo::extension::register( + &new_client(), + &api_addr, + Duration::from_millis(300), + Duration::from_millis(10), + ), + ) + .await + .expect("register must return within its deadline"); + assert!(registered.is_err()); + assert!( + started.elapsed() < Duration::from_secs(2), + "{:?}", + started.elapsed() + ); + + // 上限時間に余裕があれば、ボディを待ち切らずに再試行して登録できる + let attempts = Arc::new(std::sync::atomic::AtomicUsize::new(0)); + let (api_addr, _api) = spawn_mock({ + let attempts = attempts.clone(); + move |_m, _p, _h, _b| { + if attempts.fetch_add(1, std::sync::atomic::Ordering::SeqCst) == 0 { + return stalled(StatusCode::SERVICE_UNAVAILABLE); + } + Response::builder() + .status(StatusCode::OK) + .header("lambda-extension-identifier", "ext-test") + .body(boxed_full(Bytes::new())) + .unwrap() + } + }) + .await; + let registered = tokio::time::timeout( + Duration::from_secs(5), + zankyo::extension::register( + &new_client(), + &api_addr, + Duration::from_secs(4), + Duration::from_millis(10), + ), + ) + .await + .expect("register must retry after a stalled error body"); + assert_eq!(registered.unwrap(), "ext-test"); + assert_eq!(attempts.load(std::sync::atomic::Ordering::SeqCst), 2); +} + +#[tokio::test] +async fn agents_keep_polling_when_event_body_stalls() { + // /event/next の応答ボディが閉じなくても、読み取りを打ち切って再試行し、 + // SHUTDOWN を受け取る。エラー応答と成功応答の両方で確かめる + let spawn_api = || async { + let polls = Arc::new(std::sync::atomic::AtomicUsize::new(0)); + let (addr, _hits) = spawn_mock({ + let polls = polls.clone(); + move |_m, path, _h, _b| { + if path == "/2020-01-01/extension/register" { + return Response::builder() + .status(StatusCode::OK) + .header("lambda-extension-identifier", "ext-test") + .body(boxed_full(Bytes::new())) + .unwrap(); + } + match polls.fetch_add(1, std::sync::atomic::Ordering::SeqCst) { + 0 => stalled(StatusCode::FORBIDDEN), + 1 => stalled(StatusCode::OK), + _ => ok_body(json!({ + "eventType": "SHUTDOWN", + "shutdownReason": "timeout", + "deadlineMs": OffsetDateTime::now_utc().unix_timestamp() * 1000 + 60_000 + })), + } + } + }) + .await; + (addr, polls) + }; + + let (api_addr, polls) = spawn_api().await; + let (s3_addr, s3_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let (recorder, _spill) = recorder_with_env(&s3_addr, &[("ZANKYO_EXT_RETRY_MS", "1")]); + recorder.stage_inflight(&Invocation { + request_id: "req-stall".to_string(), + event: json!({"input": 1}), + encoding: EventEncoding::Json, + invoked_at: OffsetDateTime::now_utc(), + }); + let done = tokio::time::timeout( + Duration::from_secs(10), + zankyo::extension::run_agent(new_client(), api_addr, recorder), + ) + .await + .expect("recording agent must retry past stalled bodies and reach SHUTDOWN"); + assert!(done, "recording agent"); + assert_eq!(polls.load(std::sync::atomic::Ordering::SeqCst), 3); + assert!(wait_for(2_000, || !captured(&s3_hits).is_empty()).await); + let (_, path, _) = captured(&s3_hits).remove(0); + assert!(path.contains("req-stall.json")); + + // 記録しない agent も同じ(既定の再試行間隔 500ms) + let (api_addr, polls) = spawn_api().await; + let env = HashMap::from([ + ("ZANKYO_DISABLED".to_string(), "1".to_string()), + ("AWS_LAMBDA_RUNTIME_API".to_string(), api_addr), + ]); + let code = tokio::time::timeout( + Duration::from_secs(10), + zankyo::orchestrate::run_agent_with_env(&env), + ) + .await + .expect("passthrough agent must retry past stalled bodies and reach SHUTDOWN"); + assert_eq!(code, 0, "passthrough agent"); + assert_eq!(polls.load(std::sync::atomic::Ordering::SeqCst), 3); +} + #[tokio::test] async fn oversized_body_is_rejected_without_forwarding() { let (api_addr, api_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; From 14173ea9096b1dbf9a9db2a4b2a9ac66989b2700 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 23:57:23 +0900 Subject: [PATCH 84/97] =?UTF-8?q?fix(proxy):=20/next=20=E3=81=AE=E5=BF=9C?= =?UTF-8?q?=E7=AD=94=E3=83=9C=E3=83=87=E3=82=A3=E3=81=AE=E8=AA=AD=E3=81=BF?= =?UTF-8?q?=E5=8F=96=E3=82=8A=E3=82=92=20ZANKYO=5FFORWARD=5FTIMEOUT=5FMS?= =?UTF-8?q?=20=E3=81=A7=E6=89=93=E3=81=A1=E5=88=87=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit proxy は /next の応答ボディを、サイズの上限だけで読んでいた。ロングポーリングの ため /next の転送には時間の上限を付けておらず、ヘッダーの後のボディの読み取りも 無制限だった。Runtime API がヘッダーだけ返してボディを閉じないと、ランタイムの /next が止まったままになる。 - 応答ヘッダーまでは従来どおり無制限に待つ(AWS は /next にタイムアウトを 付けないよう求めている。これは応答が来るまでの待機の話で、ヘッダーの後の ボディには当たらない) - ヘッダーの後のボディは、ほかの経路の転送と同じ ZANKYO_FORWARD_TIMEOUT_MS で 打ち切り、ランタイムへ 502 を返す - ランタイムから届くリクエストボディには、時間の上限を付けない理由をコメントに 書いた。送り手は関数自身のランタイムで、止まって待たされるのはその要求だけに なる。時間で切ると、時間をかけて書き出す応答(RESPONSE_STREAM)を途中で切る - テストを加えた。上流の /next がボディを閉じなくても、上限時間で 502 を返し、 呼び出しを in-flight に残さないこと - README の設定表と、config.rs の説明を直した --- CHANGELOG.md | 4 ++++ README.md | 2 +- proxy/src/config.rs | 7 ++++--- proxy/src/handlers.rs | 21 ++++++++++++++++----- proxy/src/proxy.rs | 4 ++++ proxy/tests/proxy_it.rs | 25 +++++++++++++++++++++++++ 6 files changed, 54 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 072a0a8..30a8ac8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 再試行も `SHUTDOWN` の検知もできなくなっていた。ボディの読み取りは、ヘッダーの後 1 秒で打ち切る(登録では、残り時間がそれより短ければ残り時間で打ち切る)。 打ち切った応答は、ほかの一時的な失敗と同じく再試行する +- **proxy** — `/next` の応答ボディを、時間の上限なしに読んでいた。Runtime API が + ヘッダーだけ返してボディを閉じないと、ランタイムの `/next` が止まったままになる。 + ヘッダーの後のボディは `ZANKYO_FORWARD_TIMEOUT_MS` で打ち切り、ランタイムへ + 502 を返す。ヘッダーまでは従来どおり無制限に待つ(ロングポーリング) - **cli** — replay・diff・redrive は、非 JSON イベント(`eventIsRawText` / `eventIsBase64`)のレコードを、invoke の前に exit 4 で止める。Lambda の Invoke API は JSON でない本文を `InvalidRequestContentException` で拒否する。 diff --git a/README.md b/README.md index fa8c1cf..c0a64d0 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ CDK construct はこの権限を付けないので、別に付与してくださ | `ZANKYO_EXT_RETRY_MS` | `500` | Extensions API(登録・event/next)が失敗したときの再試行間隔 | | `ZANKYO_EXT_MAX_POLL_FAILURES` | `120` | Runtime API に接続できない状態が続いたときの再試行回数の上限(超過で agent が終了する)。応答が返る失敗は数えない | | `ZANKYO_SSM_TIMEOUT_MS` | `2000` | SSM get_parameter の上限時間。Lambda の Init 上限(10 秒)に含まれる | -| `ZANKYO_FORWARD_TIMEOUT_MS` | `60000` | `/next` 以外の上流転送の上限時間 | +| `ZANKYO_FORWARD_TIMEOUT_MS` | `60000` | 上流転送の上限時間。`/next` は応答ヘッダーまで無制限に待ち(ロングポーリング)、応答ボディの読み取りにだけ使う | | `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ(passthrough) | ※「必須」は記録を有効にする条件です。未設定でも関数は正常に動きます。 diff --git a/proxy/src/config.rs b/proxy/src/config.rs index c30cd8f..d3fac87 100644 --- a/proxy/src/config.rs +++ b/proxy/src/config.rs @@ -35,8 +35,9 @@ pub const DEFAULT_EXT_MAX_POLL_FAILURES: u32 = 120; /// SSM get_parameter の上限時間(ms)。取得は子の起動と extension 登録の /// 前に待つため、Lambda の Init 上限(10 秒)を使い切らない短めの既定にする。 pub const DEFAULT_SSM_TIMEOUT_MS: u64 = 2_000; -/// `/next` 以外の上流転送の上限時間(ms)。localhost 上の Runtime API が -/// 60 秒応えない状況は実行環境の異常とみなす。 +/// 上流転送の上限時間(ms)。localhost 上の Runtime API が +/// 60 秒応えない状況は実行環境の異常とみなす。`/next` はロングポーリングなので +/// 応答ヘッダーまでは無制限に待ち、その後のボディの読み取りにだけ使う。 pub const DEFAULT_FORWARD_TIMEOUT_MS: u64 = 60_000; /// spill 再送の間隔(ms)。起動時だけでなく生存中も定期的に /// /tmp を空に戻し、S3 の一時障害からの回復を早める。 @@ -93,7 +94,7 @@ pub struct Config { pub ext_max_poll_failures: u32, /// SSM get_parameter の上限時間(ms)。 pub ssm_timeout_ms: u64, - /// `/next` 以外の上流転送の上限時間(ms)。 + /// 上流転送の上限時間(ms)。`/next` では応答ボディの読み取りにだけ使う。 pub forward_timeout_ms: u64, pub disabled: bool, } diff --git a/proxy/src/handlers.rs b/proxy/src/handlers.rs index d055336..1eeb9c0 100644 --- a/proxy/src/handlers.rs +++ b/proxy/src/handlers.rs @@ -40,7 +40,8 @@ pub(crate) async fn handle_next( body: Bytes, body_limit: usize, ) -> Response { - // /next の転送はランタイムのロングポーリングを壊さないよう無制限に待つ + // /next の転送はランタイムのロングポーリングを壊さないよう、 + // 応答ヘッダーまでは無制限に待つ let resp = match forward_or_502(st, method, pq, headers, body, None, "invocation/next").await { Ok(r) => r, Err(r) => return *r, @@ -48,16 +49,26 @@ pub(crate) async fn handle_next( let (mut parts, resp_body) = resp.into_parts(); // 上流の応答ヘッダにも hop-by-hop 規則を適用してからランタイムへ返す strip_hop_by_hop(&mut parts.headers); - let bytes = match collect_bounded(resp_body, body_limit).await { - Ok(b) => b, - Err(CollectError::TooLarge) => { + // ヘッダーの後のボディは、ほかの経路の転送と同じ上限時間で打ち切る。 + // ヘッダーだけ返してボディを閉じない上流に、/next を止められないように + let read = tokio::time::timeout( + std::time::Duration::from_millis(st.cfg.forward_timeout_ms), + collect_bounded(resp_body, body_limit), + ); + let bytes = match read.await { + Ok(Ok(b)) => b, + Ok(Err(CollectError::TooLarge)) => { warn!("next response body exceeded limit; forwarding is skipped"); return plain(StatusCode::BAD_GATEWAY, "zankyo: upstream body too large"); } - Err(CollectError::Read(e)) => { + Ok(Err(CollectError::Read(e))) => { warn!(error = %e, "failed to read next response"); return plain(StatusCode::BAD_GATEWAY, "zankyo: upstream body error"); } + Err(_) => { + warn!("next response body timed out"); + return plain(StatusCode::BAD_GATEWAY, "zankyo: upstream body error"); + } }; if parts.status == StatusCode::OK { let request_id = parts diff --git a/proxy/src/proxy.rs b/proxy/src/proxy.rs index 8e8597e..4df16a2 100644 --- a/proxy/src/proxy.rs +++ b/proxy/src/proxy.rs @@ -121,6 +121,10 @@ async fn handle(req: Request, st: &ProxyState) -> Response .to_string(); let path = parts.uri.path().to_string(); let body_limit = st.cfg.max_body_kb.saturating_mul(1024); + // ランタイムから届くボディの読み取りには、時間の上限を付けない。送り手は + // この関数自身のランタイムで、止まって待たされるのはその要求だけになる + // (関数のタイムアウトが上限になる)。時間で切ると、時間をかけて書き出す + // 応答(RESPONSE_STREAM)を途中で切ってしまう。 let body_bytes = match collect_bounded(body, body_limit).await { Ok(b) => b, Err(CollectError::TooLarge) => { diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index f2af6a5..a62c828 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -1542,6 +1542,31 @@ async fn agents_keep_polling_when_event_body_stalls() { assert_eq!(polls.load(std::sync::atomic::Ordering::SeqCst), 3); } +#[tokio::test] +async fn stalled_next_body_is_cut_by_forward_timeout() { + // 上流の /next が応答ヘッダーだけ返してボディを閉じなくても、proxy は + // ZANKYO_FORWARD_TIMEOUT_MS で読み取りを打ち切り、ランタイムへ 502 を返す + let (api_addr, _api) = spawn_mock(|_m, _p, _h, _b| stalled(StatusCode::OK)).await; + let (s3_addr, _s3) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; + let inflight = Arc::new(InFlight::new()); + let (recorder, _spill) = recorder_with_env(&s3_addr, &[("ZANKYO_FORWARD_TIMEOUT_MS", "200")]); + let proxy = spawn_proxy(&api_addr, inflight.clone(), recorder).await; + + let (status, _) = tokio::time::timeout( + Duration::from_secs(5), + call( + &proxy, + Method::GET, + "/2018-06-01/runtime/invocation/next", + None, + ), + ) + .await + .expect("/next must not hang on a stalled upstream body"); + assert_eq!(status, StatusCode::BAD_GATEWAY); + assert_eq!(inflight.len(), 0); +} + #[tokio::test] async fn oversized_body_is_rejected_without_forwarding() { let (api_addr, api_hits) = spawn_mock(|_m, _p, _h, _b| ok_empty()).await; From 12993a2ffb0c192e6d5282ccf530be6aad2fa2c6 Mon Sep 17 00:00:00 2001 From: seike460 Date: Tue, 29 Sep 2026 23:57:33 +0900 Subject: [PATCH 85/97] =?UTF-8?q?docs:=20=E8=A8=98=E9=8C=B2=E3=81=AE?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E3=82=92=E3=80=8C=E7=A2=BA=E5=AE=9F=E3=80=8D?= =?UTF-8?q?=E3=81=A8=E3=81=9B=E3=81=9A=E3=80=81=E3=83=99=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=82=A8=E3=83=95=E3=82=A9=E3=83=BC=E3=83=88=E3=81=A7=E3=81=82?= =?UTF-8?q?=E3=82=8B=E3=81=93=E3=81=A8=E3=81=A8=E5=A4=B1=E3=82=8F=E3=82=8C?= =?UTF-8?q?=E3=82=8B=E6=9D=A1=E4=BB=B6=E3=82=92=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit README と SPEC の冒頭は、失敗した呼び出しを「確実に残し」と書いていた。実装は fail-open で、S3 に届かなかったレコードは /tmp に残して再送するが、/tmp にも 残せなかった場合や、再送の前に実行環境が破棄された場合は失われる。 - README と SPEC の冒頭を「S3 に記録し」に改めた - README の制限事項と SPEC に、記録がベストエフォートであることと、 失われる条件(/tmp にも残せない・再送前に実行環境が破棄される・spill の上限を 超える)を書いた - CHANGELOG の Security の項で、spill に退避したレコードは「後で再送される」と 書いていた箇所を、実行環境が残っていれば再送される、と改めた - README・SPEC・ARCHITECTURE・SECURITY・examples・CHANGELOG・パッケージの README・SAR テンプレートの説明を見直した。ほかに実装が守らない断定の表現は なかった --- CHANGELOG.md | 5 ++++- README.md | 6 +++++- SPEC.md | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30a8ac8..4e581ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -130,6 +130,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 失敗していた - **construct** — npm のページに使い方が何も表示されなかった。props と Layer の入手先を書いた README をパッケージに含める +- **docs** — README と SPEC の冒頭で、失敗した呼び出しを「確実に残す」と書いていた。 + 記録はベストエフォートで、S3 に届かず `/tmp` にも残せなかった場合や、再送の前に + 実行環境が破棄された場合は失われる。表現を改め、README の制限事項に書き足した ### Security @@ -149,7 +152,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 この関数を名乗るレコードを置けた。権限は role の DefaultPolicy ではなく、 関数ごとの `AWS::IAM::Policy` に入る。既存のスタックを更新すると、デプロイ中の 短い間だけ PUT が拒否されることがある。その間のレコードは spill に退避され、 - 後で再送される + 実行環境が残っていれば、定期回収か次回 init で再送される - **cli** — S3 キーの関数名と本文の `functionName` が食い違うレコードを、 exit 4 で拒否する。以前は本文の関数名をそのまま replay・diff・redrive の invoke 先にしていた。バケットに書ける別の関数が、運用者の権限で任意の関数へ diff --git a/README.md b/README.md index c0a64d0..21908c0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # lambda-zankyo(残響) -**sync invoke で失敗した Lambda 呼び出しの「イベント+エラー応答」を確実に残し、 +**sync invoke で失敗した Lambda 呼び出しの「イベント+エラー応答」を S3 に記録し、 ローカル再現・差分リプレイ・本番再実行まで担う Layer+CLI。** > **スコープ**: 対象は **sync(RequestResponse)呼び出し** のみ。 @@ -266,6 +266,10 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json - `provided.*` ランタイムは bootstrap が exec wrapper を尊重する場合のみ。 - SnapStart・RESPONSE_STREAM・API Gateway 29s タイムアウト(Lambda は 成功しているケース)は正式保証外(SPEC Open Questions)。 +- 記録はベストエフォートです。S3 に届かなかったレコードは `/tmp` に残し、 + 生存中の定期回収と次回 init で再送します。`/tmp` にも残せなかった場合、 + 再送の前に実行環境が破棄された場合、spill の上限(`ZANKYO_SPILL_MAX_FILES`・ + `ZANKYO_SPILL_MAX_AGE_SECS`)を超えた場合は、そのレコードは失われます。 - timeout フラッシュはベストエフォート(shutdown ウィンドウ制約あり)。 ## リポジトリ構成 diff --git a/SPEC.md b/SPEC.md index 3a15464..f0b7236 100644 --- a/SPEC.md +++ b/SPEC.md @@ -1,6 +1,6 @@ # lambda-zankyo(残響)— 仕様書 -sync invoke で失敗した Lambda 呼び出しの「イベント+エラー応答」を確実に残し、 +sync invoke で失敗した Lambda 呼び出しの「イベント+エラー応答」を S3 に記録し、 ローカル再現・差分リプレイ・本番再実行まで担う Layer+CLI の OSS。 ## 背景と存在理由 @@ -40,6 +40,7 @@ Lambda Service ──Runtime API──▶ zankyo proxy (Rust, Layer) ──▶ - **成功呼び出しは記録しない**(S3 PUT・spill なし)。`/next` のイベントは timeout 捕捉のため `/tmp` に一時ステージし、完了時に削除する。 - 失敗の定義: `/error` 呼出・`/init/error`・`/response` 内の errorType 含有・SHUTDOWN の時点で応答を返していない呼び出し(reason を問わず failureType=timeout。reason は errorContext.errorType に写す)。 - timeout 捕捉: proxy が in-flight イベントを `/tmp` の `.inflight` にステージ → SHUTDOWN を受けた extension がそれを読み、S3 へベストエフォートフラッシュ(shutdown ウィンドウ内に PutObject が完了しない場合は取りこぼす旨を README に明記)。 +- 記録はベストエフォート(fail-open): S3 に届かなかったレコードは `/tmp` に残し、生存中の定期回収と次回 init で再送する。`/tmp` にも残せなかった場合・再送の前に実行環境が破棄された場合・spill の上限を超えた場合は失われる(README の制限事項に明記)。 - 対象ランタイム: `AWS_LAMBDA_EXEC_WRAPPER` を尊重する全 managed runtime(nodejs/python/java/dotnet/ruby)。`provided.*` は bootstrap が exec wrapper を尊重する場合のみ。 ## データ仕様 From 5ac262ff2ee0bb3c01a49d36247c5c0f1cfcf5e1 Mon Sep 17 00:00:00 2001 From: seike460 Date: Wed, 30 Sep 2026 02:13:12 +0900 Subject: [PATCH 86/97] =?UTF-8?q?fix(proxy):=20SSM=20=E3=81=AE=20JSON=20?= =?UTF-8?q?=E3=81=AE=20ZANKYO=5FSSM=5FTIMEOUT=5FMS=20=E3=82=92=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=81=AB=E9=87=8D=E3=81=AD=E3=81=9A=E3=80=81=E7=92=B0?= =?UTF-8?q?=E5=A2=83=E5=A4=89=E6=95=B0=E3=81=A7=E3=81=A0=E3=81=91=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E3=81=A7=E3=81=8D=E3=82=8B=E3=81=A8=E6=98=8E=E8=A8=98?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SSM の取得の上限時間は、取得の前に環境変数の値で決まる。以前は JSON の 値で Config を書き換えていたが、その値を使う処理は無く、効いていなかった。 ZANKYO_SSM_PARAM と同じく env だけのキー(ENV_ONLY_KEYS)とし、JSON に 書かれていたら warn を出して無視する。 --- CHANGELOG.md | 4 ++++ README.md | 4 ++-- proxy/src/config.rs | 3 ++- proxy/src/setup.rs | 2 ++ proxy/src/ssm.rs | 2 +- proxy/src/ssm_overlay.rs | 37 +++++++++++++++++++++++++++++++++++-- 6 files changed, 46 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e581ff..3b13169 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `SHUTDOWN` まで再試行を続ける。終了するのは、登録の 4xx 拒否・Lambda の 500 (AWS が回復不能と定める)・Runtime API への接続不能の継続のときだけで、 終了コードは 1 にした +- **proxy** — SSM の JSON に書いた `ZANKYO_SSM_TIMEOUT_MS` を、警告なしに + 受け付けていたが、効いていなかった。SSM の取得の上限時間は、取得の前に + 環境変数の値で決まるため。このキーは `ZANKYO_SSM_PARAM` と同じく、環境変数で + だけ指定できるものとした。SSM の JSON に書かれていたら、warn を出して無視する - **proxy** — 空文字の `ZANKYO_SSM_PARAM` を未設定として扱う。以前は init の たびに空の名前で SSM を呼び、起動を遅らせていた - **proxy** — external extension 構成で、呼び出し中にランタイムがクラッシュすると、 diff --git a/README.md b/README.md index 21908c0..544d2b4 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ CDK construct はこの権限を付けないので、別に付与してくださ |---|---|---| | `ZANKYO_BUCKET` | (必須※) | 失敗レコードの保存先。未設定なら記録せず passthrough | | `ZANKYO_KMS_KEY` | SSE-S3 | SSE-KMS のキー ARN | -| `ZANKYO_SSM_PARAM` | なし | 設定 JSON を保持する SSM Parameter 名 | +| `ZANKYO_SSM_PARAM` | なし | 設定 JSON を保持する SSM Parameter 名。環境変数でだけ指定できる | | `ZANKYO_SCRUB_FIELDS` | 既定 denylist | 追加フィールド名(カンマ区切り) | | `ZANKYO_SCRUB_MODE` | `mask` | `mask` / `hash`(HMAC 擬似名化)/ `off` | | `ZANKYO_MAX_EVENT_KB` | `256` | イベント保存の上限(超過は先頭のみ + `truncated`) | @@ -166,7 +166,7 @@ CDK construct はこの権限を付けないので、別に付与してくださ | `ZANKYO_REGISTER_TIMEOUT_MS` | `10000` | extension 登録の上限時間(一時的な失敗の再試行を含む) | | `ZANKYO_EXT_RETRY_MS` | `500` | Extensions API(登録・event/next)が失敗したときの再試行間隔 | | `ZANKYO_EXT_MAX_POLL_FAILURES` | `120` | Runtime API に接続できない状態が続いたときの再試行回数の上限(超過で agent が終了する)。応答が返る失敗は数えない | -| `ZANKYO_SSM_TIMEOUT_MS` | `2000` | SSM get_parameter の上限時間。Lambda の Init 上限(10 秒)に含まれる | +| `ZANKYO_SSM_TIMEOUT_MS` | `2000` | SSM get_parameter の上限時間。Lambda の Init 上限(10 秒)に含まれる。SSM を読む前に使うので、環境変数でだけ指定できる(SSM の JSON に書いても無視する) | | `ZANKYO_FORWARD_TIMEOUT_MS` | `60000` | 上流転送の上限時間。`/next` は応答ヘッダーまで無制限に待ち(ロングポーリング)、応答ボディの読み取りにだけ使う | | `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ(passthrough) | diff --git a/proxy/src/config.rs b/proxy/src/config.rs index d3fac87..f371c0c 100644 --- a/proxy/src/config.rs +++ b/proxy/src/config.rs @@ -34,6 +34,7 @@ pub const DEFAULT_EXT_RETRY_MS: u64 = 500; pub const DEFAULT_EXT_MAX_POLL_FAILURES: u32 = 120; /// SSM get_parameter の上限時間(ms)。取得は子の起動と extension 登録の /// 前に待つため、Lambda の Init 上限(10 秒)を使い切らない短めの既定にする。 +/// 取得の前に使う値なので、env でだけ指定できる(SSM の JSON では変えられない)。 pub const DEFAULT_SSM_TIMEOUT_MS: u64 = 2_000; /// 上流転送の上限時間(ms)。localhost 上の Runtime API が /// 60 秒応えない状況は実行環境の異常とみなす。`/next` はロングポーリングなので @@ -92,7 +93,7 @@ pub struct Config { /// Extensions API に接続できない状態が続いたときの再試行回数の上限。 /// 超えると extension ループを抜ける。 pub ext_max_poll_failures: u32, - /// SSM get_parameter の上限時間(ms)。 + /// SSM get_parameter の上限時間(ms)。env でだけ指定できる。 pub ssm_timeout_ms: u64, /// 上流転送の上限時間(ms)。`/next` では応答ボディの読み取りにだけ使う。 pub forward_timeout_ms: u64, diff --git a/proxy/src/setup.rs b/proxy/src/setup.rs index e06e471..18a1a02 100644 --- a/proxy/src/setup.rs +++ b/proxy/src/setup.rs @@ -70,6 +70,8 @@ pub async fn apply_ssm_overlay(shared: &aws_config::SdkConfig, cfg: &mut Config) let Some(param) = cfg.ssm_param.clone() else { return; }; + // 取得先と上限時間は取得の前に決まるので、env の値だけを使う + // (SSM の JSON は、この 2 つを上書きしない。`ssm_overlay.rs` の `ENV_ONLY_KEYS`)。 let timeout = std::time::Duration::from_millis(cfg.ssm_timeout_ms); match crate::ssm::load_config_json(shared, ¶m, timeout).await { Ok(json) => { diff --git a/proxy/src/ssm.rs b/proxy/src/ssm.rs index 033d5bf..d14e490 100644 --- a/proxy/src/ssm.rs +++ b/proxy/src/ssm.rs @@ -7,7 +7,7 @@ use std::time::Duration; /// SecureString 想定で復号付き取得。値が空のパラメータはエラーにする /// (設定ミスの黙殺を防ぐ)。`timeout` は init 経路を遅らせないための -/// 取得上限(`ZANKYO_SSM_TIMEOUT_MS` 由来)。 +/// 取得上限(env の `ZANKYO_SSM_TIMEOUT_MS` 由来。SSM の値では変えられない)。 pub async fn load_config_json( shared: &aws_config::SdkConfig, name: &str, diff --git a/proxy/src/ssm_overlay.rs b/proxy/src/ssm_overlay.rs index ff87717..ceb13bd 100644 --- a/proxy/src/ssm_overlay.rs +++ b/proxy/src/ssm_overlay.rs @@ -3,7 +3,8 @@ //! 設定全体の解決順序と既定値は `config.rs` 参照。ここでは //! SSM 値の型別変換とキー → フィールドの写像だけを扱う。 //! 数値キーは `SSM_NUM_FIELDS` テーブル駆動なので、新しい数値設定は -//! 1 行足すだけで overlay 対応になる。 +//! 1 行足すだけで overlay 対応になる。ただし SSM を読む前に使う値は +//! 載せない(`ENV_ONLY_KEYS`)。 use crate::config::{parse_bool, parse_fields, parse_mode, valid_spill_dir, Config}; use crate::error::{Result, ZankyoError}; @@ -29,10 +30,14 @@ const SSM_NUM_FIELDS: &[(&str, NumSetter)] = &[ c.register_timeout_ms = n }), ("ZANKYO_EXT_RETRY_MS", |c, n| c.ext_retry_ms = n), - ("ZANKYO_SSM_TIMEOUT_MS", |c, n| c.ssm_timeout_ms = n), ("ZANKYO_FORWARD_TIMEOUT_MS", |c, n| c.forward_timeout_ms = n), ]; +/// env でだけ指定できるキー。どちらも SSM を読む前に使う(取得先の +/// パラメータ名と取得の上限時間)ため、JSON で上書きしても効かない。 +/// 書かれていたら、未知のキーとは別の警告を出して無視する。 +const ENV_ONLY_KEYS: &[&str] = &["ZANKYO_SSM_PARAM", "ZANKYO_SSM_TIMEOUT_MS"]; + fn num_setter(key: &str) -> Option { SSM_NUM_FIELDS .iter() @@ -116,6 +121,10 @@ impl Config { } } } + k if ENV_ONLY_KEYS.contains(&k) => tracing::warn!( + key = k, + "this key is used before the SSM fetch and can only be set in the environment; ignored" + ), other => tracing::warn!(key = other, "unknown ZANKYO_SSM_PARAM key; ignored"), } } @@ -223,6 +232,30 @@ mod tests { assert_eq!(cfg.flush_budget_ms, DEFAULT_FLUSH_BUDGET_MS); // 0 は拒否 } + #[test] + fn ssm_does_not_overlay_keys_used_before_the_fetch() { + // SSM の取得先と取得の上限時間は、取得の前に env から決まる。 + // JSON の値で Config を書き換えると、効かない値が設定に見えてしまう。 + let mut cfg = Config::from_env_map(&env(&[ + ("ZANKYO_SSM_PARAM", "/zankyo/config"), + ("ZANKYO_SSM_TIMEOUT_MS", "3000"), + ])) + .unwrap(); + cfg.overlay_ssm_json( + r#"{"ZANKYO_SSM_PARAM":"/other","ZANKYO_SSM_TIMEOUT_MS":9000,"ZANKYO_BUCKET":"b"}"#, + ) + .unwrap(); + assert_eq!(cfg.ssm_timeout_ms, 3000); + assert_eq!(cfg.ssm_param.as_deref(), Some("/zankyo/config")); + assert_eq!(cfg.bucket, "b"); // ほかのキーは従来どおり上書きする + for key in ENV_ONLY_KEYS { + assert!( + num_setter(key).is_none(), + "{key} must not be in SSM_NUM_FIELDS" + ); + } + } + #[test] fn ssm_ext_max_poll_failures_rejects_u32_overflow() { // `as` キャストだと u32::MAX 超が wrap する。明示失敗で既定値を守る。 From d33f574ba1cf3be98c67f4b9f374558b74811e6a Mon Sep 17 00:00:00 2001 From: seike460 Date: Wed, 30 Sep 2026 02:14:33 +0900 Subject: [PATCH 87/97] =?UTF-8?q?docs:=20=E8=A8=AD=E5=AE=9A=E3=81=AE?= =?UTF-8?q?=E8=A7=A3=E6=B1=BA=E9=A0=86=E3=82=92=E3=80=8C=E6=97=A2=E5=AE=9A?= =?UTF-8?q?=E5=80=A4=20=E2=86=92=20env=20=E2=86=92=20SSM=E3=80=8D=E3=81=AB?= =?UTF-8?q?=E7=9B=B4=E3=81=97=E3=80=81SSM=20=E3=81=AE=E5=80=A4=E3=81=A7?= =?UTF-8?q?=E5=A4=89=E3=82=8F=E3=82=89=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88?= =?UTF-8?q?=E3=82=92=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit README と ARCHITECTURE.md は「env → SSM → 既定値」と説明していたが、 実装は既定値・env・SSM の順に重ね、SSM の JSON にあるキーが優先する。 SSM を読む前に決まる env だけのキー・env の ZANKYO_DISABLED の真・ env の設定エラーも明記した。README の設定表には、SSM の取得に成功すれば SSM の ZANKYO_BUCKET だけで記録することを書いた。 --- ARCHITECTURE.md | 9 +++++++-- CHANGELOG.md | 6 ++++++ README.md | 28 +++++++++++++++++++++------- SPEC.md | 13 +++++++++---- proxy/src/config.rs | 13 +++++++++---- proxy/src/setup.rs | 3 +++ 6 files changed, 55 insertions(+), 17 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 23fbeba..2043235 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -45,7 +45,11 @@ Runtime API への接続不能の継続(`ZANKYO_EXT_MAX_POLL_FAILURES` 回) このプロジェクトは次の不変条件を守る。レビュー・生成コードも同じ基準。 -- **設定は env → SSM overlay → 既定値の順で解決**。動作ノブ +- **設定は既定値 → env → SSM overlay の順に重ねて解決**(後が優先)。 + 例外は SSM を読む前に決まるもの。取得に使う `ZANKYO_SSM_PARAM`・ + `ZANKYO_SSM_TIMEOUT_MS` は env だけで決め、SSM の JSON では上書きしない + (`ssm_overlay.rs` の `ENV_ONLY_KEYS`)。env の `ZANKYO_DISABLED` の真と + env の設定エラーは、SSM を読まずに passthrough を決める。動作ノブ (上限・タイムアウト・間隔)をコードへ埋め込まない。新しい数値設定は `config.rs` の env 読み取り + `ssm_overlay.rs` の `SSM_NUM_FIELDS` に 1 行で済む。 @@ -89,7 +93,8 @@ Runtime API への接続不能の継続(`ZANKYO_EXT_MAX_POLL_FAILURES` 回) パターン自体は `scrub_data.rs` に 1 エントリ。 - **設定項目**: `Config` + env 読み取りに追加。SSM は `SSM_NUM_FIELDS` に 1 行(フィールド単位パースで 1 キーの - 書き損じが全体を壊さない)。 + 書き損じが全体を壊さない)。SSM を読む前に使う値は表に載せず、 + `ENV_ONLY_KEYS` に足す。 - **CLI コマンド**: `cli/src/commands/` に 1 ファイル + `bin.ts` に 1 行。AWS 境界は `ports.ts` の構造的ポートに閉じる。 - **failure type**: `record.rs` enum・写像・CLI の diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b13169..c4da1f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,6 +49,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 受け付けていたが、効いていなかった。SSM の取得の上限時間は、取得の前に 環境変数の値で決まるため。このキーは `ZANKYO_SSM_PARAM` と同じく、環境変数で だけ指定できるものとした。SSM の JSON に書かれていたら、warn を出して無視する +- **proxy** — README と ARCHITECTURE.md は、設定の解決順を「env → SSM → 既定値」と + 説明していた。実際は既定値・環境変数・SSM の順に重ね、SSM の JSON にあるキーが + 優先する。説明を実際の動作に合わせ、SSM の値では変わらない場合(環境変数だけの + キー・環境変数の `ZANKYO_DISABLED` の真・環境変数の設定エラー)も書いた。 + README の設定表には、SSM の取得に成功すれば、SSM の JSON の `ZANKYO_BUCKET` だけでも + 記録することを書いた - **proxy** — 空文字の `ZANKYO_SSM_PARAM` を未設定として扱う。以前は init の たびに空の名前で SSM を呼び、起動を遅らせていた - **proxy** — external extension 構成で、呼び出し中にランタイムがクラッシュすると、 diff --git a/README.md b/README.md index 544d2b4..f758ee9 100644 --- a/README.md +++ b/README.md @@ -139,17 +139,29 @@ zankyo redrive --confirm # 本番再投入(既定 dry- ## 設定(環境変数) -`ZANKYO_SSM_PARAM` 指定時は SSM Parameter の JSON(同じキー名)が -env を部分上書きします。複数関数で設定を一元管理するための経路です。 +設定は、既定値・環境変数・SSM Parameter の順に重ねて決めます。後から重ねた値が優先です。 +`ZANKYO_SSM_PARAM` を指定すると、SSM Parameter の JSON(キーは環境変数と同じ名前)を読みます。 +JSON にあるキーだけが、環境変数の値を上書きします。複数関数で設定を一元管理するための経路です。 このとき関数のロールに `ssm:GetParameter` が要ります。カスタマー管理キーで暗号化した SecureString なら、そのキーの `kms:Decrypt` も要ります ([AWS ドキュメント](https://docs.aws.amazon.com/kms/latest/developerguide/services-parameter-store.html#parameter-policy-kms-encryption))。 -CDK construct はこの権限を付けないので、別に付与してください。取得に失敗すると、warn を -出して env の設定だけで動きます(バケットを SSM 側にだけ書いた場合は、記録しません)。 +CDK construct はこの権限を付けないので、別に付与してください。取得に失敗したときと、値が +JSON のオブジェクトでないときは、warn を出して env の設定だけで動きます +(バケットを SSM 側にだけ書いた場合は、記録しません)。 + +次の 3 つは SSM を読む前に決まるので、SSM の値では変わりません。 + +- `ZANKYO_SSM_PARAM` と `ZANKYO_SSM_TIMEOUT_MS` は、環境変数でだけ指定できます。 + SSM の JSON に書くと、warn を出して無視します。 +- 環境変数の `ZANKYO_DISABLED` が真(`true`・`1`・`yes`・`on`)なら、SSM を読まずに + 記録を止めます。SSM の値で記録を再開することはできません。 +- 環境変数の値が不正なとき(数値の設定に正の整数でない値や範囲を超える値、不正な `ZANKYO_SCRUB_MODE`)は、 + 設定エラーとして、SSM を読まずに記録を止めます。SSM の JSON の不正な値は、 + そのキーだけ warn を出して無視します。 | env | 既定 | 用途 | |---|---|---| -| `ZANKYO_BUCKET` | (必須※) | 失敗レコードの保存先。未設定なら記録せず passthrough | +| `ZANKYO_BUCKET` | (必須※) | 失敗レコードの保存先。環境変数にも SSM の JSON にも無ければ、記録せず passthrough | | `ZANKYO_KMS_KEY` | SSE-S3 | SSE-KMS のキー ARN | | `ZANKYO_SSM_PARAM` | なし | 設定 JSON を保持する SSM Parameter 名。環境変数でだけ指定できる | | `ZANKYO_SCRUB_FIELDS` | 既定 denylist | 追加フィールド名(カンマ区切り) | @@ -168,9 +180,11 @@ CDK construct はこの権限を付けないので、別に付与してくださ | `ZANKYO_EXT_MAX_POLL_FAILURES` | `120` | Runtime API に接続できない状態が続いたときの再試行回数の上限(超過で agent が終了する)。応答が返る失敗は数えない | | `ZANKYO_SSM_TIMEOUT_MS` | `2000` | SSM get_parameter の上限時間。Lambda の Init 上限(10 秒)に含まれる。SSM を読む前に使うので、環境変数でだけ指定できる(SSM の JSON に書いても無視する) | | `ZANKYO_FORWARD_TIMEOUT_MS` | `60000` | 上流転送の上限時間。`/next` は応答ヘッダーまで無制限に待ち(ロングポーリング)、応答ボディの読み取りにだけ使う | -| `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ(passthrough) | +| `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ(passthrough)。環境変数の真は SSM を読む前に効き、SSM の値では解除できない | ※「必須」は記録を有効にする条件です。未設定でも関数は正常に動きます。 +`ZANKYO_SSM_PARAM` を指定して SSM の取得に成功した場合は、SSM の JSON の `ZANKYO_BUCKET` だけでも +記録します。このとき環境変数の `ZANKYO_BUCKET` は要りません。 ## データ仕様 @@ -315,7 +329,7 @@ cargo fmt --all -- --check && cargo clippy --locked --workspace --all-targets -- ### 保守性の指針 -設定は env → SSM overlay → 既定値の順で解決され、動作ノブはすべて +設定は既定値 → env → SSM overlay の順に重ねて解決され(後が優先。例外は「設定」の節)、動作ノブはすべて `ZANKYO_*` 環境変数で外から変えられます(一覧は上の表)。拡張は データの 1 エントリ追加で済みます: scrub パターン・CLI コマンド・ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収・ diff --git a/SPEC.md b/SPEC.md index f0b7236..08a3550 100644 --- a/SPEC.md +++ b/SPEC.md @@ -20,7 +20,7 @@ sync invoke で失敗した Lambda 呼び出しの「イベント+エラー応 | PII scrub | **ハイブリッド**(フィールド名 denylist+パターン検出)、既定 ON | | 配布 | **SAR(Serverless Application Repository)公開** | | CLI スコープ | **fixture 生成+差分リプレイ+本番再実行(redrive)** まで MVP | -| 設定供給 | **両方**(環境変数を既定、SSM Parameter 指定時はそちら優先) | +| 設定供給 | **両方**(既定値 → 環境変数 → SSM Parameter の順に重ね、SSM の JSON にあるキーが最優先) | | CDK | **construct 同梱**(Layer 参照+S3 bucket+IAM を一発配線) | ## アーキテクチャ @@ -73,15 +73,20 @@ s3://{ZANKYO_BUCKET}/zankyo/{function-name}/{yyyy}/{mm}/{dd}/{requestId}.json ## 設定(環境変数。`ZANKYO_SSM_PARAM` 指定時は SSM の JSON を優先) +既定値 → 環境変数 → SSM の JSON の順に重ね、後から重ねた値が優先する。ただし SSM を読む前に +決まるものは、SSM の値では変わらない。`ZANKYO_SSM_PARAM` と `ZANKYO_SSM_TIMEOUT_MS` は環境変数だけで +指定する。環境変数の `ZANKYO_DISABLED` が真のときと、環境変数の値が不正なときは、SSM を読まずに +記録を止める(passthrough)。 + | env | 既定 | 用途 | |---|---|---| -| `ZANKYO_BUCKET` | (必須) | 失敗レコードの保存先 | +| `ZANKYO_BUCKET` | (必須) | 失敗レコードの保存先。SSM の取得に成功すれば、SSM の JSON の値だけでもよい | | `ZANKYO_KMS_KEY` | SSE-S3 | 暗号化キー | -| `ZANKYO_SSM_PARAM` | なし | 設定 JSON を保持する SSM Parameter 名。指定時は env より優先 | +| `ZANKYO_SSM_PARAM` | なし | 設定 JSON を保持する SSM Parameter 名。指定時は、JSON にあるキーが env より優先。この名前自体は env だけで指定する | | `ZANKYO_SCRUB_FIELDS` | 既定 denylist | 追加フィールド名(カンマ区切り) | | `ZANKYO_SCRUB_MODE` | `mask` | `mask` / `hash`(HMAC 擬似名化)/ `off` | | `ZANKYO_MAX_EVENT_KB` | `256` | イベント保存の上限 | -| `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ | +| `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ。環境変数の真は SSM を読む前に効き、SSM の値では解除できない | ### scrub 規則(ハイブリッド) diff --git a/proxy/src/config.rs b/proxy/src/config.rs index f371c0c..0ba5306 100644 --- a/proxy/src/config.rs +++ b/proxy/src/config.rs @@ -1,9 +1,14 @@ //! 設定の解決。 //! -//! 環境変数が既定の供給元。`ZANKYO_SSM_PARAM` が指定されている場合は -//! SSM Parameter Store の JSON を読み、同じキーがあれば env を上書きする -//! (複数関数で設定を一元管理したい利用者のため)。SSM 側のスキーマは -//! env 名と同じキーを持つフラットな JSON オブジェクト。 +//! 既定値 → 環境変数 → SSM の順に重ね、後から重ねた値が優先する。 +//! `ZANKYO_SSM_PARAM` が指定されている場合は SSM Parameter Store の JSON を +//! 読み、同じキーがあれば env を上書きする(複数関数で設定を一元管理したい +//! 利用者のため)。SSM 側のスキーマは env 名と同じキーを持つフラットな +//! JSON オブジェクト。ただし次は SSM を読む前に決まる(`setup.rs`)。 +//! - `ZANKYO_SSM_PARAM`・`ZANKYO_SSM_TIMEOUT_MS` は env だけで決める +//! (`ssm_overlay.rs` の `ENV_ONLY_KEYS`)。 +//! - env の `ZANKYO_DISABLED` が真なら、SSM を読まずに passthrough にする。 +//! - env の値が不正なら設定エラーとし、SSM を読まずに passthrough にする。 use crate::error::{Result, ZankyoError}; use std::collections::{BTreeSet, HashMap}; diff --git a/proxy/src/setup.rs b/proxy/src/setup.rs index 18a1a02..5b5aa36 100644 --- a/proxy/src/setup.rs +++ b/proxy/src/setup.rs @@ -25,6 +25,8 @@ pub struct RecordPlan { /// env 設定 + SSM overlay から起動形態を決める。 /// 記録を続行できない理由はすべてここで warn として残し、 /// 呼び出し側は enum の分岐だけを見ればよい。 +/// env の設定エラーと env の `ZANKYO_DISABLED` は、SSM を読む前に +/// passthrough を決める。SSM の値ではどちらも覆らない(`config.rs` 参照)。 pub async fn resolve_plan(env_map: &HashMap) -> StartupPlan { let mut cfg = match Config::from_env_map(env_map) { Ok(c) => c, @@ -37,6 +39,7 @@ pub async fn resolve_plan(env_map: &HashMap) -> StartupPlan { // Lambda 環境外(ローカル実行)。プロキシ先が無いので passthrough。 return StartupPlan::Passthrough; }; + // 緊急停止は SSM の到達性に依存させない。SSM の false では解除しない。 if cfg.disabled { info!("ZANKYO_DISABLED is set; running passthrough"); return StartupPlan::Passthrough; From d9d966fd0bf944c263fc752d9716074f0fd1ed5b Mon Sep 17 00:00:00 2001 From: seike460 Date: Wed, 30 Sep 2026 02:15:02 +0900 Subject: [PATCH 88/97] =?UTF-8?q?docs:=20=E8=A8=98=E9=8C=B2=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=20agent=20=E3=81=8C=E8=AA=AD=E3=81=BE?= =?UTF-8?q?=E3=81=9A=E3=81=AB=E6=97=A2=E5=AE=9A=E5=80=A4=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=86=E8=A8=AD=E5=AE=9A=E3=82=92=204=20=E3=81=A4=E3=81=A8?= =?UTF-8?q?=E3=82=82=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit README は ZANKYO_REGISTER_TIMEOUT_MS と ZANKYO_EXT_RETRY_MS だけを挙げていた。 実装(run_passthrough_agent)は ZANKYO_EXT_BODY_KB と ZANKYO_EXT_MAX_POLL_FAILURES も読まず、既定値を使う。README の本文と 設定表、ARCHITECTURE.md、CHANGELOG の該当項目に 4 つとも書いた。 --- ARCHITECTURE.md | 3 +++ CHANGELOG.md | 4 +++- README.md | 14 +++++++++----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 2043235..d91df3e 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -35,6 +35,9 @@ proxy が即削除する(残存=未完の証跡)。 agent は passthrough 判定でも終了せず、`SHUTDOWN` だけを購読して 待機する。登録前や `SHUTDOWN` 前に extension が終了すると、 終了コードに関係なく platform が Init を失敗させるため。 +このとき設定が壊れている場合に備えて、Extensions API の設定 +(`ZANKYO_REGISTER_TIMEOUT_MS`・`ZANKYO_EXT_RETRY_MS`・`ZANKYO_EXT_BODY_KB`・ +`ZANKYO_EXT_MAX_POLL_FAILURES`)は読まず、既定値を使う。 同じ理由で、register と `/event/next` の一時的な失敗は再試行し、 `SHUTDOWN` まで終了しない。終了するのは、登録の 4xx 拒否・500 (公式リファレンスが「回復不能。速やかに終了」と定める)・ diff --git a/CHANGELOG.md b/CHANGELOG.md index c4da1f0..3206bcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,7 +36,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **proxy** — 記録しない状態(`ZANKYO_DISABLED`・バケット未設定・設定エラー)で、 external extension が register せずに終了していた。Lambda はこれを Extension.Crash とみなし、関数の Init を失敗させうる。`SHUTDOWN` だけを - 購読して待機するようにした + 購読して待機するようにした。このとき、設定が壊れている場合に備えて、 + `ZANKYO_REGISTER_TIMEOUT_MS`・`ZANKYO_EXT_RETRY_MS`・`ZANKYO_EXT_BODY_KB`・ + `ZANKYO_EXT_MAX_POLL_FAILURES` は読まず、既定値を使う - **proxy** — external extension(agent)が、Extensions API の一時的な失敗で `SHUTDOWN` の前に終了していた。登録は 1 回の失敗で、`/event/next` は連続失敗が `ZANKYO_EXT_MAX_POLL_FAILURES` に達すると、終了コード 0 で終わっていた。 diff --git a/README.md b/README.md index f758ee9..796d3b6 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,8 @@ agent は `SHUTDOWN` だけを購読して待機します。登録前や `SHUTDO 同じ理由で、agent は Extensions API の一時的な失敗では終了しません。 登録は `ZANKYO_REGISTER_TIMEOUT_MS` の時間内で再試行します。 `/event/next` は、`SHUTDOWN` を受けるまで `ZANKYO_EXT_RETRY_MS` の間隔で再試行します。 -記録しない状態では、設定が壊れている場合に備えて、これらの既定値を使います。 +記録しない状態では、設定が壊れている場合に備えて、`ZANKYO_REGISTER_TIMEOUT_MS`・ +`ZANKYO_EXT_RETRY_MS`・`ZANKYO_EXT_BODY_KB`・`ZANKYO_EXT_MAX_POLL_FAILURES` を読まず、既定値を使います。 `SHUTDOWN` の前に終了するのは、次の 3 つの場合だけです。このときの終了コードは 1 です。 - 登録が 4xx で拒否された @@ -174,10 +175,10 @@ JSON のオブジェクトでないときは、warn を出して env の設定 | `ZANKYO_SPILL_RETRY_MS` | `60000` | spill 再送を試みる間隔(生存中の定期回収) | | `ZANKYO_SPILL_MAX_AGE_SECS` | `604800` | spill ファイルの有効期間。超過分は再送せず破棄 | | `ZANKYO_MAX_BODY_KB` | `8192` | Runtime API が受け付けるボディ上限(KiB) | -| `ZANKYO_EXT_BODY_KB` | `1024` | Extensions API イベントボディ上限(KiB) | -| `ZANKYO_REGISTER_TIMEOUT_MS` | `10000` | extension 登録の上限時間(一時的な失敗の再試行を含む) | -| `ZANKYO_EXT_RETRY_MS` | `500` | Extensions API(登録・event/next)が失敗したときの再試行間隔 | -| `ZANKYO_EXT_MAX_POLL_FAILURES` | `120` | Runtime API に接続できない状態が続いたときの再試行回数の上限(超過で agent が終了する)。応答が返る失敗は数えない | +| `ZANKYO_EXT_BODY_KB` | `1024`※2 | Extensions API イベントボディ上限(KiB) | +| `ZANKYO_REGISTER_TIMEOUT_MS` | `10000`※2 | extension 登録の上限時間(一時的な失敗の再試行を含む) | +| `ZANKYO_EXT_RETRY_MS` | `500`※2 | Extensions API(登録・event/next)が失敗したときの再試行間隔 | +| `ZANKYO_EXT_MAX_POLL_FAILURES` | `120`※2 | Runtime API に接続できない状態が続いたときの再試行回数の上限(超過で agent が終了する)。応答が返る失敗は数えない | | `ZANKYO_SSM_TIMEOUT_MS` | `2000` | SSM get_parameter の上限時間。Lambda の Init 上限(10 秒)に含まれる。SSM を読む前に使うので、環境変数でだけ指定できる(SSM の JSON に書いても無視する) | | `ZANKYO_FORWARD_TIMEOUT_MS` | `60000` | 上流転送の上限時間。`/next` は応答ヘッダーまで無制限に待ち(ロングポーリング)、応答ボディの読み取りにだけ使う | | `ZANKYO_DISABLED` | `false` | 緊急停止スイッチ(passthrough)。環境変数の真は SSM を読む前に効き、SSM の値では解除できない | @@ -186,6 +187,9 @@ JSON のオブジェクトでないときは、warn を出して env の設定 `ZANKYO_SSM_PARAM` を指定して SSM の取得に成功した場合は、SSM の JSON の `ZANKYO_BUCKET` だけでも 記録します。このとき環境変数の `ZANKYO_BUCKET` は要りません。 +※2 記録しない状態(`ZANKYO_DISABLED`・バケット未設定・設定エラー)の agent は、この値を読まず、 +既定値を使います(「timeout 捕捉」の節)。 + ## データ仕様 ### S3 レイアウト From d7943d5b9b58ee82cf238e76e7cad42bec8c6b3e Mon Sep 17 00:00:00 2001 From: seike460 Date: Wed, 30 Sep 2026 02:16:59 +0900 Subject: [PATCH 89/97] =?UTF-8?q?docs(proxy):=20=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E3=81=AE=E5=AE=89=E5=85=A8=E4=B8=8A=E9=99=90=E3=82=92=20ARCHIT?= =?UTF-8?q?ECTURE.md=20=E3=81=AB=E4=B8=80=E8=A6=A7=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=80=81=E4=B8=8D=E5=A4=89=E6=9D=A1=E4=BB=B6=E3=82=92=E3=81=93?= =?UTF-8?q?=E3=82=8C=E3=81=AB=E5=90=88=E3=82=8F=E3=81=9B=E3=81=A6=E7=8B=AD?= =?UTF-8?q?=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ARCHITECTURE.md は上限・タイムアウト・間隔をコードへ埋め込まないとしていたが、 EXT_BODY_TIMEOUT(1 秒)など設定で変えない安全のための上限がある。 不変条件を「利用者が調整する動作ノブ」に狭め、9 つの定数を表にした。 extension.rs の名前の無い数値(4096 と 200)は ERROR_BODY_MAX_BYTES と SHUTDOWN_DEADLINE_MARGIN_MS にした(値は同じ)。表と proxy/src の定数は proxy/tests/docs_it.rs が突き合わせる。 --- ARCHITECTURE.md | 31 +++++++++++++++++++-- CHANGELOG.md | 4 +++ README.md | 6 ++-- proxy/src/extension.rs | 15 ++++++++-- proxy/tests/docs_it.rs | 63 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 111 insertions(+), 8 deletions(-) create mode 100644 proxy/tests/docs_it.rs diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index d91df3e..f9378b1 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -52,10 +52,12 @@ Runtime API への接続不能の継続(`ZANKYO_EXT_MAX_POLL_FAILURES` 回) 例外は SSM を読む前に決まるもの。取得に使う `ZANKYO_SSM_PARAM`・ `ZANKYO_SSM_TIMEOUT_MS` は env だけで決め、SSM の JSON では上書きしない (`ssm_overlay.rs` の `ENV_ONLY_KEYS`)。env の `ZANKYO_DISABLED` の真と - env の設定エラーは、SSM を読まずに passthrough を決める。動作ノブ - (上限・タイムアウト・間隔)をコードへ埋め込まない。新しい数値設定は + env の設定エラーは、SSM を読まずに passthrough を決める。 +- **利用者が調整する動作ノブ(上限・タイムアウト・間隔)をコードへ + 埋め込まない**。`ZANKYO_*` で変えられるようにし、新しい数値設定は `config.rs` の env 読み取り + `ssm_overlay.rs` の - `SSM_NUM_FIELDS` に 1 行で済む。 + `SSM_NUM_FIELDS` に 1 行で済む。例外は下の「固定の安全上限」に挙げた + 定数だけで、足すときは名前付きの定数にして表にも載せる。 - **拡張はデータの 1 エントリ追加で完結**。scrub パターンは `scrub_data.rs`、CLI コマンドは `bin.ts` のディスパッチ、 SSM キーは `SSM_NUM_FIELDS`、build arch は `TARGETS`。 @@ -69,6 +71,29 @@ Runtime API への接続不能の継続(`ZANKYO_EXT_MAX_POLL_FAILURES` 回) `#![forbid(unsafe_code)]` + clippy -D warnings。書式は biome / rustfmt で CI 強制。 +## 固定の安全上限 + +次の値は設定で変えず、コードの定数に固定する。どれもプロトコルや実装の都合で +決まる安全のための上限か、短い待ち時間で、利用者の環境に合わせて変える値ではない。 +変えられる値は README の設定表(`ZANKYO_*`)にある。`proxy/tests/docs_it.rs` が、 +この表と `proxy/src` の定数を突き合わせる。 + +| 定数 | 値 | 場所 | 役割 | +|---|---|---|---| +| `EXT_BODY_TIMEOUT` | 1 秒 | `extension.rs` | Extensions API の応答ヘッダーを受けてから、ボディを読み切るまでの上限。登録では、残り時間の方が短ければ残り時間 | +| `ERROR_BODY_MAX_BYTES` | 4096 バイト | `extension.rs` | Extensions API のエラー応答のボディを、診断用に読む上限 | +| `SHUTDOWN_DEADLINE_MARGIN_MS` | 200 ms | `extension.rs` | SHUTDOWN の `deadlineMs` の手前に残す余白。フラッシュ予算は、余白を引いた残り時間と `ZANKYO_FLUSH_BUDGET_MS` の小さい方 | +| `SHUTDOWN_GRACE_CAP_MS` | 1 秒 | `orchestrate.rs` | 子が先に終了したとき、同じプロセスの extension に SHUTDOWN が届くのを待つ上限(`ZANKYO_FLUSH_BUDGET_MS` との小さい方) | +| `DRAIN_SLACK_MS` | 1 秒 | `orchestrate.rs` | 終了時に保存の完了を待つ時間枠で、`ZANKYO_PUT_TIMEOUT_MS` に足す余白 | +| `ACCEPT_BACKOFF` | 50 ms | `proxy.rs` | Runtime API の listen で、accept に失敗したときの再試行間隔 | +| `DRAIN_POLL` | 10 ms | `proxy.rs` | 終了時に、実行中のハンドラが無くなったかを確かめる間隔 | +| `PART_ORPHAN_GRACE` | 60 秒 | `spill.rs` | 書きかけの `.part` を、クラッシュ後の残りとみなして消すまでの猶予 | +| `RECORDED_CAP` | 4096 件 | `inflight.rs` | 記録済みの requestId(二重記録の防止用)を覚えておく件数の上限 | + +設定を読んでも使わない場合が 1 つある。記録しない状態の agent は、設定が壊れている +場合に備えて、Extensions API の 4 つの設定を読まず、既定値(`config.rs` の定数)を使う +(上の「全体像」)。 + ## モジュール対応(proxy/src) | ファイル | 責務 | diff --git a/CHANGELOG.md b/CHANGELOG.md index 3206bcf..a008289 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,6 +57,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 キー・環境変数の `ZANKYO_DISABLED` の真・環境変数の設定エラー)も書いた。 README の設定表には、SSM の取得に成功すれば、SSM の JSON の `ZANKYO_BUCKET` だけでも 記録することを書いた +- **proxy** — README と ARCHITECTURE.md は、上限・タイムアウト・間隔をすべて + `ZANKYO_*` で変えられると説明していた。実際は、Extensions API の応答ボディを + 読む上限時間(1 秒)など、設定で変えない安全のための上限がある。 + ARCHITECTURE.md に一覧(固定の安全上限)を置き、説明をこれに合わせた - **proxy** — 空文字の `ZANKYO_SSM_PARAM` を未設定として扱う。以前は init の たびに空の名前で SSM を呼び、起動を遅らせていた - **proxy** — external extension 構成で、呼び出し中にランタイムがクラッシュすると、 diff --git a/README.md b/README.md index 796d3b6..2c98d22 100644 --- a/README.md +++ b/README.md @@ -333,8 +333,10 @@ cargo fmt --all -- --check && cargo clippy --locked --workspace --all-targets -- ### 保守性の指針 -設定は既定値 → env → SSM overlay の順に重ねて解決され(後が優先。例外は「設定」の節)、動作ノブはすべて -`ZANKYO_*` 環境変数で外から変えられます(一覧は上の表)。拡張は +設定は既定値 → env → SSM overlay の順に重ねて解決され(後が優先。例外は「設定」の節)、 +利用者が調整する動作ノブ(上限・タイムアウト・間隔)は `ZANKYO_*` 環境変数で外から変えられます +(一覧は上の表)。プロトコルや実装の都合で決まる安全のための上限(Extensions API の応答ボディを +読む 1 秒など)は、コードの定数に固定しています(一覧は ARCHITECTURE.md の「固定の安全上限」)。拡張は データの 1 エントリ追加で済みます: scrub パターン・CLI コマンド・ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収・ 送れたファイルの削除までライフサイクルが閉じており、rerun で diff --git a/proxy/src/extension.rs b/proxy/src/extension.rs index 3733689..fe50dbc 100644 --- a/proxy/src/extension.rs +++ b/proxy/src/extension.rs @@ -33,12 +33,20 @@ use tracing::{info, warn}; const EXT_BASE: &str = "/2020-01-01/extension"; +// 次の 3 つは設定で変えない固定の安全上限(ARCHITECTURE.md の「固定の安全上限」)。 + /// 応答ヘッダーを受けてから、ボディを読み切るまでの上限時間。 /// Extensions API はヘッダーに続けてボディをすぐ送る。ヘッダーだけ返して /// ボディを閉じない応答に、登録の期限や、再試行・SHUTDOWN の検知を /// 止められないようにする。 const EXT_BODY_TIMEOUT: Duration = Duration::from_secs(1); +/// エラー応答のボディを診断用に読む上限(バイト)。拒否の理由が分かれば足りる。 +const ERROR_BODY_MAX_BYTES: usize = 4096; + +/// SHUTDOWN の deadlineMs の手前に残す余白(ms)。凍結の直前まで PUT を続けない。 +const SHUTDOWN_DEADLINE_MARGIN_MS: i64 = 200; + /// Extensions API 呼び出しの失敗。再試行するかどうかを種類で決める。 #[derive(Debug)] enum ApiError { @@ -97,7 +105,7 @@ async fn read_body( /// エラー応答のボディを診断用に読む(platform の拒否理由が分かる)。 /// 読めなかったときは空にし、ステータスによる判断はそのまま続ける。 async fn error_body(body: hyper::body::Incoming, within: Duration) -> String { - read_body(body, 4096, within) + read_body(body, ERROR_BODY_MAX_BYTES, within) .await .map(|b| String::from_utf8_lossy(&b).into_owned()) .unwrap_or_default() @@ -448,7 +456,8 @@ async fn wait_for_shutdown( } /// SHUTDOWN イベントの deadlineMs と設定予算から実際のフラッシュ予算を決める。 -/// 凍結期限の 200ms 手前までを残時間とみなし、設定予算との小さい方を取る。 +/// 凍結期限の `SHUTDOWN_DEADLINE_MARGIN_MS` 手前までを残時間とみなし、設定予算との +/// 小さい方を取る。 /// deadlineMs が無い・過去・負値のときは設定予算をそのまま使う。 fn flush_budget_for(deadline_ms: Option, configured: Duration) -> Duration { deadline_ms @@ -458,7 +467,7 @@ fn flush_budget_for(deadline_ms: Option, configured: Duration) -> Duration let now_ms = time::OffsetDateTime::now_utc().unix_timestamp_nanos() / 1_000_000; let remaining = d .saturating_sub(i64::try_from(now_ms).unwrap_or(i64::MAX)) - .saturating_sub(200); + .saturating_sub(SHUTDOWN_DEADLINE_MARGIN_MS); u64::try_from(remaining).ok() }) .map(|ms| configured.min(Duration::from_millis(ms))) diff --git a/proxy/tests/docs_it.rs b/proxy/tests/docs_it.rs new file mode 100644 index 0000000..b4cd384 --- /dev/null +++ b/proxy/tests/docs_it.rs @@ -0,0 +1,63 @@ +//! 文書とコードの突き合わせ。 +//! 設定で変えない固定の上限・タイムアウト・間隔(`proxy/src` の数値や時間の定数)と、 +//! ARCHITECTURE.md の「固定の安全上限」の表が一致することを確かめる。 +//! 設定の既定値(`DEFAULT_*`)は README の設定表が扱うので、ここでは見ない。 + +use std::collections::BTreeSet; +use std::path::Path; + +const SECTION: &str = "## 固定の安全上限"; + +/// ソースから、数値か時間を型に持つ定数の名前を集める。テストのモジュールは見ない。 +fn fixed_consts(src: &str) -> BTreeSet { + let body = src.split("#[cfg(test)]").next().unwrap_or(src); + body.lines() + .filter_map(|line| { + let line = line.trim_start(); + let line = line + .strip_prefix("pub(crate) ") + .or_else(|| line.strip_prefix("pub ")) + .unwrap_or(line); + let (name, rest) = line.strip_prefix("const ")?.split_once(':')?; + let ty = rest.split('=').next()?.trim(); + let numeric = matches!(ty, "u32" | "u64" | "usize" | "i64") || ty.ends_with("Duration"); + (numeric && !name.starts_with("DEFAULT_")).then(|| name.trim().to_string()) + }) + .collect() +} + +/// 表の 1 列目(`| \`NAME\` |`)に並ぶ定数の名前を集める。 +fn listed_consts(doc: &str) -> BTreeSet { + let start = doc + .find(SECTION) + .expect("ARCHITECTURE.md に固定の安全上限の節が要る"); + let section = &doc[start + SECTION.len()..]; + let section = §ion[..section.find("\n## ").unwrap_or(section.len())]; + section + .lines() + .filter_map(|line| { + let name = line.strip_prefix("| `")?.split('`').next()?; + Some(name.to_string()) + }) + .collect() +} + +#[test] +fn fixed_caps_match_architecture_table() { + let root = Path::new(env!("CARGO_MANIFEST_DIR")); + let mut in_code = BTreeSet::new(); + for entry in std::fs::read_dir(root.join("src")).unwrap() { + let path = entry.unwrap().path(); + if path.extension().is_some_and(|e| e == "rs") { + in_code.extend(fixed_consts(&std::fs::read_to_string(&path).unwrap())); + } + } + let doc = std::fs::read_to_string(root.join("../ARCHITECTURE.md")).unwrap(); + let in_doc = listed_consts(&doc); + // 走査が空振りしていないこと(既知の定数を拾えている) + assert!(in_code.contains("EXT_BODY_TIMEOUT"), "{in_code:?}"); + assert_eq!( + in_code, in_doc, + "proxy/src の固定値と ARCHITECTURE.md の表が食い違う" + ); +} From b8b252de701fb9bf7a201237fc67d392e4c74113 Mon Sep 17 00:00:00 2001 From: seike460 Date: Wed, 30 Sep 2026 02:17:43 +0900 Subject: [PATCH 90/97] =?UTF-8?q?docs(readme):=20ZANKYO=5FSPILL=5FDIR=20?= =?UTF-8?q?=E3=81=8C=E7=B5=B6=E5=AF=BE=E3=83=91=E3=82=B9=E3=81=A0=E3=81=91?= =?UTF-8?q?=E3=82=92=E5=8F=97=E3=81=91=E4=BB=98=E3=81=91=E3=82=8B=E3=81=93?= =?UTF-8?q?=E3=81=A8=E3=81=A8=E3=80=81construct=20=E3=81=A8=20SSM=20?= =?UTF-8?q?=E3=81=AE=E4=BD=B5=E7=94=A8=E6=99=82=E3=81=AE=E6=A8=A9=E9=99=90?= =?UTF-8?q?=E3=82=92=E6=9B=B8=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit config.rs の valid_spill_dir は、相対パスと空文字を warn を出して無視するが、 設定表に書いていなかった。SSM の JSON は construct が設定した ZANKYO_BUCKET・ ZANKYO_KMS_KEY も上書きし、construct が付ける権限はそのバケットとキーの分だけ であることも書いた。 --- CHANGELOG.md | 4 ++++ README.md | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a008289..6080fc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `ZANKYO_*` で変えられると説明していた。実際は、Extensions API の応答ボディを 読む上限時間(1 秒)など、設定で変えない安全のための上限がある。 ARCHITECTURE.md に一覧(固定の安全上限)を置き、説明をこれに合わせた +- **proxy** — README の設定表は、`ZANKYO_SPILL_DIR` が絶対パスだけを受け付け、 + それ以外を warn を出して無視することを書いていなかった。あわせて、construct が + 設定する `ZANKYO_BUCKET`・`ZANKYO_KMS_KEY` も SSM の JSON で上書きされ、 + そのとき書き込みの権限を別に付与する必要があることを書いた - **proxy** — 空文字の `ZANKYO_SSM_PARAM` を未設定として扱う。以前は init の たびに空の名前で SSM を呼び、起動を遅らせていた - **proxy** — external extension 構成で、呼び出し中にランタイムがクラッシュすると、 diff --git a/README.md b/README.md index 2c98d22..597b26b 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,10 @@ JSON にあるキーだけが、環境変数の値を上書きします。複数 このとき関数のロールに `ssm:GetParameter` が要ります。カスタマー管理キーで暗号化した SecureString なら、そのキーの `kms:Decrypt` も要ります ([AWS ドキュメント](https://docs.aws.amazon.com/kms/latest/developerguide/services-parameter-store.html#parameter-policy-kms-encryption))。 -CDK construct はこの権限を付けないので、別に付与してください。取得に失敗したときと、値が +CDK construct はこの権限を付けないので、別に付与してください。construct が設定する +`ZANKYO_BUCKET`・`ZANKYO_KMS_KEY` も、SSM の JSON に同じキーがあれば上書きされます。 +construct が付ける書き込みの権限は construct のバケットとキーの分だけなので、 +SSM で別のバケットやキーを指すなら、その権限も別に付与してください。取得に失敗したときと、値が JSON のオブジェクトでないときは、warn を出して env の設定だけで動きます (バケットを SSM 側にだけ書いた場合は、記録しません)。 @@ -170,7 +173,7 @@ JSON のオブジェクトでないときは、warn を出して env の設定 | `ZANKYO_MAX_EVENT_KB` | `256` | イベント保存の上限(超過は先頭のみ + `truncated`) | | `ZANKYO_FLUSH_BUDGET_MS` | `1200` | 失敗レコードの PutObject 上限時間(呼び出し中の記録と SHUTDOWN フラッシュ)。失敗時の応答はこの時間まで遅れうる | | `ZANKYO_PUT_TIMEOUT_MS` | `5000` | spill 再送の PutObject 上限時間(起動時・定期回収) | -| `ZANKYO_SPILL_DIR` | `/tmp/zankyo/` | `.inflight` ステージと、PUT 前に先書きする失敗レコード(未送信分は再送まで残る)の置き場(既定は関数名でスコープ) | +| `ZANKYO_SPILL_DIR` | `/tmp/zankyo/` | `.inflight` ステージと、PUT 前に先書きする失敗レコード(未送信分は再送まで残る)の置き場(既定は関数名でスコープ)。絶対パスだけを受け付け、それ以外は warn を出して無視する | | `ZANKYO_SPILL_MAX_FILES` | `64` | spill 保持数の上限。超過分は古いものから破棄 | | `ZANKYO_SPILL_RETRY_MS` | `60000` | spill 再送を試みる間隔(生存中の定期回収) | | `ZANKYO_SPILL_MAX_AGE_SECS` | `604800` | spill ファイルの有効期間。超過分は再送せず破棄 | From 555111b3a92b09fb0e7902375a3e94378f530ff2 Mon Sep 17 00:00:00 2001 From: seike460 Date: Wed, 30 Sep 2026 02:17:59 +0900 Subject: [PATCH 91/97] =?UTF-8?q?docs(architecture):=20=E8=A8=98=E9=8C=B2?= =?UTF-8?q?=E3=81=97=E3=81=AA=E3=81=84=20agent=20=E3=81=AE=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=81=AE=E8=AA=AC=E6=98=8E=E3=82=92=20README=20?= =?UTF-8?q?=E3=81=AE=E8=A8=80=E3=81=84=E5=9B=9E=E3=81=97=E3=81=AB=E3=81=9D?= =?UTF-8?q?=E3=82=8D=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ARCHITECTURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index f9378b1..304d0b0 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -90,7 +90,7 @@ Runtime API への接続不能の継続(`ZANKYO_EXT_MAX_POLL_FAILURES` 回) | `PART_ORPHAN_GRACE` | 60 秒 | `spill.rs` | 書きかけの `.part` を、クラッシュ後の残りとみなして消すまでの猶予 | | `RECORDED_CAP` | 4096 件 | `inflight.rs` | 記録済みの requestId(二重記録の防止用)を覚えておく件数の上限 | -設定を読んでも使わない場合が 1 つある。記録しない状態の agent は、設定が壊れている +設定で指定しても効かない場合が 1 つある。記録しない状態の agent は、設定が壊れている 場合に備えて、Extensions API の 4 つの設定を読まず、既定値(`config.rs` の定数)を使う (上の「全体像」)。 From 1334da963483de0479366b839c85ede538aae8d5 Mon Sep 17 00:00:00 2001 From: seike460 Date: Wed, 30 Sep 2026 02:27:28 +0900 Subject: [PATCH 92/97] =?UTF-8?q?chore:=20lambda-zankyo=200.1.1=20?= =?UTF-8?q?=E3=82=92=E3=83=AA=E3=83=AA=E3=83=BC=E3=82=B9=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 5 ++++- Cargo.lock | 2 +- cli/package.json | 2 +- construct/package.json | 2 +- construct/src/zankyo.ts | 2 +- proxy/Cargo.toml | 2 +- sar/template.yaml | 4 ++-- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6080fc1..dc4887b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.1] - 2026-09-30 + ### Changed - **proxy** — 宣言する MSRV(`rust-version`)を、ロック済み依存の実際の要件 @@ -212,5 +214,6 @@ proxy・CLI・construct のコードは、タグと 83e4929 で同じである (x86_64 / arm64 の 2 Layer を 1 アプリとして公開) - examples、CI(fmt/clippy/test/biome/typecheck/build)、決定的 zip 梱包 -[Unreleased]: https://github.com/seike460/lambda-zankyo/compare/v0.1.0...HEAD +[Unreleased]: https://github.com/seike460/lambda-zankyo/compare/v0.1.1...HEAD +[0.1.1]: https://github.com/seike460/lambda-zankyo/releases/tag/v0.1.1 [0.1.0]: https://github.com/seike460/lambda-zankyo/releases/tag/v0.1.0 diff --git a/Cargo.lock b/Cargo.lock index 1cf9943..4361c49 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2389,7 +2389,7 @@ dependencies = [ [[package]] name = "zankyo" -version = "0.1.0" +version = "0.1.1" dependencies = [ "aws-config", "aws-sdk-s3", diff --git a/cli/package.json b/cli/package.json index 6376ede..0b70308 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "lambda-zankyo", - "version": "0.1.0", + "version": "0.1.1", "description": "Replay failed synchronous Lambda invocations: fixture, diff, redrive (paired with the zankyo Layer)", "type": "module", "license": "MIT", diff --git a/construct/package.json b/construct/package.json index ae4a505..1da617d 100644 --- a/construct/package.json +++ b/construct/package.json @@ -1,6 +1,6 @@ { "name": "zankyo-cdk", - "version": "0.1.0", + "version": "0.1.1", "description": "CDK construct that wires the zankyo Lambda layer, records bucket, and IAM to a function", "type": "module", "license": "MIT", diff --git a/construct/src/zankyo.ts b/construct/src/zankyo.ts index 51d4f3f..c266f4b 100644 --- a/construct/src/zankyo.ts +++ b/construct/src/zankyo.ts @@ -22,7 +22,7 @@ export const ZANKYO_APPLICATION_ID = const SAR_LAYER_OUTPUT = 'LayerVersionArn'; const SAR_LAYER_OUTPUT_ARM64 = 'LayerVersionArnArm64'; -const DEFAULT_SEMANTIC_VERSION = '0.1.0'; +const DEFAULT_SEMANTIC_VERSION = '0.1.1'; const DEFAULT_RETENTION_DAYS = 30; const WRAPPER_PATH = '/opt/zankyo-wrapper'; /** レコードの S3 キー接頭辞。proxy/src/record.rs の KEY_PREFIX と揃える。 */ diff --git a/proxy/Cargo.toml b/proxy/Cargo.toml index 08c77a5..adce547 100644 --- a/proxy/Cargo.toml +++ b/proxy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zankyo" -version = "0.1.0" +version = "0.1.1" edition.workspace = true license.workspace = true repository.workspace = true diff --git a/sar/template.yaml b/sar/template.yaml index bd14493..3cc171e 100644 --- a/sar/template.yaml +++ b/sar/template.yaml @@ -17,8 +17,8 @@ Metadata: ReadmeUrl: ../README.md Labels: [lambda, observability, replay, debugging, incidents] HomePageUrl: https://github.com/seike460/lambda-zankyo - SemanticVersion: 0.1.0 - SourceCodeUrl: https://github.com/seike460/lambda-zankyo/tree/v0.1.0 + SemanticVersion: 0.1.1 + SourceCodeUrl: https://github.com/seike460/lambda-zankyo/tree/v0.1.1 Resources: # ContentUri は scripts/build-layer.mts が書き出す zip。sam package で S3 に上げ、 From cd6f3fa0a310763669a7f6186c61ae868aae7785 Mon Sep 17 00:00:00 2001 From: seike460 Date: Thu, 1 Oct 2026 01:28:08 +0900 Subject: [PATCH 93/97] =?UTF-8?q?build(layer):=20x86=5F64=20=E3=81=AE=20cr?= =?UTF-8?q?oss=20=E3=82=B3=E3=83=B3=E3=83=86=E3=83=8A=E3=82=82=20digest=20?= =?UTF-8?q?=E3=81=A7=E5=9B=BA=E5=AE=9A=E3=81=97=E3=80=81=E3=83=AA=E3=83=AA?= =?UTF-8?q?=E3=83=BC=E3=82=B9=E6=89=8B=E9=A0=86=E3=82=92=20cross=20?= =?UTF-8?q?=E3=81=AB=E9=99=90=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ Cross.toml | 7 +++++-- README.md | 3 ++- RELEASING.md | 7 +++++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc4887b..b66a997 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **layer** — `scripts/build-layer.mts` の `BUILDER` は、`cross build` と `cargo build` だけを受け付ける。`cargo zigbuild` などは、zig が持つ musl libc と CRT をリンクしうる。その場合、Layer のライセンス表示と中身が食い違う +- **layer** — cross が x86_64 の Layer バイナリをビルドするコンテナも、aarch64 と同じく + `Cross.toml` で digest に固定した。タグが付け替えられても、同じ commit から同じ環境で + ビルドできる。RELEASING.md の手順は `BUILDER="cross build"` で両 arch をこのコンテナで + ビルドし、cross が無ければ手元の cargo に切り替えずに失敗する ### Fixed diff --git a/Cross.toml b/Cross.toml index e27f5fe..d7b6e5c 100644 --- a/Cross.toml +++ b/Cross.toml @@ -1,5 +1,8 @@ -# cross が aarch64 の Layer バイナリをビルドするコンテナ。タグは付け替えられるため、 -# digest で固定する。cross の版(.github/workflows/ci.yml の +# cross が Layer バイナリをビルドするコンテナ(x86_64・aarch64)。タグは付け替えられるため、 +# 両方とも digest で固定する。cross の版(.github/workflows/ci.yml の # `cargo install cross --version`)を上げるときは、同じ版のタグの digest に更新する。 +[target.x86_64-unknown-linux-musl] +image = "ghcr.io/cross-rs/x86_64-unknown-linux-musl:0.2.5@sha256:77db671d8356a64ae72a3e1415e63f547f26d374fbe3c4762c1cd36c7eac7b99" + [target.aarch64-unknown-linux-musl] image = "ghcr.io/cross-rs/aarch64-unknown-linux-musl:0.2.5@sha256:702154f52b2d8091671aa2c84d5582d849f949977228c735ff8462f93cc0e1e4" diff --git a/README.md b/README.md index 597b26b..05827d7 100644 --- a/README.md +++ b/README.md @@ -357,7 +357,8 @@ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収 `package.json` の `packageManager`(pnpm 10.13.1)。 - CI の全 GitHub Actions はコミット SHA でピン留めしています (`.github/workflows/ci.yml` の `@ # vN` コメント参照)。 - aarch64 をビルドする cross のコンテナは、`Cross.toml` で digest に固定しています。 + cross がビルドに使うコンテナは、x86_64 と aarch64 の両方を `Cross.toml` で digest に固定しています。 + CI の x86_64 は cross を使わず、runner の musl ツールチェーンでビルドします。 - `scripts/build-layer.mts` は決定的 zip を生成します: エントリの mtime を最古(zip 表現の下限 1980-01-01)に揃え、`zip -X` で 拡張属性を捨て、エントリ順を固定の引数順で渡します。 diff --git a/RELEASING.md b/RELEASING.md index 74dc7c5..1626483 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -12,7 +12,7 @@ commit から公開したため、タグと SAR のメタデータが食い違 ## 準備 - docker と cross 0.2.5(`cargo install cross --locked --version 0.2.5`)。 - aarch64 のコンテナは `Cross.toml` が digest で固定しています。 + cross のコンテナは、x86_64 と aarch64 の両方を `Cross.toml` が digest で固定しています。 - SAM CLI と、アカウント 446537410535 の AWS 認証情報。 - `sam package` が成果物を置く S3 バケット。公開するリージョン(ap-northeast-1)に作り、 SAR が読めるようにバケットポリシーを付けます @@ -78,13 +78,16 @@ git push origin v0.1.1 ## 3. Layer の zip を作る ```bash -node scripts/build-layer.mts +BUILDER="cross build" node scripts/build-layer.mts (cd dist/layer && shasum -a 256 zankyo-x86_64.zip zankyo-aarch64.zip > SHA256SUMS) ``` `dist/layer/zankyo-{x86_64,aarch64}.zip` と、SAR 用の同じ zip `sar/dist/layer-{x86_64,aarch64}.zip` ができます。 +`BUILDER="cross build"` を付けると、両 arch とも `Cross.toml` で固定したコンテナでビルドします。 +cross が無いときは、手元の cargo に切り替えずに失敗します。 + ## 4. SAR に公開する `sam publish` は、`sam package` 済みのテンプレートしか受け付けません。`sam package` が From 40cd1a349bb595d53c449f676c722dec0c5ee9ee Mon Sep 17 00:00:00 2001 From: seike460 Date: Thu, 1 Oct 2026 01:31:50 +0900 Subject: [PATCH 94/97] =?UTF-8?q?fix(proxy):=20=E4=B8=8A=E9=99=90=E3=82=92?= =?UTF-8?q?=E8=B6=85=E3=81=88=E3=82=8B=E3=83=AA=E3=82=AF=E3=82=A8=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=83=9C=E3=83=87=E3=82=A3=E3=81=AF=E6=AE=8B=E3=82=8A?= =?UTF-8?q?=E3=82=92=E8=AA=AD=E3=81=BF=E6=8D=A8=E3=81=A6=E3=81=A6=E3=81=8B?= =?UTF-8?q?=E3=82=89=20413=20=E3=82=92=E8=BF=94=E3=81=97=E3=80=81=E3=83=A9?= =?UTF-8?q?=E3=83=B3=E3=82=BF=E3=82=A4=E3=83=A0=E3=81=AB=E6=8E=A5=E7=B6=9A?= =?UTF-8?q?=E3=83=AA=E3=82=BB=E3=83=83=E3=83=88=E3=82=92=E5=B1=8A=E3=81=91?= =?UTF-8?q?=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ README.md | 2 +- proxy/src/proxy.rs | 13 +++++++------ proxy/src/upstream.rs | 32 ++++++++++++++++++++++++++++++++ proxy/tests/proxy_it.rs | 7 +++++-- 5 files changed, 49 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b66a997..f2149ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -100,6 +100,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `/error`・`/init/error` だけで、ほかの経路はそのまま中継するとしていた。実際は 経路を問わず、リクエストボディを `ZANKYO_MAX_BODY_KB` まで読んでから中継し、 超えたら中継せずに 413 を返す。説明を実際の動作に合わせた +- **proxy** — 上限(`ZANKYO_MAX_BODY_KB`)を超えるリクエストボディに 413 を返すとき、 + 残りを読まないまま接続を閉じていた。OS が RST を送るため、まだ書き込んでいる + ランタイムには 413 ではなく接続のリセットが届くことがあった。残りを読み捨てて + (メモリには溜めない)から 413 を返す - **proxy** — external extension(agent)が、Extensions API の応答ボディを 時間の上限なしに読んでいた。ヘッダーだけ返してボディを閉じない応答で、登録は `ZANKYO_REGISTER_TIMEOUT_MS` を過ぎても戻らずに Init を遅らせ、`/event/next` は diff --git a/README.md b/README.md index 05827d7..fc93d0b 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Lambda Service ──Runtime API──▶ zankyo proxy (Rust, Layer) ──▶ - **成功呼び出しは記録しません**。S3 への PUT も spill もしません。ボディを解釈するのは `/next`・`/response`・`/error`・`/init/error` だけで、ほかの経路は記録せずに中継します。 ランタイムが送るリクエストボディは、経路を問わず `ZANKYO_MAX_BODY_KB` まで読んでから - 中継します。上限を超えたら中継せず、413 を返します。 + 中継します。上限を超えたら中継せず、残りを読み捨ててから 413 を返します。 `/next` のイベントは timeout 捕捉のため `/tmp` に置き、呼び出しが完了したら消します (下の「timeout 捕捉」)。 - 失敗の定義: `/error` 呼出 / `/init/error` / `/response` 内の `errorType` diff --git a/proxy/src/proxy.rs b/proxy/src/proxy.rs index 4df16a2..cf04f4f 100644 --- a/proxy/src/proxy.rs +++ b/proxy/src/proxy.rs @@ -2,16 +2,17 @@ //! //! 子プロセス(実ランタイム)から見ると zankyo が Runtime API 本体に //! 見える。リクエストボディは経路を問わず `ZANKYO_MAX_BODY_KB` まで読んで -//! から転送し、超えたら上流へ中継せず 413 を返す。ボディを解釈して記録に -//! 使うのは `/next`・`/response`・`/error`・`/init/error` だけで、それ以外の -//! パス(`/restore/*` や、子プロセスから届く Extensions API・Telemetry API -//! など)は記録せず中継する。 +//! から転送し、超えたら上流へ中継せず 413 を返す。超えた分は読み捨ててから返す +//! (未読のまま閉じると、ランタイムには 413 ではなく接続のリセットが届くため)。 +//! ボディを解釈して記録に使うのは `/next`・`/response`・`/error`・`/init/error` +//! だけで、それ以外のパス(`/restore/*` や、子プロセスから届く Extensions API・ +//! Telemetry API など)は記録せず中継する。 //! `/next` のイベントは timeout 捕捉のため `/tmp` にステージし、完了時に消す。 //! 成功呼び出しでは spill も S3 への PUT もしない。 //! 各ルートの処理は `handlers.rs`、上流転送は `upstream.rs`。 use crate::store::Recorder; -use crate::upstream::{collect_bounded, forward, plain, strip_hop_by_hop, CollectError}; +use crate::upstream::{collect_or_discard, forward, plain, strip_hop_by_hop, CollectError}; use bytes::Bytes; use http::{HeaderMap, Method, Request, Response, StatusCode}; use http_body_util::{BodyExt, Full}; @@ -125,7 +126,7 @@ async fn handle(req: Request, st: &ProxyState) -> Response // この関数自身のランタイムで、止まって待たされるのはその要求だけになる // (関数のタイムアウトが上限になる)。時間で切ると、時間をかけて書き出す // 応答(RESPONSE_STREAM)を途中で切ってしまう。 - let body_bytes = match collect_bounded(body, body_limit).await { + let body_bytes = match collect_or_discard(body, body_limit).await { Ok(b) => b, Err(CollectError::TooLarge) => { return plain(StatusCode::PAYLOAD_TOO_LARGE, "zankyo: body too large"); diff --git a/proxy/src/upstream.rs b/proxy/src/upstream.rs index d1984e3..a86bd52 100644 --- a/proxy/src/upstream.rs +++ b/proxy/src/upstream.rs @@ -119,6 +119,38 @@ pub async fn collect_bounded( }) } +/// ランタイムからの要求ボディを `limit` バイトまで読む。超えたら、残りを読み捨ててから +/// `TooLarge` を返す。未読のデータを残して接続を閉じると OS が RST を送るため、 +/// まだ書き込んでいるランタイムには 413 ではなく接続のリセットが届いてしまう。 +/// 読み捨てる分はメモリに溜めない。時間の上限を付けない理由は `proxy::handle` の説明のとおり。 +pub async fn collect_or_discard( + mut body: Incoming, + limit: usize, +) -> std::result::Result { + let mut buf = bytes::BytesMut::new(); + let mut too_large = false; + while let Some(frame) = body.frame().await { + let frame = frame.map_err(|e| CollectError::Read(Box::new(e)))?; + let Ok(data) = frame.into_data() else { + continue; // trailers + }; + if too_large { + continue; + } + if data.len() > limit - buf.len() { + too_large = true; + buf = bytes::BytesMut::new(); + } else { + buf.extend_from_slice(&data); + } + } + if too_large { + Err(CollectError::TooLarge) + } else { + Ok(buf.freeze()) + } +} + /// プレーンテキスト応答の組み立て。 pub fn plain(status: StatusCode, msg: &'static str) -> Response { Response::builder() diff --git a/proxy/tests/proxy_it.rs b/proxy/tests/proxy_it.rs index a62c828..745686b 100644 --- a/proxy/tests/proxy_it.rs +++ b/proxy/tests/proxy_it.rs @@ -1576,8 +1576,11 @@ async fn oversized_body_is_rejected_without_forwarding() { let proxy = spawn_proxy(&api_addr, inflight, recorder).await; // MAX_BODY_BYTES (8MiB) を超えるボディは上流へ転送せず 413 を返す。 - // 記録しない経路(/restore/error 等)も、経路判定の前に同じ上限で読む - let big = Bytes::from(vec![b'x'; 9 * 1024 * 1024]); + // 記録しない経路(/restore/error 等)も、経路判定の前に同じ上限で読む。 + // 上限を超えた分は読み捨ててから返すので、書き込み中の送り手にも 413 が届く。 + // 超過分をソケットのバッファより十分大きくして、未読のまま閉じる実装なら + // 送り手が必ず接続のリセットを受けるようにしている + let big = Bytes::from(vec![b'x'; 32 * 1024 * 1024]); for path in [ "/2018-06-01/runtime/invocation/req-x/response", "/2018-06-01/runtime/restore/error", From 7f124946759330a9ae7e230e805970583786c40c Mon Sep 17 00:00:00 2001 From: seike460 Date: Thu, 1 Oct 2026 01:34:17 +0900 Subject: [PATCH 95/97] =?UTF-8?q?ci(layer):=20x86=5F64=20=E3=82=82=20cross?= =?UTF-8?q?=20=E3=81=AE=E5=9B=BA=E5=AE=9A=E3=82=B3=E3=83=B3=E3=83=86?= =?UTF-8?q?=E3=83=8A=E3=81=A7=E3=83=93=E3=83=AB=E3=83=89=E3=81=97=E3=80=81?= =?UTF-8?q?=E3=83=AA=E3=83=AA=E3=83=BC=E3=82=B9=E3=81=AE=20zip=20=E3=81=AF?= =?UTF-8?q?=E3=82=BF=E3=82=B0=E3=81=AE=20commit=20=E3=81=AE=20CI=20artifac?= =?UTF-8?q?t=20=E3=82=92=E4=BD=BF=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 11 ++++++----- CHANGELOG.md | 6 +++--- README.md | 3 ++- RELEASING.md | 34 +++++++++++++++++++++++++++------- 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9516835..f93fed2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,13 +116,14 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: dtolnay/rust-toolchain@6bed0761d98439e5a578e2877258200ad565ba87 # stable - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2 - - name: install musl tools + cmake (aws-lc-sys build) - run: sudo apt-get update && sudo apt-get install -y musl-tools cmake zip - - name: build x86_64 - run: cargo build --locked --release --target x86_64-unknown-linux-musl -p zankyo - - name: build aarch64 via cross (docker) + - name: install zip (layer packaging) + run: sudo apt-get update && sudo apt-get install -y zip + # 両 arch とも、Cross.toml で digest に固定したコンテナでビルドする。 + # リリースの zip は、タグの commit でこの job が作った artifact を使う(RELEASING.md) + - name: build x86_64 and aarch64 via cross (docker) run: | cargo install cross --locked --version 0.2.5 + cross build --locked --release --target x86_64-unknown-linux-musl -p zankyo cross build --locked --release --target aarch64-unknown-linux-musl -p zankyo - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index f2149ea..29905c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,9 +33,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `cargo build` だけを受け付ける。`cargo zigbuild` などは、zig が持つ musl libc と CRT をリンクしうる。その場合、Layer のライセンス表示と中身が食い違う - **layer** — cross が x86_64 の Layer バイナリをビルドするコンテナも、aarch64 と同じく - `Cross.toml` で digest に固定した。タグが付け替えられても、同じ commit から同じ環境で - ビルドできる。RELEASING.md の手順は `BUILDER="cross build"` で両 arch をこのコンテナで - ビルドし、cross が無ければ手元の cargo に切り替えずに失敗する + `Cross.toml` で digest に固定した。CI も x86_64 を runner の musl ツールチェーンではなく + cross でビルドし、両 arch を固定したコンテナで作る。リリースの Layer の zip には、 + タグの commit で CI が作り、中身を検査した artifact を使う(RELEASING.md) ### Fixed diff --git a/README.md b/README.md index fc93d0b..7ad0084 100644 --- a/README.md +++ b/README.md @@ -358,7 +358,8 @@ SSM キー・build arch。spill は atomic 書き込み・上限・定期回収 - CI の全 GitHub Actions はコミット SHA でピン留めしています (`.github/workflows/ci.yml` の `@ # vN` コメント参照)。 cross がビルドに使うコンテナは、x86_64 と aarch64 の両方を `Cross.toml` で digest に固定しています。 - CI の x86_64 は cross を使わず、runner の musl ツールチェーンでビルドします。 + CI は両 arch をこのコンテナでビルドし、リリースの Layer の zip にはタグの commit で CI が作った + artifact を使います(`RELEASING.md`)。 - `scripts/build-layer.mts` は決定的 zip を生成します: エントリの mtime を最古(zip 表現の下限 1980-01-01)に揃え、`zip -X` で 拡張属性を捨て、エントリ順を固定の引数順で渡します。 diff --git a/RELEASING.md b/RELEASING.md index 1626483..e3f3424 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -11,8 +11,9 @@ commit から公開したため、タグと SAR のメタデータが食い違 ## 準備 -- docker と cross 0.2.5(`cargo install cross --locked --version 0.2.5`)。 - cross のコンテナは、x86_64 と aarch64 の両方を `Cross.toml` が digest で固定しています。 +- Layer の zip を手元でビルドする場合だけ、x86_64 の Linux と docker と cross 0.2.5 + (`cargo install cross --locked --version 0.2.5`)。cross のコンテナは、x86_64 と aarch64 の + 両方を `Cross.toml` が digest で固定しています。通常は CI の artifact を使うので要りません(手順 3)。 - SAM CLI と、アカウント 446537410535 の AWS 認証情報。 - `sam package` が成果物を置く S3 バケット。公開するリージョン(ap-northeast-1)に作り、 SAR が読めるようにバケットポリシーを付けます @@ -75,18 +76,37 @@ git push origin v0.1.1 以降の手順は、この commit(main の先端=タグ)のまま、作業ツリーを変えずに行います。 -## 3. Layer の zip を作る +## 3. Layer の zip を用意する + +Layer の zip は、タグの commit で main の CI(`layer binary (musl)` job)が作った artifact +`zankyo-layer` を使います。この job は、両 arch とも `Cross.toml` で digest に固定したコンテナで +ビルドし、zip の中身(エントリと mode・ライセンス表示・ELF の arch・静的リンク)を確かめてから +artifact に上げます。 ```bash -BUILDER="cross build" node scripts/build-layer.mts +run=$(gh run list --workflow ci --branch main --event push --status success \ + --commit "$(git rev-parse HEAD)" --json databaseId --jq '.[0].databaseId // empty') +test -n "$run" # main の CI が、この commit で成功していること +gh run download "$run" -n zankyo-layer -D dist/layer +mkdir -p sar/dist +cp dist/layer/zankyo-x86_64.zip sar/dist/layer-x86_64.zip +cp dist/layer/zankyo-aarch64.zip sar/dist/layer-aarch64.zip (cd dist/layer && shasum -a 256 zankyo-x86_64.zip zankyo-aarch64.zip > SHA256SUMS) ``` `dist/layer/zankyo-{x86_64,aarch64}.zip` と、SAR 用の同じ zip -`sar/dist/layer-{x86_64,aarch64}.zip` ができます。 +`sar/dist/layer-{x86_64,aarch64}.zip` がそろいます。`dist/` と `sar/dist/` は git の管理外です。 + +x86_64 の Linux では、CI と同じコンテナで手元からビルドすることもできます。 + +```bash +BUILDER="cross build" node scripts/build-layer.mts +(cd dist/layer && shasum -a 256 zankyo-x86_64.zip zankyo-aarch64.zip > SHA256SUMS) +``` -`BUILDER="cross build"` を付けると、両 arch とも `Cross.toml` で固定したコンテナでビルドします。 -cross が無いときは、手元の cargo に切り替えずに失敗します。 +`BUILDER="cross build"` を付けると、cross が無いときに手元の cargo へ切り替えずに失敗します。 +cross 0.2.5 は、Linux 以外のホストでは Linux 用の Rust toolchain を別に要求します。 +そのため、macOS などでは CI の artifact を使います。 ## 4. SAR に公開する From 2f89f7ecabe16ec2db8042b9cec6aeff298a7e03 Mon Sep 17 00:00:00 2001 From: seike460 Date: Fri, 2 Oct 2026 09:38:14 +0900 Subject: [PATCH 96/97] =?UTF-8?q?chore(deps):=20yank=20=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=9F=20yoke-derive=200.8.3=20=E3=82=92=200.8.4=20=E3=81=AB?= =?UTF-8?q?=E4=B8=8A=E3=81=92=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4361c49..c45b3bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2377,9 +2377,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33811428bee40dbceb6d545e95754741d17a6aef9a4849f0fd62e2ba4f412a78" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" dependencies = [ "proc-macro2", "quote", From 1f99952d69532dd30be4be386a721788961bbbe1 Mon Sep 17 00:00:00 2001 From: seike460 Date: Fri, 2 Oct 2026 10:34:54 +0900 Subject: [PATCH 97/97] =?UTF-8?q?ci(layer):=202=20=E3=81=A4=E7=9B=AE?= =?UTF-8?q?=E3=81=AE=20cross=20=E3=83=93=E3=83=AB=E3=83=89=E3=81=AE?= =?UTF-8?q?=E5=89=8D=E3=81=AB=E3=83=9B=E3=82=B9=E3=83=88=E7=94=A8=E3=81=AE?= =?UTF-8?q?=E6=88=90=E6=9E=9C=E7=89=A9=E3=82=92=E6=B6=88=E3=81=97=E3=80=81?= =?UTF-8?q?glibc=20=E3=81=AE=E9=81=95=E3=81=86=E3=82=B3=E3=83=B3=E3=83=86?= =?UTF-8?q?=E3=83=8A=E3=81=A7=E5=A4=B1=E6=95=97=E3=81=97=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f93fed2..bf92483 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -124,6 +124,10 @@ jobs: run: | cargo install cross --locked --version 0.2.5 cross build --locked --release --target x86_64-unknown-linux-musl -p zankyo + # 2 つのコンテナは glibc が違う(x86_64 は 2.31、aarch64 は 2.27)。1 つ目が + # target/release に作ったホスト用のビルドスクリプトは、2 つ目では実行できない + # (GLIBC_2.28 not found)。ターゲット別の成果物(target//release)は残す + rm -rf target/release cross build --locked --release --target aarch64-unknown-linux-musl -p zankyo - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: