code: def _get_slice_output_shape(
      in_shape: tuple[int, ...],
      idx_shapes: tuple[tuple[int, ...], ...],
      indexed_dims: tuple[bool, ...],
  ) -> tuple[int, ...]:
      shape_suffix = [
          d for i, d in zip(indexed_dims, in_shape) if not i
      ]
      (shape_prefix,) = set(idx_shapes) or [()]  # tie fighter
      # Move shape prefix dimensions to the front
      shape = (*shape_prefix, *shape_suffix)
      return shape
  
imports: from __future__ import annotations
  from functools import partial
  from typing import Any, Union
  import numpy
  from jax._src import ad_util
  from jax._src import core
  from jax._src import pretty_printer
  from jax._src import tree_util
  from jax._src.interpreters import ad
  from jax._src.interpreters import batching
  from jax._src.interpreters import partial_eval
  from jax._src.interpreters import mlir
  from jax._src.lax import lax
  from jax._src.typing import Array
  from jax._src.state import indexing
  from jax._src.state.types import AbstractRef, RefView, ReadEffect, WriteEffect, AccumEffect
  from jax._src.util import safe_map, safe_zip
label_desc: Use image node_id 2 for calling a global function with example usage: _get_slice_output_shape(in_shape, idx_shapes, indexed_dims) and returns: shape