diff --git a/pq-tls-benchmark-framework/emulation-exp/code/cquiche/Makefile b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..8a96a88c4e7e7ae926fa7e58de3155bb2c266a46
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/Makefile
@@ -0,0 +1,7 @@
+OPENSSL_INSTALL=tmp/.local/openssl
+
+build_with_pkg_config:
+	cd cquiche_s_timer && PKG_CONFIG_PATH=${OPENSSL_INSTALL}/lib64/pkgconfig LD_LIBRARY_PATH=${OPENSSL_INSTALL}/lib64 cargo run
+
+ld_trace_loaded_objects:
+	LD_TRACE_LOADED_OBJECTS=1 ./your_executable
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/cquiche/README.md b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..1476030f59005cebfb3365201e56b7cfb60f5889
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/README.md
@@ -0,0 +1,38 @@
+- need to add functionality to use choose the group for the key exchange with openssl and cquiche
+- in line 1492 of ssl.h the function gets renamed `# define SSL_CTX_set1_groups_list(ctx, s) \
+        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s))`
+
+add to Context
+```
+// #[cfg(feature = "openssl")]
+    // pub fn set_groups(&mut self, groups: &str) -> Result<()> {
+    //     let cstr = ffi::CString::new(groups).map_err(|_| Error::TlsFail)?;
+    //     map_result(unsafe {
+    //         SSL_CTX_set1_groups_list(self.as_mut_ptr(), cstr.as_ptr())
+    //     })
+    // }
+    pub fn set_groups(&mut self, groups: &str) -> Result<()> {
+        let cstr = ffi::CString::new(groups).map_err(|_| Error::TlsFail)?;
+        map_result(unsafe {
+            SSL_CTX_ctrl(self.as_mut_ptr(), 92, 0,cstr.as_ptr())
+        })
+    }
+
+
+
+// ........ and to extern functions
+// fn SSL_CTX_set1_groups_list(
+    //     ctx: *mut SSL_CTX, groups: *const c_char,
+    // ) -> c_int;
+    fn SSL_CTX_ctrl(ctx: *mut SSL_CTX, cmd: c_int, larg: i64, parg: *const c_char) -> c_int;
+```
+
+add to Config, call to context
+```
+    /// Sets groups for TLS key exchange.
+    /// Own patch implementation
+    // #[cfg(feature = "openssl")]
+    pub fn set_groups(&mut self, groups: &str) -> Result<()> {
+        self.tls_ctx.set_groups(groups)
+    }
+```
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/.gitignore b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..2f7896d1d1365eafb0da03d9fe456fac81408487
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/.gitignore
@@ -0,0 +1 @@
+target/
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/Cargo.lock b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/Cargo.lock
new file mode 100644
index 0000000000000000000000000000000000000000..fec377e31dfe9dcf5a3c184945ccfdb6e0904f34
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/Cargo.lock
@@ -0,0 +1,943 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "cc"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47"
+dependencies = [
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "cmake"
+version = "0.1.52"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
+
+[[package]]
+name = "cquiche_s_timer"
+version = "0.1.0"
+dependencies = [
+ "env_logger",
+ "log",
+ "mio",
+ "quiche",
+ "ring",
+ "url",
+]
+
+[[package]]
+name = "darling"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "either"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+
+[[package]]
+name = "env_filter"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab"
+dependencies = [
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "env_filter",
+ "humantime",
+ "log",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "icu_collections"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_locid_transform_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
+
+[[package]]
+name = "icu_normalizer"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "utf16_iter",
+ "utf8_iter",
+ "write16",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
+
+[[package]]
+name = "icu_properties"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locid_transform",
+ "icu_properties_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
+
+[[package]]
+name = "icu_provider"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_provider_macros",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_provider_macros"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "intrusive-collections"
+version = "0.9.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86"
+dependencies = [
+ "memoffset",
+]
+
+[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+
+[[package]]
+name = "itoa"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
+
+[[package]]
+name = "libc"
+version = "0.2.166"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36"
+
+[[package]]
+name = "libm"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
+
+[[package]]
+name = "litemap"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104"
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mio"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "log",
+ "wasi",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "octets"
+version = "0.3.0"
+
+[[package]]
+name = "once_cell"
+version = "1.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "qlog"
+version = "0.13.0"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "serde_with",
+ "smallvec",
+]
+
+[[package]]
+name = "quiche"
+version = "0.22.0"
+dependencies = [
+ "cmake",
+ "either",
+ "intrusive-collections",
+ "libc",
+ "libm",
+ "log",
+ "octets",
+ "once_cell",
+ "pkg-config",
+ "qlog",
+ "ring",
+ "slab",
+ "smallvec",
+ "winapi",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "ring"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom",
+ "libc",
+ "spin",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "serde"
+version = "1.0.215"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.215"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.133"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
+dependencies = [
+ "indexmap",
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_with"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "serde_with_macros",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "syn"
+version = "2.0.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "url"
+version = "2.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "utf16_iter"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "write16"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+
+[[package]]
+name = "writeable"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
+
+[[package]]
+name = "yoke"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/Cargo.toml b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..65494c687eadcad875504eed460ab38208cfc428
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/Cargo.toml
@@ -0,0 +1,12 @@
+[package]
+name = "cquiche_s_timer"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+quiche = { path = "../tmp/quiche/quiche", features = ["openssl", "qlog"] }
+mio = { version = "1.0", features = ["net", "os-poll"] }
+log = "0.4"
+url = "2.5"
+ring = "0.17"
+env_logger = "0.11"
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/src/main.rs b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/src/main.rs
new file mode 100644
index 0000000000000000000000000000000000000000..3409efed7318416e484d445600afceaa4e73895e
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/cquiche_s_timer/src/main.rs
@@ -0,0 +1,365 @@
+// Copyright (C) 2019, Cloudflare, Inc.
+// All rights reserved.
+//
+// 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.
+
+#[macro_use]
+extern crate log;
+
+use quiche::h3::NameValue;
+
+use ring::rand::*;
+
+// const MAX_DATAGRAM_SIZE: usize = 1350;
+const MAX_DATAGRAM_SIZE: usize = 1200;
+
+// PKG_CONFIG_PATH=${OPENSSL_INSTALL}/lib64/pkgconfig LD_LIBRARY_PATH=${OPENSSL_INSTALL}/lib64 cargo run -- https://localhost:8443/
+
+fn main() {
+    env_logger::builder()
+        .filter_level(log::LevelFilter::Trace)
+        .init();
+
+    let mut buf = [0; 65535];
+    let mut out = [0; MAX_DATAGRAM_SIZE];
+
+    let mut args = std::env::args();
+
+    let cmd = &args.next().unwrap();
+
+    if args.len() != 1 {
+        println!("Usage: {cmd} URL");
+        println!("\nSee tools/apps/ for more complete implementations.");
+        return;
+    }
+
+    let url = url::Url::parse(&args.next().unwrap()).unwrap();
+
+    // Setup the event loop.
+    let mut poll = mio::Poll::new().unwrap();
+    let mut events = mio::Events::with_capacity(1024);
+
+    // Resolve server address.
+    let peer_addr = url.socket_addrs(|| None).unwrap()[0];
+
+    // Bind to INADDR_ANY or IN6ADDR_ANY depending on the IP family of the
+    // server address. This is needed on macOS and BSD variants that don't
+    // support binding to IN6ADDR_ANY for both v4 and v6.
+    let bind_addr = match peer_addr {
+        std::net::SocketAddr::V4(_) => "0.0.0.0:0",
+        std::net::SocketAddr::V6(_) => "[::]:0",
+    };
+
+    // Create the UDP socket backing the QUIC connection, and register it with
+    // the event loop.
+    let mut socket = mio::net::UdpSocket::bind(bind_addr.parse().unwrap()).unwrap();
+    poll.registry()
+        .register(&mut socket, mio::Token(0), mio::Interest::READABLE)
+        .unwrap();
+
+    let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION).unwrap();
+    config.set_groups("mlkem512").unwrap();
+    config
+        .set_application_protos(quiche::h3::APPLICATION_PROTOCOL)
+        .unwrap();
+    config.verify_peer(true);
+    config
+        .load_verify_locations_from_file("../../tmp/.local/nginx/conf/CA.crt")
+        .unwrap();
+    // config.log_keys();
+    // config.discover_pmtu(true);
+    config.set_cc_algorithm(quiche::CongestionControlAlgorithm::CUBIC);
+    // config.set_cc_algorithm(quiche::CongestionControlAlgorithm::RENO);
+    // config.set_cc_algorithm(quiche::CongestionControlAlgorithm::BBR);
+    // config.set_cc_algorithm(quiche::CongestionControlAlgorithm::BBR2);
+
+    // TODO disable pacing?
+    // TODO read about every option and evaluate if default is good and comparable to openssl's impl
+
+    config.set_max_idle_timeout(30000);
+    config.set_max_recv_udp_payload_size(MAX_DATAGRAM_SIZE);
+    config.set_max_send_udp_payload_size(MAX_DATAGRAM_SIZE);
+    config.set_initial_max_data(10_000_000);
+    config.set_initial_max_stream_data_bidi_local(1_000_000);
+    config.set_initial_max_stream_data_bidi_remote(1_000_000);
+    config.set_initial_max_stream_data_uni(1_000_000);
+    config.set_initial_max_streams_bidi(100);
+    config.set_initial_max_streams_uni(100);
+    // config.set_disable_active_migration(true);
+
+    // Generate a random source connection ID for the connection.
+    let mut scid = [0; quiche::MAX_CONN_ID_LEN];
+    SystemRandom::new().fill(&mut scid[..]).unwrap();
+
+    let scid = quiche::ConnectionId::from_ref(&scid);
+
+    // Get local address.
+    let local_addr = socket.local_addr().unwrap();
+
+    // Create a QUIC connection and initiate handshake.
+    let mut conn =
+        quiche::connect(url.domain(), &scid, local_addr, peer_addr, &mut config).unwrap();
+    // if handling of QLOGDIR env variable is wanted, then code should be written for it, there is no default
+    // see cquiche/tmp/quiche/apps/src/bin/quiche-client.rs or adjacent files for an example to copy
+    // title and description are just fields in the qlog file, they can be anything
+    let writer = Box::new(std::fs::File::create("qlog.sqlog").unwrap());
+    conn.set_qlog_with_level(
+        writer,
+        "qtitle".to_string(),
+        "qdescription".to_string(),
+        quiche::QlogLevel::Extra,
+    );
+
+    info!(
+        "connecting to {:} from {:} with scid {}",
+        peer_addr,
+        socket.local_addr().unwrap(),
+        hex_dump(&scid)
+    );
+
+    let (write, send_info) = conn.send(&mut out).expect("initial send failed");
+
+    while let Err(e) = socket.send_to(&out[..write], send_info.to) {
+        if e.kind() == std::io::ErrorKind::WouldBlock {
+            debug!("send() would block");
+            continue;
+        }
+
+        panic!("send() failed: {:?}", e);
+    }
+
+    debug!("written {}", write);
+
+    let h3_config = quiche::h3::Config::new().unwrap();
+
+    // Prepare request.
+    let mut path = String::from(url.path());
+
+    if let Some(query) = url.query() {
+        path.push('?');
+        path.push_str(query);
+    }
+
+    let req = vec![
+        quiche::h3::Header::new(b":method", b"GET"),
+        quiche::h3::Header::new(b":scheme", url.scheme().as_bytes()),
+        quiche::h3::Header::new(b":authority", url.host_str().unwrap().as_bytes()),
+        quiche::h3::Header::new(b":path", path.as_bytes()),
+        quiche::h3::Header::new(b"user-agent", b"quiche"),
+    ];
+
+    let req_start = std::time::Instant::now();
+
+    let mut req_sent = false;
+
+    println!("here");
+
+    let mut http3_conn = None;
+    loop {
+        poll.poll(&mut events, conn.timeout()).unwrap();
+
+        // Read incoming UDP packets from the socket and feed them to quiche,
+        // until there are no more packets to read.
+        'read: loop {
+            // If the event loop reported no events, it means that the timeout
+            // has expired, so handle it without attempting to read packets. We
+            // will then proceed with the send loop.
+            if events.is_empty() {
+                debug!("timed out");
+
+                conn.on_timeout();
+
+                break 'read;
+            }
+
+            let (len, from) = match socket.recv_from(&mut buf) {
+                Ok(v) => v,
+
+                Err(e) => {
+                    // There are no more UDP packets to read, so end the read
+                    // loop.
+                    if e.kind() == std::io::ErrorKind::WouldBlock {
+                        debug!("recv() would block");
+                        break 'read;
+                    }
+
+                    panic!("recv() failed: {:?}", e);
+                }
+            };
+
+            debug!("got {} bytes", len);
+
+            let recv_info = quiche::RecvInfo {
+                to: local_addr,
+                from,
+            };
+
+            // Process potentially coalesced packets.
+            let read = match conn.recv(&mut buf[..len], recv_info) {
+                Ok(v) => v,
+
+                Err(e) => {
+                    error!("recv failed: {:?}", e);
+                    continue 'read;
+                }
+            };
+
+            debug!("processed {} bytes", read);
+        }
+
+        debug!("done reading");
+
+        if conn.is_closed() {
+            info!("connection closed, {:?}", conn.stats());
+            break;
+        }
+
+        // Create a new HTTP/3 connection once the QUIC connection is established.
+        if conn.is_established() && http3_conn.is_none() {
+            http3_conn = Some(
+                quiche::h3::Connection::with_transport(&mut conn, &h3_config)
+                .expect("Unable to create HTTP/3 connection, check the server's uni stream limit and window size"),
+            );
+        }
+
+        // Send HTTP requests once the QUIC connection is established, and until
+        // all requests have been sent.
+        if let Some(h3_conn) = &mut http3_conn {
+            if !req_sent {
+                info!("sending HTTP request {:?}", req);
+
+                h3_conn.send_request(&mut conn, &req, true).unwrap();
+
+                req_sent = true;
+            }
+        }
+
+        if let Some(http3_conn) = &mut http3_conn {
+            // Process HTTP/3 events.
+            loop {
+                match http3_conn.poll(&mut conn) {
+                    Ok((stream_id, quiche::h3::Event::Headers { list, .. })) => {
+                        info!(
+                            "got response headers {:?} on stream id {}",
+                            hdrs_to_strings(&list),
+                            stream_id
+                        );
+                    }
+
+                    Ok((stream_id, quiche::h3::Event::Data)) => {
+                        while let Ok(read) = http3_conn.recv_body(&mut conn, stream_id, &mut buf) {
+                            debug!(
+                                "got {} bytes of response data on stream {}",
+                                read, stream_id
+                            );
+
+                            print!("{}", unsafe { std::str::from_utf8_unchecked(&buf[..read]) });
+                        }
+                    }
+
+                    Ok((_stream_id, quiche::h3::Event::Finished)) => {
+                        info!("response received in {:?}, closing...", req_start.elapsed());
+
+                        conn.close(true, 0x100, b"kthxbye").unwrap();
+                    }
+
+                    Ok((_stream_id, quiche::h3::Event::Reset(e))) => {
+                        error!("request was reset by peer with {}, closing...", e);
+
+                        conn.close(true, 0x100, b"kthxbye").unwrap();
+                    }
+
+                    Ok((_, quiche::h3::Event::PriorityUpdate)) => unreachable!(),
+
+                    Ok((goaway_id, quiche::h3::Event::GoAway)) => {
+                        info!("GOAWAY id={}", goaway_id);
+                    }
+
+                    Err(quiche::h3::Error::Done) => {
+                        break;
+                    }
+
+                    Err(e) => {
+                        error!("HTTP/3 processing failed: {:?}", e);
+
+                        break;
+                    }
+                }
+            }
+        }
+
+        // Generate outgoing QUIC packets and send them on the UDP socket, until
+        // quiche reports that there are no more packets to be sent.
+        loop {
+            let (write, send_info) = match conn.send(&mut out) {
+                Ok(v) => v,
+
+                Err(quiche::Error::Done) => {
+                    debug!("done writing");
+                    break;
+                }
+
+                Err(e) => {
+                    error!("send failed: {:?}", e);
+
+                    conn.close(false, 0x1, b"fail").ok();
+                    break;
+                }
+            };
+
+            if let Err(e) = socket.send_to(&out[..write], send_info.to) {
+                if e.kind() == std::io::ErrorKind::WouldBlock {
+                    debug!("send() would block");
+                    break;
+                }
+
+                panic!("send() failed: {:?}", e);
+            }
+
+            debug!("written {}", write);
+        }
+
+        if conn.is_closed() {
+            info!("connection closed, {:?}", conn.stats());
+            break;
+        }
+    }
+}
+
+fn hex_dump(buf: &[u8]) -> String {
+    let vec: Vec<String> = buf.iter().map(|b| format!("{b:02x}")).collect();
+
+    vec.join("")
+}
+
+pub fn hdrs_to_strings(hdrs: &[quiche::h3::Header]) -> Vec<(String, String)> {
+    hdrs.iter()
+        .map(|h| {
+            let name = String::from_utf8_lossy(h.name()).to_string();
+            let value = String::from_utf8_lossy(h.value()).to_string();
+
+            (name, value)
+        })
+        .collect()
+}
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/cquiche/install.sh b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/install.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1739f5da0b4dbad73dcb2f19e6724e70fd10237a
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/cquiche/install.sh
@@ -0,0 +1,151 @@
+#!/bin/bash
+set -ex
+
+# Make sure to have a recent version of openssl installed by default. For example by having an up to date os version.
+
+sudo apt update
+sudo apt install -y git \
+               build-essential \
+               autoconf \
+               automake \
+               libtool \
+               ninja-build \
+               libssl-dev \
+               libpcre3-dev \
+               wget
+
+NGINX_VERSION=1.26.1
+CMAKE_VERSION=3.30
+CMAKE_BUILD=0
+
+mkdir -p tmp
+cd tmp
+ROOT=$(pwd)
+INSTALL_DIR=${ROOT}/.local
+OPENSSL_INSTALL=${ROOT}/.local/openssl
+
+# Fetch all the files we need
+wget https://cmake.org/files/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.${CMAKE_BUILD}-linux-x86_64.sh
+# git clone --no-checkout --single-branch --branch openssl-3.4 https://github.com/openssl/openssl.git
+# (cd openssl && git switch --detach tags/openssl-3.4.0)
+git clone --no-checkout --single-branch --branch openssl-3.3.0+quic https://github.com/quictls/openssl.git quictls/openssl
+(cd quictls/openssl && git switch --detach openssl-3.3.0+quic)
+git clone --recursive https://github.com/cloudflare/quiche
+git clone --no-checkout --single-branch --branch 0.10.1-release https://github.com/open-quantum-safe/liboqs.git
+(cd liboqs && git switch --detach tags/0.10.1)
+git clone --no-checkout --single-branch --branch main https://github.com/open-quantum-safe/oqs-provider.git
+(cd oqs-provider && git switch --detach tags/0.6.1)
+wget nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && tar -zxvf nginx-${NGINX_VERSION}.tar.gz
+
+# Install the latest CMake
+mkdir -p ${INSTALL_DIR}/cmake
+sh cmake-${CMAKE_VERSION}.${CMAKE_BUILD}-linux-x86_64.sh --skip-license --prefix=${INSTALL_DIR}/cmake
+
+
+# # Patch openssl to have a large CRYPTO_RECV_BUF
+# patch ${ROOT}/openssl/ssl/quic/quic_channel.c < ${ROOT}/../patches/openssl/quic_channel.c.patch
+
+# Build OpenSSL so 'libcrypto.so' is avaiable for the build of liboqs. With Ubuntu 22.04 not longer needed.
+(
+    cd quictls/openssl
+    # adds a runtime path to the executable, so it can find the libcrypto.so
+    LDFLAGS="-Wl,-rpath -Wl,${OPENSSL_INSTALL}/lib64" ./Configure --prefix=${OPENSSL_INSTALL} --openssldir=${OPENSSL_INSTALL}/ssl
+    # Commented out are the commands from https://github.com/open-quantum-safe/oqs-provider/blob/main/scripts/fullbuild.sh
+    # export OSSL_PREFIX=`pwd`/.local
+    # LDFLAGS="-Wl,-rpath -Wl,${OSSL_PREFIX}/lib64" ./config --prefix=$OSSL_PREFIX
+
+    make && make install_sw install_ssldirs
+
+    # NOTE maybe create a softlink if issue arises, something like
+    # ln -s lib64 lib
+)
+
+# build liboqs
+(
+    cd liboqs
+    # It needs the libcrypto library, either in .a or .so format, in 'openssl' it is .so and in 'openssl-source' it is .a
+    # -- Found OpenSSL: /absolute-path-to/tmp/openssl/lib64/libcrypto.so (found suitable version "3.0.2", minimum required is "1.1.1")
+    # NOTE here the enabled algorithms could be specified
+    ${INSTALL_DIR}/cmake/bin/cmake -GNinja -DOPENSSL_ROOT_DIR=${OPENSSL_INSTALL} -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/liboqs -S . -B build
+    cd build
+    ninja && ninja install
+)
+
+(
+    cd oqs-provider
+    liboqs_DIR=${INSTALL_DIR}/liboqs ${INSTALL_DIR}/cmake/bin/cmake -DOPENSSL_ROOT_DIR=${OPENSSL_INSTALL} -S . -B build && ${INSTALL_DIR}/cmake/bin/cmake --build build
+    # next command does not work, but is not needed maybe cuz we just copy the library???
+    # maybe use --install-prefix for next command
+    # cmake --install build --prefix ${ROOT}/oqs-provider/install
+    cp build/lib/oqsprovider.so ${OPENSSL_INSTALL}/lib64/ossl-modules/
+    # can also be installed to system
+    # sudo cp /home/bebbo/own/master/benchmarking-pqc-in-quic/pq-tls-benchmark-framework/emulation-exp/code/tmp/oqs-provider/build/lib/oqsprovider.so /lib/x86_64-linux-gnu/ossl-modules
+)
+
+sed -i "s/default = default_sect/default = default_sect\noqsprovider = oqsprovider_sect/g" ${OPENSSL_INSTALL}/ssl/openssl.cnf
+sed -i "s/\[default_sect\]/\[default_sect\]\nactivate = 1\n\[oqsprovider_sect\]\nactivate = 1\n/g" ${OPENSSL_INSTALL}/ssl/openssl.cnf
+
+${OPENSSL_INSTALL}/bin/openssl version -d 
+
+if [[ $(${OPENSSL_INSTALL}/bin/openssl version -d) != *"${OPENSSL_INSTALL}/ssl"* ]]; then
+  echo "The output of 'openssl version -d' does not include the string ${OPENSSL_INSTALL}/ssl"
+  exit 1
+fi
+if [[ $(${OPENSSL_INSTALL}/bin/openssl list -providers) != *"OpenSSL OQS Provider"* ]]; then
+  echo "The output of 'openssl list -providers' does not include the string 'OpenSSL OQS Provider'"
+  exit 1
+fi
+echo "Openssl seems to be installed correctly"
+
+
+# build cquiche
+(
+    cd quiche
+    # give cargo the context of the custom openssl (the pkgconfig file), so that it can find the correct libs
+    PKG_CONFIG_PATH=${OPENSSL_INSTALL}/lib64/pkgconfig cargo build --features=openssl
+
+    # how to find out if openssl is used or boringssl?
+)
+
+
+
+
+
+# # for nginx build
+# # export OPENSSL_CONF=${OPENSSL_INSTALL}/ssl/openssl.cnf
+
+# # apply patches to nginx source
+# patch ${ROOT}/nginx-${NGINX_VERSION}/src/event/quic/ngx_event_quic_openssl_compat.c < ${ROOT}/../patches/nginx-${NGINX_VERSION}-patches/ngx_event_quic_openssl_compat.c.diff
+
+# # build nginx with dynamically linked custom openssl
+# # NOTE it may be that the first time nginx is built it is not linked correctly to the custom openssl, but just do it again, it should work
+# (
+#     cd nginx-${NGINX_VERSION}
+#     # NOTE why --without-http_gzip_module
+#     # -rpath with --enable-new-dtags makes it use RUNPATH which is evaluated after LD_LIBRARY_PATH (which is evaluated after RPATH)
+#     # export LD_LIBRARY_PATH=${OPENSSL_INSTALL}/lib64:${LD_LIBRARY_PATH}
+#     ./configure --prefix=${INSTALL_DIR}/nginx \
+#                     --with-debug \
+#                     --with-http_v2_module \
+#                     --with-http_v3_module \
+#                     --without-http_gzip_module \
+#                     --with-http_ssl_module \
+#                     --with-ld-opt="-Wl,--enable-new-dtags,-rpath,${OPENSSL_INSTALL}/lib64"
+#                     # The --with-openssl builds openssl again, but we just want to link against it
+#                     # --with-openssl=${ROOT}/openssl \
+#                     # --with-cc-opt="-I ${OPENSSL_INSTALL}/include/openssl" \
+#                     # --with-ld-opt="-L ${OPENSSL_INSTALL}/lib64"
+#     # sed -i 's/libcrypto.a/libcrypto.a -loqs/g' objs/Makefile;
+#     # NOTE why change this?
+#     # sed -i 's/EVP_MD_CTX_create/EVP_MD_CTX_new/g; s/EVP_MD_CTX_destroy/EVP_MD_CTX_free/g' src/event/ngx_event_openssl.c
+#     make && make install
+# )
+
+# # NOTE check with nginx -V and ldd if the openssl is linked correctly
+# # it should show the path to the custom openssl
+# # This only shows the correct path (if RUNPATH is not used), if the LD_LIBRARY_PATH env var is set correctly
+# ${INSTALL_DIR}/nginx/sbin/nginx -V
+# ldd ${INSTALL_DIR}/nginx/sbin/nginx
+# readelf -d ${INSTALL_DIR}/nginx/sbin/nginx | grep 'R.*PATH'
+
+# echo "You should see that nginx is linked against the custom openssl in tmp/.local/openssl"
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/install-prereqs-ubuntu.sh b/pq-tls-benchmark-framework/emulation-exp/code/install-prereqs-ubuntu.sh
index a9bd2c3a73c90d3c6a2714cc4da7d34cc68550aa..8518d28abfc481536e59e0ecaa283518afd5a17e 100755
--- a/pq-tls-benchmark-framework/emulation-exp/code/install-prereqs-ubuntu.sh
+++ b/pq-tls-benchmark-framework/emulation-exp/code/install-prereqs-ubuntu.sh
@@ -28,6 +28,7 @@ OPENSSL_INSTALL=${ROOT}/.local/openssl
 wget https://cmake.org/files/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.${CMAKE_BUILD}-linux-x86_64.sh
 git clone --no-checkout --single-branch --branch openssl-3.4 https://github.com/openssl/openssl.git
 (cd openssl && git switch --detach tags/openssl-3.4.0)
+# 0.11 was released, maybe switch to it when running experiment again
 git clone --no-checkout --single-branch --branch 0.10.1-release https://github.com/open-quantum-safe/liboqs.git
 (cd liboqs && git switch --detach tags/0.10.1)
 git clone --no-checkout --single-branch --branch main https://github.com/open-quantum-safe/oqs-provider.git
diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/qlogdir/cquiche-to-cloudflare.sqlog b/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/qlogdir/cquiche-to-cloudflare.sqlog
new file mode 100644
index 0000000000000000000000000000000000000000..2b6e0f8daee852b4c3cace46fd99685404a8ac1a
--- /dev/null
+++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/qlogdir/cquiche-to-cloudflare.sqlog
@@ -0,0 +1,331 @@
+{"qlog_version":"0.3","qlog_format":"JSON-SEQ","title":"quiche-client qlog","description":"quiche-client qlog id=f41c3b3c475579ffd6815d17fb251d744636eb7c","trace":{"vantage_point":{"type":"client"},"title":"quiche-client qlog","description":"quiche-client qlog id=f41c3b3c475579ffd6815d17fb251d744636eb7c","configuration":{"time_offset":0.0}}}
+{"time":0.0,"name":"transport:parameters_set","data":{"owner":"local","tls_cipher":"None","disable_active_migration":true,"max_idle_timeout":30000,"max_udp_payload_size":1350,"ack_delay_exponent":3,"max_ack_delay":25,"active_connection_id_limit":2,"initial_max_data":10000000,"initial_max_stream_data_bidi_local":1000000,"initial_max_stream_data_bidi_remote":1000000,"initial_max_stream_data_uni":1000000,"initial_max_streams_bidi":100,"initial_max_streams_uni":100}}
+{"time":0.63993,"name":"transport:packet_sent","data":{"header":{"packet_type":"initial","packet_number":0,"version":"babababa","scil":20,"dcil":16,"scid":"f41c3b3c475579ffd6815d17fb251d744636eb7c","dcid":"a465da977354f374ee9d8e0e9f347d83"},"raw":{"length":342,"payload_length":279},"send_at_time":0.63993,"frames":[{"frame_type":"crypto","offset":0,"length":275}]}}
+{"time":0.63993,"name":"recovery:metrics_updated","data":{"smoothed_rtt":333.0,"rtt_variance":166.5,"congestion_window":13500,"bytes_in_flight":342,"ssthresh":18446744073709551615}}
+{"time":11.508484,"name":"transport:packet_sent","data":{"header":{"packet_type":"initial","packet_number":1,"version":"1","scil":20,"dcil":16,"scid":"f41c3b3c475579ffd6815d17fb251d744636eb7c","dcid":"a465da977354f374ee9d8e0e9f347d83"},"raw":{"length":342,"payload_length":279},"send_at_time":11.508484,"frames":[{"frame_type":"crypto","offset":0,"length":275}]}}
+{"time":20.744444,"name":"transport:packet_received","data":{"header":{"packet_type":"initial","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"011072922b86cf9fe213d2925986ccb4e95933c3","dcid":"f41c3b3c475579ffd6815d17fb251d744636eb7c"},"raw":{"length":1200,"payload_length":23},"frames":[{"frame_type":"ack","ack_delay":0.077,"acked_ranges":[[1,1]]}]}}
+{"time":20.744444,"name":"recovery:metrics_updated","data":{"min_rtt":9.235962,"smoothed_rtt":9.235962,"latest_rtt":9.235962,"rtt_variance":4.617981,"bytes_in_flight":0}}
+{"time":23.604282,"name":"transport:packet_received","data":{"header":{"packet_type":"initial","packet_number":1,"version":"1","scil":20,"dcil":20,"scid":"011072922b86cf9fe213d2925986ccb4e95933c3","dcid":"f41c3b3c475579ffd6815d17fb251d744636eb7c"},"raw":{"length":1200,"payload_length":111},"frames":[{"frame_type":"crypto","offset":0,"length":90}]}}
+{"time":24.085104,"name":"transport:packet_received","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"011072922b86cf9fe213d2925986ccb4e95933c3","dcid":"f41c3b3c475579ffd6815d17fb251d744636eb7c"},"raw":{"length":1200,"payload_length":1151},"frames":[{"frame_type":"crypto","offset":0,"length":1130}]}}
+{"time":24.172758,"name":"transport:packet_received","data":{"header":{"packet_type":"handshake","packet_number":1,"version":"1","scil":20,"dcil":20,"scid":"011072922b86cf9fe213d2925986ccb4e95933c3","dcid":"f41c3b3c475579ffd6815d17fb251d744636eb7c"},"raw":{"length":1200,"payload_length":1151},"frames":[{"frame_type":"crypto","offset":1130,"length":1129}]}}
+{"time":24.227276,"name":"transport:packet_received","data":{"header":{"packet_type":"handshake","packet_number":2,"version":"1","scil":20,"dcil":20,"scid":"011072922b86cf9fe213d2925986ccb4e95933c3","dcid":"f41c3b3c475579ffd6815d17fb251d744636eb7c"},"raw":{"length":587,"payload_length":538},"frames":[{"frame_type":"crypto","offset":2259,"length":516}]}}
+{"time":24.227276,"name":"transport:parameters_set","data":{"owner":"remote","tls_cipher":"Some(AES128_GCM)","original_destination_connection_id":"a465da977354f374ee9d8e0e9f347d83","disable_active_migration":true,"max_idle_timeout":180000,"max_udp_payload_size":65527,"ack_delay_exponent":3,"max_ack_delay":25,"active_connection_id_limit":2,"initial_max_data":10485760,"initial_max_stream_data_bidi_local":0,"initial_max_stream_data_bidi_remote":1048576,"initial_max_stream_data_uni":1048576,"initial_max_streams_bidi":100,"initial_max_streams_uni":3}}
+{"time":26.033268,"name":"transport:data_moved","data":{"stream_id":2,"offset":0,"length":1,"from":"application","to":"transport"}}
+{"time":26.042479,"name":"http:stream_type_set","data":{"owner":"local","stream_id":2,"stream_type":"control"}}
+{"time":26.065237,"name":"transport:data_moved","data":{"stream_id":2,"offset":1,"length":18,"from":"application","to":"transport"}}
+{"time":26.071907,"name":"http:frame_created","data":{"stream_id":2,"length":18,"frame":{"frame_type":"settings","settings":[{"name":"4567422754446220793","value":783772694281039955}]}}}
+{"time":26.087364,"name":"transport:data_moved","data":{"stream_id":6,"offset":0,"length":1,"from":"application","to":"transport"}}
+{"time":26.092655,"name":"http:stream_type_set","data":{"owner":"local","stream_id":6,"stream_type":"qpack_encode"}}
+{"time":26.10123,"name":"transport:data_moved","data":{"stream_id":10,"offset":0,"length":1,"from":"application","to":"transport"}}
+{"time":26.106417,"name":"http:stream_type_set","data":{"owner":"local","stream_id":10,"stream_type":"qpack_decode"}}
+{"time":26.133835,"name":"transport:data_moved","data":{"stream_id":0,"offset":0,"length":0,"from":"application","to":"transport"}}
+{"time":26.164324,"name":"transport:data_moved","data":{"stream_id":0,"offset":0,"length":8,"from":"application","to":"transport"}}
+{"time":26.171522,"name":"transport:data_moved","data":{"stream_id":0,"offset":8,"length":1,"from":"application","to":"transport"}}
+{"time":26.17671,"name":"http:frame_created","data":{"stream_id":0,"length":0,"frame":{"frame_type":"reserved","length":0}}}
+{"time":26.182955,"name":"transport:data_moved","data":{"stream_id":0,"offset":9,"length":8,"from":"application","to":"transport"}}
+{"time":26.189096,"name":"transport:data_moved","data":{"stream_id":0,"offset":17,"length":1,"from":"application","to":"transport"}}
+{"time":26.195553,"name":"transport:data_moved","data":{"stream_id":0,"offset":18,"length":18,"from":"application","to":"transport"}}
+{"time":26.200739,"name":"http:frame_created","data":{"stream_id":0,"length":18,"frame":{"frame_type":"reserved","length":18}}}
+{"time":26.218311,"name":"transport:data_moved","data":{"stream_id":0,"offset":36,"length":2,"from":"application","to":"transport"}}
+{"time":26.2253,"name":"transport:data_moved","data":{"stream_id":0,"offset":38,"length":29,"from":"application","to":"transport"}}
+{"time":26.233664,"name":"http:frame_created","data":{"stream_id":0,"length":29,"frame":{"frame_type":"headers","headers":[{"name":":method","value":"GET"},{"name":":scheme","value":"https"},{"name":":authority","value":"cloudflare-quic.com"},{"name":":path","value":"/"},{"name":"user-agent","value":"quiche"}]}}}
+{"time":26.621222,"name":"transport:packet_sent","data":{"header":{"packet_type":"initial","packet_number":2,"version":"1","scil":20,"dcil":20,"scid":"f41c3b3c475579ffd6815d17fb251d744636eb7c","dcid":"011072922b86cf9fe213d2925986ccb4e95933c3"},"raw":{"length":73,"payload_length":6},"send_at_time":26.621222,"frames":[{"frame_type":"ack","ack_delay":0.38,"acked_ranges":[[0,1]]}]}}
+{"time":26.621222,"name":"recovery:metrics_updated","data":{"pacing_rate":1827097}}
+{"time":26.621222,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"f41c3b3c475579ffd6815d17fb251d744636eb7c","dcid":"011072922b86cf9fe213d2925986ccb4e95933c3"},"raw":{"length":112,"payload_length":46},"send_at_time":26.621222,"frames":[{"frame_type":"ack","ack_delay":0.31,"acked_ranges":[[0,2]]},{"frame_type":"crypto","offset":0,"length":36}]}}
+{"time":26.621222,"name":"recovery:metrics_updated","data":{"bytes_in_flight":112}}
+{"time":26.621222,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":0},"raw":{"length":1165,"payload_length":1127},"send_at_time":26.621222,"frames":[{"frame_type":"new_connection_id","sequence_number":1,"retire_prior_to":0,"connection_id_length":20,"connection_id":"6dfa11b0189418291c45a61832eb753bdfc31689","stateless_reset_token":"bd50f4c5e2b2cf07f2f5128fa695bbca"},{"frame_type":"stream","stream_id":2,"offset":0,"length":19},{"frame_type":"padding","payload_length":1063}]}}
+{"time":26.621222,"name":"recovery:metrics_updated","data":{"bytes_in_flight":1277}}
+{"time":26.958813,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":1},"raw":{"length":44,"payload_length":6},"send_at_time":26.958813,"frames":[{"frame_type":"stream","stream_id":6,"offset":0,"length":1}]}}
+{"time":26.958813,"name":"recovery:metrics_updated","data":{"bytes_in_flight":1321}}
+{"time":27.00825,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":2},"raw":{"length":44,"payload_length":6},"send_at_time":27.00825,"frames":[{"frame_type":"stream","stream_id":10,"offset":0,"length":1}]}}
+{"time":27.00825,"name":"recovery:metrics_updated","data":{"bytes_in_flight":1365}}
+{"time":27.050913,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":3},"raw":{"length":110,"payload_length":72},"send_at_time":27.050913,"frames":[{"frame_type":"stream","stream_id":0,"offset":0,"length":67,"fin":true}]}}
+{"time":27.050913,"name":"recovery:metrics_updated","data":{"bytes_in_flight":1475}}
+{"time":34.932804,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":0},"raw":{"length":553,"payload_length":532},"frames":[{"frame_type":"ack","ack_delay":0.003,"acked_ranges":[[0,0]]},{"frame_type":"handshake_done"},{"frame_type":"crypto","offset":0,"length":476},{"frame_type":"stream","stream_id":3,"offset":0,"length":24}]}}
+{"time":34.932804,"name":"recovery:metrics_updated","data":{"min_rtt":8.250283,"smoothed_rtt":9.112751,"latest_rtt":8.250283,"rtt_variance":3.709904,"bytes_in_flight":198}}
+{"time":34.932804,"name":"transport:data_moved","data":{"stream_id":2,"offset":0,"length":19,"from":"transport","to":"dropped"}}
+{"time":35.138065,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":1},"raw":{"length":44,"payload_length":23},"frames":[{"frame_type":"stream","stream_id":7,"offset":0,"length":1}]}}
+{"time":35.172157,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":2},"raw":{"length":44,"payload_length":23},"frames":[{"frame_type":"stream","stream_id":11,"offset":0,"length":1}]}}
+{"time":35.201904,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":3},"raw":{"length":69,"payload_length":48},"frames":[{"frame_type":"stream","stream_id":15,"offset":0,"length":26,"fin":true}]}}
+{"time":35.249752,"name":"transport:data_moved","data":{"stream_id":3,"offset":0,"length":1,"from":"transport","to":"application"}}
+{"time":35.260334,"name":"http:stream_type_set","data":{"owner":"remote","stream_id":3,"stream_type":"control"}}
+{"time":35.26976,"name":"transport:data_moved","data":{"stream_id":3,"offset":1,"length":1,"from":"transport","to":"application"}}
+{"time":35.27664,"name":"transport:data_moved","data":{"stream_id":3,"offset":2,"length":1,"from":"transport","to":"application"}}
+{"time":35.28617,"name":"transport:data_moved","data":{"stream_id":3,"offset":3,"length":21,"from":"transport","to":"application"}}
+{"time":35.29527,"name":"http:frame_parsed","data":{"stream_id":3,"length":21,"frame":{"frame_type":"settings","settings":[{"name":"MAX_FIELD_SECTION_SIZE","value":65536},{"name":"589187371800189250","value":3723906607772715975}]}}}
+{"time":35.31168,"name":"transport:data_moved","data":{"stream_id":7,"offset":0,"length":1,"from":"transport","to":"application"}}
+{"time":35.317394,"name":"http:stream_type_set","data":{"owner":"remote","stream_id":7,"stream_type":"qpack_encode"}}
+{"time":35.326397,"name":"transport:data_moved","data":{"stream_id":11,"offset":0,"length":1,"from":"transport","to":"application"}}
+{"time":35.35752,"name":"http:stream_type_set","data":{"owner":"remote","stream_id":11,"stream_type":"qpack_decode"}}
+{"time":35.368206,"name":"transport:data_moved","data":{"stream_id":15,"offset":0,"length":1,"from":"transport","to":"application"}}
+{"time":35.37562,"name":"transport:data_moved","data":{"stream_id":15,"offset":1,"length":7,"from":"transport","to":"application"}}
+{"time":35.380806,"name":"http:stream_type_set","data":{"owner":"remote","stream_id":15,"stream_type":"unknown","stream_type_value":54030994836414578}}
+{"time":35.396263,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":4},"raw":{"length":43,"payload_length":5},"send_at_time":35.396263,"frames":[{"frame_type":"ack","ack_delay":0.025,"acked_ranges":[[0,3]]}]}}
+{"time":35.396263,"name":"recovery:metrics_updated","data":{"pacing_rate":1851800}}
+{"time":35.47206,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":4},"raw":{"length":43,"payload_length":22},"frames":[{"frame_type":"ack","ack_delay":0.061,"acked_ranges":[[0,3]]}]}}
+{"time":35.47206,"name":"recovery:metrics_updated","data":{"min_rtt":7.802106,"smoothed_rtt":8.94892,"latest_rtt":7.802106,"rtt_variance":3.110089,"bytes_in_flight":0}}
+{"time":35.47206,"name":"transport:data_moved","data":{"stream_id":6,"offset":0,"length":1,"from":"transport","to":"dropped"}}
+{"time":35.47206,"name":"transport:data_moved","data":{"stream_id":10,"offset":0,"length":1,"from":"transport","to":"dropped"}}
+{"time":35.47206,"name":"transport:data_moved","data":{"stream_id":0,"offset":0,"length":67,"from":"transport","to":"dropped"}}
+{"time":45.61959,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":5},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":0,"length":1157}]}}
+{"time":45.69295,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":6},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":1157,"length":1156}]}}
+{"time":45.734554,"name":"transport:data_moved","data":{"stream_id":0,"offset":0,"length":1,"from":"transport","to":"application"}}
+{"time":45.745457,"name":"transport:data_moved","data":{"stream_id":0,"offset":1,"length":7,"from":"transport","to":"application"}}
+{"time":45.751705,"name":"transport:data_moved","data":{"stream_id":0,"offset":8,"length":1,"from":"transport","to":"application"}}
+{"time":45.758904,"name":"http:frame_parsed","data":{"stream_id":0,"length":0,"frame":{"frame_type":"unknown","frame_type_value":312126358648722770,"raw":{"payload_length":0}}}}
+{"time":45.768433,"name":"transport:data_moved","data":{"stream_id":0,"offset":9,"length":1,"from":"transport","to":"application"}}
+{"time":45.774254,"name":"transport:data_moved","data":{"stream_id":0,"offset":10,"length":7,"from":"transport","to":"application"}}
+{"time":45.779762,"name":"transport:data_moved","data":{"stream_id":0,"offset":17,"length":1,"from":"transport","to":"application"}}
+{"time":45.787273,"name":"transport:data_moved","data":{"stream_id":0,"offset":18,"length":18,"from":"transport","to":"application"}}
+{"time":45.792675,"name":"http:frame_parsed","data":{"stream_id":0,"length":18,"frame":{"frame_type":"unknown","frame_type_value":4449031773939001426,"raw":{"payload_length":18}}}}
+{"time":45.799343,"name":"transport:data_moved","data":{"stream_id":0,"offset":36,"length":1,"from":"transport","to":"application"}}
+{"time":45.805058,"name":"transport:data_moved","data":{"stream_id":0,"offset":37,"length":1,"from":"transport","to":"application"}}
+{"time":45.810352,"name":"transport:data_moved","data":{"stream_id":0,"offset":38,"length":1,"from":"transport","to":"application"}}
+{"time":45.816917,"name":"transport:data_moved","data":{"stream_id":0,"offset":39,"length":95,"from":"transport","to":"application"}}
+{"time":46.10306,"name":"http:frame_parsed","data":{"stream_id":0,"length":95,"frame":{"frame_type":"headers","headers":[{"name":":status","value":"200"},{"name":"date","value":"Tue, 26 Nov 2024 16:20:50 GMT"},{"name":"content-type","value":"text/html"},{"name":"content-length","value":"125959"},{"name":"server","value":"cloudflare"},{"name":"cf-ray","value":"8e8b35494c3ed2f3-FRA"},{"name":"alt-svc","value":"h3=\":443\"; ma=86400"}]}}}
+{"time":46.185417,"name":"transport:data_moved","data":{"stream_id":0,"offset":134,"length":1,"from":"transport","to":"application"}}
+{"time":46.196217,"name":"transport:data_moved","data":{"stream_id":0,"offset":135,"length":1,"from":"transport","to":"application"}}
+{"time":46.202145,"name":"transport:data_moved","data":{"stream_id":0,"offset":136,"length":1,"from":"transport","to":"application"}}
+{"time":46.20744,"name":"http:frame_parsed","data":{"stream_id":0,"length":11861,"frame":{"frame_type":"data"}}}
+{"time":46.21771,"name":"transport:data_moved","data":{"stream_id":0,"offset":137,"length":2176,"from":"transport","to":"application"}}
+{"time":46.284824,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":5},"raw":{"length":44,"payload_length":6},"send_at_time":46.284824,"frames":[{"frame_type":"ack","ack_delay":0.075,"acked_ranges":[[0,6]]}]}}
+{"time":46.284824,"name":"recovery:metrics_updated","data":{"pacing_rate":1885702}}
+{"time":46.36951,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":7},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":2313,"length":1156}]}}
+{"time":46.406986,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":8},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":3469,"length":1156}]}}
+{"time":46.43356,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":9},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":4625,"length":1156}]}}
+{"time":46.45875,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":10},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":5781,"length":1156}]}}
+{"time":46.48406,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":11},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":6937,"length":1156}]}}
+{"time":46.509354,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":12},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":8093,"length":1156}]}}
+{"time":46.53402,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":13},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":9249,"length":1156}]}}
+{"time":46.55837,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":14},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":10405,"length":1156}]}}
+{"time":46.599445,"name":"transport:data_moved","data":{"stream_id":0,"offset":2313,"length":9248,"from":"transport","to":"application"}}
+{"time":46.738968,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":6},"raw":{"length":43,"payload_length":5},"send_at_time":46.738968,"frames":[{"frame_type":"ack","ack_delay":0.023,"acked_ranges":[[0,14]]}]}}
+{"time":53.756397,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":15},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":11561,"length":1156}]}}
+{"time":53.867554,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":16},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":12717,"length":1156}]}}
+{"time":53.89603,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":17},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":13873,"length":1156}]}}
+{"time":53.92228,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":18},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":15029,"length":1156}]}}
+{"time":53.965366,"name":"transport:data_moved","data":{"stream_id":0,"offset":11561,"length":437,"from":"transport","to":"application"}}
+{"time":53.977962,"name":"transport:data_moved","data":{"stream_id":0,"offset":11998,"length":1,"from":"transport","to":"application"}}
+{"time":53.985374,"name":"transport:data_moved","data":{"stream_id":0,"offset":11999,"length":1,"from":"transport","to":"application"}}
+{"time":53.991302,"name":"transport:data_moved","data":{"stream_id":0,"offset":12000,"length":1,"from":"transport","to":"application"}}
+{"time":53.996807,"name":"http:frame_parsed","data":{"stream_id":0,"length":4795,"frame":{"frame_type":"data"}}}
+{"time":54.008766,"name":"transport:data_moved","data":{"stream_id":0,"offset":12001,"length":4184,"from":"transport","to":"application"}}
+{"time":54.083824,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":7},"raw":{"length":43,"payload_length":5},"send_at_time":54.083824,"frames":[{"frame_type":"ack","ack_delay":0.021,"acked_ranges":[[0,18]]}]}}
+{"time":54.40088,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":19},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":16185,"length":1156}]}}
+{"time":54.46175,"name":"transport:data_moved","data":{"stream_id":0,"offset":16185,"length":611,"from":"transport","to":"application"}}
+{"time":54.494568,"name":"transport:data_moved","data":{"stream_id":0,"offset":16796,"length":1,"from":"transport","to":"application"}}
+{"time":54.50219,"name":"transport:data_moved","data":{"stream_id":0,"offset":16797,"length":1,"from":"transport","to":"application"}}
+{"time":54.50801,"name":"transport:data_moved","data":{"stream_id":0,"offset":16798,"length":1,"from":"transport","to":"application"}}
+{"time":54.513306,"name":"http:frame_parsed","data":{"stream_id":0,"length":15832,"frame":{"frame_type":"data"}}}
+{"time":54.52251,"name":"transport:data_moved","data":{"stream_id":0,"offset":16799,"length":542,"from":"transport","to":"application"}}
+{"time":54.574387,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":8},"raw":{"length":43,"payload_length":5},"send_at_time":54.574387,"frames":[{"frame_type":"ack","ack_delay":0.022,"acked_ranges":[[0,19]]}]}}
+{"time":54.662888,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":20},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":17341,"length":1154}]}}
+{"time":54.702904,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":21},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":18495,"length":1154}]}}
+{"time":54.76324,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":22},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":19649,"length":1154}]}}
+{"time":54.80569,"name":"transport:data_moved","data":{"stream_id":0,"offset":17341,"length":3462,"from":"transport","to":"application"}}
+{"time":54.865925,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":9},"raw":{"length":43,"payload_length":5},"send_at_time":54.865925,"frames":[{"frame_type":"ack","ack_delay":0.013,"acked_ranges":[[0,22]]}]}}
+{"time":54.928066,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":23},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":20803,"length":1154}]}}
+{"time":55.008736,"name":"transport:data_moved","data":{"stream_id":0,"offset":20803,"length":1154,"from":"transport","to":"application"}}
+{"time":55.126877,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":10},"raw":{"length":43,"payload_length":5},"send_at_time":55.126877,"frames":[{"frame_type":"ack","ack_delay":0.025,"acked_ranges":[[0,23]]}]}}
+{"time":55.207752,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":24},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":21957,"length":1154}]}}
+{"time":55.28376,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":26},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":24265,"length":1154}]}}
+{"time":55.338917,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":25},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":23111,"length":1154}]}}
+{"time":55.50057,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":27},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":25419,"length":1154}]}}
+{"time":55.543335,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":28},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":26573,"length":1154}]}}
+{"time":55.571705,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":29},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":27727,"length":1154}]}}
+{"time":55.63342,"name":"transport:data_moved","data":{"stream_id":0,"offset":21957,"length":6924,"from":"transport","to":"application"}}
+{"time":56.01653,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":11},"raw":{"length":43,"payload_length":5},"send_at_time":56.01653,"frames":[{"frame_type":"ack","ack_delay":0.058,"acked_ranges":[[0,29]]}]}}
+{"time":56.131603,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":30},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":28881,"length":1154}]}}
+{"time":56.17945,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":31},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":30035,"length":1154}]}}
+{"time":56.20814,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":32},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":31189,"length":1154}]}}
+{"time":56.234715,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":33},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":32343,"length":1154}]}}
+{"time":56.27494,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":34},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":33497,"length":1154}]}}
+{"time":56.32554,"name":"transport:data_moved","data":{"stream_id":0,"offset":28881,"length":3750,"from":"transport","to":"application"}}
+{"time":56.336765,"name":"transport:data_moved","data":{"stream_id":0,"offset":32631,"length":1,"from":"transport","to":"application"}}
+{"time":56.343643,"name":"transport:data_moved","data":{"stream_id":0,"offset":32632,"length":1,"from":"transport","to":"application"}}
+{"time":56.34957,"name":"transport:data_moved","data":{"stream_id":0,"offset":32633,"length":1,"from":"transport","to":"application"}}
+{"time":56.354973,"name":"http:frame_parsed","data":{"stream_id":0,"length":3360,"frame":{"frame_type":"data"}}}
+{"time":56.36429,"name":"transport:data_moved","data":{"stream_id":0,"offset":32634,"length":2017,"from":"transport","to":"application"}}
+{"time":56.447914,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":12},"raw":{"length":43,"payload_length":5},"send_at_time":56.447914,"frames":[{"frame_type":"ack","ack_delay":0.022,"acked_ranges":[[0,34]]}]}}
+{"time":61.600605,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":35},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":34651,"length":1154}]}}
+{"time":61.724884,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":36},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":35805,"length":1154}]}}
+{"time":61.75506,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":37},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":36959,"length":1154}]}}
+{"time":61.781944,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":38},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":38113,"length":1154}]}}
+{"time":61.831066,"name":"transport:data_moved","data":{"stream_id":0,"offset":34651,"length":1343,"from":"transport","to":"application"}}
+{"time":61.84419,"name":"transport:data_moved","data":{"stream_id":0,"offset":35994,"length":1,"from":"transport","to":"application"}}
+{"time":61.851597,"name":"transport:data_moved","data":{"stream_id":0,"offset":35995,"length":1,"from":"transport","to":"application"}}
+{"time":61.85753,"name":"transport:data_moved","data":{"stream_id":0,"offset":35996,"length":1,"from":"transport","to":"application"}}
+{"time":61.86303,"name":"http:frame_parsed","data":{"stream_id":0,"length":9595,"frame":{"frame_type":"data"}}}
+{"time":61.873512,"name":"transport:data_moved","data":{"stream_id":0,"offset":35997,"length":3270,"from":"transport","to":"application"}}
+{"time":61.966778,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":13},"raw":{"length":43,"payload_length":5},"send_at_time":61.966778,"frames":[{"frame_type":"ack","ack_delay":0.024,"acked_ranges":[[0,38]]}]}}
+{"time":62.061626,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":39},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":39267,"length":1154}]}}
+{"time":62.100372,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":40},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":40421,"length":1154}]}}
+{"time":62.12768,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":41},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":41575,"length":1154}]}}
+{"time":62.16516,"name":"transport:data_moved","data":{"stream_id":0,"offset":39267,"length":3462,"from":"transport","to":"application"}}
+{"time":62.265728,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":14},"raw":{"length":43,"payload_length":5},"send_at_time":62.265728,"frames":[{"frame_type":"ack","ack_delay":0.018,"acked_ranges":[[0,41]]}]}}
+{"time":62.33337,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":42},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":42729,"length":1154}]}}
+{"time":62.371273,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":43},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":43883,"length":1154}]}}
+{"time":62.40959,"name":"transport:data_moved","data":{"stream_id":0,"offset":42729,"length":2308,"from":"transport","to":"application"}}
+{"time":62.490368,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":15},"raw":{"length":43,"payload_length":5},"send_at_time":62.490368,"frames":[{"frame_type":"ack","ack_delay":0.015,"acked_ranges":[[0,43]]}]}}
+{"time":62.6138,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":44},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":45037,"length":1154}]}}
+{"time":62.65551,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":45},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":46191,"length":1154}]}}
+{"time":62.691822,"name":"transport:data_moved","data":{"stream_id":0,"offset":45037,"length":555,"from":"transport","to":"application"}}
+{"time":62.702194,"name":"transport:data_moved","data":{"stream_id":0,"offset":45592,"length":1,"from":"transport","to":"application"}}
+{"time":62.708965,"name":"transport:data_moved","data":{"stream_id":0,"offset":45593,"length":1,"from":"transport","to":"application"}}
+{"time":62.715218,"name":"transport:data_moved","data":{"stream_id":0,"offset":45594,"length":1,"from":"transport","to":"application"}}
+{"time":62.721245,"name":"http:frame_parsed","data":{"stream_id":0,"length":2395,"frame":{"frame_type":"data"}}}
+{"time":62.73236,"name":"transport:data_moved","data":{"stream_id":0,"offset":45595,"length":1750,"from":"transport","to":"application"}}
+{"time":62.79514,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":16},"raw":{"length":43,"payload_length":5},"send_at_time":62.79514,"frames":[{"frame_type":"ack","ack_delay":0.018,"acked_ranges":[[0,45]]}]}}
+{"time":62.8612,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":46},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":47345,"length":1154}]}}
+{"time":62.898994,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":47},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":48499,"length":1154}]}}
+{"time":62.933186,"name":"transport:data_moved","data":{"stream_id":0,"offset":47345,"length":645,"from":"transport","to":"application"}}
+{"time":62.943027,"name":"transport:data_moved","data":{"stream_id":0,"offset":47990,"length":1,"from":"transport","to":"application"}}
+{"time":62.95065,"name":"transport:data_moved","data":{"stream_id":0,"offset":47991,"length":1,"from":"transport","to":"application"}}
+{"time":62.956474,"name":"transport:data_moved","data":{"stream_id":0,"offset":47992,"length":1,"from":"transport","to":"application"}}
+{"time":62.96166,"name":"http:frame_parsed","data":{"stream_id":0,"length":7195,"frame":{"frame_type":"data"}}}
+{"time":62.97023,"name":"transport:data_moved","data":{"stream_id":0,"offset":47993,"length":1660,"from":"transport","to":"application"}}
+{"time":63.049732,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":17},"raw":{"length":43,"payload_length":5},"send_at_time":63.049732,"frames":[{"frame_type":"ack","ack_delay":0.019,"acked_ranges":[[0,47]]}]}}
+{"time":63.17603,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":48},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":49653,"length":1154}]}}
+{"time":63.26093,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":49},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":50807,"length":1154}]}}
+{"time":63.320004,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":50},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":51961,"length":1154}]}}
+{"time":63.37759,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":51},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":53115,"length":1154}]}}
+{"time":63.407654,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":52},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":54269,"length":1154}]}}
+{"time":63.4591,"name":"transport:data_moved","data":{"stream_id":0,"offset":49653,"length":5535,"from":"transport","to":"application"}}
+{"time":63.471912,"name":"transport:data_moved","data":{"stream_id":0,"offset":55188,"length":1,"from":"transport","to":"application"}}
+{"time":63.479847,"name":"transport:data_moved","data":{"stream_id":0,"offset":55189,"length":1,"from":"transport","to":"application"}}
+{"time":63.48588,"name":"transport:data_moved","data":{"stream_id":0,"offset":55190,"length":1,"from":"transport","to":"application"}}
+{"time":63.491493,"name":"http:frame_parsed","data":{"stream_id":0,"length":9597,"frame":{"frame_type":"data"}}}
+{"time":63.50092,"name":"transport:data_moved","data":{"stream_id":0,"offset":55191,"length":232,"from":"transport","to":"application"}}
+{"time":63.757732,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":18},"raw":{"length":43,"payload_length":5},"send_at_time":63.757732,"frames":[{"frame_type":"ack","ack_delay":0.045,"acked_ranges":[[0,52]]}]}}
+{"time":63.87598,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":53},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":55423,"length":1154}]}}
+{"time":63.922665,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":54},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":56577,"length":1154}]}}
+{"time":63.9738,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":55},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":57731,"length":1154}]}}
+{"time":64.00725,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":56},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":58885,"length":1154}]}}
+{"time":64.07849,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":57},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":60039,"length":1154}]}}
+{"time":64.12645,"name":"transport:data_moved","data":{"stream_id":0,"offset":55423,"length":5770,"from":"transport","to":"application"}}
+{"time":64.307686,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":19},"raw":{"length":43,"payload_length":5},"send_at_time":64.307686,"frames":[{"frame_type":"ack","ack_delay":0.029,"acked_ranges":[[0,57]]}]}}
+{"time":64.3965,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":58},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":61193,"length":1154}]}}
+{"time":64.45674,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":59},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":62347,"length":1154}]}}
+{"time":64.51157,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":60},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":63501,"length":1154}]}}
+{"time":64.54534,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":61},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":64655,"length":1154}]}}
+{"time":64.58239,"name":"transport:data_moved","data":{"stream_id":0,"offset":61193,"length":3595,"from":"transport","to":"application"}}
+{"time":64.615524,"name":"transport:data_moved","data":{"stream_id":0,"offset":64788,"length":1,"from":"transport","to":"application"}}
+{"time":64.624626,"name":"transport:data_moved","data":{"stream_id":0,"offset":64789,"length":1,"from":"transport","to":"application"}}
+{"time":64.69206,"name":"transport:data_moved","data":{"stream_id":0,"offset":64790,"length":1,"from":"transport","to":"application"}}
+{"time":64.71917,"name":"http:frame_parsed","data":{"stream_id":0,"length":626,"frame":{"frame_type":"data"}}}
+{"time":64.72985,"name":"transport:data_moved","data":{"stream_id":0,"offset":64791,"length":626,"from":"transport","to":"application"}}
+{"time":64.73674,"name":"transport:data_moved","data":{"stream_id":0,"offset":65417,"length":1,"from":"transport","to":"application"}}
+{"time":64.74288,"name":"transport:data_moved","data":{"stream_id":0,"offset":65418,"length":1,"from":"transport","to":"application"}}
+{"time":64.74838,"name":"transport:data_moved","data":{"stream_id":0,"offset":65419,"length":1,"from":"transport","to":"application"}}
+{"time":64.75325,"name":"http:frame_parsed","data":{"stream_id":0,"length":13766,"frame":{"frame_type":"data"}}}
+{"time":64.76024,"name":"transport:data_moved","data":{"stream_id":0,"offset":65420,"length":389,"from":"transport","to":"application"}}
+{"time":64.844604,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":20},"raw":{"length":43,"payload_length":5},"send_at_time":64.844604,"frames":[{"frame_type":"ack","ack_delay":0.038,"acked_ranges":[[0,61]]}]}}
+{"time":64.910774,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":62},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":65809,"length":1154}]}}
+{"time":64.98446,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":63},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":66963,"length":1154}]}}
+{"time":65.03632,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":64},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":68117,"length":1154}]}}
+{"time":65.07454,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":65},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":69271,"length":1154}]}}
+{"time":65.10217,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":66},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":70425,"length":1154}]}}
+{"time":65.14462,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":67},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":71579,"length":1154}]}}
+{"time":65.19449,"name":"transport:data_moved","data":{"stream_id":0,"offset":65809,"length":6924,"from":"transport","to":"application"}}
+{"time":65.31866,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":21},"raw":{"length":45,"payload_length":7},"send_at_time":65.31866,"frames":[{"frame_type":"ack","ack_delay":0.022,"acked_ranges":[[0,67]]}]}}
+{"time":65.39943,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":68},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":72733,"length":1154}]}}
+{"time":65.43638,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":69},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":73887,"length":1154}]}}
+{"time":65.486664,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":70},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":75041,"length":1154}]}}
+{"time":65.54721,"name":"transport:data_moved","data":{"stream_id":0,"offset":72733,"length":3462,"from":"transport","to":"application"}}
+{"time":65.64027,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":22},"raw":{"length":45,"payload_length":7},"send_at_time":65.64027,"frames":[{"frame_type":"ack","ack_delay":0.02,"acked_ranges":[[0,70]]}]}}
+{"time":65.719345,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":71},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":76195,"length":1154}]}}
+{"time":65.7565,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":72},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":77349,"length":1154}]}}
+{"time":65.80488,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":73},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":78503,"length":1154}]}}
+{"time":65.86903,"name":"transport:data_moved","data":{"stream_id":0,"offset":76195,"length":2991,"from":"transport","to":"application"}}
+{"time":65.88216,"name":"transport:data_moved","data":{"stream_id":0,"offset":79186,"length":1,"from":"transport","to":"application"}}
+{"time":65.889145,"name":"transport:data_moved","data":{"stream_id":0,"offset":79187,"length":1,"from":"transport","to":"application"}}
+{"time":65.894966,"name":"transport:data_moved","data":{"stream_id":0,"offset":79188,"length":1,"from":"transport","to":"application"}}
+{"time":65.900154,"name":"http:frame_parsed","data":{"stream_id":0,"length":11995,"frame":{"frame_type":"data"}}}
+{"time":65.90756,"name":"transport:data_moved","data":{"stream_id":0,"offset":79189,"length":468,"from":"transport","to":"application"}}
+{"time":65.96611,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":23},"raw":{"length":45,"payload_length":7},"send_at_time":65.96611,"frames":[{"frame_type":"ack","ack_delay":0.021,"acked_ranges":[[0,73]]}]}}
+{"time":66.025276,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":74},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":79657,"length":1154}]}}
+{"time":66.06975,"name":"transport:data_moved","data":{"stream_id":0,"offset":79657,"length":1154,"from":"transport","to":"application"}}
+{"time":66.124466,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":24},"raw":{"length":45,"payload_length":7},"send_at_time":66.124466,"frames":[{"frame_type":"ack","ack_delay":0.013,"acked_ranges":[[0,74]]}]}}
+{"time":69.73963,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":75},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":80811,"length":1154}]}}
+{"time":69.868256,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":76},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":81965,"length":1154}]}}
+{"time":69.90043,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":77},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":83119,"length":1154}]}}
+{"time":69.928276,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":78},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":84273,"length":1154}]}}
+{"time":69.98565,"name":"transport:data_moved","data":{"stream_id":0,"offset":80811,"length":4616,"from":"transport","to":"application"}}
+{"time":70.13513,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":25},"raw":{"length":45,"payload_length":7},"send_at_time":70.13513,"frames":[{"frame_type":"ack","ack_delay":0.028,"acked_ranges":[[0,78]]}]}}
+{"time":70.67396,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":79},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":85427,"length":1154}]}}
+{"time":71.14398,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":80},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":86581,"length":1154}]}}
+{"time":71.1839,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":81},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":87735,"length":1154}]}}
+{"time":71.212265,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":82},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":88889,"length":1154}]}}
+{"time":71.239365,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":83},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":90043,"length":1154}]}}
+{"time":71.26658,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":84},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":91197,"length":1154}]}}
+{"time":71.29335,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":85},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":92351,"length":1154}]}}
+{"time":71.34734,"name":"transport:data_moved","data":{"stream_id":0,"offset":85427,"length":5757,"from":"transport","to":"application"}}
+{"time":71.3611,"name":"transport:data_moved","data":{"stream_id":0,"offset":91184,"length":1,"from":"transport","to":"application"}}
+{"time":71.36895,"name":"transport:data_moved","data":{"stream_id":0,"offset":91185,"length":1,"from":"transport","to":"application"}}
+{"time":71.37486,"name":"transport:data_moved","data":{"stream_id":0,"offset":91186,"length":1,"from":"transport","to":"application"}}
+{"time":71.38111,"name":"http:frame_parsed","data":{"stream_id":0,"length":7007,"frame":{"frame_type":"data"}}}
+{"time":71.39138,"name":"transport:data_moved","data":{"stream_id":0,"offset":91187,"length":2318,"from":"transport","to":"application"}}
+{"time":71.60036,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":26},"raw":{"length":45,"payload_length":7},"send_at_time":71.60036,"frames":[{"frame_type":"ack","ack_delay":0.042,"acked_ranges":[[0,85]]}]}}
+{"time":71.722946,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":86},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":93505,"length":1154}]}}
+{"time":71.78868,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":87},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":94659,"length":1154}]}}
+{"time":71.845,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":88},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":95813,"length":1154}]}}
+{"time":71.90883,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":89},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":96967,"length":1154}]}}
+{"time":71.96409,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":90},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":98121,"length":1154}]}}
+{"time":72.0257,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":91},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":99275,"length":1154}]}}
+{"time":72.08244,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":92},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":100429,"length":1154}]}}
+{"time":72.116844,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":93},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":101583,"length":1154}]}}
+{"time":72.14596,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":94},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":102737,"length":1154}]}}
+{"time":72.19794,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":95},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":103891,"length":1154}]}}
+{"time":72.22896,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":96},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":105045,"length":1154}]}}
+{"time":72.256485,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":97},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":106199,"length":1154}]}}
+{"time":72.315025,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":98},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":107353,"length":1154}]}}
+{"time":72.34551,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":99},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":108507,"length":1154}]}}
+{"time":72.39537,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":100},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":109661,"length":1154}]}}
+{"time":72.4375,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":101},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":110815,"length":1154}]}}
+{"time":72.50917,"name":"transport:data_moved","data":{"stream_id":0,"offset":93505,"length":4689,"from":"transport","to":"application"}}
+{"time":72.526115,"name":"transport:data_moved","data":{"stream_id":0,"offset":98194,"length":1,"from":"transport","to":"application"}}
+{"time":72.53362,"name":"transport:data_moved","data":{"stream_id":0,"offset":98195,"length":1,"from":"transport","to":"application"}}
+{"time":72.54019,"name":"transport:data_moved","data":{"stream_id":0,"offset":98196,"length":1,"from":"transport","to":"application"}}
+{"time":72.5459,"name":"http:frame_parsed","data":{"stream_id":0,"length":2585,"frame":{"frame_type":"data"}}}
+{"time":72.56771,"name":"transport:data_moved","data":{"stream_id":0,"offset":98197,"length":2585,"from":"transport","to":"application"}}
+{"time":72.5748,"name":"transport:data_moved","data":{"stream_id":0,"offset":100782,"length":1,"from":"transport","to":"application"}}
+{"time":72.58105,"name":"transport:data_moved","data":{"stream_id":0,"offset":100783,"length":1,"from":"transport","to":"application"}}
+{"time":72.60762,"name":"transport:data_moved","data":{"stream_id":0,"offset":100784,"length":1,"from":"transport","to":"application"}}
+{"time":72.61598,"name":"http:frame_parsed","data":{"stream_id":0,"length":7195,"frame":{"frame_type":"data"}}}
+{"time":72.62849,"name":"transport:data_moved","data":{"stream_id":0,"offset":100785,"length":7195,"from":"transport","to":"application"}}
+{"time":72.63557,"name":"transport:data_moved","data":{"stream_id":0,"offset":107980,"length":1,"from":"transport","to":"application"}}
+{"time":72.6416,"name":"transport:data_moved","data":{"stream_id":0,"offset":107981,"length":1,"from":"transport","to":"application"}}
+{"time":72.6471,"name":"transport:data_moved","data":{"stream_id":0,"offset":107982,"length":1,"from":"transport","to":"application"}}
+{"time":72.65198,"name":"http:frame_parsed","data":{"stream_id":0,"length":11995,"frame":{"frame_type":"data"}}}
+{"time":72.89641,"name":"transport:data_moved","data":{"stream_id":0,"offset":107983,"length":3986,"from":"transport","to":"application"}}
+{"time":74.87357,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":27},"raw":{"length":46,"payload_length":8},"send_at_time":74.87357,"frames":[{"frame_type":"ack","ack_delay":0.308,"acked_ranges":[[0,101]]}]}}
+{"time":75.028984,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":102},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":111969,"length":1154}]}}
+{"time":75.087105,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":103},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":113123,"length":1154}]}}
+{"time":75.11568,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":104},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":114277,"length":1154}]}}
+{"time":75.142365,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":105},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":115431,"length":1154}]}}
+{"time":75.16893,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":106},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":116585,"length":1154}]}}
+{"time":75.19614,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":107},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":117739,"length":1154}]}}
+{"time":75.22261,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":108},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":118893,"length":1154}]}}
+{"time":75.28178,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":109},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":120047,"length":1154}]}}
+{"time":75.3147,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":110},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":121201,"length":1154}]}}
+{"time":75.34191,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":111},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":122355,"length":1154}]}}
+{"time":75.36795,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":112},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":123509,"length":1154}]}}
+{"time":75.39378,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":113},"raw":{"length":1200,"payload_length":1179},"frames":[{"frame_type":"stream","stream_id":0,"offset":124663,"length":1154}]}}
+{"time":75.4248,"name":"transport:packet_received","data":{"header":{"packet_type":"1RTT","packet_number":114},"raw":{"length":375,"payload_length":354},"frames":[{"frame_type":"stream","stream_id":0,"offset":125817,"length":329,"fin":true}]}}
+{"time":75.49011,"name":"transport:data_moved","data":{"stream_id":0,"offset":111969,"length":8009,"from":"transport","to":"application"}}
+{"time":75.50546,"name":"transport:data_moved","data":{"stream_id":0,"offset":119978,"length":1,"from":"transport","to":"application"}}
+{"time":75.513405,"name":"transport:data_moved","data":{"stream_id":0,"offset":119979,"length":1,"from":"transport","to":"application"}}
+{"time":75.51944,"name":"transport:data_moved","data":{"stream_id":0,"offset":119980,"length":1,"from":"transport","to":"application"}}
+{"time":75.52494,"name":"http:frame_parsed","data":{"stream_id":0,"length":4797,"frame":{"frame_type":"data"}}}
+{"time":75.53606,"name":"transport:data_moved","data":{"stream_id":0,"offset":119981,"length":4797,"from":"transport","to":"application"}}
+{"time":75.54283,"name":"transport:data_moved","data":{"stream_id":0,"offset":124778,"length":1,"from":"transport","to":"application"}}
+{"time":75.54876,"name":"transport:data_moved","data":{"stream_id":0,"offset":124779,"length":1,"from":"transport","to":"application"}}
+{"time":75.55427,"name":"transport:data_moved","data":{"stream_id":0,"offset":124780,"length":1,"from":"transport","to":"application"}}
+{"time":75.55924,"name":"http:frame_parsed","data":{"stream_id":0,"length":1363,"frame":{"frame_type":"data"}}}
+{"time":75.56559,"name":"transport:data_moved","data":{"stream_id":0,"offset":124781,"length":1363,"from":"transport","to":"application"}}
+{"time":75.57174,"name":"transport:data_moved","data":{"stream_id":0,"offset":126144,"length":1,"from":"transport","to":"application"}}
+{"time":75.5857,"name":"transport:data_moved","data":{"stream_id":0,"offset":126145,"length":1,"from":"transport","to":"application"}}
+{"time":75.59163,"name":"http:frame_parsed","data":{"stream_id":0,"length":0,"frame":{"frame_type":"data"}}}
+{"time":75.81649,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":28},"raw":{"length":49,"payload_length":11},"send_at_time":75.81649,"frames":[{"frame_type":"connection_close","error_space":"application_error","error_code":256,"reason":"kthxbye"}]}}
+{"time":75.81649,"name":"recovery:metrics_updated","data":{"bytes_in_flight":49}}
+{"time":141.49516,"name":"connectivity:connection_closed","data":{"owner":"local","application_code":256,"reason":"kthxbye","trigger":"error"}}