--- /dev/null
+// Copyright 2020-2021 Ian Jackson and contributors to Otter
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// There is NO WARRANTY.
+
+pub use std::cmp::{max, Ordering};
+pub use std::convert::{TryFrom, TryInto};
+pub use std::fmt::{self, Debug, Display, Formatter};
+pub use std::hash::{Hash, Hasher};
+pub use std::iter;
+pub use std::num::{TryFromIntError, Wrapping};
+pub use std::str;
+pub use std::str::FromStr;
+
+pub use derive_more::*;
+pub use fehler::{throw, throws};
+pub use serde::{Deserialize, Serialize};
+pub use serde_with::DeserializeFromStr;
+pub use serde_with::SerializeDisplay;
+pub use thiserror::Error;
+
+pub use crate::misc::default;
// in the same order as the provided offset multipliers.
// The function is deterministic
-use std::cmp::{max, Ordering};
-use std::convert::{TryFrom, TryInto};
-use std::fmt::{self, Debug, Display, Formatter};
-use std::hash::{Hash, Hasher};
-use std::iter;
-use std::num::{TryFromIntError, Wrapping};
-use std::str;
-use std::str::FromStr;
-
-use derive_more::*;
-use fehler::{throw, throws};
-use serde::{Deserialize, Serialize};
-use serde_with::DeserializeFromStr;
-use serde_with::SerializeDisplay;
-use thiserror::Error;
-
-use crate::misc::default;
+use crate::prelude::*;
//---------- core definitions ----------