[INFO] fetching crate manifold3d-sys 0.0.3... [INFO] checking manifold3d-sys-0.0.3 against try#65132f36b923285d5da381c2fbafee6ce899e841 for pr-132712-1 [INFO] extracting crate manifold3d-sys 0.0.3 into /workspace/builds/worker-0-tc2/source [INFO] validating manifest of crates.io crate manifold3d-sys 0.0.3 on toolchain 65132f36b923285d5da381c2fbafee6ce899e841 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+65132f36b923285d5da381c2fbafee6ce899e841" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking crates.io crate manifold3d-sys 0.0.3 [INFO] finished tweaking crates.io crate manifold3d-sys 0.0.3 [INFO] tweaked toml for crates.io crate manifold3d-sys 0.0.3 written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+65132f36b923285d5da381c2fbafee6ce899e841" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 35 packages to latest compatible versions [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+65132f36b923285d5da381c2fbafee6ce899e841" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+65132f36b923285d5da381c2fbafee6ce899e841" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 1f4dfd0a35c138b1e94820d0f2bda29f273d03d59c1a6eb95bc75a8baea9f3c3 [INFO] running `Command { std: "docker" "start" "-a" "1f4dfd0a35c138b1e94820d0f2bda29f273d03d59c1a6eb95bc75a8baea9f3c3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1f4dfd0a35c138b1e94820d0f2bda29f273d03d59c1a6eb95bc75a8baea9f3c3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1f4dfd0a35c138b1e94820d0f2bda29f273d03d59c1a6eb95bc75a8baea9f3c3", kill_on_drop: false }` [INFO] [stdout] 1f4dfd0a35c138b1e94820d0f2bda29f273d03d59c1a6eb95bc75a8baea9f3c3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=allow" "-e" "RUSTDOCFLAGS=--cap-lints=allow" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+65132f36b923285d5da381c2fbafee6ce899e841" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8e42475ff4d62c3cc54bc78cdca782bfeb067c7e175b0fcc7a55d6371965d0d5 [INFO] running `Command { std: "docker" "start" "-a" "8e42475ff4d62c3cc54bc78cdca782bfeb067c7e175b0fcc7a55d6371965d0d5", kill_on_drop: false }` [INFO] [stderr] Copying to /tmp/fixit [INFO] [stderr] Running `cargo fix --edition` [INFO] [stderr] Migrating Cargo.toml from 2021 edition to 2024 [INFO] [stderr] Compiling glob v0.3.1 [INFO] [stderr] Compiling libc v0.2.164 [INFO] [stderr] Compiling prettyplease v0.2.25 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling either v1.13.0 [INFO] [stderr] Compiling bindgen v0.70.1 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling bitflags v2.6.0 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling libloading v0.8.5 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling cc v1.2.1 [INFO] [stderr] Compiling syn v2.0.89 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling clang-sys v1.8.1 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Compiling cexpr v0.6.0 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Compiling manifold3d-sys v0.0.3 (/tmp/fixit) [INFO] [stderr] Migrating build.rs from 2021 edition to 2024 [INFO] [stderr] Migrating src/lib.rs from 2021 edition to 2024 [INFO] [stderr] Fixed /opt/rustwide/target/debug/build/manifold3d-sys-20f7fe9fe9ddf0c2/out/bindings.rs (1 fix) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.28s [INFO] [stderr] Running `cargo check` to verify 2024 [INFO] [stderr] Compiling manifold3d-sys v0.0.3 (/tmp/fixit) [INFO] [stdout] error: extern blocks must be unsafe [INFO] [stdout] --> /opt/rustwide/target/debug/build/manifold3d-sys-20f7fe9fe9ddf0c2/out/bindings.rs:3:16836 [INFO] [stdout] | [INFO] [stdout] 3 | ... ; extern "C" { pub fn manifold_simple_polygon (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldVec2 , length : usize) -> * mut ManifoldSimplePolygon ; pub fn manifold_polygons (mem : * mut :: std :: os :: raw :: c_void , ps : * mut * mut ManifoldSimplePolygon , length : usize) -> * mut ManifoldPolygons ; pub fn manifold_simple_polygon_length (p : * mut ManifoldSimplePolygon) -> usize ; pub fn manifold_polygons_length (ps : * mut ManifoldPolygons) -> usize ; pub fn manifold_polygons_simple_length (ps : * mut ManifoldPolygons , idx : :: std :: os :: raw :: c_int) -> usize ; pub fn manifold_simple_polygon_get_point (p : * mut ManifoldSimplePolygon , idx : :: std :: os :: raw :: c_int) -> ManifoldVec2 ; pub fn manifold_polygons_get_simple (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldPolygons , idx : :: std :: os :: raw :: c_int) -> * mut ManifoldSimplePolygon ; pub fn manifold_polygons_get_point (ps : * mut ManifoldPolygons , simple_idx : :: std :: os :: raw :: c_int , pt_idx : :: std :: os :: raw :: c_int) -> ManifoldVec2 ; pub fn manifold_meshgl (mem : * mut :: std :: os :: raw :: c_void , vert_props : * mut f32 , n_verts : usize , n_props : usize , tri_verts : * mut u32 , n_tris : usize) -> * mut ManifoldMeshGL ; pub fn manifold_meshgl_w_tangents (mem : * mut :: std :: os :: raw :: c_void , vert_props : * mut f32 , n_verts : usize , n_props : usize , tri_verts : * mut u32 , n_tris : usize , halfedge_tangent : * mut f32) -> * mut ManifoldMeshGL ; pub fn manifold_get_meshgl (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldMeshGL ; pub fn manifold_meshgl_copy (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut ManifoldMeshGL ; pub fn manifold_meshgl_merge (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut ManifoldMeshGL ; pub fn manifold_meshgl64 (mem : * mut :: std :: os :: raw :: c_void , vert_props : * mut f64 , n_verts : usize , n_props : usize , tri_verts : * mut u64 , n_tris : usize) -> * mut ManifoldMeshGL64 ; pub fn manifold_meshgl64_w_tangents (mem : * mut :: std :: os :: raw :: c_void , vert_props : * mut f64 , n_verts : usize , n_props : usize , tri_verts : * mut u64 , n_tris : usize , halfedge_tangent : * mut f64) -> * mut ManifoldMeshGL64 ; pub fn manifold_get_meshgl64 (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldMeshGL64 ; pub fn manifold_meshgl64_copy (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut ManifoldMeshGL64 ; pub fn manifold_meshgl64_merge (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut ManifoldMeshGL64 ; pub fn manifold_level_set (mem : * mut :: std :: os :: raw :: c_void , sdf : ManifoldSdf , bounds : * mut ManifoldBox , edge_length : f64 , level : f64 , tolerance : f64 , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_level_set_seq (mem : * mut :: std :: os :: raw :: c_void , sdf : ManifoldSdf , bounds : * mut ManifoldBox , edge_length : f64 , level : f64 , tolerance : f64 , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_manifold_empty_vec (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifoldVec ; pub fn manifold_manifold_vec (mem : * mut :: std :: os :: raw :: c_void , sz : usize) -> * mut ManifoldManifoldVec ; pub fn manifold_manifold_vec_reserve (ms : * mut ManifoldManifoldVec , sz : usize) ; pub fn manifold_manifold_vec_length (ms : * mut ManifoldManifoldVec) -> usize ; pub fn manifold_manifold_vec_get (mem : * mut :: std :: os :: raw :: c_void , ms : * mut ManifoldManifoldVec , idx : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_manifold_vec_set (ms : * mut ManifoldManifoldVec , idx : :: std :: os :: raw :: c_int , m : * mut ManifoldManifold) ; pub fn manifold_manifold_vec_push_back (ms : * mut ManifoldManifoldVec , m : * mut ManifoldManifold) ; pub fn manifold_boolean (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold , op : ManifoldOpType) -> * mut ManifoldManifold ; pub fn manifold_batch_boolean (mem : * mut :: std :: os :: raw :: c_void , ms : * mut ManifoldManifoldVec , op : ManifoldOpType) -> * mut ManifoldManifold ; pub fn manifold_union (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_difference (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_intersection (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_split (mem_first : * mut :: std :: os :: raw :: c_void , mem_second : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold) -> ManifoldManifoldPair ; pub fn manifold_split_by_plane (mem_first : * mut :: std :: os :: raw :: c_void , mem_second : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , normal_x : f64 , normal_y : f64 , normal_z : f64 , offset : f64) -> ManifoldManifoldPair ; pub fn manifold_trim_by_plane (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , normal_x : f64 , normal_y : f64 , normal_z : f64 , offset : f64) -> * mut ManifoldManifold ; pub fn manifold_slice (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , height : f64) -> * mut ManifoldPolygons ; pub fn manifold_project (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldPolygons ; pub fn manifold_hull (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_batch_hull (mem : * mut :: std :: os :: raw :: c_void , ms : * mut ManifoldManifoldVec) -> * mut ManifoldManifold ; pub fn manifold_hull_pts (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldVec3 , length : usize) -> * mut ManifoldManifold ; pub fn manifold_translate (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , x : f64 , y : f64 , z : f64) -> * mut ManifoldManifold ; pub fn manifold_rotate (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , x : f64 , y : f64 , z : f64) -> * mut ManifoldManifold ; pub fn manifold_scale (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , x : f64 , y : f64 , z : f64) -> * mut ManifoldManifold ; pub fn manifold_transform (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , x1 : f64 , y1 : f64 , z1 : f64 , x2 : f64 , y2 : f64 , z2 : f64 , x3 : f64 , y3 : f64 , z3 : f64 , x4 : f64 , y4 : f64 , z4 : f64) -> * mut ManifoldManifold ; pub fn manifold_mirror (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , nx : f64 , ny : f64 , nz : f64) -> * mut ManifoldManifold ; pub fn manifold_warp (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , fun : :: std :: option :: Option < unsafe extern "C" fn (arg1 : f64 , arg2 : f64 , arg3 : f64 , arg4 : * mut :: std :: os :: raw :: c_void) -> ManifoldVec3 > , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_smooth_by_normals (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , normalIdx : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_smooth_out (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , minSharpAngle : f64 , minSmoothness : f64) -> * mut ManifoldManifold ; pub fn manifold_refine (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , refine : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_refine_to_length (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , length : f64) -> * mut ManifoldManifold ; pub fn manifold_refine_to_tolerance (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , tolerance : f64) -> * mut ManifoldManifold ; pub fn manifold_empty (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_copy (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_tetrahedron (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_cube (mem : * mut :: std :: os :: raw :: c_void , x : f64 , y : f64 , z : f64 , center : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_cylinder (mem : * mut :: std :: os :: raw :: c_void , height : f64 , radius_low : f64 , radius_high : f64 , circular_segments : :: std :: os :: raw :: c_int , center : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_sphere (mem : * mut :: std :: os :: raw :: c_void , radius : f64 , circular_segments : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_of_meshgl (mem : * mut :: std :: os :: raw :: c_void , mesh : * mut ManifoldMeshGL) -> * mut ManifoldManifold ; pub fn manifold_of_meshgl64 (mem : * mut :: std :: os :: raw :: c_void , mesh : * mut ManifoldMeshGL64) -> * mut ManifoldManifold ; pub fn manifold_smooth (mem : * mut :: std :: os :: raw :: c_void , mesh : * mut ManifoldMeshGL , half_edges : * mut usize , smoothness : * mut f64 , n_idxs : usize) -> * mut ManifoldManifold ; pub fn manifold_smooth64 (mem : * mut :: std :: os :: raw :: c_void , mesh : * mut ManifoldMeshGL64 , half_edges : * mut usize , smoothness : * mut f64 , n_idxs : usize) -> * mut ManifoldManifold ; pub fn manifold_extrude (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldPolygons , height : f64 , slices : :: std :: os :: raw :: c_int , twist_degrees : f64 , scale_x : f64 , scale_y : f64) -> * mut ManifoldManifold ; pub fn manifold_revolve (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldPolygons , circular_segments : :: std :: os :: raw :: c_int , revolve_degrees : f64) -> * mut ManifoldManifold ; pub fn manifold_compose (mem : * mut :: std :: os :: raw :: c_void , ms : * mut ManifoldManifoldVec) -> * mut ManifoldManifold ; pub fn manifold_decompose (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldManifoldVec ; pub fn manifold_as_original (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_is_empty (m : * mut ManifoldManifold) -> :: std :: os :: raw :: c_int ; pub fn manifold_status (m : * mut ManifoldManifold) -> ManifoldError ; pub fn manifold_num_vert (m : * mut ManifoldManifold) -> usize ; pub fn manifold_num_edge (m : * mut ManifoldManifold) -> usize ; pub fn manifold_num_tri (m : * mut ManifoldManifold) -> usize ; pub fn manifold_bounding_box (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldBox ; pub fn manifold_epsilon (m : * mut ManifoldManifold) -> f64 ; pub fn manifold_genus (m : * mut ManifoldManifold) -> :: std :: os :: raw :: c_int ; pub fn manifold_surface_area (m : * mut ManifoldManifold) -> f64 ; pub fn manifold_volume (m : * mut ManifoldManifold) -> f64 ; pub fn manifold_get_circular_segments (radius : f64) -> :: std :: os :: raw :: c_int ; pub fn manifold_original_id (m : * mut ManifoldManifold) -> :: std :: os :: raw :: c_int ; pub fn manifold_reserve_ids (n : u32) -> u32 ; pub fn manifold_set_properties (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , num_prop : :: std :: os :: raw :: c_int , fun : :: std :: option :: Option < unsafe extern "C" fn (new_prop : * mut f64 , position : ManifoldVec3 , old_prop : * const f64 , ctx : * mut :: std :: os :: raw :: c_void) > , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_calculate_curvature (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , gaussian_idx : :: std :: os :: raw :: c_int , mean_idx : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_min_gap (m : * mut ManifoldManifold , other : * mut ManifoldManifold , searchLength : f64) -> f64 ; pub fn manifold_calculate_normals (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , normal_idx : :: std :: os :: raw :: c_int , min_sharp_angle : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_cross_section_empty (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_copy (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_of_simple_polygon (mem : * mut :: std :: os :: raw :: c_void , p : * mut ManifoldSimplePolygon , fr : ManifoldFillRule) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_of_polygons (mem : * mut :: std :: os :: raw :: c_void , p : * mut ManifoldPolygons , fr : ManifoldFillRule) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_square (mem : * mut :: std :: os :: raw :: c_void , x : f64 , y : f64 , center : :: std :: os :: raw :: c_int) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_circle (mem : * mut :: std :: os :: raw :: c_void , radius : f64 , circular_segments : :: std :: os :: raw :: c_int) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_compose (mem : * mut :: std :: os :: raw :: c_void , csv : * mut ManifoldCrossSectionVec) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_decompose (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldCrossSectionVec ; pub fn manifold_cross_section_empty_vec (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldCrossSectionVec ; pub fn manifold_cross_section_vec (mem : * mut :: std :: os :: raw :: c_void , sz : usize) -> * mut ManifoldCrossSectionVec ; pub fn manifold_cross_section_vec_reserve (csv : * mut ManifoldCrossSectionVec , sz : usize) ; pub fn manifold_cross_section_vec_length (csv : * mut ManifoldCrossSectionVec) -> usize ; pub fn manifold_cross_section_vec_get (mem : * mut :: std :: os :: raw :: c_void , csv : * mut ManifoldCrossSectionVec , idx : :: std :: os :: raw :: c_int) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_vec_set (csv : * mut ManifoldCrossSectionVec , idx : :: std :: os :: raw :: c_int , cs : * mut ManifoldCrossSection) ; pub fn manifold_cross_section_vec_push_back (csv : * mut ManifoldCrossSectionVec , cs : * mut ManifoldCrossSection) ; pub fn manifold_cross_section_boolean (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldCrossSection , b : * mut ManifoldCrossSection , op : ManifoldOpType) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_batch_boolean (mem : * mut :: std :: os :: raw :: c_void , csv : * mut ManifoldCrossSectionVec , op : ManifoldOpType) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_union (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldCrossSection , b : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_difference (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldCrossSection , b : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_intersection (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldCrossSection , b : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_hull (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_batch_hull (mem : * mut :: std :: os :: raw :: c_void , css : * mut ManifoldCrossSectionVec) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_hull_simple_polygon (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldSimplePolygon) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_hull_polygons (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldPolygons) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_translate (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , x : f64 , y : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_rotate (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , deg : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_scale (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , x : f64 , y : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_mirror (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , ax_x : f64 , ax_y : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_transform (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , x1 : f64 , y1 : f64 , x2 : f64 , y2 : f64 , x3 : f64 , y3 : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_warp (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , fun : :: std :: option :: Option < unsafe extern "C" fn (arg1 : f64 , arg2 : f64) -> ManifoldVec2 >) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_warp_context (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , fun : :: std :: option :: Option < unsafe extern "C" fn (arg1 : f64 , arg2 : f64 , arg3 : * mut :: std :: os :: raw :: c_void) -> ManifoldVec2 > , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_simplify (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , epsilon : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_offset (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , delta : f64 , jt : ManifoldJoinType , miter_limit : f64 , circular_segments : :: std :: os :: raw :: c_int) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_area (cs : * mut ManifoldCrossSection) -> f64 ; pub fn manifold_cross_section_num_vert (cs : * mut ManifoldCrossSection) -> :: std :: os :: raw :: c_int ; pub fn manifold_cross_section_num_contour (cs : * mut ManifoldCrossSection) -> :: std :: os :: raw :: c_int ; pub fn manifold_cross_section_is_empty (cs : * mut ManifoldCrossSection) -> :: std :: os :: raw :: c_int ; pub fn manifold_cross_section_bounds (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldRect ; pub fn manifold_cross_section_to_polygons (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldPolygons ; pub fn manifold_rect (mem : * mut :: std :: os :: raw :: c_void , x1 : f64 , y1 : f64 , x2 : f64 , y2 : f64) -> * mut ManifoldRect ; pub fn manifold_rect_min (r : * mut ManifoldRect) -> ManifoldVec2 ; pub fn manifold_rect_max (r : * mut ManifoldRect) -> ManifoldVec2 ; pub fn manifold_rect_dimensions (r : * mut ManifoldRect) -> ManifoldVec2 ; pub fn manifold_rect_center (r : * mut ManifoldRect) -> ManifoldVec2 ; pub fn manifold_rect_scale (r : * mut ManifoldRect) -> f64 ; pub fn manifold_rect_contains_pt (r : * mut ManifoldRect , x : f64 , y : f64) -> :: std :: os :: raw :: c_int ; pub fn manifold_rect_contains_rect (a : * mut ManifoldRect , b : * mut ManifoldRect) -> :: std :: os :: raw :: c_int ; pub fn manifold_rect_include_pt (r : * mut ManifoldRect , x : f64 , y : f64) ; pub fn manifold_rect_union (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldRect , b : * mut ManifoldRect) -> * mut ManifoldRect ; pub fn manifold_rect_transform (mem : * mut :: std :: os :: raw :: c_void , r : * mut ManifoldRect , x1 : f64 , y1 : f64 , x2 : f64 , y2 : f64 , x3 : f64 , y3 : f64) -> * mut ManifoldRect ; pub fn manifold_rect_translate (mem : * mut :: std :: os :: raw :: c_void , r : * mut ManifoldRect , x : f64 , y : f64) -> * mut ManifoldRect ; pub fn manifold_rect_mul (mem : * mut :: std :: os :: raw :: c_void , r : * mut ManifoldRect , x : f64 , y : f64) -> * mut ManifoldRect ; pub fn manifold_rect_does_overlap_rect (a : * mut ManifoldRect , r : * mut ManifoldRect) -> :: std :: os :: raw :: c_int ; pub fn manifold_rect_is_empty (r : * mut ManifoldRect) -> :: std :: os :: raw :: c_int ; pub fn manifold_rect_is_finite (r : * mut ManifoldRect) -> :: std :: os :: raw :: c_int ; pub fn manifold_box (mem : * mut :: std :: os :: raw :: c_void , x1 : f64 , y1 : f64 , z1 : f64 , x2 : f64 , y2 : f64 , z2 : f64) -> * mut ManifoldBox ; pub fn manifold_box_min (b : * mut ManifoldBox) -> ManifoldVec3 ; pub fn manifold_box_max (b : * mut ManifoldBox) -> ManifoldVec3 ; pub fn manifold_box_dimensions (b : * mut ManifoldBox) -> ManifoldVec3 ; pub fn manifold_box_center (b : * mut ManifoldBox) -> ManifoldVec3 ; pub fn manifold_box_scale (b : * mut ManifoldBox) -> f64 ; pub fn manifold_box_contains_pt (b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) -> :: std :: os :: raw :: c_int ; pub fn manifold_box_contains_box (a : * mut ManifoldBox , b : * mut ManifoldBox) -> :: std :: os :: raw :: c_int ; pub fn manifold_box_include_pt (b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) ; pub fn manifold_box_union (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldBox , b : * mut ManifoldBox) -> * mut ManifoldBox ; pub fn manifold_box_transform (mem : * mut :: std :: os :: raw :: c_void , b : * mut ManifoldBox , x1 : f64 , y1 : f64 , z1 : f64 , x2 : f64 , y2 : f64 , z2 : f64 , x3 : f64 , y3 : f64 , z3 : f64 , x4 : f64 , y4 : f64 , z4 : f64) -> * mut ManifoldBox ; pub fn manifold_box_translate (mem : * mut :: std :: os :: raw :: c_void , b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) -> * mut ManifoldBox ; pub fn manifold_box_mul (mem : * mut :: std :: os :: raw :: c_void , b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) -> * mut ManifoldBox ; pub fn manifold_box_does_overlap_pt (b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) -> :: std :: os :: raw :: c_int ; pub fn manifold_box_does_overlap_box (a : * mut ManifoldBox , b : * mut ManifoldBox) -> :: std :: os :: raw :: c_int ; pub fn manifold_box_is_finite (b : * mut ManifoldBox) -> :: std :: os :: raw :: c_int ; pub fn manifold_set_min_circular_angle (degrees : f64) ; pub fn manifold_set_min_circular_edge_length (length : f64) ; pub fn manifold_set_circular_segments (number : :: std :: os :: raw :: c_int) ; pub fn manifold_reset_to_circular_defaults () ; pub fn manifold_meshgl_num_prop (m : * mut ManifoldMeshGL) -> :: std :: os :: raw :: c_int ; pub fn manifold_meshgl_num_vert (m : * mut ManifoldMeshGL) -> :: std :: os :: raw :: c_int ; pub fn manifold_meshgl_num_tri (m : * mut ManifoldMeshGL) -> :: std :: os :: raw :: c_int ; pub fn manifold_meshgl_vert_properties_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_tri_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_merge_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_run_index_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_run_original_id_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_run_transform_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_face_id_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_tangent_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_vert_properties (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut f32 ; pub fn manifold_meshgl_tri_verts (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_merge_from_vert (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_merge_to_vert (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_run_index (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_run_original_id (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_run_transform (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut f32 ; pub fn manifold_meshgl_face_id (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_halfedge_tangent (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut f32 ; pub fn manifold_meshgl64_num_prop (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_num_vert (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_num_tri (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_vert_properties_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_tri_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_merge_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_run_index_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_run_original_id_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_run_transform_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_face_id_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_tangent_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_vert_properties (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut f64 ; pub fn manifold_meshgl64_tri_verts (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_merge_from_vert (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_merge_to_vert (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_run_index (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_run_original_id (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u32 ; pub fn manifold_meshgl64_run_transform (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut f64 ; pub fn manifold_meshgl64_face_id (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_halfedge_tangent (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut f64 ; pub fn manifold_triangulate (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldPolygons , epsilon : f64) -> * mut ManifoldTriangulation ; pub fn manifold_triangulation_num_tri (m : * mut ManifoldTriangulation) -> usize ; pub fn manifold_triangulation_tri_verts (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldTriangulation) -> * mut :: std :: os :: raw :: c_int ; pub fn manifold_manifold_size () -> usize ; pub fn manifold_manifold_vec_size () -> usize ; pub fn manifold_cross_section_size () -> usize ; pub fn manifold_cross_section_vec_size () -> usize ; pub fn manifold_simple_polygon_size () -> usize ; pub fn manifold_polygons_size () -> usize ; pub fn manifold_manifold_pair_size () -> usize ; pub fn manifold_meshgl_size () -> usize ; pub fn manifold_meshgl64_size () -> usize ; pub fn manifold_box_size () -> usize ; pub fn manifold_rect_size () -> usize ; pub fn manifold_curvature_size () -> usize ; pub fn manifold_triangulation_size () -> usize ; pub fn manifold_alloc_manifold () -> * mut ManifoldManifold ; pub fn manifold_alloc_manifold_vec () -> * mut ManifoldManifoldVec ; pub fn manifold_alloc_cross_section () -> * mut ManifoldCrossSection ; pub fn manifold_alloc_cross_section_vec () -> * mut ManifoldCrossSectionVec ; pub fn manifold_alloc_simple_polygon () -> * mut ManifoldSimplePolygon ; pub fn manifold_alloc_polygons () -> * mut ManifoldPolygons ; pub fn manifold_alloc_meshgl () -> * mut ManifoldMeshGL ; pub fn manifold_alloc_meshgl64 () -> * mut ManifoldMeshGL64 ; pub fn manifold_alloc_box () -> * mut ManifoldBox ; pub fn manifold_alloc_rect () -> * mut ManifoldRect ; pub fn manifold_alloc_triangulation () -> * mut ManifoldTriangulation ; pub fn manifold_destruct_manifold (m : * mut ManifoldManifold) ; pub fn manifold_destruct_manifold_vec (ms : * mut ManifoldManifoldVec) ; pub fn manifold_destruct_cross_section (m : * mut ManifoldCrossSection) ; pub fn manifold_destruct_cross_section_vec (csv : * mut ManifoldCrossSectionVec) ; pub fn manifold_destruct_simple_polygon (p : * mut ManifoldSimplePolygon) ; pub fn manifold_destruct_polygons (p : * mut ManifoldPolygons) ; pub fn manifold_destruct_meshgl (m : * mut ManifoldMeshGL) ; pub fn manifold_destruct_meshgl64 (m : * mut ManifoldMeshGL64) ; pub fn manifold_destruct_box (b : * mut ManifoldBox) ; pub fn manifold_destruct_rect (b : * mut ManifoldRect) ; pub fn manifold_destruct_triangulation (M : * mut ManifoldTriangulation) ; pub fn manifold_delete_manifold (m : * mut ManifoldManifold) ; pub fn manifold_delete_manifold_vec (ms : * mut ManifoldManifoldVec) ; pub fn manifold_delete_cross_section (cs : * mut ManifoldCrossSection) ; pub fn manifold_delete_cross_section_vec (csv : * mut ManifoldCrossSectionVec) ; pub fn manifold_delete_simple_polygon (p : * mut ManifoldSimplePolygon) ; pub fn manifold_delete_polygons (p : * mut ManifoldPolygons) ; pub fn manifold_delete_meshgl (m : * mut ManifoldMeshGL) ; pub fn manifold_delete_meshgl64 (m : * mut ManifoldMeshGL64) ; pub fn manifold_delete_box (b : * mut ManifoldBox) ; pub fn manifold_delete_rect (b : * mut ManifoldRect) ; pub fn manifold_delete_triangulation (m : * mut ManifoldTriangulation) ; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: extern blocks must be unsafe [INFO] [stdout] --> /opt/rustwide/target/debug/build/manifold3d-sys-20f7fe9fe9ddf0c2/out/bindings.rs:3:16836 [INFO] [stdout] | [INFO] [stdout] 3 | ... ; extern "C" { pub fn manifold_simple_polygon (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldVec2 , length : usize) -> * mut ManifoldSimplePolygon ; pub fn manifold_polygons (mem : * mut :: std :: os :: raw :: c_void , ps : * mut * mut ManifoldSimplePolygon , length : usize) -> * mut ManifoldPolygons ; pub fn manifold_simple_polygon_length (p : * mut ManifoldSimplePolygon) -> usize ; pub fn manifold_polygons_length (ps : * mut ManifoldPolygons) -> usize ; pub fn manifold_polygons_simple_length (ps : * mut ManifoldPolygons , idx : :: std :: os :: raw :: c_int) -> usize ; pub fn manifold_simple_polygon_get_point (p : * mut ManifoldSimplePolygon , idx : :: std :: os :: raw :: c_int) -> ManifoldVec2 ; pub fn manifold_polygons_get_simple (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldPolygons , idx : :: std :: os :: raw :: c_int) -> * mut ManifoldSimplePolygon ; pub fn manifold_polygons_get_point (ps : * mut ManifoldPolygons , simple_idx : :: std :: os :: raw :: c_int , pt_idx : :: std :: os :: raw :: c_int) -> ManifoldVec2 ; pub fn manifold_meshgl (mem : * mut :: std :: os :: raw :: c_void , vert_props : * mut f32 , n_verts : usize , n_props : usize , tri_verts : * mut u32 , n_tris : usize) -> * mut ManifoldMeshGL ; pub fn manifold_meshgl_w_tangents (mem : * mut :: std :: os :: raw :: c_void , vert_props : * mut f32 , n_verts : usize , n_props : usize , tri_verts : * mut u32 , n_tris : usize , halfedge_tangent : * mut f32) -> * mut ManifoldMeshGL ; pub fn manifold_get_meshgl (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldMeshGL ; pub fn manifold_meshgl_copy (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut ManifoldMeshGL ; pub fn manifold_meshgl_merge (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut ManifoldMeshGL ; pub fn manifold_meshgl64 (mem : * mut :: std :: os :: raw :: c_void , vert_props : * mut f64 , n_verts : usize , n_props : usize , tri_verts : * mut u64 , n_tris : usize) -> * mut ManifoldMeshGL64 ; pub fn manifold_meshgl64_w_tangents (mem : * mut :: std :: os :: raw :: c_void , vert_props : * mut f64 , n_verts : usize , n_props : usize , tri_verts : * mut u64 , n_tris : usize , halfedge_tangent : * mut f64) -> * mut ManifoldMeshGL64 ; pub fn manifold_get_meshgl64 (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldMeshGL64 ; pub fn manifold_meshgl64_copy (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut ManifoldMeshGL64 ; pub fn manifold_meshgl64_merge (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut ManifoldMeshGL64 ; pub fn manifold_level_set (mem : * mut :: std :: os :: raw :: c_void , sdf : ManifoldSdf , bounds : * mut ManifoldBox , edge_length : f64 , level : f64 , tolerance : f64 , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_level_set_seq (mem : * mut :: std :: os :: raw :: c_void , sdf : ManifoldSdf , bounds : * mut ManifoldBox , edge_length : f64 , level : f64 , tolerance : f64 , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_manifold_empty_vec (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifoldVec ; pub fn manifold_manifold_vec (mem : * mut :: std :: os :: raw :: c_void , sz : usize) -> * mut ManifoldManifoldVec ; pub fn manifold_manifold_vec_reserve (ms : * mut ManifoldManifoldVec , sz : usize) ; pub fn manifold_manifold_vec_length (ms : * mut ManifoldManifoldVec) -> usize ; pub fn manifold_manifold_vec_get (mem : * mut :: std :: os :: raw :: c_void , ms : * mut ManifoldManifoldVec , idx : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_manifold_vec_set (ms : * mut ManifoldManifoldVec , idx : :: std :: os :: raw :: c_int , m : * mut ManifoldManifold) ; pub fn manifold_manifold_vec_push_back (ms : * mut ManifoldManifoldVec , m : * mut ManifoldManifold) ; pub fn manifold_boolean (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold , op : ManifoldOpType) -> * mut ManifoldManifold ; pub fn manifold_batch_boolean (mem : * mut :: std :: os :: raw :: c_void , ms : * mut ManifoldManifoldVec , op : ManifoldOpType) -> * mut ManifoldManifold ; pub fn manifold_union (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_difference (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_intersection (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_split (mem_first : * mut :: std :: os :: raw :: c_void , mem_second : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldManifold , b : * mut ManifoldManifold) -> ManifoldManifoldPair ; pub fn manifold_split_by_plane (mem_first : * mut :: std :: os :: raw :: c_void , mem_second : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , normal_x : f64 , normal_y : f64 , normal_z : f64 , offset : f64) -> ManifoldManifoldPair ; pub fn manifold_trim_by_plane (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , normal_x : f64 , normal_y : f64 , normal_z : f64 , offset : f64) -> * mut ManifoldManifold ; pub fn manifold_slice (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , height : f64) -> * mut ManifoldPolygons ; pub fn manifold_project (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldPolygons ; pub fn manifold_hull (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_batch_hull (mem : * mut :: std :: os :: raw :: c_void , ms : * mut ManifoldManifoldVec) -> * mut ManifoldManifold ; pub fn manifold_hull_pts (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldVec3 , length : usize) -> * mut ManifoldManifold ; pub fn manifold_translate (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , x : f64 , y : f64 , z : f64) -> * mut ManifoldManifold ; pub fn manifold_rotate (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , x : f64 , y : f64 , z : f64) -> * mut ManifoldManifold ; pub fn manifold_scale (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , x : f64 , y : f64 , z : f64) -> * mut ManifoldManifold ; pub fn manifold_transform (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , x1 : f64 , y1 : f64 , z1 : f64 , x2 : f64 , y2 : f64 , z2 : f64 , x3 : f64 , y3 : f64 , z3 : f64 , x4 : f64 , y4 : f64 , z4 : f64) -> * mut ManifoldManifold ; pub fn manifold_mirror (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , nx : f64 , ny : f64 , nz : f64) -> * mut ManifoldManifold ; pub fn manifold_warp (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , fun : :: std :: option :: Option < unsafe extern "C" fn (arg1 : f64 , arg2 : f64 , arg3 : f64 , arg4 : * mut :: std :: os :: raw :: c_void) -> ManifoldVec3 > , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_smooth_by_normals (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , normalIdx : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_smooth_out (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , minSharpAngle : f64 , minSmoothness : f64) -> * mut ManifoldManifold ; pub fn manifold_refine (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , refine : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_refine_to_length (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , length : f64) -> * mut ManifoldManifold ; pub fn manifold_refine_to_tolerance (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , tolerance : f64) -> * mut ManifoldManifold ; pub fn manifold_empty (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_copy (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_tetrahedron (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_cube (mem : * mut :: std :: os :: raw :: c_void , x : f64 , y : f64 , z : f64 , center : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_cylinder (mem : * mut :: std :: os :: raw :: c_void , height : f64 , radius_low : f64 , radius_high : f64 , circular_segments : :: std :: os :: raw :: c_int , center : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_sphere (mem : * mut :: std :: os :: raw :: c_void , radius : f64 , circular_segments : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_of_meshgl (mem : * mut :: std :: os :: raw :: c_void , mesh : * mut ManifoldMeshGL) -> * mut ManifoldManifold ; pub fn manifold_of_meshgl64 (mem : * mut :: std :: os :: raw :: c_void , mesh : * mut ManifoldMeshGL64) -> * mut ManifoldManifold ; pub fn manifold_smooth (mem : * mut :: std :: os :: raw :: c_void , mesh : * mut ManifoldMeshGL , half_edges : * mut usize , smoothness : * mut f64 , n_idxs : usize) -> * mut ManifoldManifold ; pub fn manifold_smooth64 (mem : * mut :: std :: os :: raw :: c_void , mesh : * mut ManifoldMeshGL64 , half_edges : * mut usize , smoothness : * mut f64 , n_idxs : usize) -> * mut ManifoldManifold ; pub fn manifold_extrude (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldPolygons , height : f64 , slices : :: std :: os :: raw :: c_int , twist_degrees : f64 , scale_x : f64 , scale_y : f64) -> * mut ManifoldManifold ; pub fn manifold_revolve (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldPolygons , circular_segments : :: std :: os :: raw :: c_int , revolve_degrees : f64) -> * mut ManifoldManifold ; pub fn manifold_compose (mem : * mut :: std :: os :: raw :: c_void , ms : * mut ManifoldManifoldVec) -> * mut ManifoldManifold ; pub fn manifold_decompose (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldManifoldVec ; pub fn manifold_as_original (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldManifold ; pub fn manifold_is_empty (m : * mut ManifoldManifold) -> :: std :: os :: raw :: c_int ; pub fn manifold_status (m : * mut ManifoldManifold) -> ManifoldError ; pub fn manifold_num_vert (m : * mut ManifoldManifold) -> usize ; pub fn manifold_num_edge (m : * mut ManifoldManifold) -> usize ; pub fn manifold_num_tri (m : * mut ManifoldManifold) -> usize ; pub fn manifold_bounding_box (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold) -> * mut ManifoldBox ; pub fn manifold_epsilon (m : * mut ManifoldManifold) -> f64 ; pub fn manifold_genus (m : * mut ManifoldManifold) -> :: std :: os :: raw :: c_int ; pub fn manifold_surface_area (m : * mut ManifoldManifold) -> f64 ; pub fn manifold_volume (m : * mut ManifoldManifold) -> f64 ; pub fn manifold_get_circular_segments (radius : f64) -> :: std :: os :: raw :: c_int ; pub fn manifold_original_id (m : * mut ManifoldManifold) -> :: std :: os :: raw :: c_int ; pub fn manifold_reserve_ids (n : u32) -> u32 ; pub fn manifold_set_properties (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , num_prop : :: std :: os :: raw :: c_int , fun : :: std :: option :: Option < unsafe extern "C" fn (new_prop : * mut f64 , position : ManifoldVec3 , old_prop : * const f64 , ctx : * mut :: std :: os :: raw :: c_void) > , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldManifold ; pub fn manifold_calculate_curvature (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , gaussian_idx : :: std :: os :: raw :: c_int , mean_idx : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_min_gap (m : * mut ManifoldManifold , other : * mut ManifoldManifold , searchLength : f64) -> f64 ; pub fn manifold_calculate_normals (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldManifold , normal_idx : :: std :: os :: raw :: c_int , min_sharp_angle : :: std :: os :: raw :: c_int) -> * mut ManifoldManifold ; pub fn manifold_cross_section_empty (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_copy (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_of_simple_polygon (mem : * mut :: std :: os :: raw :: c_void , p : * mut ManifoldSimplePolygon , fr : ManifoldFillRule) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_of_polygons (mem : * mut :: std :: os :: raw :: c_void , p : * mut ManifoldPolygons , fr : ManifoldFillRule) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_square (mem : * mut :: std :: os :: raw :: c_void , x : f64 , y : f64 , center : :: std :: os :: raw :: c_int) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_circle (mem : * mut :: std :: os :: raw :: c_void , radius : f64 , circular_segments : :: std :: os :: raw :: c_int) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_compose (mem : * mut :: std :: os :: raw :: c_void , csv : * mut ManifoldCrossSectionVec) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_decompose (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldCrossSectionVec ; pub fn manifold_cross_section_empty_vec (mem : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldCrossSectionVec ; pub fn manifold_cross_section_vec (mem : * mut :: std :: os :: raw :: c_void , sz : usize) -> * mut ManifoldCrossSectionVec ; pub fn manifold_cross_section_vec_reserve (csv : * mut ManifoldCrossSectionVec , sz : usize) ; pub fn manifold_cross_section_vec_length (csv : * mut ManifoldCrossSectionVec) -> usize ; pub fn manifold_cross_section_vec_get (mem : * mut :: std :: os :: raw :: c_void , csv : * mut ManifoldCrossSectionVec , idx : :: std :: os :: raw :: c_int) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_vec_set (csv : * mut ManifoldCrossSectionVec , idx : :: std :: os :: raw :: c_int , cs : * mut ManifoldCrossSection) ; pub fn manifold_cross_section_vec_push_back (csv : * mut ManifoldCrossSectionVec , cs : * mut ManifoldCrossSection) ; pub fn manifold_cross_section_boolean (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldCrossSection , b : * mut ManifoldCrossSection , op : ManifoldOpType) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_batch_boolean (mem : * mut :: std :: os :: raw :: c_void , csv : * mut ManifoldCrossSectionVec , op : ManifoldOpType) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_union (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldCrossSection , b : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_difference (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldCrossSection , b : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_intersection (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldCrossSection , b : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_hull (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_batch_hull (mem : * mut :: std :: os :: raw :: c_void , css : * mut ManifoldCrossSectionVec) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_hull_simple_polygon (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldSimplePolygon) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_hull_polygons (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldPolygons) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_translate (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , x : f64 , y : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_rotate (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , deg : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_scale (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , x : f64 , y : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_mirror (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , ax_x : f64 , ax_y : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_transform (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , x1 : f64 , y1 : f64 , x2 : f64 , y2 : f64 , x3 : f64 , y3 : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_warp (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , fun : :: std :: option :: Option < unsafe extern "C" fn (arg1 : f64 , arg2 : f64) -> ManifoldVec2 >) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_warp_context (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , fun : :: std :: option :: Option < unsafe extern "C" fn (arg1 : f64 , arg2 : f64 , arg3 : * mut :: std :: os :: raw :: c_void) -> ManifoldVec2 > , ctx : * mut :: std :: os :: raw :: c_void) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_simplify (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , epsilon : f64) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_offset (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection , delta : f64 , jt : ManifoldJoinType , miter_limit : f64 , circular_segments : :: std :: os :: raw :: c_int) -> * mut ManifoldCrossSection ; pub fn manifold_cross_section_area (cs : * mut ManifoldCrossSection) -> f64 ; pub fn manifold_cross_section_num_vert (cs : * mut ManifoldCrossSection) -> :: std :: os :: raw :: c_int ; pub fn manifold_cross_section_num_contour (cs : * mut ManifoldCrossSection) -> :: std :: os :: raw :: c_int ; pub fn manifold_cross_section_is_empty (cs : * mut ManifoldCrossSection) -> :: std :: os :: raw :: c_int ; pub fn manifold_cross_section_bounds (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldRect ; pub fn manifold_cross_section_to_polygons (mem : * mut :: std :: os :: raw :: c_void , cs : * mut ManifoldCrossSection) -> * mut ManifoldPolygons ; pub fn manifold_rect (mem : * mut :: std :: os :: raw :: c_void , x1 : f64 , y1 : f64 , x2 : f64 , y2 : f64) -> * mut ManifoldRect ; pub fn manifold_rect_min (r : * mut ManifoldRect) -> ManifoldVec2 ; pub fn manifold_rect_max (r : * mut ManifoldRect) -> ManifoldVec2 ; pub fn manifold_rect_dimensions (r : * mut ManifoldRect) -> ManifoldVec2 ; pub fn manifold_rect_center (r : * mut ManifoldRect) -> ManifoldVec2 ; pub fn manifold_rect_scale (r : * mut ManifoldRect) -> f64 ; pub fn manifold_rect_contains_pt (r : * mut ManifoldRect , x : f64 , y : f64) -> :: std :: os :: raw :: c_int ; pub fn manifold_rect_contains_rect (a : * mut ManifoldRect , b : * mut ManifoldRect) -> :: std :: os :: raw :: c_int ; pub fn manifold_rect_include_pt (r : * mut ManifoldRect , x : f64 , y : f64) ; pub fn manifold_rect_union (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldRect , b : * mut ManifoldRect) -> * mut ManifoldRect ; pub fn manifold_rect_transform (mem : * mut :: std :: os :: raw :: c_void , r : * mut ManifoldRect , x1 : f64 , y1 : f64 , x2 : f64 , y2 : f64 , x3 : f64 , y3 : f64) -> * mut ManifoldRect ; pub fn manifold_rect_translate (mem : * mut :: std :: os :: raw :: c_void , r : * mut ManifoldRect , x : f64 , y : f64) -> * mut ManifoldRect ; pub fn manifold_rect_mul (mem : * mut :: std :: os :: raw :: c_void , r : * mut ManifoldRect , x : f64 , y : f64) -> * mut ManifoldRect ; pub fn manifold_rect_does_overlap_rect (a : * mut ManifoldRect , r : * mut ManifoldRect) -> :: std :: os :: raw :: c_int ; pub fn manifold_rect_is_empty (r : * mut ManifoldRect) -> :: std :: os :: raw :: c_int ; pub fn manifold_rect_is_finite (r : * mut ManifoldRect) -> :: std :: os :: raw :: c_int ; pub fn manifold_box (mem : * mut :: std :: os :: raw :: c_void , x1 : f64 , y1 : f64 , z1 : f64 , x2 : f64 , y2 : f64 , z2 : f64) -> * mut ManifoldBox ; pub fn manifold_box_min (b : * mut ManifoldBox) -> ManifoldVec3 ; pub fn manifold_box_max (b : * mut ManifoldBox) -> ManifoldVec3 ; pub fn manifold_box_dimensions (b : * mut ManifoldBox) -> ManifoldVec3 ; pub fn manifold_box_center (b : * mut ManifoldBox) -> ManifoldVec3 ; pub fn manifold_box_scale (b : * mut ManifoldBox) -> f64 ; pub fn manifold_box_contains_pt (b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) -> :: std :: os :: raw :: c_int ; pub fn manifold_box_contains_box (a : * mut ManifoldBox , b : * mut ManifoldBox) -> :: std :: os :: raw :: c_int ; pub fn manifold_box_include_pt (b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) ; pub fn manifold_box_union (mem : * mut :: std :: os :: raw :: c_void , a : * mut ManifoldBox , b : * mut ManifoldBox) -> * mut ManifoldBox ; pub fn manifold_box_transform (mem : * mut :: std :: os :: raw :: c_void , b : * mut ManifoldBox , x1 : f64 , y1 : f64 , z1 : f64 , x2 : f64 , y2 : f64 , z2 : f64 , x3 : f64 , y3 : f64 , z3 : f64 , x4 : f64 , y4 : f64 , z4 : f64) -> * mut ManifoldBox ; pub fn manifold_box_translate (mem : * mut :: std :: os :: raw :: c_void , b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) -> * mut ManifoldBox ; pub fn manifold_box_mul (mem : * mut :: std :: os :: raw :: c_void , b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) -> * mut ManifoldBox ; pub fn manifold_box_does_overlap_pt (b : * mut ManifoldBox , x : f64 , y : f64 , z : f64) -> :: std :: os :: raw :: c_int ; pub fn manifold_box_does_overlap_box (a : * mut ManifoldBox , b : * mut ManifoldBox) -> :: std :: os :: raw :: c_int ; pub fn manifold_box_is_finite (b : * mut ManifoldBox) -> :: std :: os :: raw :: c_int ; pub fn manifold_set_min_circular_angle (degrees : f64) ; pub fn manifold_set_min_circular_edge_length (length : f64) ; pub fn manifold_set_circular_segments (number : :: std :: os :: raw :: c_int) ; pub fn manifold_reset_to_circular_defaults () ; pub fn manifold_meshgl_num_prop (m : * mut ManifoldMeshGL) -> :: std :: os :: raw :: c_int ; pub fn manifold_meshgl_num_vert (m : * mut ManifoldMeshGL) -> :: std :: os :: raw :: c_int ; pub fn manifold_meshgl_num_tri (m : * mut ManifoldMeshGL) -> :: std :: os :: raw :: c_int ; pub fn manifold_meshgl_vert_properties_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_tri_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_merge_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_run_index_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_run_original_id_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_run_transform_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_face_id_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_tangent_length (m : * mut ManifoldMeshGL) -> usize ; pub fn manifold_meshgl_vert_properties (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut f32 ; pub fn manifold_meshgl_tri_verts (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_merge_from_vert (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_merge_to_vert (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_run_index (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_run_original_id (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_run_transform (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut f32 ; pub fn manifold_meshgl_face_id (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut u32 ; pub fn manifold_meshgl_halfedge_tangent (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL) -> * mut f32 ; pub fn manifold_meshgl64_num_prop (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_num_vert (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_num_tri (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_vert_properties_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_tri_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_merge_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_run_index_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_run_original_id_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_run_transform_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_face_id_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_tangent_length (m : * mut ManifoldMeshGL64) -> usize ; pub fn manifold_meshgl64_vert_properties (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut f64 ; pub fn manifold_meshgl64_tri_verts (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_merge_from_vert (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_merge_to_vert (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_run_index (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_run_original_id (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u32 ; pub fn manifold_meshgl64_run_transform (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut f64 ; pub fn manifold_meshgl64_face_id (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut u64 ; pub fn manifold_meshgl64_halfedge_tangent (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldMeshGL64) -> * mut f64 ; pub fn manifold_triangulate (mem : * mut :: std :: os :: raw :: c_void , ps : * mut ManifoldPolygons , epsilon : f64) -> * mut ManifoldTriangulation ; pub fn manifold_triangulation_num_tri (m : * mut ManifoldTriangulation) -> usize ; pub fn manifold_triangulation_tri_verts (mem : * mut :: std :: os :: raw :: c_void , m : * mut ManifoldTriangulation) -> * mut :: std :: os :: raw :: c_int ; pub fn manifold_manifold_size () -> usize ; pub fn manifold_manifold_vec_size () -> usize ; pub fn manifold_cross_section_size () -> usize ; pub fn manifold_cross_section_vec_size () -> usize ; pub fn manifold_simple_polygon_size () -> usize ; pub fn manifold_polygons_size () -> usize ; pub fn manifold_manifold_pair_size () -> usize ; pub fn manifold_meshgl_size () -> usize ; pub fn manifold_meshgl64_size () -> usize ; pub fn manifold_box_size () -> usize ; pub fn manifold_rect_size () -> usize ; pub fn manifold_curvature_size () -> usize ; pub fn manifold_triangulation_size () -> usize ; pub fn manifold_alloc_manifold () -> * mut ManifoldManifold ; pub fn manifold_alloc_manifold_vec () -> * mut ManifoldManifoldVec ; pub fn manifold_alloc_cross_section () -> * mut ManifoldCrossSection ; pub fn manifold_alloc_cross_section_vec () -> * mut ManifoldCrossSectionVec ; pub fn manifold_alloc_simple_polygon () -> * mut ManifoldSimplePolygon ; pub fn manifold_alloc_polygons () -> * mut ManifoldPolygons ; pub fn manifold_alloc_meshgl () -> * mut ManifoldMeshGL ; pub fn manifold_alloc_meshgl64 () -> * mut ManifoldMeshGL64 ; pub fn manifold_alloc_box () -> * mut ManifoldBox ; pub fn manifold_alloc_rect () -> * mut ManifoldRect ; pub fn manifold_alloc_triangulation () -> * mut ManifoldTriangulation ; pub fn manifold_destruct_manifold (m : * mut ManifoldManifold) ; pub fn manifold_destruct_manifold_vec (ms : * mut ManifoldManifoldVec) ; pub fn manifold_destruct_cross_section (m : * mut ManifoldCrossSection) ; pub fn manifold_destruct_cross_section_vec (csv : * mut ManifoldCrossSectionVec) ; pub fn manifold_destruct_simple_polygon (p : * mut ManifoldSimplePolygon) ; pub fn manifold_destruct_polygons (p : * mut ManifoldPolygons) ; pub fn manifold_destruct_meshgl (m : * mut ManifoldMeshGL) ; pub fn manifold_destruct_meshgl64 (m : * mut ManifoldMeshGL64) ; pub fn manifold_destruct_box (b : * mut ManifoldBox) ; pub fn manifold_destruct_rect (b : * mut ManifoldRect) ; pub fn manifold_destruct_triangulation (M : * mut ManifoldTriangulation) ; pub fn manifold_delete_manifold (m : * mut ManifoldManifold) ; pub fn manifold_delete_manifold_vec (ms : * mut ManifoldManifoldVec) ; pub fn manifold_delete_cross_section (cs : * mut ManifoldCrossSection) ; pub fn manifold_delete_cross_section_vec (csv : * mut ManifoldCrossSectionVec) ; pub fn manifold_delete_simple_polygon (p : * mut ManifoldSimplePolygon) ; pub fn manifold_delete_polygons (p : * mut ManifoldPolygons) ; pub fn manifold_delete_meshgl (m : * mut ManifoldMeshGL) ; pub fn manifold_delete_meshgl64 (m : * mut ManifoldMeshGL64) ; pub fn manifold_delete_box (b : * mut ManifoldBox) ; pub fn manifold_delete_rect (b : * mut ManifoldRect) ; pub fn manifold_delete_triangulation (m : * mut ManifoldTriangulation) ; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `manifold3d-sys` (lib) due to 1 previous error [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: could not compile `manifold3d-sys` (lib test) due to 1 previous error [INFO] [stderr] error: failed to check after updating to 2024 [INFO] [stderr] [INFO] [stderr] Caused by: [INFO] [stderr] process didn't exit successfully: `cargo check --frozen --all --all-targets --message-format=json` (exit status: 101) [INFO] running `Command { std: "docker" "inspect" "8e42475ff4d62c3cc54bc78cdca782bfeb067c7e175b0fcc7a55d6371965d0d5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8e42475ff4d62c3cc54bc78cdca782bfeb067c7e175b0fcc7a55d6371965d0d5", kill_on_drop: false }` [INFO] [stdout] 8e42475ff4d62c3cc54bc78cdca782bfeb067c7e175b0fcc7a55d6371965d0d5