digraph ipu_stack_package_partition {
  graph [rankdir=LR, bgcolor="white", fontname="DejaVu Sans", fontsize=17,
         label="ipu_exchange — part 1/2 — package build/run detail", labelloc=t, labeljust=l, pad=0.2, nodesep=0.3, ranksep=0.75, newrank=true, overlap=false, splines=polyline, outputorder=edgesfirst];
  node [fontname="DejaVu Sans", fontsize=9, style="rounded,filled", color="#52606d", penwidth=0.8];
  edge [fontname="DejaVu Sans", fontsize=7, color="#52606d", arrowsize=0.55, penwidth=0.8];
  subgraph cluster_primary { label="primary nodes"; color="#d8f0dd"; style="rounded";
    f78 [label="ipu_exchange::PhaseProgramBuilder::active_tile_count", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn active_tile_count(&self) -> usize — crates/ipu-exchange/src/lib.rs:318"];
    f83 [label="ipu_exchange::PhaseProgramBuilder::append_transfer_at", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Adds one transfer to the phase schedule. The transfer's sender and all /// receivers are recorded declaratively and compiled together by /// [`Self::finish`]. pub fn append_transfer_at( &mut self, source: u16, reserved_tiles: &[u16], receivers: &[u16], plan: &MulticastPlan, schedule_offset: u32, words: u32, ) -> Result<PhaseTransferTiming, ExchangeError> — crates/ipu-exchange/src/lib.rs:452"];
    f79 [label="ipu_exchange::PhaseProgramBuilder::earliest_transfer_offset", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Finds one absolute offset at which all endpoints can perform the /// transfer. Compatibility is evaluated across the complete phase state; /// tile programs are not encoded until the phase is finished. pub fn earliest_transfer_offset( &self, source: u16, reserved_tiles: &[u16], receivers: &[u16], plan: &MulticastPlan, words: u32, requested: u32, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:325"];
    f80 [label="ipu_exchange::PhaseProgramBuilder::earliest_transfer_offset_deferred", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Finds an endpoint-compatible offset while deferring whole-row encoding /// validation until the complete phase is available. Callers must encode /// the completed phase and retry with [`Self::earliest_transfer_offset`] /// if instruction alignment is not representable. pub fn earliest_transfer_offset_deferred( &self, source: u16, reserved_tiles: &[u16], receivers: &[u16], plan: &MulticastPlan, words: u32, requested: u32, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:348"];
    f81 [label="ipu_exchange::PhaseProgramBuilder::earliest_transfer_offset_impl", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn earliest_transfer_offset_impl( &self, source: u16, reserved_tiles: &[u16], receivers: &[u16], plan: &MulticastPlan, words: u32, requested: u32, validate_encoding: bool, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:374"];
    f77 [label="ipu_exchange::PhaseProgramBuilder::event_cycles", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn event_cycles(&self) -> u32 — crates/ipu-exchange/src/lib.rs:310"];
    f85 [label="ipu_exchange::PhaseProgramBuilder::finish", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn finish(self) -> Result<PhasePrograms, ExchangeError> — crates/ipu-exchange/src/lib.rs:573"];
    f62 [label="ipu_exchange::PhaseProgramBuilder::new", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn new(tile_count: u16) -> Self — crates/ipu-exchange/src/lib.rs:294"];
    f65 [label="ipu_exchange::PhaseProgramBuilder::tile_count", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn tile_count(&self) -> u16 — crates/ipu-exchange/src/lib.rs:299"];
    f67 [label="ipu_exchange::PhaseProgramBuilder::tile_event_cycles", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn tile_event_cycles(&self, tile: u16) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:303"];
    f82 [label="ipu_exchange::PhaseProgramBuilder::transfer_is_encodable_at", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn transfer_is_encodable_at( &self, source: u16, receivers: &[u16], plan: &MulticastPlan, schedule_offset: u32, words: u32, ) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:425"];
    f84 [label="ipu_exchange::PhaseProgramBuilder::transfer_timing_at", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn transfer_timing_at( &self, source: u16, receivers: &[u16], plan: &MulticastPlan, schedule_offset: u32, words: u32, ) -> Result<PhaseTransferTiming, ExchangeError> — crates/ipu-exchange/src/lib.rs:512"];
    f56 [label="ipu_exchange::PhaseTransferTiming::payload_completion", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn payload_completion(&self) -> u32 — crates/ipu-exchange/src/lib.rs:276"];
    f95 [label="ipu_exchange::ReceiveEventKind::is_pic", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn is_pic(self) -> bool — crates/ipu-exchange/src/lib.rs:834"];
    f94 [label="ipu_exchange::ReceiveEventKind::is_xpic", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn is_xpic(self) -> bool — crates/ipu-exchange/src/lib.rs:828"];
    f90 [label="ipu_exchange::TileProgramSchedule::append_receiver_at", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Appends a receive row, merging its timed control writes with the /// current receive stream and replacing an immediately preceding neutral /// mux selection with a direct source cutover. fn append_receiver_at( &mut self, row: &PlanRow, schedule_offset: u32, received_words: u32, ) -> Result<ScheduledReceiverWindow, ExchangeError> — crates/ipu-exchange/src/lib.rs:744"];
    f89 [label="ipu_exchange::TileProgramSchedule::append_sender_at", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Appends a primitive row at an arbitrary absolute phase offset without /// requiring that offset to fit in the primitive row's spare words. fn append_sender_at( &mut self, row: &PlanRow, schedule_offset: u32, ) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:716"];
    f87 [label="ipu_exchange::TileProgramSchedule::earliest_receiver_offset", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Advances a requested transfer offset while preserving independent /// source-selection and local receive-address streams. fn earliest_receiver_offset( &self, row: &PlanRow, received_words: u32, requested: u32, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:658"];
    f86 [label="ipu_exchange::TileProgramSchedule::earliest_sender_offset", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Advances a requested transfer offset until its outgoing message does /// not overlap another outgoing message on this tile. Receive controls may /// be represented by the ISA's composite send/control encodings; this is a /// single supervisor instruction, not dual issue from independent lanes. fn earliest_sender_offset(&self, row: &PlanRow, requested: u32) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:614"];
    f92 [label="ipu_exchange::TileProgramSchedule::finish", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn finish(&self) -> Result<Vec<u32>, ExchangeError> — crates/ipu-exchange/src/lib.rs:811"];
    f46 [label="ipu_exchange::Topology::c600", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn c600() -> Self — crates/ipu-exchange/src/lib.rs:2307"];
    f54 [label="ipu_exchange::Topology::multicast", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn multicast( &self, sender_logical: u16, receiver_logical: &[u16], count: u32, schedule_offset: u32, ) -> Result<MulticastPlan, ExchangeError> — crates/ipu-exchange/src/lib.rs:2581"];
    f45 [label="ipu_exchange::Topology::new", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn new(logical_to_physical: Vec<u16>) -> Result<Self, ExchangeError> — crates/ipu-exchange/src/lib.rs:2294"];
    f49 [label="ipu_exchange::Topology::paired_logical", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Logical tile that shares this tile's double-width exchange resources. pub fn paired_logical(&self, logical: u16) -> Result<u16, ExchangeError> — crates/ipu-exchange/src/lib.rs:2324"];
    f51 [label="ipu_exchange::Topology::paired_multicast", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Builds an SDK-compatible double-width multicast. Receivers must be /// complete physical tile pairs; both members consume the same 64-bit /// item stream. pub fn paired_multicast( &self, sender_logical: u16, receivers: &[u16], count: u32, ) -> Result<MulticastPlan, ExchangeError> — crates/ipu-exchange/src/lib.rs:2371"];
    f50 [label="ipu_exchange::Topology::paired_receiver_is_early", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Whether this member of a double-width receiving pair owns the paired /// XPIC source-selection stream. This matches the SDK architecture /// helper `TPair_RxIsEarly`. pub fn paired_receiver_is_early( &self, receiver_logical: u16, sender_logical: u16, ) -> Result<bool, ExchangeError> — crates/ipu-exchange/src/lib.rs:2356"];
    f52 [label="ipu_exchange::Topology::paired_receiver_row", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn paired_receiver_row( &self, sender_logical: u16, receiver_logical: u16, count: u32, minimum_double_mux: i32, ) -> Result<PlanRow, ExchangeError> — crates/ipu-exchange/src/lib.rs:2426"];
    f48 [label="ipu_exchange::Topology::physical", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn physical(&self, logical: u16) -> Result<u16, ExchangeError> — crates/ipu-exchange/src/lib.rs:2317"];
    f53 [label="ipu_exchange::Topology::point_to_point", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn point_to_point( &self, sender_logical: u16, receiver_logical: u16, count: u32, ) -> Result<MulticastPlan, ExchangeError> — crates/ipu-exchange/src/lib.rs:2510"];
    f47 [label="ipu_exchange::Topology::tile_count", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn tile_count(&self) -> usize — crates/ipu-exchange/src/lib.rs:2313"];
    f16 [label="ipu_exchange::append_plain_delay", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn append_plain_delay( words: &mut Vec<u32>, event_cycles: &mut u32, target_cycles: u32, ) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:1660"];
    f17 [label="ipu_exchange::append_plain_delay_aligned", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Advances with plain delays while arranging the next word at the requested /// two-word-instruction alignment. Exchange rows are placed at eight-byte /// boundaries, so `word_parity == 0` aligns a following SENDPICP and payload. fn append_plain_delay_aligned( words: &mut Vec<u32>, event_cycles: &mut u32, target_cycles: u32, word_parity: usize, ) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:1677"];
    f14 [label="ipu_exchange::append_receive_events", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn append_receive_events( words: &mut Vec<u32>, event_cycles: &mut u32, events: &[ReceiveEvent], horizon_cycles: u32, align_control_pairs: bool, ) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:1558"];
    f8 [label="ipu_exchange::append_sender_message", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn append_sender_message( words: &mut Vec<u32>, event_cycles: &mut u32, sender: &ScheduledSenderRow, controls: &[ReceiveEvent], ) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:1351"];
    f29 [label="ipu_exchange::assemble_host_to_tile_target_program", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn assemble_host_to_tile_target_program( physical_tile: u16, tile_address: u32, host_offset: u32, bytes: u32, packet_address: u32, ) -> Result<TileToHostProgram, ExchangeError> — crates/ipu-exchange/src/lib.rs:1899"];
    f27 [label="ipu_exchange::assemble_host_xreq_program_for_targets", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn assemble_host_xreq_program_for_targets( target_physical_tiles: &[u16], packet_address: u32, ) -> Result<TileToHostProgram, ExchangeError> — crates/ipu-exchange/src/lib.rs:1837"];
    f35 [label="ipu_exchange::assemble_tile_to_host_target_program", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn assemble_tile_to_host_target_program( physical_tile: u16, tile_address: u32, host_offset: u32, bytes: u32, packet_address: u32, command_address: u32, ) -> Result<TileToHostProgram, ExchangeError> — crates/ipu-exchange/src/lib.rs:2073"];
    f91 [label="ipu_exchange::br_m", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub const fn br_m(register: u8) -> u32 — crates/ipu-exchange/src/lib.rs:77"];
    f7 [label="ipu_exchange::build_scheduled_program", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn build_scheduled_program( senders: &[ScheduledSenderRow], receive_events: &[ReceiveEvent], horizon_cycles: u32, ) -> Result<Vec<u32>, ExchangeError> — crates/ipu-exchange/src/lib.rs:1296"];
    f72 [label="ipu_exchange::delay", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="const fn delay(cycles: u32) -> u32 — crates/ipu-exchange/src/lib.rs:3063"];
    f73 [label="ipu_exchange::delay_pic", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="const fn delay_pic(a: u32, b: u32, c: u32) -> u32 — crates/ipu-exchange/src/lib.rs:3067"];
    f74 [label="ipu_exchange::delay_xpic", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="const fn delay_xpic(a: u32, b: u32, c: u32) -> u32 — crates/ipu-exchange/src/lib.rs:3071"];
    f66 [label="ipu_exchange::direction", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn direction(source: u32, destination: u32) -> u32 — crates/ipu-exchange/src/lib.rs:3008"];
    f10 [label="ipu_exchange::emit_sender_words", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn emit_sender_words( words: &mut Vec<u32>, event_cycles: &mut u32, initial_instruction: u32, direction: u32, remaining: &mut u32, sent: &mut u32, started: &mut bool, count: u32, final_word_parity: Option<usize>, ) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:1451"];
    f9 [label="ipu_exchange::encode_add_m_immediate", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_add_m_immediate( destination: u8, source: u8, immediate: i32, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:144"];
    f93 [label="ipu_exchange::encode_br_m", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_br_m(register: u8) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:81"];
    f28 [label="ipu_exchange::encode_brz_m_immediate", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_brz_m_immediate(register: u8, target_address: u32) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:188"];
    f97 [label="ipu_exchange::encode_call_m_immediate", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_call_m_immediate( return_register: u8, target_address: u32, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:88"];
    f69 [label="ipu_exchange::encode_exchange_delay", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub const fn encode_exchange_delay(cycles: u32) -> u32 — crates/ipu-exchange/src/lib.rs:3051"];
    f70 [label="ipu_exchange::encode_exchange_delay_pic", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub const fn encode_exchange_delay_pic(a: u32, b: u32, c: u32) -> u32 — crates/ipu-exchange/src/lib.rs:3055"];
    f71 [label="ipu_exchange::encode_exchange_delay_xpic", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub const fn encode_exchange_delay_xpic(a: u32, b: u32, c: u32) -> u32 — crates/ipu-exchange/src/lib.rs:3059"];
    f2 [label="ipu_exchange::encode_ld32_m_immediate", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_ld32_m_immediate( destination: u8, base: u8, delta: u8, word_offset: u16, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:112"];
    f1 [label="ipu_exchange::encode_put_special_m", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_put_special_m(special: u8, register: u8) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:105"];
    f75 [label="ipu_exchange::encode_send", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_send( count_minus_one: u32, direction: u32, base_word: u32, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:3075"];
    f13 [label="ipu_exchange::encode_send_control", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn encode_send_control(count_minus_one: u32, event: ReceiveEvent) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:1539"];
    f15 [label="ipu_exchange::encode_send_control_pair", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn encode_send_control_pair( count_minus_one: u32, source_word_address: u32, send_control: u32, events: &[ReceiveEvent], ) -> Result<(u32, u32), ExchangeError> — crates/ipu-exchange/src/lib.rs:1621"];
    f99 [label="ipu_exchange::encode_setzi_m", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_setzi_m(register: u8, immediate: u32) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:98"];
    f21 [label="ipu_exchange::encode_shl_m_immediate", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_shl_m_immediate( destination: u8, source: u8, immediate: u16, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:174"];
    f6 [label="ipu_exchange::encode_st32_m_immediate", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn encode_st32_m_immediate( source: u8, base: u8, delta: u8, word_offset: u16, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:128"];
    f63 [label="ipu_exchange::finalize_point_receiver", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn finalize_point_receiver( row: &PlanRow, source_physical: u16, ) -> Result<PlanRow, ExchangeError> — crates/ipu-exchange/src/lib.rs:2954"];
    f42 [label="ipu_exchange::host_address_length", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn host_address_length( host_offset: u32, bytes: u32, size: HostPacketSize, ) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:2261"];
    f26 [label="ipu_exchange::host_hierarchy", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn host_hierarchy(target_physical_tile: u16) -> Result<HostHierarchy, ExchangeError> — crates/ipu-exchange/src/lib.rs:1822"];
    f40 [label="ipu_exchange::host_mux_for_tile", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn host_mux_for_tile(physical_tile: u16) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:2246"];
    f41 [label="ipu_exchange::host_packet_size", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn host_packet_size(host_offset: u32, bytes: u32) -> Result<HostPacketSize, ExchangeError> — crates/ipu-exchange/src/lib.rs:2251"];
    f43 [label="ipu_exchange::host_route_word0", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn host_route_word0(physical_tile: u16) -> u32 — crates/ipu-exchange/src/lib.rs:2283"];
    f44 [label="ipu_exchange::host_route_word1", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn host_route_word1(physical_tile: u16) -> u32 — crates/ipu-exchange/src/lib.rs:2288"];
    f30 [label="ipu_exchange::host_to_tile_packet", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn host_to_tile_packet( physical_tile: u16, tile_address: u32, host_offset: u32, bytes: u32, ) -> Result<HostPacketHeader, ExchangeError> — crates/ipu-exchange/src/lib.rs:1977"];
    f19 [label="ipu_exchange::instruction_advance", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn instruction_advance(instruction: u32) -> u32 — crates/ipu-exchange/src/lib.rs:1730"];
    f24 [label="ipu_exchange::is_payload_send", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn is_payload_send(instruction: u32) -> bool — crates/ipu-exchange/src/lib.rs:1760"];
    f20 [label="ipu_exchange::is_send_control", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn is_send_control(instruction: u32) -> bool — crates/ipu-exchange/src/lib.rs:1748"];
    f22 [label="ipu_exchange::is_send_control_pair", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn is_send_control_pair(instruction: u32) -> bool — crates/ipu-exchange/src/lib.rs:1752"];
    f23 [label="ipu_exchange::is_send_off", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn is_send_off(instruction: u32) -> bool — crates/ipu-exchange/src/lib.rs:1756"];
    f18 [label="ipu_exchange::maximum_timed_instruction_advance", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn maximum_timed_instruction_advance(instruction: u32) -> Option<u32> — crates/ipu-exchange/src/lib.rs:1717"];
    f60 [label="ipu_exchange::normalized_exchange_address_words", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Removes tile-memory address fields while retaining exchange roles, routes, /// transfer sizes, and event timing. Rows with the same result can share one /// executable slot and restore their addresses before invocation. pub fn normalized_exchange_address_words(row: &[u32]) -> Vec<u32> — crates/ipu-exchange/src/lib.rs:2858"];
    f68 [label="ipu_exchange::paired_time_to_mux", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Route timing when a receiving tile borrows its physical partner's lane. /// It is monotonic in the opposite direction to the SDK's /// `ColossusBNET_TTDBL`, but differences between receiver pairs are in event /// cycles and drive the same paired-source schedule. fn paired_time_to_mux(source: u32, destination: u32) -> i32 — crates/ipu-exchange/src/lib.rs:3043"];
    f61 [label="ipu_exchange::patch_receiver_address", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn patch_receiver_address(row: &mut PlanRow, byte_address: u32) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:2892"];
    f57 [label="ipu_exchange::patch_sender_address", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn patch_sender_address(row: &mut PlanRow, byte_address: u32) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:2780"];
    f58 [label="ipu_exchange::patch_sender_instruction", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Replaces the address field of one tile-to-tile SEND instruction. pub fn patch_sender_instruction( instruction: &mut u32, byte_address: u32, ) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:2788"];
    f38 [label="ipu_exchange::plan_event_cycles", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Returns the plan event horizon measured from the entry synchronization. /// /// Delay immediates advance to the event `N + 1` cycles later. Send /// instructions occupy one event per transferred word. pub fn plan_event_cycles(row: &[u32]) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:213"];
    f32 [label="ipu_exchange::plan_host_to_tile", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn plan_host_to_tile( physical_tile: u16, tile_address: u32, host_offset: u32, bytes: u32, ) -> Result<Vec<HostTransferChunk>, ExchangeError> — crates/ipu-exchange/src/lib.rs:2037"];
    f39 [label="ipu_exchange::plan_host_transfer", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn plan_host_transfer( mut tile_address: u32, mut host_offset: u32, mut bytes: u32, long_max_bytes: u32, packet: impl Fn(u32, u32, u32) -> Result<HostPacketHeader, ExchangeError>, ) -> Result<Vec<HostTransferChunk>, ExchangeError> — crates/ipu-exchange/src/lib.rs:2201"];
    f34 [label="ipu_exchange::plan_tile_to_host", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn plan_tile_to_host( physical_tile: u16, tile_address: u32, host_offset: u32, bytes: u32, ) -> Result<Vec<HostTransferChunk>, ExchangeError> — crates/ipu-exchange/src/lib.rs:2055"];
    f36 [label="ipu_exchange::put_special_from_m8", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="const fn put_special_from_m8(register: u8) -> u32 — crates/ipu-exchange/src/lib.rs:207"];
    f96 [label="ipu_exchange::receive_events_can_share_instruction", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn receive_events_can_share_instruction(left: ReceiveEvent, right: ReceiveEvent) -> bool — crates/ipu-exchange/src/lib.rs:852"];
    f0 [label="ipu_exchange::receive_row_timing", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn receive_row_timing( row: &PlanRow, schedule_offset: u32, ) -> Result<ReceiveRowTiming, ExchangeError> — crates/ipu-exchange/src/lib.rs:1012"];
    f5 [label="ipu_exchange::receive_row_timing_from_base", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn receive_row_timing_from_base( base: &ReceiveRowTiming, offset: u32, ) -> Result<ReceiveRowTiming, ExchangeError> — crates/ipu-exchange/src/lib.rs:1265"];
    f12 [label="ipu_exchange::resize_send", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn resize_send(instruction: u32, words: u32) -> Result<u32, ExchangeError> — crates/ipu-exchange/src/lib.rs:1532"];
    f64 [label="ipu_exchange::route_displacement", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn route_displacement(source: u32, destination: u32) -> i32 — crates/ipu-exchange/src/lib.rs:2976"];
    f88 [label="ipu_exchange::sans", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub const fn sans(selector: u8) -> u32 — crates/ipu-exchange/src/lib.rs:69"];
    f98 [label="ipu_exchange::scheduled_receive_window", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn scheduled_receive_window( base: &ReceiveRowTiming, schedule_offset: u32, received_words: u32, previous: Option<&ReceiveStream>, ) -> Result<ScheduledReceiverWindow, ExchangeError> — crates/ipu-exchange/src/lib.rs:899"];
    f3 [label="ipu_exchange::scheduled_sender_timing", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn scheduled_sender_timing( row: &PlanRow, schedule_offset: u32, ) -> Result<ScheduledSenderTiming, ExchangeError> — crates/ipu-exchange/src/lib.rs:1200"];
    f76 [label="ipu_exchange::send_off", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn send_off(count_minus_one: u32, direction: u32, base_word: u32) -> u32 — crates/ipu-exchange/src/lib.rs:3089"];
    f59 [label="ipu_exchange::sender_address_instruction_groups", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Address-bearing instructions for each outgoing message, in execution /// order. Each entry is `(word offset, byte offset from the message source)`. /// SENDPICP restarts the outgoing source stream explicitly after its inline /// control word, so repeat relocation must patch it as well as the first SEND. pub fn sender_address_instruction_groups( row: &[u32], ) -> Result<Vec<Vec<(usize, u32)>>, ExchangeError> — crates/ipu-exchange/src/lib.rs:2809"];
    f11 [label="ipu_exchange::sender_payload", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn sender_payload(row: &PlanRow) -> Result<(u32, u32), ExchangeError> — crates/ipu-exchange/src/lib.rs:1509"];
    f4 [label="ipu_exchange::sender_row_timing", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn sender_row_timing( row: &PlanRow, schedule_offset: u32, ) -> Result<SenderRowTiming, ExchangeError> — crates/ipu-exchange/src/lib.rs:1231"];
    f25 [label="ipu_exchange::set_instruction_advance", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn set_instruction_advance(instruction: &mut u32, advance: u32) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:1764"];
    f55 [label="ipu_exchange::set_sender_control", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="/// Selects double-width items in every outgoing instruction in a primitive /// sender row. Counts and absolute source operands both become 64-bit-item /// units; use [`patch_sender_address_64`] after selecting this control. pub fn set_sender_control(row: &mut PlanRow, send_control: u8) -> Result<(), ExchangeError> — crates/ipu-exchange/src/lib.rs:2684"];
    f33 [label="ipu_exchange::setzi_m", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="const fn setzi_m(register: u8, immediate: u32) -> u32 — crates/ipu-exchange/src/lib.rs:203"];
    f31 [label="ipu_exchange::tile_to_host_packet", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn tile_to_host_packet( physical_tile: u16, host_offset: u32, bytes: u32, ) -> Result<HostPacketHeader, ExchangeError> — crates/ipu-exchange/src/lib.rs:2002"];
    f37 [label="ipu_exchange::tile_to_host_target_instructions", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="fn tile_to_host_target_instructions( chunks: &[HostTransferChunk], packet_address: u32, close_address: u32, ) -> Result<Vec<u32>, ExchangeError> — crates/ipu-exchange/src/lib.rs:2100"];
  }
  subgraph cluster_external { label="outgoing references — click to open target partition"; color="#d9d9d9"; style="rounded,dashed";
    xf0 [label="ipu_exchange::diagnostic::validate_tile_program", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-exchange-diagnostic.svg", target="_top", tooltip="open target partition"];
    xf4 [label="ipu_exchange::time_to_mux", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open target partition"];
    xf3 [label="ipu_exchange::validate_count", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open target partition"];
    xf2 [label="ipu_exchange::validate_host_tile", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open target partition"];
    xf5 [label="ipu_exchange::validate_receive_events", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open target partition"];
    xf1 [label="ipu_exchange::zero_byte_read_packet", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open target partition"];
    xt8 [label="ipu_exchange::ExchangeError\n«enum»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt5 [label="ipu_exchange::HostHierarchy\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt2 [label="ipu_exchange::HostPacketHeader\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt6 [label="ipu_exchange::HostPacketSize\n«enum»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt3 [label="ipu_exchange::HostTransferChunk\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt7 [label="ipu_exchange::MulticastPlan\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt14 [label="ipu_exchange::PhasePrograms\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt13 [label="ipu_exchange::PhaseTransferTiming\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt9 [label="ipu_exchange::PlanRow\n«type»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt17 [label="ipu_exchange::ReceiveEvent\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt15 [label="ipu_exchange::ReceiveEventKind\n«enum»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt16 [label="ipu_exchange::ReceiveMode\n«enum»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt18 [label="ipu_exchange::ReceiveRowTiming\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt11 [label="ipu_exchange::ReceiveStream\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt19 [label="ipu_exchange::ScheduledReceiverWindow\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt12 [label="ipu_exchange::ScheduledSenderRow\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt1 [label="ipu_exchange::ScheduledSenderTiming\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt0 [label="ipu_exchange::SenderRowTiming\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt10 [label="ipu_exchange::TileProgramSchedule\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
    xt4 [label="ipu_exchange::TileToHostProgram\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-exchange-part-2.svg", target="_top", tooltip="open defining partition"];
  }
  f0 -> f19 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f0 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f0 -> f73 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f0 -> f74 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f0 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f0 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f0 -> xt15 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f0 -> xt16 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f0 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f0 -> xt18 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f1 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f2 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f3 -> f4 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f3 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f3 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f3 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f4 -> f19 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f4 -> f24 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f4 -> xt0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f4 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f4 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f5 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f5 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f5 -> xt18 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f6 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f7 -> f8 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f7 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f7 -> f38 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f7 -> xf5 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f7 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f7 -> xt12 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f7 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f8 -> f10 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f8 -> f11 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f8 -> f12 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f8 -> f13 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f8 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f8 -> f16 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f8 -> f76 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f8 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f8 -> xt12 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f8 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f9 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f10 -> f12 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f10 -> f76 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f10 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f11 -> f19 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f11 -> f23 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f11 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f11 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f12 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f13 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f13 -> xt15 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f13 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f14 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f14 -> f16 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f14 -> f17 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f14 -> f18 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f14 -> f25 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f14 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f14 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f15 -> f94 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f15 -> f95 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f15 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f15 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f16 -> f72 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f16 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f17 -> f72 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f17 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f19 -> f20 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f19 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f19 -> f23 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f21 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f24 -> f23 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f25 -> f20 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f25 -> f24 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f25 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f26 -> xf2 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f26 -> xt5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f26 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> xf2 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f27 -> f75 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f27 -> xt4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f28 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f29 -> f32 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> f36 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> f75 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> f76 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> xt4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f29 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> xf2 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f30 -> f41 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f30 -> f42 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f30 -> f43 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f30 -> f44 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f30 -> xt2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> xt6 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> xf2 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f31 -> f41 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f31 -> f42 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f31 -> f43 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f31 -> f44 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f31 -> xt2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> xt6 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f32 -> f30 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f32 -> f39 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f32 -> xt3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f32 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> f31 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f39 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> xt3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> xf1 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f35 -> f34 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f35 -> f37 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f35 -> xt4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> f36 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> f72 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> f75 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> xt3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f38 -> f19 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f38 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f38 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> xt2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> xt3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> xf2 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f40 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f41 -> xt6 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f41 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f42 -> xt6 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f42 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f45 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f48 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f49 -> f48 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f49 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f50 -> f48 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f50 -> xf4 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f50 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f51 -> f48 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> f49 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> f52 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> f55 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> xf3 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> f66 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> f68 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f51 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> f48 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> f50 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> f66 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> f68 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> f73 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> f74 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> xf5 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> xt15 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f53 -> f48 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> xf3 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f66 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> xf4 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f72 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f73 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f74 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f75 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f76 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f53 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f54 -> f48 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> xf3 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> f66 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> xf4 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> f72 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> f73 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> f74 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> f75 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> f76 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f54 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f54 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f55 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f55 -> f23 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f55 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f55 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f57 -> f58 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f57 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f57 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f58 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f59 -> f19 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> f20 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> f23 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f60 -> f20 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f61 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f61 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f61 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f62 -> xt10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f63 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f63 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f66 -> f64 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f67 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f68 -> xf4 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f72 -> f69 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f73 -> f70 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f74 -> f71 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f75 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f79 -> f81 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f79 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f79 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f80 -> f81 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f80 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f80 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f81 -> f82 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f81 -> f86 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f81 -> f87 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f81 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f81 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f82 -> f89 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f82 -> f90 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f82 -> f92 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f82 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f82 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f83 -> f84 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f83 -> f89 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f83 -> f90 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f83 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f83 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f83 -> xt13 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f84 -> f0 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f84 -> f3 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f84 -> f98 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f84 -> xt7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f84 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f84 -> xt13 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f85 -> xf0 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f85 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f85 -> xt14 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f86 -> f4 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f86 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f86 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f87 -> f0 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f96 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f98 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f87 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f87 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f87 -> xt15 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f89 -> f4 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f89 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f89 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f89 -> xt12 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f90 -> f0 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f90 -> f98 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f90 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f90 -> xt9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f90 -> xt11 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f90 -> xt15 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f90 -> xt16 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f90 -> xt19 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f92 -> f7 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f92 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f93 -> f91 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f93 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f96 -> f94 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f96 -> f95 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f96 -> xt17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f97 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f98 -> f5 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f98 -> xf5 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f98 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f98 -> xt11 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f98 -> xt15 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f98 -> xt16 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f98 -> xt18 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f98 -> xt19 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f99 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f99 -> xt8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  legend [shape=note, style="filled", fillcolor="#ffffff", color="#9aa5b1", fontsize=8,
          label="Solid: MIR-resolved call   Dotted: source fallback\nDashed, no arrow: uses type   Dashed node: link to another partition\nBlue: build   Green: run   Purple: shared"];
}
