diff --git a/quest/m3/README.md b/quest/m3/README.md index 239ea51a2..1446cad2e 100644 --- a/quest/m3/README.md +++ b/quest/m3/README.md @@ -28,7 +28,7 @@ generic std gap is planned here even when moq never calls it. - [std's calls of a closure that have no mapping](/quest/m3/ts-closure-calls.md) - `try_fold`, `partition`, `repeat_with`, `sort_by_cached_key`, and `LazyCell::new` translate, dropping what their closures own as std's do - [Waiting: a slice object for a mutable part of other values](/quest/m3/ts-slice-object.md) - waits on a moq profile showing the `Proxy` view's traps matter, then decides on an `rt.ByteSlice`-like form - [Port the workflow guard to kixelated/quest](/quest/m3/quest-workflow-guard.md) - quest's environment guard parses YAML as this repository's does -- [Folds from the back, and a crate's own folds](/quest/m3/ts-iter-back-folds.md) - `rfold` and `try_rfold` translate, and so does a crate's iterator that overrides `fold` or `nth_back` +- [A crate's own find and for_each](/quest/m3/ts-iter-own-calls.md) - a crate's iterator that overrides `find`, `rfind`, `find_map`, or `for_each` translates, each called where std's adaptors and consumers call it - [A vector's exact capacity as it shrinks](/quest/m3/ts-vec-exact-capacity.md) - a deque made from a `Vec` splits its slices where std's does - [A B-tree's searches call Ord as std's do](/quest/m3/ts-btree-search-order.md) - a B-tree's lookups and inserts call a key's own `Ord` in std's order and number - [Rc and Arc of a slice](/quest/m3/ts-shared-slices.md) - `Rc<[T]>` and `Arc<[T]>` from a `Vec`, a slice, or an iterator translate diff --git a/quest/m3/ts-closure-calls.md b/quest/m3/ts-closure-calls.md index 79b61e832..80d5ebd2d 100644 --- a/quest/m3/ts-closure-calls.md +++ b/quest/m3/ts-closure-calls.md @@ -12,9 +12,8 @@ Found probing std's consumers for [drop order](/quest/m3/ts-drop-order.md) in [#438](https://github.com/moq-dev/rust2/pull/438). Of a closure that owns nothing, each of these is refused today: -- `Iterator::try_fold`, `try_for_each`, and `partition`. Folds from the back, `rfold` and - `try_rfold`, are [#436](https://github.com/moq-dev/rust2/pull/436)'s - [`ts-iter-back-folds`](https://github.com/moq-dev/rust2/blob/quest/m2/ts-model/iter-traits/quest/m3/ts-iter-back-folds.md). +- `Iterator::try_fold`, `try_for_each`, and `partition`. `rt.iterTryRfold` already folds + from the back as `try_rfold` does, breaking by an `Option`, `Result`, or `ControlFlow`. - `iter::repeat_with`, and `Iterator::scan` of a state JS copies, which is refused as a `&mut` its mapping would copy. - `slice::sort_by_cached_key`. diff --git a/quest/m3/ts-iter-back-folds.md b/quest/m3/ts-iter-back-folds.md deleted file mode 100644 index f30c37d16..000000000 --- a/quest/m3/ts-iter-back-folds.md +++ /dev/null @@ -1,30 +0,0 @@ -# [M] Folds from the back, and a crate's own folds - -## Goal - -[rust2-ts](/ts/README.md) translates `DoubleEndedIterator::rfold` and `try_rfold` of any -iterator, and a crate's own iterator that overrides a provided method std's adaptors call -in place of `next` or `next_back`, such as `fold` or `nth_back`. Each runs where native's -does, as many times and in the same order, proven by differential tests against native -Rust. - -## Plan - -Found by [#436](https://github.com/moq-dev/rust2/pull/436), which translates a crate's own -`next_back`, `len`, and `size_hint`: - -- `rfold` and `try_rfold` are an "unsupported call" for every iterator, std's included. - The runtime already folds from the back inside its adaptors (`Iter.rfold`, `folded`), - so the gap may be mostly the mapping. -- A crate's own `Iterator::fold` or `DoubleEndedIterator::nth_back` is refused as - "overriding `_`, which std's adaptors call in place of `next` or beside it". Each override - is a method std's adaptors and consumers call in place of the default: `fold` from - `for_each`, `count`, `last`, and `Map::fold`, `nth_back` from `Rev::nth`. `rt.iterFrom` - would call it there, as it now calls `next_back`. -- Open: whether overrides of the other provided methods (`nth`, `try_fold`, `rfold`, - `advance_by`, `count`, `last`, and more) land here too. Each is the same problem, and - the runtime's callers of each decide how far it reaches. -- `lang`'s `ends` fixture logs each method a crate's iterator is called through, and can - extend to these. - -Public API: the translator's output. diff --git a/quest/m3/ts-iter-own-calls.md b/quest/m3/ts-iter-own-calls.md new file mode 100644 index 000000000..ba9ae957e --- /dev/null +++ b/quest/m3/ts-iter-own-calls.md @@ -0,0 +1,32 @@ +# [M] A crate's own find and for_each + +## Goal + +[rust2-ts](/ts/README.md) translates a crate's own iterator that overrides a provided +method std's adaptors and consumers call on it other than those `rt.iterFrom` already +calls (`size_hint`, `next_back`, `len`, `nth`, `nth_back`, `fold`, `rfold`, `count`, and +`last`), such as `find`, `rfind`, `find_map`, or `for_each`. Each runs where native's does, +as many times and in the same order, proven by differential tests against native Rust. + +## Plan + +Left by the PR that finished folds from the back. Each is refused today as "overriding +`_`, which std's adaptors call in place of `next` or beside it": + +- `Filter::next` and `SkipWhile::next` call their iterator's `find`, `FilterMap::next` its + `find_map`, and `Fuse`, `Chain`, and `Rev` forward `find` and `rfind`. The runtime's + adaptors read their iterator by `next` there, which is the same for std's own iterators + but skips a crate's override. +- `for_each` is what std's `Extend` impls for hash maps, `String`, and others call of the + iterator they are given. +- Each takes a closure, as `fold` does: the crate's `fold` translates for one + `Box` accumulator-agnostic instance, which these could share. +- Overrides std never calls in place of another, such as `max` or `position`, only matter + where the crate calls them directly. Check which std calls each before lifting its + refusal. +- `try_fold`, `try_rfold`, `advance_by`, and `advance_back_by` can be overridden only on + nightly, through unstable traits and features. +- `lang`'s `ends` fixture's `Overrides` iterator logs each method it is called through, and + can extend to these. + +Public API: the translator's output. diff --git a/ts/MIGRATE.md b/ts/MIGRATE.md index 23a08a159..51eaa7607 100644 --- a/ts/MIGRATE.md +++ b/ts/MIGRATE.md @@ -2,6 +2,9 @@ ## Unreleased +- `rt.iterFrom` takes `hint`, `back`, and `len` in one `rt.Own` record after `drop`, + which also holds the crate's own `nth`, `fold`, and the rest, as in + `rt.iterFrom(source, next, drop, { hint, back, len })`. - In its type's module, the suffix of a method of a generic type behind a reference spells the references after the type's arguments: `&mut Take`'s `Buf::chunk` is `chunk$bytes_Buf_bytes_Bytes_mut`, not `chunk$bytes_Buf_mut_bytes_Bytes`, which is diff --git a/ts/README.md b/ts/README.md index 943d7b966..c19af4c9d 100644 --- a/ts/README.md +++ b/ts/README.md @@ -284,7 +284,8 @@ compare the best and then the next, and a B-tree's iterators read their ends. `e An iterator over a slice, array, or `Vec`, or a small range, that only its `next` and moves read steps in place, as two variables: the array and an index into it, or the range's bounds, with no `rt.Iter` made. The crate's own `impl Iterator` returns `rt.DONE` from its `next` too, and joins -std's adaptors through `rt.iterFrom`, which calls its own `size_hint`, `next_back`, and `len` where std's adaptors +std's adaptors through `rt.iterFrom`, which calls its own `size_hint`, `next_back`, `len`, `nth`, and `nth_back`, +and of one it owns its own `fold`, `rfold`, `count`, and `last`, where std's adaptors call them, and `fuse` reads on past the end of one that is a `FusedIterator`, as std's does. A caller calls `next()` for one item, or iterates an `rt.Iter` with `for ... of`. Each `rt.Iter`'s `sizeHint` is std's `size_hint`, its upper bound `undefined` for `None`, and a `collect` or `extend` into a `Vec`, `VecDeque`, @@ -457,7 +458,9 @@ drop it where std's do. So do iterators: one that owns its items, as a `Vec`'s ` map's `drain` does, drops those it still holds by `[Symbol.dispose]`, an adaptor drops what it skips or rejects, and a consumer that takes an iterator by value drops it: through each `rt.Iter`'s own `fold` where std's folds, which drops each adaptor's closure -as its fold ends, before what it wraps, as std's does. A `Vec`'s `drain` leaves the vector +as its fold ends, before what it wraps, as std's does. The crate's own `fold` is given that +closure as a `Box`, which drops it where its body does. A `try_rfold` drops its +closure as it returns, leaving what the iterator holds to drop with it. A `Vec`'s `drain` leaves the vector what precedes its range until it drops, then drops what it still holds and moves the tail back, so one never dropped, as `mem::forget` leaves it, leaks the rest, as std's does. @@ -916,7 +919,10 @@ copies that std makes, other than a map's, or hands a closure, as `iter_mut` and `and_modify` do, one into a `Result`'s payload passed on or kept, the adaptors without a mapping in `src/lower/iter.rs` (such as `partition`), an own `impl Iterator` or `DoubleEndedIterator` that overrides a provided method other than -`size_hint` and `len`, such as `fold` or `nth_back`, +those, such as `find` or `for_each`, or whose own `fold` or `rfold` tells its accumulator or +closure apart from another, by an `Option` or a `Poll` of it, a call or constant generic over it +other than calling or dropping the closure or passing them to std's iterators outside the crate's +own types, or a drop of the accumulator, a pointer's address (`{:p}`), `write!` with a placeholder into the crate's own `fmt::Write`, a `str` pattern other than a `char`, a `&str`, a predicate, or chars, a mutable `str` slice, a copy of a closure that changes diff --git a/ts/fixtures/crates/expected/harness.ts b/ts/fixtures/crates/expected/harness.ts index 7414e8824..d4a4af9d4 100644 --- a/ts/fixtures/crates/expected/harness.ts +++ b/ts/fixtures/crates/expected/harness.ts @@ -73,7 +73,7 @@ export function run(input: rt.ByteSlice): rt.ByteVec { } rt.byteVecPush(out, _143); } - const _151: rt.Iter = rt.iterRev(rt.iterFrom(Countdown.new(rt.min(input.length, 5) & 0xff), (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), undefined, undefined, (it: Countdown.Countdown) => rt.iterFromOption(Countdown.nextBack$iter_DoubleEndedIterator(it)))); + const _151: rt.Iter = rt.iterRev(rt.iterFrom(Countdown.new(rt.min(input.length, 5) & 0xff), Countdown.next$iter_Iterator, undefined, { back: (it: Countdown.Countdown) => rt.iterFromOption(Countdown.nextBack$iter_DoubleEndedIterator(it)) })); rt.iterExtendBytes(out, _151, "next"); const both: Countdown.Countdown = Countdown.new(rt.min(input.length, 6) & 0xff); while (true) { diff --git a/ts/fixtures/lang/clones/expected/clones.ts b/ts/fixtures/lang/clones/expected/clones.ts index d73568da2..0fdd4d22e 100644 --- a/ts/fixtures/lang/clones/expected/clones.ts +++ b/ts/fixtures/lang/clones/expected/clones.ts @@ -6602,7 +6602,6 @@ export function turns$vec_IntoIter_u8_clones_iters_closure18_clones_iters_closur export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { let _263!: [rt.ByteSlice, rt.ByteSlice]; let _269!: rt.usize; - let it!: rt.Peekable; const plan: Plan.Plan = { dataData: data.data, dataStart: data.start, dataLen: data.length, at: kind as rt.usize }; const n: rt.usize = option_mapOr$1surhce(rt.byteSliceFirst(data), 1, (_2: rt.u8): rt.u8 => { return rt.u8Add(rt.u8Rem(_2, 4), 1); @@ -6893,7 +6892,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { }, plan, (x35: rt.u8): rt.u8 => { return x35; }, out); - turns$iter_Map_clones_Countdown_clones_iters_closure100_clones_iters_closure101_clones_iters_closure102(rt.iterMap(rt.iterFrom({ _0: rt.u8Mul(n & 0xff, 3) }, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it)), (x36: rt.u8): rt.u8 => { + turns$iter_Map_clones_Countdown_clones_iters_closure100_clones_iters_closure101_clones_iters_closure102(rt.iterMap(rt.iterFrom({ _0: rt.u8Mul(n & 0xff, 3) }, Countdown.next$iter_Iterator), (x36: rt.u8): rt.u8 => { return x36 ^ 7; }), (it33: rt.Iter): rt.u8 | undefined => { return rt.iterToOption(it33.next()); @@ -6902,7 +6901,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { }, out); const _236: Countdown.Countdown = { _0: rt.u8Mul(n & 0xff, 3) }; const _240: rt.Iter = rt.iterSlice(rt.byteSliceView(data)); - turns$iter_Zip_clones_Countdown_slice_Iter_u8_clones_iters_closure103_clones_iters_closure104(rt.iterZip(rt.iterFrom(_236, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it)), _240), (it34: rt.Iter<[rt.u8, rt.u8]>): [rt.u8, rt.u8] | undefined => { + turns$iter_Zip_clones_Countdown_slice_Iter_u8_clones_iters_closure103_clones_iters_closure104(rt.iterZip(rt.iterFrom(_236, Countdown.next$iter_Iterator), _240), (it34: rt.Iter<[rt.u8, rt.u8]>): [rt.u8, rt.u8] | undefined => { return rt.iterToOption(it34.next()); }, plan, (_261: [rt.u8, rt.u8]): rt.u8 => { return _261[0] ^ _261[1]; @@ -7007,7 +7006,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { }), undefined, true); rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.refCellReplace(log, new rt.ByteVec())), undefined, true); } else if (_9 === 8) { - it = rt.iterPeekable(rt.iterSlice(rt.byteSliceView(data))); + const it: rt.Peekable = rt.iterPeekable(rt.iterSlice(rt.byteSliceView(data))); let iterStart5: rt.usize = 0; const iterEnd5: rt.usize = n; while (iterStart5++ < iterEnd5) { diff --git a/ts/fixtures/lang/cycles/expected/cycles.ts b/ts/fixtures/lang/cycles/expected/cycles.ts index 7569b038d..96b78df64 100644 --- a/ts/fixtures/lang/cycles/expected/cycles.ts +++ b/ts/fixtures/lang/cycles/expected/cycles.ts @@ -21,7 +21,7 @@ export function flush(log: rt.RefCell, out: rt.ByteVec): void { */ export function read$cycles_Countdown_cycles_cycles_closure4(it: Countdown.Countdown, steps: rt.ByteSlice, put: (a0: rt.u8) => rt.u8, out: rt.ByteVec): void { let item!: rt.u8 | undefined; - const it2: rt.Iter = rt.iterCycle(rt.iterFrom(it, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it)), { v: Countdown.clone$Clone }); + const it2: rt.Iter = rt.iterCycle(rt.iterFrom(it, Countdown.next$iter_Iterator), { v: Countdown.clone$Clone }); const _8: [rt.usize, rt.usize | undefined] = it2.sizeHint(); const lower: rt.usize = _8[0]; rt.iterExtendBytes(out, rt.iterSlice(Uint8Array.of(lower & 0xff, (lower >>> 24) & 0xff, option_mapOr$02k4ito(_8[1], 254, (n2: rt.usize): rt.u8 => { diff --git a/ts/fixtures/lang/dyns/expected/dyns.ts b/ts/fixtures/lang/dyns/expected/dyns.ts index a2d17c893..655f5864a 100644 --- a/ts/fixtures/lang/dyns/expected/dyns.ts +++ b/ts/fixtures/lang/dyns/expected/dyns.ts @@ -800,7 +800,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { read(rt.iterDyn(rt.iterBorrow(rt.iterSlice(rt.byteSliceView(rt.byteSliceRange(data, 2))))), out); read(rt.iterDyn(rt.iterBorrow(new rt.Range(a, b))), out); const down: Countdown.Countdown = new Countdown.Countdown(rt.u8Rem(a, 16)); - read(rt.iterDyn(rt.iterFrom(down, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it))), out); + read(rt.iterDyn(rt.iterFrom(down, Countdown.next$iter_Iterator)), out); dropped(out); down[Symbol.dispose](); dropped(out); @@ -858,7 +858,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part2, f)]; put(out, rt.fmtFormat([args10[0], " "])); dropped(out); - const own: rt.Iter = rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 16)), (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop)); + const own: rt.Iter = rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 16)), Countdown.next$iter_Iterator, rt.drop)); let sum: rt.u32 = 0; const iter: rt.Iter = rt.iterBox(own); while (true) { @@ -872,20 +872,20 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(sum, f)]; put(out, rt.fmtFormat([args12[0], " "])); dropped(out); - const nested: rt.Iter = rt.iterDyn(rt.iterBox(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(a, 8)), (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop))); + const nested: rt.Iter = rt.iterDyn(rt.iterBox(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(a, 8)), Countdown.next$iter_Iterator, rt.drop))); const inner: Countdown.Countdown = new Countdown.Countdown(rt.u8Rem(b, 8)); - const first: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterFrom(inner, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it))))).next()); + const first: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterFrom(inner, Countdown.next$iter_Iterator)))).next()); const second: rt.u8 | undefined = rt.iterToOption(Countdown.next$iter_Iterator(inner)); const erased: rt.Iter = rt.iterDyn(new rt.Range(rt.u8Rem(a, 4), rt.u8Rem(b, 8))); const third: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterBorrow(erased)))).next()); const doubled: Countdown.Countdown = new Countdown.Countdown(rt.u8Rem(a, 8)); - const fourth: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterFrom(doubled, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it))))).next()); - const mapped: rt.ByteVec = rt.iterToByteVec(rt.iterMap(rt.iterBox(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop)), (x3: rt.u8): rt.u8 => { + const fourth: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterFrom(doubled, Countdown.next$iter_Iterator)))).next()); + const mapped: rt.ByteVec = rt.iterToByteVec(rt.iterMap(rt.iterBox(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), Countdown.next$iter_Iterator, rt.drop)), (x3: rt.u8): rt.u8 => { return x3 ^ 1; }), "next"); const _233: rt.ByteVec = rt.iterToByteVec(rt.iterBox(nested), "next"); const _235: rt.usize = rt.ownedCount(rt.iterBox(erased)); - const _238: rt.usize = rt.ownedCount(rt.iterBox(rt.iterFrom(doubled, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop))); + const _238: rt.usize = rt.ownedCount(rt.iterBox(rt.iterFrom(doubled, Countdown.next$iter_Iterator, rt.drop))); const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(rt.byteVecView(_233), f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(first, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(second, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(third, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(fourth, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtList(rt.byteVecView(mapped), f, rt.u8Debug), (f: rt.Formatter) => rt.usizeDisplay(_235, f), (f: rt.Formatter) => rt.usizeDisplay(_238, f)]; put(out, rt.fmtFormat([args14[0], " ", args14[1], " ", args14[2], " ", args14[3], " ", args14[4], " ", args14[5], " ", args14[6], " ", args14[7], " "])); dropped(out); @@ -894,15 +894,15 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const _262: [Countdown.Countdown, rt.Range] = [new Countdown.Countdown(rt.u8Rem(a, 8)), new rt.Range(rt.u8Rem(a, 4), rt.u8Rem(b, 8))]; const own2: Countdown.Countdown = _262[0]; const range: rt.Range = _262[1]; - const hints: [rt.usize, rt.usize | undefined][] = rt.arrayMap([rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterFrom(own2, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it))))), rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterBorrow(range))))], (it: rt.Iter): [rt.usize, rt.usize | undefined] => { + const hints: [rt.usize, rt.usize | undefined][] = rt.arrayMap([rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterFrom(own2, Countdown.next$iter_Iterator)))), rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterBorrow(range))))], (it: rt.Iter): [rt.usize, rt.usize | undefined] => { return it.sizeHint(); }); let held: Countdown.Countdown = new Countdown.Countdown(rt.u8Rem(b, 8)); let lent2: rt.Place = rt.place(() => held, (value4) => held = value4); const layered: rt.Place> = rt.place(() => lent2, (value5) => lent2 = value5); - const fifth: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterFrom(layered.v.v, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it))))).next()); + const fifth: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(rt.iterBox(rt.iterFrom(layered.v.v, Countdown.next$iter_Iterator)))).next()); const sixth: rt.u8 | undefined = rt.iterToOption(Countdown.next$iter_Iterator(layered.v.v)); - const _301: rt.usize = rt.ownedCount(rt.iterBox(rt.iterFrom(held, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop))); + const _301: rt.usize = rt.ownedCount(rt.iterBox(rt.iterFrom(held, Countdown.next$iter_Iterator, rt.drop))); const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(hints, f, (value: [rt.usize, rt.usize | undefined], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.fmtOption(value[1], f, rt.usizeDebug)], f)), (f: rt.Formatter) => rt.fmtOption(fifth, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(sixth, f, rt.u8Debug), (f: rt.Formatter) => rt.usizeDisplay(_301, f)]; put(out, rt.fmtFormat([args16[0], " ", args16[1], " ", args16[2], " ", args16[3], " "])); dropped(out); @@ -931,15 +931,15 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const _369: rt.usize = rt.ownedCount(rt.iterBox(split.chunks$Chunks())); const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(lens_, f, rt.usizeDebug), (f: rt.Formatter) => rt.usizeDisplay(_369, f)]; put(out, rt.fmtFormat([args20[0], " ", args20[1], " "])); - const part3 = drain(rt.iterDyn(rt.iterBorrow(rt.iterFuse(rt.iterFrom({ _0: rt.u8Rem(a, 4) }, (it: Resuming.Resuming) => Resuming.next$iter_Iterator(it)))))); + const part3 = drain(rt.iterDyn(rt.iterBorrow(rt.iterFuse(rt.iterFrom({ _0: rt.u8Rem(a, 4) }, Resuming.next$iter_Iterator))))); const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtPad(f, part3)]; put(out, rt.fmtFormat([args22[0], " "])); const resuming: Resuming.Resuming = { _0: rt.u8Rem(b, 4) }; - const up: rt.Iter = rt.iterDyn(rt.iterFrom(resuming, (it: Resuming.Resuming) => Resuming.next$iter_Iterator(it))); + const up: rt.Iter = rt.iterDyn(rt.iterFrom(resuming, Resuming.next$iter_Iterator)); const part4 = [rt.iterToOption(up.next()), rt.iterToOption(up.next()), rt.iterToOption(up.next()), rt.iterToOption(up.next()), rt.iterToOption(up.next())] as [rt.u8 | undefined, rt.u8 | undefined, rt.u8 | undefined, rt.u8 | undefined, rt.u8 | undefined]; const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.fmtOption(part4[0], f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(part4[1], f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(part4[2], f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(part4[3], f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(part4[4], f, rt.u8Debug)], f)]; put(out, rt.fmtFormat([args24[0], " "])); - const boxed3: rt.Iter = rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(a, 8)), (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop)); + const boxed3: rt.Iter = rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(a, 8)), Countdown.next$iter_Iterator, rt.drop)); const part5 = drain(boxed3); const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtPad(f, part5)]; put(out, rt.fmtFormat([args26[0], " "])); @@ -983,7 +983,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const _530: [rt.usize, rt.usize | undefined] = up2.value.sizeHint(); const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(next, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(_530[0], f), (f: rt.Formatter) => rt.fmtOption(_530[1], f, rt.usizeDebug)], f)]; put(out, rt.fmtFormat([args34[0], " ", args34[1], " "])); - const fromBox: rt.Arc> = new rt.Arc(rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop))); + const fromBox: rt.Arc> = new rt.Arc(rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), Countdown.next$iter_Iterator, rt.drop))); const part6 = option_andThen$0ntiuws(rt.arcGetMut(fromBox), (it5: rt.Iter): rt.u8 | undefined => { return rt.iterToOption(it5.next()); }); @@ -993,7 +993,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { dropped(out); const counted2: rt.Arc = new rt.Arc(new Countdown.Countdown(rt.u8Rem(a, 8))); const weak3: rt.Weak> = rt.weakDyn(new rt.Weak(counted2), (arc: rt.Arc): rt.Arc> => { - return new rt.ArcDyn(arc, rt.iterDyn(rt.iterFrom(arc.value, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop))); + return new rt.ArcDyn(arc, rt.iterDyn(rt.iterFrom(arc.value, Countdown.next$iter_Iterator, rt.drop))); }); const part7 = option_map$0oedb57(rt.weakUpgrade(weak3), (it6: rt.Arc>): [rt.usize, rt.usize | undefined] => { const _018: [rt.usize, rt.usize | undefined] = it6.value.sizeHint(); @@ -1010,7 +1010,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { rt.drop(_596); put(out, _590); dropped(out); - const pinned: rt.Iter = rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), rt.drop)); + const pinned: rt.Iter = rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), Countdown.next$iter_Iterator, rt.drop)); const part9 = rt.iterToOption(pinned.next()); const args42: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part9, f, rt.u8Debug)]; put(out, rt.fmtFormat([args42[0]])); diff --git a/ts/fixtures/lang/ends/caller.ts b/ts/fixtures/lang/ends/caller.ts index 86a4808a1..f827b9cf9 100644 --- a/ts/fixtures/lang/ends/caller.ts +++ b/ts/fixtures/lang/ends/caller.ts @@ -5,13 +5,13 @@ import { op } from "./lang.ts"; export { ops, run } from "./lang.ts"; /** - * `ends::ends`: each kind of iterator through every consumer and either end's bits, of - * runs empty, short, and long, whose hints are exact, loose, and lying, after none and a - * few steps through each of its methods. + * `ends::ends`: each kind of iterator, and boxes of the crate's own, through every consumer + * and fold and either end's bits, of runs empty, short, and long, whose hints are exact, + * loose, and lying, after none and a few steps through each of its methods. */ const endsCases = [0x00, 0x03, 0x0f, 0x15, 0x27, 0x36, 0x2f].flatMap((shape) => [[], [0x01, 0x00], [0x0a, 0x0d, 0x03], [0x05, 0x06, 0x04, 0x0f]].flatMap((steps) => - Array.from({ length: 4 * 256 }, (_, i) => Uint8Array.of(...op("ends::ends"), i % 4, shape, i >> 2, ...steps)), + Array.from({ length: 14 * 256 }, (_, i) => Uint8Array.of(...op("ends::ends"), i % 14, shape, Math.floor(i / 14), ...steps)), ), ); diff --git a/ts/fixtures/lang/ends/expected/core/option.ts b/ts/fixtures/lang/ends/expected/core/option.ts index 17e6e9c22..b8f905880 100644 --- a/ts/fixtures/lang/ends/expected/core/option.ts +++ b/ts/fixtures/lang/ends/expected/core/option.ts @@ -37,4 +37,11 @@ export function mapOr$02k4ito(self: rt.usize | undefined, default_: rt.u8, f: (a return f(self); } +export function or$1loyskh(self: rt.u8 | undefined, optb: rt.u8 | undefined): rt.u8 | undefined { + if (self === undefined) { + return optb; + } + return self; +} + //# sourceMappingURL=option.ts.map diff --git a/ts/fixtures/lang/ends/expected/ends.Counted.ts b/ts/fixtures/lang/ends/expected/ends.Counted.ts index 5954bf447..0f7eea5c0 100644 --- a/ts/fixtures/lang/ends/expected/ends.Counted.ts +++ b/ts/fixtures/lang/ends/expected/ends.Counted.ts @@ -22,7 +22,7 @@ export function nextBack$iter_DoubleEndedIterator(self: Counted): rt.u8 | undefi export function len$iter_ExactSizeIterator(self: Counted): rt.usize { Run.logged(self._0, 108); - return rt.iterFrom(self._0, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))).len(); + return rt.iterFrom(self._0, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len(); } //# sourceMappingURL=ends.Counted.ts.map diff --git a/ts/fixtures/lang/ends/expected/ends.Overrides.ts b/ts/fixtures/lang/ends/expected/ends.Overrides.ts new file mode 100644 index 000000000..a97e2ebf5 --- /dev/null +++ b/ts/fixtures/lang/ends/expected/ends.Overrides.ts @@ -0,0 +1,113 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "./rt.ts"; +import * as Run from "./ends.Run.ts"; + +/** + * A `Run` with its own `nth`, `nth_back`, `fold`, `rfold`, `count`, and `last`, each logged + * as `N`, `B`, `f`, `r`, `c`, and `L`, which std's adaptors and consumers call in place of + * `next` and `next_back`. Its `count` reads nothing, and its `last` reads from the back. + */ +export interface Overrides { + _0: Run.Run; +} + +export function next$iter_Iterator(self: Overrides): rt.u8 | rt.Done { + return Run.next$iter_Iterator(self._0); +} + +export function sizeHint$iter_Iterator(self: Overrides): [rt.usize, rt.usize | undefined] { + return Run.sizeHint$iter_Iterator(self._0); +} + +export function nth$iter_Iterator(self: Overrides, n: rt.usize): rt.u8 | undefined { + Run.logged(self._0, 78); + let iterStart: rt.usize = 0; + const iterEnd: rt.usize = n; + while (iterStart++ < iterEnd) { + if (Run.next$iter_Iterator(self._0) === rt.DONE) { + return undefined; + } + } + return rt.iterToOption(Run.next$iter_Iterator(self._0)); +} + +export function fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32(self: Overrides, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: rt.u8) => rt.u32 | undefined): rt.u32 | undefined { + Run.logged(self._0, 102); + let acc: rt.u32 | undefined = init; + while (true) { + const _7: rt.u8 | rt.Done = Run.next$iter_Iterator(self._0); + if (_7 !== rt.DONE) { + acc = f(acc, _7); + } else { + break; + } + } + rt.drop(f); + return acc; +} + +export function fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(self: Overrides, init: rt.u8, f: (a0: rt.u8, a1: rt.u8) => rt.u8): rt.u8 { + Run.logged(self._0, 102); + let acc: rt.u8 = init; + while (true) { + const _7: rt.u8 | rt.Done = Run.next$iter_Iterator(self._0); + if (_7 !== rt.DONE) { + acc = f(acc, _7); + } else { + return acc; + } + } +} + +export function count$iter_Iterator(self: Overrides): rt.usize { + Run.logged(self._0, 99); + return Run.left(self._0) as rt.usize; +} + +export function last$iter_Iterator(self: Overrides): rt.u8 | undefined { + Run.logged(self._0, 76); + return Run.nextBack$iter_DoubleEndedIterator(self._0); +} + +export function nextBack$iter_DoubleEndedIterator(self: Overrides): rt.u8 | undefined { + return Run.nextBack$iter_DoubleEndedIterator(self._0); +} + +export function nthBack$iter_DoubleEndedIterator(self: Overrides, n: rt.usize): rt.u8 | undefined { + Run.logged(self._0, 66); + let iterStart: rt.usize = 0; + const iterEnd: rt.usize = n; + while (iterStart++ < iterEnd) { + if (Run.nextBack$iter_DoubleEndedIterator(self._0) === undefined) { + return undefined; + } + } + return Run.nextBack$iter_DoubleEndedIterator(self._0); +} + +export function rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32(self: Overrides, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: rt.u8) => rt.u32 | undefined): rt.u32 | undefined { + Run.logged(self._0, 114); + const _6: rt.Iter = rt.iterFromFn((): rt.u8 | undefined => { + return Run.nextBack$iter_DoubleEndedIterator(self._0); + }); + let captured = f; + return rt.iterFold(_6, init, rt.closure((acc: rt.u32 | undefined, b: rt.u8): rt.u32 | undefined => { + return captured(acc, b); + }, (): void => { + rt.drop(captured); + }), undefined, true); +} + +export function rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(self: Overrides, init: rt.u8, f: (a0: rt.u8, a1: rt.u8) => rt.u8): rt.u8 { + Run.logged(self._0, 114); + const _6: rt.Iter = rt.iterFromFn((): rt.u8 | undefined => { + return Run.nextBack$iter_DoubleEndedIterator(self._0); + }); + let captured = f; + return rt.iterFold(_6, init, (acc: rt.u8, b: rt.u8): rt.u8 => { + return captured(acc, b); + }, true); +} + +//# sourceMappingURL=ends.Overrides.ts.map diff --git a/ts/fixtures/lang/ends/expected/ends.ts b/ts/fixtures/lang/ends/expected/ends.ts index 2d59f38ee..378cbacdc 100644 --- a/ts/fixtures/lang/ends/expected/ends.ts +++ b/ts/fixtures/lang/ends/expected/ends.ts @@ -1,10 +1,12 @@ // Generated by rust2-ts. Do not edit. import * as rt from "./rt.ts"; -import { unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$1sj2ls1 as option_map$1sj2ls1, map$05nbzug as option_map$05nbzug, mapOr$02k4ito as option_mapOr$02k4ito } from "./core/option.ts"; +import { thenSome$0d5am30 } from "./core/bool.ts"; +import { unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$1sj2ls1 as option_map$1sj2ls1, map$05nbzug as option_map$05nbzug, mapOr$02k4ito as option_mapOr$02k4ito, or$1loyskh as option_or$1loyskh } from "./core/option.ts"; import * as Counted from "./ends.Counted.ts"; import * as Flicker from "./ends.Flicker.ts"; import * as Lapse from "./ends.Lapse.ts"; +import * as Overrides from "./ends.Overrides.ts"; import * as Run from "./ends.Run.ts"; /** An item, or 0xff for `None`. */ @@ -34,7 +36,8 @@ export function putVec(out: rt.ByteVec, v: rt.ByteVec): void { /** * The run `data`'s first byte picks steps through with each of its other bytes, read * directly, through `&mut`, or by std's adaptors, and consumed by the third byte's pick, - * with what each read and each call of its methods logged. + * by `consumed`, or by `folded` past the fifth `kind`, and boxed, or mapped and boxed, by + * either past the tenth, with what each read and each call of its methods logged. */ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataLen: number, out: rt.ByteVec): void { let over!: rt.u8 | undefined; @@ -62,32 +65,53 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL put(out, Run.nextBack$iter_DoubleEndedIterator(run)); } else if (_29 === 2) { const _37: rt.usize = rt.usizeRem(step >> 3 as rt.usize, 4); - put(out, rt.iterNthBack(rt.iterFrom(run, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), _37)); + put(out, rt.iterNthBack(rt.iterFrom(run, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _37)); } else if (_29 === 3) { - rt.byteVecPush(out, rt.iterFrom(run, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))).len() & 0xff); + rt.byteVecPush(out, rt.iterFrom(run, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else if (_29 === 4) { putHint(out, Run.sizeHint$iter_Iterator(run)); } else if (_29 === 5) { if (!((step & 8) === 0)) { put(out, Run.nextBack$iter_DoubleEndedIterator(run)); } else { - put(out, rt.iterToOption(rt.iterRev(rt.iterFrom(run, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)))).next())); + put(out, rt.iterToOption(rt.iterRev(rt.iterFrom(run, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })).next())); } } else if (_29 === 6) { - rt.byteVecPush(out, rt.iterFrom(run, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))).len() & 0xff); + rt.byteVecPush(out, rt.iterFrom(run, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else { const _62: rt.usize = rt.usizeRem(step >> 3 as rt.usize, 4); - put(out, rt.iterNth(rt.iterFrom(run, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), _62)); + put(out, rt.iterNth(rt.iterFrom(run, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _62)); } } const k: rt.usize = rt.u8Shr(dataData[dataStart + 1], 4) as rt.usize; + const pick: rt.u8 = rt.u8Rem(dataData[dataStart + 1], 16); b4: { - const _71: rt.u8 = rt.u8Rem(kind, 4); - if (_71 === 0) { - consumed$ends_Run(run, rt.u8Rem(dataData[dataStart + 1], 16), k, out); - } else if (_71 === 1) { - consumed$ends_Counted({ _0: run }, rt.u8Rem(dataData[dataStart + 1], 16), k, out); - } else if (_71 === 2) { + const _72: rt.u8 = rt.u8Rem(kind, 14); + if (_72 === 0) { + consumed$ends_Run(run, pick, k, out); + } else if (_72 === 1) { + consumed$ends_Counted({ _0: run }, pick, k, out); + } else if (_72 === 4) { + consumed$ends_Overrides({ _0: run }, pick, k, out); + } else if (_72 === 5) { + folded$ends_Run(run, pick, k, log, out); + } else if (_72 === 6) { + folded$ends_Counted({ _0: run }, pick, k, log, out); + } else if (_72 === 9) { + folded$ends_Overrides({ _0: run }, pick, k, log, out); + } else if (_72 === 10) { + consumed$boxed_Box_ends_Overrides({ _0: run }, pick, k, out); + } else if (_72 === 11) { + folded$boxed_Box_ends_Overrides({ _0: run }, pick, k, log, out); + } else if (_72 === 12) { + consumed$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure0(rt.iterMap(rt.iterFrom({ _0: run }, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b2: rt.u8): rt.u8 => { + return b2; + }), pick, k, out); + } else if (_72 === 13) { + folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(rt.iterMap(rt.iterFrom({ _0: run }, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b: rt.u8): rt.u8 => { + return b; + }), pick, k, log, out); + } else if (_72 === 2 || _72 === 7) { fuses(dataData[dataStart + 1], out); } else { let bits: rt.u8 = dataData[dataStart + 1]; @@ -111,29 +135,213 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL } } +/** `it`, consumed by std's adaptor or consumer `pick`, with `k` its count where it takes one. */ +export function consumed$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { + let _32!: rt.u8 | undefined; + if (pick === 0) { + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), "next")); + } else if (pick === 1) { + putVec(out, rt.iterToByteVec(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next")); + } else if (pick === 2) { + rt.byteVecPush(out, rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))).len() & 0xff); + } else if (pick === 3) { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))), (_211: [rt.usize, rt.u8]): Uint8Array => { + return Uint8Array.of(_211[0] & 0xff, _211[1]); + }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); + } else if (pick === 4) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), k)), "next"); + } else if (pick === 5) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), k)), "next"); + } else if (pick === 6) { + const _27: Overrides.Overrides = it; + const _28: rt.usize = rt.max(k, 1); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterBox(rt.iterFrom(_27, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _28)), "next"); + } else if (pick === 7) { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b8: rt.u8): boolean => { + return rt.u8Rem(b8, 3) === 0; + }), (i3: rt.usize): rt.u8 => { + return i3 & 0xff; + })); + } else if (pick === 8) { + const _33: rt.usize = rt.usizeRem(k, 4); + if (_33 === 0) { + const _37: Overrides.Overrides = it; + const _38: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterSkip(rt.iterBox(rt.iterFrom(_37, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _38), (b7: rt.u8): boolean => { + return rt.u8Rem(b7, 3) === 0; + }); + } else if (_33 === 1) { + const _42: Overrides.Overrides = it; + const _43: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterTake(rt.iterBox(rt.iterFrom(_42, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _43), (b6: rt.u8): boolean => { + return rt.u8Rem(b6, 3) === 0; + }); + } else if (_33 === 2) { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), (_2: [rt.usize, rt.u8]): boolean => { + return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; + }), (_210: [rt.usize, rt.u8]): rt.u8 => { + return (_210[0] & 0xff) ^ _210[1]; + }); + } else { + const _51: Overrides.Overrides = it; + const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + _32 = rt.iterRfind(rt.iterStepBy(rt.iterBox(rt.iterFrom(_51, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _52), (b3: rt.u8): boolean => { + return rt.u8Rem(b3, 3) === 0; + }); + } + put(out, _32); + } else if (pick === 9) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); + } else if (pick === 10) { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b2: rt.u8): rt.u8 => { + return b2 ^ 85; + })), k), "next"); + } else if (pick === 11) { + const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); + const _67: rt.Iter = rt.iterTake(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))), k); + rt.iterExtendBytes(v, _67, "next"); + putVec(out, v); + rt.byteVecPush(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); + } else if (pick === 12) { + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), new rt.Range(0, 5)); + while (true) { + const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); + if (_79 !== undefined) { + rt.iterExtendBytes(out, rt.iterSlice(Uint8Array.of(_79[0], _79[1])), undefined, true); + } else { + break; + } + } + } else if (pick === 13) { + const fused: rt.Iter = rt.iterFuse(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))); + put(out, rt.iterToOption(fused.nextBack())); + rt.byteVecPush(out, fused.len() & 0xff); + rt.iterExtendBytes(out, fused, "next"); + } else if (pick === 14) { + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + } else { + const peek: rt.Peekable = rt.iterPeekable(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, peek.len() & 0xff); + rt.iterExtendBytes(out, rt.iterRev(peek), "next"); + } +} + +/** `it`, consumed by std's adaptor or consumer `pick`, with `k` its count where it takes one. */ +export function consumed$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure0(it: rt.Iter, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { + let _32!: rt.u8 | undefined; + if (pick === 0) { + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterBox(it)), "next")); + } else if (pick === 1) { + putVec(out, rt.iterToByteVec(rt.iterBox(it), "next")); + } else if (pick === 2) { + rt.byteVecPush(out, rt.iterRev(rt.iterBox(it)).len() & 0xff); + } else if (pick === 3) { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterBox(it))), (_211: [rt.usize, rt.u8]): Uint8Array => { + return Uint8Array.of(_211[0] & 0xff, _211[1]); + }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); + } else if (pick === 4) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterBox(it), k)), "next"); + } else if (pick === 5) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterBox(it), k)), "next"); + } else if (pick === 6) { + const _27: rt.Iter = it; + const _28: rt.usize = rt.max(k, 1); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterBox(_27), _28)), "next"); + } else if (pick === 7) { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterBox(it), (b8: rt.u8): boolean => { + return rt.u8Rem(b8, 3) === 0; + }), (i3: rt.usize): rt.u8 => { + return i3 & 0xff; + })); + } else if (pick === 8) { + const _33: rt.usize = rt.usizeRem(k, 4); + if (_33 === 0) { + const _37: rt.Iter = it; + const _38: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterSkip(rt.iterBox(_37), _38), (b7: rt.u8): boolean => { + return rt.u8Rem(b7, 3) === 0; + }); + } else if (_33 === 1) { + const _42: rt.Iter = it; + const _43: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterTake(rt.iterBox(_42), _43), (b6: rt.u8): boolean => { + return rt.u8Rem(b6, 3) === 0; + }); + } else if (_33 === 2) { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterBox(it)), (_2: [rt.usize, rt.u8]): boolean => { + return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; + }), (_210: [rt.usize, rt.u8]): rt.u8 => { + return (_210[0] & 0xff) ^ _210[1]; + }); + } else { + const _51: rt.Iter = it; + const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + _32 = rt.iterRfind(rt.iterStepBy(rt.iterBox(_51), _52), (b3: rt.u8): boolean => { + return rt.u8Rem(b3, 3) === 0; + }); + } + put(out, _32); + } else if (pick === 9) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBox(it)))); + } else if (pick === 10) { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterBox(it), (b2: rt.u8): rt.u8 => { + return b2 ^ 85; + })), k), "next"); + } else if (pick === 11) { + const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); + const _67: rt.Iter = rt.iterTake(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it))), k); + rt.iterExtendBytes(v, _67, "next"); + putVec(out, v); + rt.byteVecPush(out, rt.iterBox(it).len() & 0xff); + } else if (pick === 12) { + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterBox(it), new rt.Range(0, 5)); + while (true) { + const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); + if (_79 !== undefined) { + rt.iterExtendBytes(out, rt.iterSlice(Uint8Array.of(_79[0], _79[1])), undefined, true); + } else { + break; + } + } + } else if (pick === 13) { + const fused: rt.Iter = rt.iterFuse(rt.iterBox(it)); + put(out, rt.iterToOption(fused.nextBack())); + rt.byteVecPush(out, fused.len() & 0xff); + rt.iterExtendBytes(out, fused, "next"); + } else if (pick === 14) { + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterBox(it), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + } else { + const peek: rt.Peekable = rt.iterPeekable(rt.iterBox(it)); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, peek.len() & 0xff); + rt.iterExtendBytes(out, rt.iterRev(peek), "next"); + } +} + /** `it`, consumed by std's adaptor or consumer `pick`, with `k` its count where it takes one. */ export function consumed$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { let _32!: rt.u8 | undefined; if (pick === 0) { - putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it))), "next")); + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), "next")); } else if (pick === 1) { - putVec(out, rt.iterToByteVec(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), "next")); + putVec(out, rt.iterToByteVec(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next")); } else if (pick === 2) { - rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it))).len() & 0xff); + rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })).len() & 0xff); } else if (pick === 3) { - rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)))), (_211: [rt.usize, rt.u8]): Uint8Array => { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }))), (_211: [rt.usize, rt.u8]): Uint8Array => { return Uint8Array.of(_211[0] & 0xff, _211[1]); }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); } else if (pick === 4) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), k)), "next"); } else if (pick === 5) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), k)), "next"); } else if (pick === 6) { const _27: Counted.Counted = it; const _28: rt.usize = rt.max(k, 1); - rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), _28)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _28)), "next"); } else if (pick === 7) { - put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), (b8: rt.u8): boolean => { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b8: rt.u8): boolean => { return rt.u8Rem(b8, 3) === 0; }), (i3: rt.usize): rt.u8 => { return i3 & 0xff; @@ -143,17 +351,17 @@ export function consumed$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.us if (_33 === 0) { const _37: Counted.Counted = it; const _38: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), _38), (b7: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _38), (b7: rt.u8): boolean => { return rt.u8Rem(b7, 3) === 0; }); } else if (_33 === 1) { const _42: Counted.Counted = it; const _43: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), _43), (b6: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _43), (b6: rt.u8): boolean => { return rt.u8Rem(b6, 3) === 0; }); } else if (_33 === 2) { - _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it))), (_2: [rt.usize, rt.u8]): boolean => { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), (_2: [rt.usize, rt.u8]): boolean => { return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; }), (_210: [rt.usize, rt.u8]): rt.u8 => { return (_210[0] & 0xff) ^ _210[1]; @@ -161,25 +369,25 @@ export function consumed$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.us } else { const _51: Counted.Counted = it; const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), _52), (b3: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _52), (b3: rt.u8): boolean => { return rt.u8Rem(b3, 3) === 0; }); } put(out, _32); } else if (pick === 9) { - put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it))))); + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })))); } else if (pick === 10) { - rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), (b2: rt.u8): rt.u8 => { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b2: rt.u8): rt.u8 => { return b2 ^ 85; })), k), "next"); } else if (pick === 11) { const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); - const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), k); + const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), k); rt.iterExtendBytes(v, _67, "next"); putVec(out, v); rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); } else if (pick === 12) { - const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), new rt.Range(0, 5)); + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), new rt.Range(0, 5)); while (true) { const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); if (_79 !== undefined) { @@ -189,14 +397,106 @@ export function consumed$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.us } } } else if (pick === 13) { - const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it))); + const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })); put(out, rt.iterToOption(fused.nextBack())); rt.byteVecPush(out, fused.len() & 0xff); rt.iterExtendBytes(out, fused, "next"); } else if (pick === 14) { - put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it)), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), rt.iterSlice(Uint8Array.of(7, 8)))), k)); } else { - const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, (it: Counted.Counted) => Counted.next$iter_Iterator(it), undefined, (it: Counted.Counted) => Counted.sizeHint$iter_Iterator(it), (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), (it: Counted.Counted) => Counted.len$iter_ExactSizeIterator(it))); + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, peek.len() & 0xff); + rt.iterExtendBytes(out, rt.iterRev(peek), "next"); + } +} + +/** `it`, consumed by std's adaptor or consumer `pick`, with `k` its count where it takes one. */ +export function consumed$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { + let _32!: rt.u8 | undefined; + if (pick === 0) { + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next")); + } else if (pick === 1) { + putVec(out, rt.iterToByteVec(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next")); + } else if (pick === 2) { + rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); + } else if (pick === 3) { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), (_211: [rt.usize, rt.u8]): Uint8Array => { + return Uint8Array.of(_211[0] & 0xff, _211[1]); + }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); + } else if (pick === 4) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), k)), "next"); + } else if (pick === 5) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), k)), "next"); + } else if (pick === 6) { + const _27: Overrides.Overrides = it; + const _28: rt.usize = rt.max(k, 1); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _28)), "next"); + } else if (pick === 7) { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b8: rt.u8): boolean => { + return rt.u8Rem(b8, 3) === 0; + }), (i3: rt.usize): rt.u8 => { + return i3 & 0xff; + })); + } else if (pick === 8) { + const _33: rt.usize = rt.usizeRem(k, 4); + if (_33 === 0) { + const _37: Overrides.Overrides = it; + const _38: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _38), (b7: rt.u8): boolean => { + return rt.u8Rem(b7, 3) === 0; + }); + } else if (_33 === 1) { + const _42: Overrides.Overrides = it; + const _43: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _43), (b6: rt.u8): boolean => { + return rt.u8Rem(b6, 3) === 0; + }); + } else if (_33 === 2) { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (_2: [rt.usize, rt.u8]): boolean => { + return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; + }), (_210: [rt.usize, rt.u8]): rt.u8 => { + return (_210[0] & 0xff) ^ _210[1]; + }); + } else { + const _51: Overrides.Overrides = it; + const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _52), (b3: rt.u8): boolean => { + return rt.u8Rem(b3, 3) === 0; + }); + } + put(out, _32); + } else if (pick === 9) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } else if (pick === 10) { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b2: rt.u8): rt.u8 => { + return b2 ^ 85; + })), k), "next"); + } else if (pick === 11) { + const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); + const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), k); + rt.iterExtendBytes(v, _67, "next"); + putVec(out, v); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); + } else if (pick === 12) { + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), new rt.Range(0, 5)); + while (true) { + const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); + if (_79 !== undefined) { + rt.iterExtendBytes(out, rt.iterSlice(Uint8Array.of(_79[0], _79[1])), undefined, true); + } else { + break; + } + } + } else if (pick === 13) { + const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); + put(out, rt.iterToOption(fused.nextBack())); + rt.byteVecPush(out, fused.len() & 0xff); + rt.iterExtendBytes(out, fused, "next"); + } else if (pick === 14) { + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + } else { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); put(out, rt.peekablePeek(peek)); rt.byteVecPush(out, peek.len() & 0xff); rt.iterExtendBytes(out, rt.iterRev(peek), "next"); @@ -207,25 +507,25 @@ export function consumed$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.us export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { let _32!: rt.u8 | undefined; if (pick === 0) { - putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)))), "next")); + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), "next")); } else if (pick === 1) { - putVec(out, rt.iterToByteVec(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), "next")); + putVec(out, rt.iterToByteVec(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next")); } else if (pick === 2) { - rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)))).len() & 0xff); + rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })).len() & 0xff); } else if (pick === 3) { - rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))))), (_211: [rt.usize, rt.u8]): Uint8Array => { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }))), (_211: [rt.usize, rt.u8]): Uint8Array => { return Uint8Array.of(_211[0] & 0xff, _211[1]); }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); } else if (pick === 4) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), k)), "next"); } else if (pick === 5) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), k)), "next"); } else if (pick === 6) { const _27: Run.Run = it; const _28: rt.usize = rt.max(k, 1); - rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), _28)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _28)), "next"); } else if (pick === 7) { - put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), (b8: rt.u8): boolean => { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b8: rt.u8): boolean => { return rt.u8Rem(b8, 3) === 0; }), (i3: rt.usize): rt.u8 => { return i3 & 0xff; @@ -235,17 +535,17 @@ export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt if (_33 === 0) { const _37: Run.Run = it; const _38: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), _38), (b7: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _38), (b7: rt.u8): boolean => { return rt.u8Rem(b7, 3) === 0; }); } else if (_33 === 1) { const _42: Run.Run = it; const _43: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), _43), (b6: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _43), (b6: rt.u8): boolean => { return rt.u8Rem(b6, 3) === 0; }); } else if (_33 === 2) { - _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)))), (_2: [rt.usize, rt.u8]): boolean => { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), (_2: [rt.usize, rt.u8]): boolean => { return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; }), (_210: [rt.usize, rt.u8]): rt.u8 => { return (_210[0] & 0xff) ^ _210[1]; @@ -253,25 +553,25 @@ export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt } else { const _51: Run.Run = it; const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), _52), (b3: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _52), (b3: rt.u8): boolean => { return rt.u8Rem(b3, 3) === 0; }); } put(out, _32); } else if (pick === 9) { - put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)))))); + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })))); } else if (pick === 10) { - rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), (b2: rt.u8): rt.u8 => { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b2: rt.u8): rt.u8 => { return b2 ^ 85; })), k), "next"); } else if (pick === 11) { const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); - const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), k); + const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), k); rt.iterExtendBytes(v, _67, "next"); putVec(out, v); - rt.byteVecPush(out, rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))).len() & 0xff); + rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else if (pick === 12) { - const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), new rt.Range(0, 5)); + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), new rt.Range(0, 5)); while (true) { const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); if (_79 !== undefined) { @@ -281,20 +581,883 @@ export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt } } } else if (pick === 13) { - const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)))); + const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })); put(out, rt.iterToOption(fused.nextBack())); rt.byteVecPush(out, fused.len() & 0xff); rt.iterExtendBytes(out, fused, "next"); } else if (pick === 14) { - put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it))), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.iterSlice(Uint8Array.of(7, 8)))), k)); } else { - const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, (it: Run.Run) => Run.next$iter_Iterator(it), undefined, (it: Run.Run) => Run.sizeHint$iter_Iterator(it), (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)))); + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })); put(out, rt.peekablePeek(peek)); rt.byteVecPush(out, peek.len() & 0xff); rt.iterExtendBytes(out, rt.iterRev(peek), "next"); } } +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + }, true)); + } else if (pick === 1) { + const _10: Overrides.Overrides = it; + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + }; + rt.byteVecPush(out, rt.iterRfold(rt.iterBox(rt.iterFrom(_10, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, _11, true)); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); + } else { + put(out, rt.ownedLast(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }, true); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0, true) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt, true)); + } else { + put(out, rt.iterMax(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.lt, true)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterChain(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterChain(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: Overrides.Overrides = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterBox(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _119))); + } else { + const _113: Overrides.Overrides = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBox(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + }, true)); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + }, true)); + } + } else if (pick === 12) { + const _139: Overrides.Overrides = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterBox(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: Overrides.Overrides = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBox(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.ownedCount(peek) & 0xff); + } else { + put(out, rt.ownedLast(rt.iterFuse(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))))); + rt.byteVecPush(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); + } +} + +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: rt.Iter, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterBox(it), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + }, true)); + } else if (pick === 1) { + const _10: rt.Iter = it; + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + }; + rt.byteVecPush(out, rt.iterRfold(rt.iterBox(_10), 1, _11, true)); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBox(it), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterBox(it), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterBox(it), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterBox(it), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterBox(it), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(it.next())); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it)))), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, rt.iterBox(it).len() & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBox(it), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterBox(it)) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBox(it)))); + } else { + put(out, rt.ownedLast(rt.iterBox(it))); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterBox(it), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }, true); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterBox(it), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0, true) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterBox(it), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt, true)); + } else { + put(out, rt.iterMax(rt.iterBox(it), rt.lt, true)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterChain(rt.iterBox(it), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterChain(rt.iterBox(it), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: rt.Iter = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterBox(_118), _119))); + } else { + const _113: rt.Iter = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBox(_113), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBox(it)), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + }, true)); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterBox(it)), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBox(it)))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBox(it)), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + }, true)); + } + } else if (pick === 12) { + const _139: rt.Iter = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterBox(_139), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: rt.Iter = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBox(_150), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterBox(it)); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.ownedCount(peek) & 0xff); + } else { + put(out, rt.ownedLast(rt.iterFuse(rt.iterBox(it)))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it))), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it))))); + rt.byteVecPush(out, rt.iterBox(it).len() & 0xff); + } +} + +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + })); + } else if (pick === 1) { + const _10: Counted.Counted = it; + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + }; + rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 1, _11)); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(Counted.next$iter_Iterator(it))); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })))); + } else { + put(out, rt.iterLast(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }))); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt)); + } else { + put(out, rt.iterMax(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), rt.lt)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterLast(rt.iterChain(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: Counted.Counted = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _119))); + } else { + const _113: Counted.Counted = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + })); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + })); + } + } else if (pick === 12) { + const _139: Counted.Counted = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: Counted.Counted = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.iterCount(peek) & 0xff); + } else { + put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }))); + rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); + } +} + +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, Overrides.fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(it, 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + })); + } else if (pick === 1) { + rt.byteVecPush(out, Overrides.rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(it, 1, (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + })); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, Overrides.count$iter_Iterator(it) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } else { + put(out, Overrides.last$iter_Iterator(it)); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }, true); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0, true) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt, true)); + } else { + put(out, rt.iterMax(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.lt, true)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: Overrides.Overrides = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _119))); + } else { + const _113: Overrides.Overrides = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + }, true)); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + }, true)); + } + } else if (pick === 12) { + const _139: Overrides.Overrides = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: Overrides.Overrides = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.ownedCount(peek) & 0xff); + } else { + put(out, rt.ownedLast(rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); + } +} + +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + })); + } else if (pick === 1) { + const _10: Run.Run = it; + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + }; + rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, _11)); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(Run.next$iter_Iterator(it))); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })))); + } else { + put(out, rt.iterLast(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }))); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt)); + } else { + put(out, rt.iterMax(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.lt)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterLast(rt.iterChain(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: Run.Run = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _119))); + } else { + const _113: Run.Run = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + })); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + })); + } + } else if (pick === 12) { + const _139: Run.Run = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: Run.Run = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.iterCount(peek) & 0xff); + } else { + put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }))); + rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); + } +} + /** * `fuse` of a `Flicker`, which reads on past its first `None`, or of a `Lapse`, which * doesn't, read by the bits of `bits` from either end. @@ -302,7 +1465,7 @@ export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt export function fuses(bits: rt.u8, out: rt.ByteVec): void { let _12!: rt.i32; const start: rt.u8 = bits >> 4; - const fused: rt.Iter = rt.iterFuse(rt.iterFrom({ _0: start }, (it: Flicker.Flicker) => Flicker.next$iter_Iterator(it), undefined, undefined, (it: Flicker.Flicker) => rt.iterFromOption(Flicker.nextBack$iter_DoubleEndedIterator(it))), true); + const fused: rt.Iter = rt.iterFuse(rt.iterFrom({ _0: start }, Flicker.next$iter_Iterator, undefined, { back: (it: Flicker.Flicker) => rt.iterFromOption(Flicker.nextBack$iter_DoubleEndedIterator(it)) }), true); let iterStart: rt.i32 = 0; const iterEnd: rt.i32 = 6; while ((_12 = iterStart++) < iterEnd) { @@ -312,13 +1475,13 @@ export function fuses(bits: rt.u8, out: rt.ByteVec): void { put(out, rt.iterToOption(fused.nextBack())); } } - const lapsed: rt.Iter = rt.iterFuse(rt.iterFrom({ _0: { _0: start } }, (it: Lapse.Lapse) => Lapse.next$iter_Iterator(it))); + const lapsed: rt.Iter = rt.iterFuse(rt.iterFrom({ _0: { _0: start } }, Lapse.next$iter_Iterator)); let iterStart2: rt.i32 = 0; const iterEnd2: rt.i32 = 4; while (iterStart2++ < iterEnd2) { put(out, rt.iterToOption(lapsed.next())); } - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterTake(rt.iterFlatten(rt.iterSlice([{ _0: start }, { _0: rt.u8WrappingAdd(start, 1) }]), (value: Flicker.Flicker) => rt.iterFrom(value, (it: Flicker.Flicker) => Flicker.next$iter_Iterator(it), undefined, undefined, (it: Flicker.Flicker) => rt.iterFromOption(Flicker.nextBack$iter_DoubleEndedIterator(it))), true), 5), "next")), undefined, true); + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterTake(rt.iterFlatten(rt.iterSlice([{ _0: start }, { _0: rt.u8WrappingAdd(start, 1) }]), (value: Flicker.Flicker) => rt.iterFrom(value, Flicker.next$iter_Iterator, undefined, { back: (it: Flicker.Flicker) => rt.iterFromOption(Flicker.nextBack$iter_DoubleEndedIterator(it)) }), true), 5), "next")), undefined, true); } //# sourceMappingURL=ends.ts.map diff --git a/ts/fixtures/lang/ends/src/ends.rs b/ts/fixtures/lang/ends/src/ends.rs index 3241450f6..15416ae6a 100644 --- a/ts/fixtures/lang/ends/src/ends.rs +++ b/ts/fixtures/lang/ends/src/ends.rs @@ -1,6 +1,7 @@ //! The crate's own iterators that read from the back, know their length, and say they stay -//! ended, with their own size hints: std's adaptors and consumers call each method where -//! native's do, and `fuse` reads on past the end of one that says it stays ended. +//! ended, with their own size hints, `nth`s, folds, `count`, and `last`: std's adaptors and +//! consumers call each method where native's do, and `fuse` reads on past the end of one +//! that says it stays ended. use std::cell::RefCell; use std::iter::FusedIterator; @@ -87,6 +88,72 @@ impl ExactSizeIterator for Counted<'_> { } } +/// A `Run` with its own `nth`, `nth_back`, `fold`, `rfold`, `count`, and `last`, each logged +/// as `N`, `B`, `f`, `r`, `c`, and `L`, which std's adaptors and consumers call in place of +/// `next` and `next_back`. Its `count` reads nothing, and its `last` reads from the back. +struct Overrides<'a>(Run<'a>); + +impl Iterator for Overrides<'_> { + type Item = u8; + + fn next(&mut self) -> Option { + self.0.next() + } + + fn size_hint(&self) -> (usize, Option) { + self.0.size_hint() + } + + fn nth(&mut self, n: usize) -> Option { + self.0.logged(b'N'); + for _ in 0..n { + self.0.next()?; + } + self.0.next() + } + + fn fold B>(mut self, init: B, mut f: F) -> B { + self.0.logged(b'f'); + let mut acc = init; + while let Some(b) = self.0.next() { + acc = f(acc, b); + } + acc + } + + fn count(self) -> usize { + self.0.logged(b'c'); + usize::from(self.0.left()) + } + + fn last(mut self) -> Option { + self.0.logged(b'L'); + self.0.next_back() + } +} + +impl DoubleEndedIterator for Overrides<'_> { + fn next_back(&mut self) -> Option { + self.0.next_back() + } + + fn nth_back(&mut self, n: usize) -> Option { + self.0.logged(b'B'); + for _ in 0..n { + self.0.next_back()?; + } + self.0.next_back() + } + + fn rfold B>(mut self, init: B, mut f: F) -> B { + self.0.logged(b'r'); + // Through std's fold, by a closure holding `f`. + std::iter::from_fn(|| self.0.next_back()).fold(init, move |acc, b| f(acc, b)) + } +} + +impl ExactSizeIterator for Overrides<'_> {} + /// Yields every other call to `next`, from either end, ending between: a `FusedIterator` /// that isn't, which std's `fuse` reads on from as it would one that is. struct Flicker(u8); @@ -140,7 +207,8 @@ fn put_vec(out: &mut Vec, v: Vec) { /// The run `data`'s first byte picks steps through with each of its other bytes, read /// directly, through `&mut`, or by std's adaptors, and consumed by the third byte's pick, -/// with what each read and each call of its methods logged. +/// by `consumed`, or by `folded` past the fifth `kind`, and boxed, or mapped and boxed, by +/// either past the tenth, with what each read and each call of its methods logged. pub fn ends(kind: u8, data: &[u8], out: &mut Vec) { let [shape, consume, steps @ ..] = data else { return; @@ -170,10 +238,21 @@ pub fn ends(kind: u8, data: &[u8], out: &mut Vec) { } } let k = usize::from(consume >> 4); - match kind % 4 { - 0 => consumed(run, consume % 16, k, out), - 1 => consumed(Counted(run), consume % 16, k, out), - 2 => fuses(*consume, out), + let pick = consume % 16; + match kind % 14 { + 0 => consumed(run, pick, k, out), + 1 => consumed(Counted(run), pick, k, out), + 4 => consumed(Overrides(run), pick, k, out), + 5 => folded(run, pick, k, &log, out), + 6 => folded(Counted(run), pick, k, &log, out), + 9 => folded(Overrides(run), pick, k, &log, out), + // std's `Iterator` for a box forwards `last` but none of the other by-value overrides, + // including those of what an adaptor in it holds. + 10 => consumed(Box::new(Overrides(run)), pick, k, out), + 11 => folded(Box::new(Overrides(run)), pick, k, &log, out), + 12 => consumed(Box::new(Overrides(run).map(|b| b)), pick, k, out), + 13 => folded(Box::new(Overrides(run).map(|b| b)), pick, k, &log, out), + 2 | 7 => fuses(*consume, out), _ => { // Mixed from either end, by the bits of `consume`, until they meet. let mut bits = *consume; @@ -249,6 +328,100 @@ fn consumed + ExactSizeIterator>(mut it: I, pi } } +/// `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its +/// `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One +/// fold panics past `k` items, with what was logged so far. +fn folded + ExactSizeIterator>( + mut it: I, + pick: u8, + k: usize, + log: &RefCell>, + out: &mut Vec, +) { + let k8 = k as u8; + match pick { + 0 => out.push(it.fold(1u8, |a, b| a.wrapping_mul(3) ^ b)), + 1 => out.push(it.rfold(1u8, |a, b| { + assert!(k < 15 || b != 2, "rfold at {b} after {:?}", log.borrow().as_slice()); + a.wrapping_mul(3) ^ b + })), + // Each `try_rfold` breaks at an item, then the rest are read on by `next`. + 2 if k % 2 == 0 => { + put(out, it.try_rfold(0u8, |a, b| (b != k8).then_some(a ^ b))); + out.extend(it); + } + // Of an `Option` accumulator, whose `Some(None)` goes on and whose `None` breaks. + 2 => { + let r = it.try_rfold(None, |a: Option, b| match b % 3 { + 0 => None, + 1 => Some(None), + _ => Some(a.or(Some(b))), + }); + out.extend(match r { + Some(a) => [0, a.unwrap_or(0xff)], + None => [1, 0], + }); + out.extend(it); + } + 3 => { + let r: Result = it.try_rfold(0u8, |a, b| if b % 4 == k8 % 4 { Err(b) } else { Ok(a ^ b) }); + out.extend(match r { + Ok(a) => [0, a], + Err(b) => [1, b], + }); + put(out, it.next()); + } + 4 => { + use std::ops::ControlFlow; + let r = it.by_ref().rev().try_rfold(0u8, |a, b| match b > k8 { + true => ControlFlow::Break(b), + false => ControlFlow::Continue(a ^ b), + }); + out.extend(match r { + ControlFlow::Continue(a) => [0, a], + ControlFlow::Break(b) => [1, b], + }); + out.push(it.len() as u8); + } + 5 if k % 2 == 0 => out.push(it.count() as u8), + 5 => out.push(it.map(|b| b ^ 1).count() as u8), + 6 if k % 2 == 0 => put(out, it.last()), + 6 => put(out, it.rev().last()), + 7 if k % 2 == 0 => out.push(it.map(u32::from).sum::() as u8), + 7 => it.for_each(|b| out.push(b)), + 8 if k % 2 == 0 => put(out, it.max()), + 8 => put(out, it.min_by_key(|b| b % 3)), + 9 if k % 2 == 0 => out.push(it.chain([7, 8]).count() as u8), + 9 => put(out, it.chain([7, 8]).last()), + 10 if k % 2 == 0 => out.push(it.skip(k / 2).count() as u8), + 10 => put(out, it.skip(k / 2).last()), + 11 => match k % 4 { + 0 => out.push(it.rev().fold(1u8, |a, b| a.wrapping_mul(5) ^ b)), + 1 => put(out, it.rev().nth(k / 4)), + 2 => put(out, it.rev().last()), + _ => out.push(it.rev().rfold(1u8, |a, b| a.wrapping_mul(5) ^ b)), + }, + 12 => { + let mut skip = it.skip(k / 2); + put(out, skip.next()); + put(out, skip.next_back()); + } + 13 => put_vec(out, it.step_by(k / 4 + 1).collect()), + 14 if k % 2 == 0 => put(out, it.fuse().last()), + 14 => { + let mut peek = it.peekable(); + put(out, peek.peek().copied()); + out.push(peek.count() as u8); + } + // Through `&mut`, which reads by `try_fold` rather than its by-value methods. + _ => { + out.push((&mut it).take(k / 2).fold(0u8, |a, _| a + 1)); + put(out, (&mut it).last()); + out.push(it.len() as u8); + } + } +} + /// `fuse` of a `Flicker`, which reads on past its first `None`, or of a `Lapse`, which /// doesn't, read by the bits of `bits` from either end. fn fuses(bits: u8, out: &mut Vec) { diff --git a/ts/fixtures/lang/hints/expected/hints.ts b/ts/fixtures/lang/hints/expected/hints.ts index 5bf1fc50a..39e6c015d 100644 --- a/ts/fixtures/lang/hints/expected/hints.ts +++ b/ts/fixtures/lang/hints/expected/hints.ts @@ -1368,13 +1368,13 @@ export function walkFront$collections_hash_set_Iter_u8(it: rt.Iter, steps /** As `walk`, of an iterator that reads only from the front. */ export function walkFront$hints_Countdown(it: Countdown.Countdown, steps: rt.u8, out: rt.ByteVec): void { - put(out, rt.iterFrom(it, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it)).sizeHint()); + put(out, rt.iterFrom(it, Countdown.next$iter_Iterator).sizeHint()); const _9: rt.u8 = rt.u8Rem(steps, 4); let iterStart: rt.u8 = 0; const iterEnd: rt.u8 = _9; while (iterStart++ < iterEnd) { rt.iterToOption(Countdown.next$iter_Iterator(it)); - put(out, rt.iterFrom(it, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it)).sizeHint()); + put(out, rt.iterFrom(it, Countdown.next$iter_Iterator).sizeHint()); } } @@ -1701,7 +1701,6 @@ export function u32Of(n: rt.u64): rt.u32 { * front or the back by the third byte's other bits. */ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { - let it!: rt.Peekable; const at: (a0: rt.usize) => rt.u8 = (i: rt.usize): rt.u8 => { return option_unwrapOr$0r2bmpr(rt.byteSliceGet(data, i), 0); }; @@ -1778,7 +1777,7 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else { const _131: Endless.Endless = { _0: n }; const _132: rt.usize = rt.usizeRem(rt.u64Low(n), 9); - walkFront$iter_Chain_iter_Take_hints_Endless_ops_Range_u64(rt.iterChain(rt.iterTake(rt.iterFrom(_131, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), _132), new rt.Range(0, m, rt.u64Step)), steps, out); + walkFront$iter_Chain_iter_Take_hints_Endless_ops_Range_u64(rt.iterChain(rt.iterTake(rt.iterFrom(_131, Endless.next$iter_Iterator), _132), new rt.Range(0, m, rt.u64Step)), steps, out); } } else if (_37 === 5) { const _136: rt.u8 = rt.u8Rem(arm, 4); @@ -1787,11 +1786,11 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_136 === 1) { const _142: Endless.Endless = { _0: n }; const _143: rt.Range = new rt.Range(0, u32Of(m)); - walkFront$iter_Zip_hints_Endless_ops_Range_u32(rt.iterZip(rt.iterFrom(_142, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), _143), steps, out); + walkFront$iter_Zip_hints_Endless_ops_Range_u32(rt.iterZip(rt.iterFrom(_142, Endless.next$iter_Iterator), _143), steps, out); } else if (_136 === 2) { walk$iter_Zip_slice_Iter_u8_iter_Skip_slice_Iter_u8(rt.iterZip(rt.iterSlice(rt.byteSliceView(bytes)), rt.iterSkip(rt.iterSlice(rt.byteSliceView(bytes)), 1), [false, false]), steps, out); } else { - walkFront$iter_Zip_ops_Range_u32_hints_Endless(rt.iterZip(new rt.Range(0, u32Of(n)), rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it))), steps, out); + walkFront$iter_Zip_ops_Range_u32_hints_Endless(rt.iterZip(new rt.Range(0, u32Of(n)), rt.iterFrom({ _0: n }, Endless.next$iter_Iterator)), steps, out); } } else if (_37 === 6) { const _153: rt.u8 = rt.u8Rem(arm, 4); @@ -1800,11 +1799,11 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_153 === 1) { walk$iter_Take_ops_Range_u32(rt.iterTake(new rt.Range(0, u32Of(n)), rt.u64Low(m)), steps, out); } else if (_153 === 2) { - walkFront$iter_Take_hints_Endless(rt.iterTake(rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), rt.u64Low(m)), steps, out); + walkFront$iter_Take_hints_Endless(rt.iterTake(rt.iterFrom({ _0: n }, Endless.next$iter_Iterator), rt.u64Low(m)), steps, out); } else { const _166: Endless.Endless = { _0: n }; const _167: rt.usize = rt.usizeRem(rt.u64Low(m), 9); - walkFront$iter_Skip_hints_Endless(rt.iterSkip(rt.iterFrom(_166, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), _167), steps, out); + walkFront$iter_Skip_hints_Endless(rt.iterSkip(rt.iterFrom(_166, Endless.next$iter_Iterator), _167), steps, out); } } else if (_37 === 7) { const step: rt.usize = rt.usizeAdd(rt.usizeRem(at(1) as rt.usize, 7), 1); @@ -1841,7 +1840,7 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { return rt.u64CheckedSub(i17, 1); }), steps, out); } else { - walkFront$iter_Filter_hints_Endless_hints_hints_closure6(rt.iterFilter(rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), (_250: rt.u64): boolean => { + walkFront$iter_Filter_hints_Endless_hints_hints_closure6(rt.iterFilter(rt.iterFrom({ _0: n }, Endless.next$iter_Iterator), (_250: rt.u64): boolean => { return true; }), steps, out); } @@ -1865,16 +1864,16 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_37 === 10) { const _219: rt.u8 = rt.u8Rem(arm, 4); if (_219 === 0) { - walkFront$iter_Fuse_hints_Endless(rt.iterFuse(rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it))), steps, out); + walkFront$iter_Fuse_hints_Endless(rt.iterFuse(rt.iterFrom({ _0: n }, Endless.next$iter_Iterator)), steps, out); } else if (_219 === 1) { - walkFront$iter_Fuse_iter_Take_hints_Endless(rt.iterFuse(rt.iterTake(rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), 2)), steps, out); + walkFront$iter_Fuse_iter_Take_hints_Endless(rt.iterFuse(rt.iterTake(rt.iterFrom({ _0: n }, Endless.next$iter_Iterator), 2)), steps, out); } else if (_219 === 2) { walk$iter_Fuse_ops_Range_u64(rt.iterFuse(new rt.Range(0, n, rt.u64Step)), steps, out); } else { - walkFront$iter_Fuse_hints_Countdown(rt.iterFuse(rt.iterFrom({ _0: rt.u64Low(n) & 0xff }, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it))), steps, out); + walkFront$iter_Fuse_hints_Countdown(rt.iterFuse(rt.iterFrom({ _0: rt.u64Low(n) & 0xff }, Countdown.next$iter_Iterator)), steps, out); } } else if (_37 === 11) { - it = rt.iterPeekable(rt.iterChain(new rt.Range(0, n, rt.u64Step), new rt.Range(0, m, rt.u64Step))); + const it: rt.Peekable = rt.iterPeekable(rt.iterChain(new rt.Range(0, n, rt.u64Step), new rt.Range(0, m, rt.u64Step))); put(out, it.sizeHint()); const _240: rt.u8 = rt.u8Rem(steps, 4); let iterStart: rt.u8 = 0; diff --git a/ts/fixtures/lang/iters/expected/iters.ts b/ts/fixtures/lang/iters/expected/iters.ts index dcdbdbbad..a9e2f43d6 100644 --- a/ts/fixtures/lang/iters/expected/iters.ts +++ b/ts/fixtures/lang/iters/expected/iters.ts @@ -1645,7 +1645,7 @@ export function own(data: rt.ByteSlice, out: rt.ByteVec): void { } rt.byteVecPush(out, _13); } - rt.byteVecExtendFromSlice(out, rt.byteSliceFrom(rt.u64ToBeBytes(rt.iterSum(rt.iterMap(rt.iterFrom({ left, step }, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it)), (n4: rt.u8): rt.u64 => { + rt.byteVecExtendFromSlice(out, rt.byteSliceFrom(rt.u64ToBeBytes(rt.iterSum(rt.iterMap(rt.iterFrom({ left, step }, Countdown.next$iter_Iterator), (n4: rt.u8): rt.u64 => { return rt.u64Div(rt.u64Mul(n4 as rt.u64, 1000), 7); }), rt.u64Add, 0)))); const down: Countdown.Countdown = { left, step }; @@ -1660,9 +1660,9 @@ export function own(data: rt.ByteSlice, out: rt.ByteVec): void { } } rt.byteVecPush(out, down.left); - rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterFrom({ inner: rt.iterSlice(rt.byteSliceView(data)) }, (it: Evens.Evens) => Evens.next$iter_Iterator(it)), "next"))); + rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterFrom({ inner: rt.iterSlice(rt.byteSliceView(data)) }, Evens.next$iter_Iterator), "next"))); const byRef: Evens.Evens = { inner: rt.iterSlice(rt.byteSliceView(rt.byteSliceRange(data, rt.min(data.length, 1)))) }; - rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterTake(rt.iterFrom(byRef, (it: Evens.Evens) => Evens.next$iter_Iterator(it)), 2), "next"))); + rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterTake(rt.iterFrom(byRef, Evens.next$iter_Iterator), 2), "next"))); const iter2: Evens.Evens = byRef; while (true) { const _60: rt.u8 | rt.Done = Evens.next$iter_Iterator(iter2); @@ -1676,9 +1676,9 @@ export function own(data: rt.ByteSlice, out: rt.ByteVec): void { break; } } - rt.byteVecPush(out, rt.iterCount(rt.iterFrom(byRef, (it: Evens.Evens) => Evens.next$iter_Iterator(it))) & 0xff); - rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterFrom(new Halving.Halving(left), (it: Halving.Halving) => Halving.next$iter_Iterator_u8(it)), "next"))); - rt.byteVecExtendFromSlice(out, rt.byteSliceFrom(rt.u64ToBeBytes(rt.iterSum(rt.iterFrom(new Halving.Halving(rt.u64Mul(left as rt.u64, 4294967297)), (it: Halving.Halving) => Halving.next$iter_Iterator_u64(it)), rt.u64Add, 0)))); + rt.byteVecPush(out, rt.iterCount(rt.iterFrom(byRef, Evens.next$iter_Iterator)) & 0xff); + rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterFrom(new Halving.Halving(left), Halving.next$iter_Iterator_u8), "next"))); + rt.byteVecExtendFromSlice(out, rt.byteSliceFrom(rt.u64ToBeBytes(rt.iterSum(rt.iterFrom(new Halving.Halving(rt.u64Mul(left as rt.u64, 4294967297)), Halving.next$iter_Iterator_u64), rt.u64Add, 0)))); } /** @@ -1919,30 +1919,115 @@ export function at$u8(items: rt.ByteSlice, i: rt.usize): rt.u8 | undefined { * A zip of each kind std specializes, of sides whose closures log each item they make, and * either side shorter or empty: by index (`TrustedRandomAccess`), folded by its size hint * (`TrustedLen`, or only `TrustedRandomAccessNoCoerce`), and by `next` (neither), read by - * each of std's consumers, and through adaptors that fold it or read it by `try_fold`. + * each of std's consumers, through adaptors that fold it or read it by `try_fold`, and + * through a box. */ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { let _18!: [rt.ByteSlice, rt.ByteSlice]; - const _40: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2: [rt.u8, rt.u8]): rt.u8 => { + const _45: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2: [rt.u8, rt.u8]): rt.u8 => { return _2[0] ^ _2[1]; }; - const _201: (a0: [rt.u8, rt.u8]) => rt.u8 = (_23: [rt.u8, rt.u8]): rt.u8 => { + const _94: (a0: [rt.u8, rt.u8]) => rt.u8 = (_23: [rt.u8, rt.u8]): rt.u8 => { return _23[0] ^ _23[1]; }; - const _380: (a0: [rt.u8, rt.u8]) => rt.u8 = (_25: [rt.u8, rt.u8]): rt.u8 => { + const _144: (a0: [rt.u8, rt.u8]) => rt.u8 = (_25: [rt.u8, rt.u8]): rt.u8 => { return _25[0] ^ _25[1]; }; - const _573: (a0: [rt.u8, rt.u8]) => rt.u8 = (_27: [rt.u8, rt.u8]): rt.u8 => { + const _194: (a0: [rt.u8, rt.u8]) => rt.u8 = (_27: [rt.u8, rt.u8]): rt.u8 => { return _27[0] ^ _27[1]; }; - const _750: (a0: [rt.u8, rt.u8]) => rt.u8 = (_210: [rt.u8, rt.u8]): rt.u8 => { - return _210[0] ^ _210[1]; + const _240: (a0: [rt.u8, rt.u8]) => rt.u8 = (_211: [rt.u8, rt.u8]): rt.u8 => { + return _211[0] ^ _211[1]; + }; + const _401: (a0: [rt.u8, rt.u8]) => rt.u8 = (_214: [rt.u8, rt.u8]): rt.u8 => { + return _214[0] ^ _214[1]; + }; + const _452: (a0: [rt.u8, rt.u8]) => rt.u8 = (_216: [rt.u8, rt.u8]): rt.u8 => { + return _216[0] ^ _216[1]; + }; + const _504: (a0: [rt.u8, rt.u8]) => rt.u8 = (_219: [rt.u8, rt.u8]): rt.u8 => { + return _219[0] ^ _219[1]; + }; + const _556: (a0: [rt.u8, rt.u8]) => rt.u8 = (_222: [rt.u8, rt.u8]): rt.u8 => { + return _222[0] ^ _222[1]; + }; + const _604: (a0: [rt.u8, rt.u8]) => rt.u8 = (_225: [rt.u8, rt.u8]): rt.u8 => { + return _225[0] ^ _225[1]; + }; + const _783: (a0: [rt.u8, rt.u8]) => rt.u8 = (_228: [rt.u8, rt.u8]): rt.u8 => { + return _228[0] ^ _228[1]; + }; + const _836: (a0: [rt.u8, rt.u8]) => rt.u8 = (_235: [rt.u8, rt.u8]): rt.u8 => { + return _235[0] ^ _235[1]; + }; + const _890: (a0: [rt.u8, rt.u8]) => rt.u8 = (_239: [rt.u8, rt.u8]): rt.u8 => { + return _239[0] ^ _239[1]; + }; + const _944: (a0: [rt.u8, rt.u8]) => rt.u8 = (_249: [rt.u8, rt.u8]): rt.u8 => { + return _249[0] ^ _249[1]; + }; + const _994: (a0: [rt.u8, rt.u8]) => rt.u8 = (_257: [rt.u8, rt.u8]): rt.u8 => { + return _257[0] ^ _257[1]; + }; + const _1187: (a0: [rt.u8, rt.u8]) => rt.u8 = (_260: [rt.u8, rt.u8]): rt.u8 => { + return _260[0] ^ _260[1]; + }; + const _1238: (a0: [rt.u8, rt.u8]) => rt.u8 = (_262: [rt.u8, rt.u8]): rt.u8 => { + return _262[0] ^ _262[1]; + }; + const _1290: (a0: [rt.u8, rt.u8]) => rt.u8 = (_265: [rt.u8, rt.u8]): rt.u8 => { + return _265[0] ^ _265[1]; + }; + const _1342: (a0: [rt.u8, rt.u8]) => rt.u8 = (_268: [rt.u8, rt.u8]): rt.u8 => { + return _268[0] ^ _268[1]; + }; + const _1390: (a0: [rt.u8, rt.u8]) => rt.u8 = (_271: [rt.u8, rt.u8]): rt.u8 => { + return _271[0] ^ _271[1]; + }; + const _1567: (a0: [rt.u8, rt.u8]) => rt.u8 = (_284: [rt.u8, rt.u8]): rt.u8 => { + return _284[0] ^ _284[1]; + }; + const _1618: (a0: [rt.u8, rt.u8]) => rt.u8 = (_288: [rt.u8, rt.u8]): rt.u8 => { + return _288[0] ^ _288[1]; + }; + const _1670: (a0: [rt.u8, rt.u8]) => rt.u8 = (_296: [rt.u8, rt.u8]): rt.u8 => { + return _296[0] ^ _296[1]; + }; + const _1722: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2107: [rt.u8, rt.u8]): rt.u8 => { + return _2107[0] ^ _2107[1]; + }; + const _1770: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2115: [rt.u8, rt.u8]): rt.u8 => { + return _2115[0] ^ _2115[1]; + }; + const _1946: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2118: [rt.u8, rt.u8]): rt.u8 => { + return _2118[0] ^ _2118[1]; + }; + const _1996: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2120: [rt.u8, rt.u8]): rt.u8 => { + return _2120[0] ^ _2120[1]; }; - const _926: (a0: [rt.u8, rt.u8]) => rt.u8 = (_218: [rt.u8, rt.u8]): rt.u8 => { - return _218[0] ^ _218[1]; + const _2047: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2123: [rt.u8, rt.u8]): rt.u8 => { + return _2123[0] ^ _2123[1]; }; - const _1101: (a0: [rt.u8, rt.u8]) => rt.u8 = (_221: [rt.u8, rt.u8]): rt.u8 => { - return _221[0] ^ _221[1]; + const _2098: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2126: [rt.u8, rt.u8]): rt.u8 => { + return _2126[0] ^ _2126[1]; + }; + const _2145: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2129: [rt.u8, rt.u8]): rt.u8 => { + return _2129[0] ^ _2129[1]; + }; + const _2320: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2132: [rt.u8, rt.u8]): rt.u8 => { + return _2132[0] ^ _2132[1]; + }; + const _2377: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2140: [rt.u8, rt.u8]): rt.u8 => { + return _2140[0] ^ _2140[1]; + }; + const _2435: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2144: [rt.u8, rt.u8]): rt.u8 => { + return _2144[0] ^ _2144[1]; + }; + const _2493: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2154: [rt.u8, rt.u8]): rt.u8 => { + return _2154[0] ^ _2154[1]; + }; + const _2547: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2162: [rt.u8, rt.u8]): rt.u8 => { + return _2162[0] ^ _2162[1]; }; const mid: number = rt.usizeRem(kind >> 5 as rt.usize, rt.usizeAdd(data.length, 1)); if (mid > data.length) { @@ -1956,195 +2041,452 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { const a2: rt.ByteSlice = _18[0]; const b2: rt.ByteSlice = _18[1]; const other: boolean = (kind & 4) !== 0; - const n: rt.usize = option_mapOr$1t0muvr(rt.byteSliceFirst(data), 0, (_223: rt.u8): rt.usize => { - return rt.usizeRem(_223 as rt.usize, 4); + const n: rt.usize = option_mapOr$1t0muvr(rt.byteSliceFirst(data), 0, (_2165: rt.u8): rt.usize => { + return rt.usizeRem(_2165 as rt.usize, 4); }); const log: rt.RefCell = new rt.RefCell(new rt.ByteVec()); const _28: rt.u8 = rt.u8Rem(kind, 4); if (_28 === 0) { if ((kind & 16) === 0) { - const z: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2290: rt.u8): rt.u8 => { - const x231: rt.u8 = _2290; - const _6238: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6238.value, x231 ^ 1); - rt.refMutRelease(_6238); - return x231; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2291: rt.u8): rt.u8 => { - const x232: rt.u8 = _2291; - const _6239: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6239.value, x232 ^ 2); - rt.refMutRelease(_6239); - return x232; - }), [true, true]); - const _41: rt.usize = rt.usizeRem(data.length, 8); - if (_41 === 0) { - rt.byteVecPush(out, rt.iterCount(z) & 0xff); - } else if (_41 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z), 238, (_2300: [rt.u8, rt.u8]): rt.u8 => { - return _2300[0] ^ _2300[1]; - })); - } else if (_41 === 2) { - rt.iterForEach(z, (p21: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _40(p21)); - }); - } else if (_41 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z, (_2299: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2299[0] as rt.u32, _2299[1] as rt.u32); - }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_41 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z, (_2298: [rt.u8, rt.u8]): rt.u8 => { - return _2298[0] ^ _2298[1]; - }), undefined, true)), undefined, true); - } else if (_41 === 5) { - rt.byteVecPush(out, rt.iterFold(z, 0, (acc7: rt.u8, p20: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc7, 3) ^ _40(p20); - })); - } else if (_41 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z, (_2297: [rt.u8, rt.u8]): rt.u8 => { - return _2297[0] ^ _2297[1]; - }), (x239: rt.u8): boolean => { - return x239 === 0; - }) ? 1 : 0); + const _31: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_31 === 0) { + const z: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21148: rt.u8): rt.u8 => { + const x603: rt.u8 = _21148; + const _6355: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6355.value, x603 ^ 1); + rt.refMutRelease(_6355); + return x603; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21149: rt.u8): rt.u8 => { + const x604: rt.u8 = _21149; + const _6356: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6356.value, x604 ^ 2); + rt.refMutRelease(_6356); + return x604; + }), [true, true]); + const _46: rt.usize = rt.usizeRem(data.length, 8); + if (_46 === 0) { + rt.byteVecPush(out, rt.iterCount(z) & 0xff); + } else if (_46 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z), 238, (_21158: [rt.u8, rt.u8]): rt.u8 => { + return _21158[0] ^ _21158[1]; + })); + } else if (_46 === 2) { + rt.iterForEach(z, (p77: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _45(p77)); + }); + } else if (_46 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z, (_21157: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21157[0] as rt.u32, _21157[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_46 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z, (_21156: [rt.u8, rt.u8]): rt.u8 => { + return _21156[0] ^ _21156[1]; + }), undefined, true)), undefined, true); + } else if (_46 === 5) { + rt.byteVecPush(out, rt.iterFold(z, 0, (acc35: rt.u8, p76: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc35, 3) ^ _45(p76); + })); + } else if (_46 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z, (_21155: [rt.u8, rt.u8]): rt.u8 => { + return _21155[0] ^ _21155[1]; + }), (x611: rt.u8): boolean => { + return x611 === 0; + }) ? 1 : 0); + } else { + const z2: rt.Iter<[rt.u8, rt.u8]> = z; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z2, (_21150: [rt.u8, rt.u8]): boolean => { + return _21150[0] > _21150[1]; + }), 238, (i42: rt.usize): rt.u8 => { + return i42 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z2, (_21151: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21151[0], 3) === 0; + }), 238, (_21152: [rt.u8, rt.u8]): rt.u8 => { + return _21152[0] ^ _21152[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z2, n), 238, (_21153: [rt.u8, rt.u8]): rt.u8 => { + return _21153[0] ^ _21153[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z2.next()), 238, (_21154: [rt.u8, rt.u8]): rt.u8 => { + return _21154[0] ^ _21154[1]; + })); + } + } else if (_31 === 1) { + const z3: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21137: rt.u8): rt.u8 => { + const x591: rt.u8 = _21137; + const _6351: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6351.value, x591 ^ 1); + rt.refMutRelease(_6351); + return x591; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21138: rt.u8): rt.u8 => { + const x592: rt.u8 = _21138; + const _6352: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6352.value, x592 ^ 2); + rt.refMutRelease(_6352); + return x592; + }), [true, true]); + const _95: rt.usize = rt.usizeRem(data.length, 8); + if (_95 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z3)) & 0xff); + } else if (_95 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z3)), 238, (_21147: [rt.u8, rt.u8]): rt.u8 => { + return _21147[0] ^ _21147[1]; + })); + } else if (_95 === 2) { + const _102: (a0: [rt.u8, rt.u8]) => undefined = (p75: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _94(p75)); + }; + rt.iterForEach(rt.iterBox(z3), _102); + } else if (_95 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z3), (_21146: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21146[0] as rt.u32, _21146[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_95 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z3), (_21145: [rt.u8, rt.u8]): rt.u8 => { + return _21145[0] ^ _21145[1]; + }), "next")), undefined, true); + } else if (_95 === 5) { + const _110: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc34: rt.u8, p74: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc34, 3) ^ _94(p74); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z3), 0, _110)); + } else if (_95 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z3), (_21144: [rt.u8, rt.u8]): rt.u8 => { + return _21144[0] ^ _21144[1]; + }), (x599: rt.u8): boolean => { + return x599 === 0; + }) ? 1 : 0); + } else { + const z4: rt.Iter<[rt.u8, rt.u8]> = z3; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z4), (_21139: [rt.u8, rt.u8]): boolean => { + return _21139[0] > _21139[1]; + }), 238, (i41: rt.usize): rt.u8 => { + return i41 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z4), (_21140: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21140[0], 3) === 0; + }), 238, (_21141: [rt.u8, rt.u8]): rt.u8 => { + return _21141[0] ^ _21141[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z4), n), 238, (_21142: [rt.u8, rt.u8]): rt.u8 => { + return _21142[0] ^ _21142[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z4.next()), 238, (_21143: [rt.u8, rt.u8]): rt.u8 => { + return _21143[0] ^ _21143[1]; + })); + } + } else if (_31 === 2) { + const z5: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21126: rt.u8): rt.u8 => { + const x579: rt.u8 = _21126; + const _6347: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6347.value, x579 ^ 1); + rt.refMutRelease(_6347); + return x579; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21127: rt.u8): rt.u8 => { + const x580: rt.u8 = _21127; + const _6348: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6348.value, x580 ^ 2); + rt.refMutRelease(_6348); + return x580; + }), [true, true]), n); + const _145: rt.usize = rt.usizeRem(data.length, 8); + if (_145 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z5)) & 0xff); + } else if (_145 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z5)), 238, (_21136: [rt.u8, rt.u8]): rt.u8 => { + return _21136[0] ^ _21136[1]; + })); + } else if (_145 === 2) { + const _152: (a0: [rt.u8, rt.u8]) => undefined = (p73: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _144(p73)); + }; + rt.iterForEach(rt.iterBox(z5), _152); + } else if (_145 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z5), (_21135: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21135[0] as rt.u32, _21135[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_145 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z5), (_21134: [rt.u8, rt.u8]): rt.u8 => { + return _21134[0] ^ _21134[1]; + }), "next")), undefined, true); + } else if (_145 === 5) { + const _160: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc33: rt.u8, p72: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc33, 3) ^ _144(p72); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z5), 0, _160)); + } else if (_145 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z5), (_21133: [rt.u8, rt.u8]): rt.u8 => { + return _21133[0] ^ _21133[1]; + }), (x587: rt.u8): boolean => { + return x587 === 0; + }) ? 1 : 0); + } else { + const z6: rt.Iter<[rt.u8, rt.u8]> = z5; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z6), (_21128: [rt.u8, rt.u8]): boolean => { + return _21128[0] > _21128[1]; + }), 238, (i40: rt.usize): rt.u8 => { + return i40 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z6), (_21129: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21129[0], 3) === 0; + }), 238, (_21130: [rt.u8, rt.u8]): rt.u8 => { + return _21130[0] ^ _21130[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z6), n), 238, (_21131: [rt.u8, rt.u8]): rt.u8 => { + return _21131[0] ^ _21131[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z6.next()), 238, (_21132: [rt.u8, rt.u8]): rt.u8 => { + return _21132[0] ^ _21132[1]; + })); + } + } else if (_31 === 3) { + const _184: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21115: rt.u8): rt.u8 => { + const x567: rt.u8 = _21115; + const _6343: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6343.value, x567 ^ 1); + rt.refMutRelease(_6343); + return x567; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21116: rt.u8): rt.u8 => { + const x568: rt.u8 = _21116; + const _6344: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6344.value, x568 ^ 2); + rt.refMutRelease(_6344); + return x568; + }), [true, true]); + const _195: rt.usize = rt.usizeRem(data.length, 8); + if (_195 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_184)))) & 0xff); + } else if (_195 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_184)))), 238, (_21125: [rt.u8, rt.u8]): rt.u8 => { + return _21125[0] ^ _21125[1]; + })); + } else if (_195 === 2) { + const _202: (a0: [rt.u8, rt.u8]) => undefined = (p71: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _194(p71)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_184))), _202); + } else if (_195 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_184))), (_21124: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21124[0] as rt.u32, _21124[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_195 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_184))), (_21123: [rt.u8, rt.u8]): rt.u8 => { + return _21123[0] ^ _21123[1]; + }), "next")), undefined, true); + } else if (_195 === 5) { + const _210: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc32: rt.u8, p70: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc32, 3) ^ _194(p70); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_184))), 0, _210)); + } else if (_195 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_184))), (_21122: [rt.u8, rt.u8]): rt.u8 => { + return _21122[0] ^ _21122[1]; + }), (x575: rt.u8): boolean => { + return x575 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_184), (_21117: [rt.u8, rt.u8]): boolean => { + return _21117[0] > _21117[1]; + }), 238, (i39: rt.usize): rt.u8 => { + return i39 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_184), (_21118: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21118[0], 3) === 0; + }), 238, (_21119: [rt.u8, rt.u8]): rt.u8 => { + return _21119[0] ^ _21119[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_184), n), 238, (_21120: [rt.u8, rt.u8]): rt.u8 => { + return _21120[0] ^ _21120[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_184.next()), 238, (_21121: [rt.u8, rt.u8]): rt.u8 => { + return _21121[0] ^ _21121[1]; + })); + } } else { - const z2: rt.Iter<[rt.u8, rt.u8]> = z; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z2, (_2292: [rt.u8, rt.u8]): boolean => { - return _2292[0] > _2292[1]; - }), 238, (i14: rt.usize): rt.u8 => { - return i14 & 0xff; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z2, (_2293: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2293[0], 3) === 0; - }), 238, (_2294: [rt.u8, rt.u8]): rt.u8 => { - return _2294[0] ^ _2294[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z2, n), 238, (_2295: [rt.u8, rt.u8]): rt.u8 => { - return _2295[0] ^ _2295[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z2.next()), 238, (_2296: [rt.u8, rt.u8]): rt.u8 => { - return _2296[0] ^ _2296[1]; - })); + const _229: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21104: rt.u8): rt.u8 => { + const x555: rt.u8 = _21104; + const _6339: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6339.value, x555 ^ 1); + rt.refMutRelease(_6339); + return x555; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21105: rt.u8): rt.u8 => { + const x556: rt.u8 = _21105; + const _6340: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6340.value, x556 ^ 2); + rt.refMutRelease(_6340); + return x556; + }), [true, true]), n); + const _241: rt.usize = rt.usizeRem(data.length, 8); + if (_241 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_229)))) & 0xff); + } else if (_241 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_229)))), 238, (_21114: [rt.u8, rt.u8]): rt.u8 => { + return _21114[0] ^ _21114[1]; + })); + } else if (_241 === 2) { + const _248: (a0: [rt.u8, rt.u8]) => undefined = (p69: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _240(p69)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_229))), _248); + } else if (_241 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_229))), (_21113: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21113[0] as rt.u32, _21113[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_241 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_229))), (_21112: [rt.u8, rt.u8]): rt.u8 => { + return _21112[0] ^ _21112[1]; + }), "next")), undefined, true); + } else if (_241 === 5) { + const _256: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc31: rt.u8, p68: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc31, 3) ^ _240(p68); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_229))), 0, _256)); + } else if (_241 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_229))), (_21111: [rt.u8, rt.u8]): rt.u8 => { + return _21111[0] ^ _21111[1]; + }), (x563: rt.u8): boolean => { + return x563 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_229), (_21106: [rt.u8, rt.u8]): boolean => { + return _21106[0] > _21106[1]; + }), 238, (i38: rt.usize): rt.u8 => { + return i38 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_229), (_21107: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21107[0], 3) === 0; + }), 238, (_21108: [rt.u8, rt.u8]): rt.u8 => { + return _21108[0] ^ _21108[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_229), n), 238, (_21109: [rt.u8, rt.u8]): rt.u8 => { + return _21109[0] ^ _21109[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_229.next()), 238, (_21110: [rt.u8, rt.u8]): rt.u8 => { + return _21110[0] ^ _21110[1]; + })); + } } } else { - const _79: rt.usize = rt.usizeRem(data.length, 8); - if (_79 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2287: rt.u8): rt.u8 => { - const x228: rt.u8 = _2287; - const _6236: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6236.value, x228 ^ 1); - rt.refMutRelease(_6236); - return x228; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2288: rt.u8): rt.u8 => { - const x229: rt.u8 = _2288; - const _6237: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6237.value, x229 ^ 2); - rt.refMutRelease(_6237); - return x229; - }), [true, true]), (_2289: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2289[0], 2) === 0; + const _274: rt.usize = rt.usizeRem(data.length, 8); + if (_274 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21101: rt.u8): rt.u8 => { + const x552: rt.u8 = _21101; + const _6337: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6337.value, x552 ^ 1); + rt.refMutRelease(_6337); + return x552; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21102: rt.u8): rt.u8 => { + const x553: rt.u8 = _21102; + const _6338: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6338.value, x553 ^ 2); + rt.refMutRelease(_6338); + return x553; + }), [true, true]), (_21103: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21103[0], 2) === 0; })) & 0xff); - } else if (_79 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2284: rt.u8): rt.u8 => { - const x225: rt.u8 = _2284; - const _6234: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6234.value, x225 ^ 1); - rt.refMutRelease(_6234); - return x225; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2285: rt.u8): rt.u8 => { - const x226: rt.u8 = _2285; - const _6235: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6235.value, x226 ^ 2); - rt.refMutRelease(_6235); - return x226; - }), [true, true]), (_2286: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2286[0], _2286[1]); + } else if (_274 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21098: rt.u8): rt.u8 => { + const x549: rt.u8 = _21098; + const _6335: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6335.value, x549 ^ 1); + rt.refMutRelease(_6335); + return x549; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21099: rt.u8): rt.u8 => { + const x550: rt.u8 = _21099; + const _6336: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6336.value, x550 ^ 2); + rt.refMutRelease(_6336); + return x550; + }), [true, true]), (_21100: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_21100[0], _21100[1]); })) & 0xff); - } else if (_79 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2281: rt.u8): rt.u8 => { - const x222: rt.u8 = _2281; - const _6232: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6232.value, x222 ^ 1); - rt.refMutRelease(_6232); - return x222; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2282: rt.u8): rt.u8 => { - const x223: rt.u8 = _2282; - const _6233: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6233.value, x223 ^ 2); - rt.refMutRelease(_6233); - return x223; - }), [true, true]), (_2283: [rt.u8, rt.u8]): boolean => { - return _2283[0] < 128; + } else if (_274 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21095: rt.u8): rt.u8 => { + const x546: rt.u8 = _21095; + const _6333: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6333.value, x546 ^ 1); + rt.refMutRelease(_6333); + return x546; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21096: rt.u8): rt.u8 => { + const x547: rt.u8 = _21096; + const _6334: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6334.value, x547 ^ 2); + rt.refMutRelease(_6334); + return x547; + }), [true, true]), (_21097: [rt.u8, rt.u8]): boolean => { + return _21097[0] < 128; })) & 0xff); - } else if (_79 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2278: rt.u8): rt.u8 => { - const x220: rt.u8 = _2278; - const _6230: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6230.value, x220 ^ 1); - rt.refMutRelease(_6230); - return x220; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2279: rt.u8): rt.u8 => { - const x221: rt.u8 = _2279; - const _6231: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6231.value, x221 ^ 2); - rt.refMutRelease(_6231); - return x221; - }), [true, true])), (_2280: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2280[0] & 0xff; + } else if (_274 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21092: rt.u8): rt.u8 => { + const x544: rt.u8 = _21092; + const _6331: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6331.value, x544 ^ 1); + rt.refMutRelease(_6331); + return x544; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21093: rt.u8): rt.u8 => { + const x545: rt.u8 = _21093; + const _6332: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6332.value, x545 ^ 2); + rt.refMutRelease(_6332); + return x545; + }), [true, true])), (_21094: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _21094[0] & 0xff; })), 238)); - } else if (_79 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2276: rt.u8): rt.u8 => { - const x218: rt.u8 = _2276; - const _6228: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6228.value, x218 ^ 1); - rt.refMutRelease(_6228); - return x218; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2277: rt.u8): rt.u8 => { - const x219: rt.u8 = _2277; - const _6229: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6229.value, x219 ^ 2); - rt.refMutRelease(_6229); - return x219; + } else if (_274 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21090: rt.u8): rt.u8 => { + const x542: rt.u8 = _21090; + const _6329: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6329.value, x542 ^ 1); + rt.refMutRelease(_6329); + return x542; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21091: rt.u8): rt.u8 => { + const x543: rt.u8 = _21091; + const _6330: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6330.value, x543 ^ 2); + rt.refMutRelease(_6330); + return x543; }), [true, true]), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_79 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2274: rt.u8): rt.u8 => { - const x216: rt.u8 = _2274; - const _6226: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6226.value, x216 ^ 1); - rt.refMutRelease(_6226); - return x216; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2275: rt.u8): rt.u8 => { - const x217: rt.u8 = _2275; - const _6227: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6227.value, x217 ^ 2); - rt.refMutRelease(_6227); - return x217; + } else if (_274 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21088: rt.u8): rt.u8 => { + const x540: rt.u8 = _21088; + const _6327: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6327.value, x540 ^ 1); + rt.refMutRelease(_6327); + return x540; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21089: rt.u8): rt.u8 => { + const x541: rt.u8 = _21089; + const _6328: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6328.value, x541 ^ 2); + rt.refMutRelease(_6328); + return x541; }), [true, true]), n, undefined, true)) & 0xff); - } else if (_79 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2272: rt.u8): rt.u8 => { - const x214: rt.u8 = _2272; - const _6224: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6224.value, x214 ^ 1); - rt.refMutRelease(_6224); - return x214; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2273: rt.u8): rt.u8 => { - const x215: rt.u8 = _2273; - const _6225: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6225.value, x215 ^ 2); - rt.refMutRelease(_6225); - return x215; + } else if (_274 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21086: rt.u8): rt.u8 => { + const x538: rt.u8 = _21086; + const _6325: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6325.value, x538 ^ 1); + rt.refMutRelease(_6325); + return x538; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21087: rt.u8): rt.u8 => { + const x539: rt.u8 = _21087; + const _6326: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6326.value, x539 ^ 2); + rt.refMutRelease(_6326); + return x539; }), [true, true]), n)) & 0xff); } else { - const p: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2270: rt.u8): rt.u8 => { - const x212: rt.u8 = _2270; - const _6222: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6222.value, x212 ^ 1); - rt.refMutRelease(_6222); - return x212; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2271: rt.u8): rt.u8 => { - const x213: rt.u8 = _2271; - const _6223: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6223.value, x213 ^ 2); - rt.refMutRelease(_6223); - return x213; + const p: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21084: rt.u8): rt.u8 => { + const x536: rt.u8 = _21084; + const _6323: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6323.value, x536 ^ 1); + rt.refMutRelease(_6323); + return x536; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21085: rt.u8): rt.u8 => { + const x537: rt.u8 = _21085; + const _6324: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6324.value, x537 ^ 2); + rt.refMutRelease(_6324); + return x537; }), [true, true])); rt.byteVecPush(out, (rt.peekablePeek(p) !== undefined ? 1 : 0) ^ (rt.iterCount(p) & 0xff)); } @@ -2152,1196 +2494,2766 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_28 === 1) { if (!other) { if ((kind & 16) === 0) { - const z3: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2259: rt.u8): rt.u8 => { - const x200: rt.u8 = _2259; - const _6218: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6218.value, x200 ^ 3); - rt.refMutRelease(_6218); - return x200; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2260: rt.u8): rt.u8 => { - const x201: rt.u8 = _2260; - const _6219: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6219.value, x201 ^ 4); - rt.refMutRelease(_6219); - return x201; + const _385: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_385 === 0) { + const z7: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21073: rt.u8): rt.u8 => { + const x524: rt.u8 = _21073; + const _6319: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6319.value, x524 ^ 3); + rt.refMutRelease(_6319); + return x524; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21074: rt.u8): rt.u8 => { + const x525: rt.u8 = _21074; + const _6320: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6320.value, x525 ^ 4); + rt.refMutRelease(_6320); + return x525; + }), "len"); + const _402: rt.usize = rt.usizeRem(data.length, 8); + if (_402 === 0) { + rt.byteVecPush(out, rt.iterCount(z7) & 0xff); + } else if (_402 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z7), 238, (_21083: [rt.u8, rt.u8]): rt.u8 => { + return _21083[0] ^ _21083[1]; + })); + } else if (_402 === 2) { + rt.iterForEach(z7, (p67: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _401(p67)); + }); + } else if (_402 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z7, (_21082: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21082[0] as rt.u32, _21082[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_402 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z7, (_21081: [rt.u8, rt.u8]): rt.u8 => { + return _21081[0] ^ _21081[1]; + }), undefined, true)), undefined, true); + } else if (_402 === 5) { + rt.byteVecPush(out, rt.iterFold(z7, 0, (acc30: rt.u8, p66: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc30, 3) ^ _401(p66); + })); + } else if (_402 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z7, (_21080: [rt.u8, rt.u8]): rt.u8 => { + return _21080[0] ^ _21080[1]; + }), (x532: rt.u8): boolean => { + return x532 === 0; + }) ? 1 : 0); + } else { + const z8: rt.Iter<[rt.u8, rt.u8]> = z7; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z8, (_21075: [rt.u8, rt.u8]): boolean => { + return _21075[0] > _21075[1]; + }), 238, (i36: rt.usize): rt.u8 => { + return i36 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z8, (_21076: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21076[0], 3) === 0; + }), 238, (_21077: [rt.u8, rt.u8]): rt.u8 => { + return _21077[0] ^ _21077[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z8, n), 238, (_21078: [rt.u8, rt.u8]): rt.u8 => { + return _21078[0] ^ _21078[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z8.next()), 238, (_21079: [rt.u8, rt.u8]): rt.u8 => { + return _21079[0] ^ _21079[1]; + })); + } + } else if (_385 === 1) { + const z9: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21062: rt.u8): rt.u8 => { + const x512: rt.u8 = _21062; + const _6315: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6315.value, x512 ^ 3); + rt.refMutRelease(_6315); + return x512; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21063: rt.u8): rt.u8 => { + const x513: rt.u8 = _21063; + const _6316: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6316.value, x513 ^ 4); + rt.refMutRelease(_6316); + return x513; + }), "len"); + const _453: rt.usize = rt.usizeRem(data.length, 8); + if (_453 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z9)) & 0xff); + } else if (_453 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z9)), 238, (_21072: [rt.u8, rt.u8]): rt.u8 => { + return _21072[0] ^ _21072[1]; + })); + } else if (_453 === 2) { + const _460: (a0: [rt.u8, rt.u8]) => undefined = (p65: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _452(p65)); + }; + rt.iterForEach(rt.iterBox(z9), _460); + } else if (_453 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z9), (_21071: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21071[0] as rt.u32, _21071[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_453 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z9), (_21070: [rt.u8, rt.u8]): rt.u8 => { + return _21070[0] ^ _21070[1]; + }), "next")), undefined, true); + } else if (_453 === 5) { + const _468: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc29: rt.u8, p64: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc29, 3) ^ _452(p64); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z9), 0, _468)); + } else if (_453 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z9), (_21069: [rt.u8, rt.u8]): rt.u8 => { + return _21069[0] ^ _21069[1]; + }), (x520: rt.u8): boolean => { + return x520 === 0; + }) ? 1 : 0); + } else { + const z10: rt.Iter<[rt.u8, rt.u8]> = z9; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z10), (_21064: [rt.u8, rt.u8]): boolean => { + return _21064[0] > _21064[1]; + }), 238, (i35: rt.usize): rt.u8 => { + return i35 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z10), (_21065: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21065[0], 3) === 0; + }), 238, (_21066: [rt.u8, rt.u8]): rt.u8 => { + return _21066[0] ^ _21066[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z10), n), 238, (_21067: [rt.u8, rt.u8]): rt.u8 => { + return _21067[0] ^ _21067[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z10.next()), 238, (_21068: [rt.u8, rt.u8]): rt.u8 => { + return _21068[0] ^ _21068[1]; + })); + } + } else if (_385 === 2) { + const z11: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21051: rt.u8): rt.u8 => { + const x500: rt.u8 = _21051; + const _6311: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6311.value, x500 ^ 3); + rt.refMutRelease(_6311); + return x500; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21052: rt.u8): rt.u8 => { + const x501: rt.u8 = _21052; + const _6312: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6312.value, x501 ^ 4); + rt.refMutRelease(_6312); + return x501; + }), "len"), n); + const _505: rt.usize = rt.usizeRem(data.length, 8); + if (_505 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z11)) & 0xff); + } else if (_505 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z11)), 238, (_21061: [rt.u8, rt.u8]): rt.u8 => { + return _21061[0] ^ _21061[1]; + })); + } else if (_505 === 2) { + const _512: (a0: [rt.u8, rt.u8]) => undefined = (p63: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _504(p63)); + }; + rt.iterForEach(rt.iterBox(z11), _512); + } else if (_505 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z11), (_21060: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21060[0] as rt.u32, _21060[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_505 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z11), (_21059: [rt.u8, rt.u8]): rt.u8 => { + return _21059[0] ^ _21059[1]; + }), "next")), undefined, true); + } else if (_505 === 5) { + const _520: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc28: rt.u8, p62: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc28, 3) ^ _504(p62); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z11), 0, _520)); + } else if (_505 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z11), (_21058: [rt.u8, rt.u8]): rt.u8 => { + return _21058[0] ^ _21058[1]; + }), (x508: rt.u8): boolean => { + return x508 === 0; + }) ? 1 : 0); + } else { + const z12: rt.Iter<[rt.u8, rt.u8]> = z11; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z12), (_21053: [rt.u8, rt.u8]): boolean => { + return _21053[0] > _21053[1]; + }), 238, (i34: rt.usize): rt.u8 => { + return i34 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z12), (_21054: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21054[0], 3) === 0; + }), 238, (_21055: [rt.u8, rt.u8]): rt.u8 => { + return _21055[0] ^ _21055[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z12), n), 238, (_21056: [rt.u8, rt.u8]): rt.u8 => { + return _21056[0] ^ _21056[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z12.next()), 238, (_21057: [rt.u8, rt.u8]): rt.u8 => { + return _21057[0] ^ _21057[1]; + })); + } + } else if (_385 === 3) { + const _544: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21040: rt.u8): rt.u8 => { + const x488: rt.u8 = _21040; + const _6307: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6307.value, x488 ^ 3); + rt.refMutRelease(_6307); + return x488; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21041: rt.u8): rt.u8 => { + const x489: rt.u8 = _21041; + const _6308: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6308.value, x489 ^ 4); + rt.refMutRelease(_6308); + return x489; + }), "len"); + const _557: rt.usize = rt.usizeRem(data.length, 8); + if (_557 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_544)))) & 0xff); + } else if (_557 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_544)))), 238, (_21050: [rt.u8, rt.u8]): rt.u8 => { + return _21050[0] ^ _21050[1]; + })); + } else if (_557 === 2) { + const _564: (a0: [rt.u8, rt.u8]) => undefined = (p61: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _556(p61)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_544))), _564); + } else if (_557 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_544))), (_21049: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21049[0] as rt.u32, _21049[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_557 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_544))), (_21048: [rt.u8, rt.u8]): rt.u8 => { + return _21048[0] ^ _21048[1]; + }), "next")), undefined, true); + } else if (_557 === 5) { + const _572: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc27: rt.u8, p60: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc27, 3) ^ _556(p60); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_544))), 0, _572)); + } else if (_557 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_544))), (_21047: [rt.u8, rt.u8]): rt.u8 => { + return _21047[0] ^ _21047[1]; + }), (x496: rt.u8): boolean => { + return x496 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_544), (_21042: [rt.u8, rt.u8]): boolean => { + return _21042[0] > _21042[1]; + }), 238, (i33: rt.usize): rt.u8 => { + return i33 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_544), (_21043: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21043[0], 3) === 0; + }), 238, (_21044: [rt.u8, rt.u8]): rt.u8 => { + return _21044[0] ^ _21044[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_544), n), 238, (_21045: [rt.u8, rt.u8]): rt.u8 => { + return _21045[0] ^ _21045[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_544.next()), 238, (_21046: [rt.u8, rt.u8]): rt.u8 => { + return _21046[0] ^ _21046[1]; + })); + } + } else { + const _591: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21029: rt.u8): rt.u8 => { + const x476: rt.u8 = _21029; + const _6303: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6303.value, x476 ^ 3); + rt.refMutRelease(_6303); + return x476; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21030: rt.u8): rt.u8 => { + const x477: rt.u8 = _21030; + const _6304: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6304.value, x477 ^ 4); + rt.refMutRelease(_6304); + return x477; + }), "len"), n); + const _605: rt.usize = rt.usizeRem(data.length, 8); + if (_605 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_591)))) & 0xff); + } else if (_605 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_591)))), 238, (_21039: [rt.u8, rt.u8]): rt.u8 => { + return _21039[0] ^ _21039[1]; + })); + } else if (_605 === 2) { + const _612: (a0: [rt.u8, rt.u8]) => undefined = (p59: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _604(p59)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_591))), _612); + } else if (_605 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_591))), (_21038: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21038[0] as rt.u32, _21038[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_605 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_591))), (_21037: [rt.u8, rt.u8]): rt.u8 => { + return _21037[0] ^ _21037[1]; + }), "next")), undefined, true); + } else if (_605 === 5) { + const _620: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc26: rt.u8, p58: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc26, 3) ^ _604(p58); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_591))), 0, _620)); + } else if (_605 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_591))), (_21036: [rt.u8, rt.u8]): rt.u8 => { + return _21036[0] ^ _21036[1]; + }), (x484: rt.u8): boolean => { + return x484 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_591), (_21031: [rt.u8, rt.u8]): boolean => { + return _21031[0] > _21031[1]; + }), 238, (i32: rt.usize): rt.u8 => { + return i32 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_591), (_21032: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21032[0], 3) === 0; + }), 238, (_21033: [rt.u8, rt.u8]): rt.u8 => { + return _21033[0] ^ _21033[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_591), n), 238, (_21034: [rt.u8, rt.u8]): rt.u8 => { + return _21034[0] ^ _21034[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_591.next()), 238, (_21035: [rt.u8, rt.u8]): rt.u8 => { + return _21035[0] ^ _21035[1]; + })); + } + } + } else { + const _638: rt.usize = rt.usizeRem(data.length, 8); + if (_638 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21026: rt.u8): rt.u8 => { + const x473: rt.u8 = _21026; + const _6301: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6301.value, x473 ^ 3); + rt.refMutRelease(_6301); + return x473; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21027: rt.u8): rt.u8 => { + const x474: rt.u8 = _21027; + const _6302: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6302.value, x474 ^ 4); + rt.refMutRelease(_6302); + return x474; + }), "len"), (_21028: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21028[0], 2) === 0; + })) & 0xff); + } else if (_638 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21023: rt.u8): rt.u8 => { + const x470: rt.u8 = _21023; + const _6299: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6299.value, x470 ^ 3); + rt.refMutRelease(_6299); + return x470; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21024: rt.u8): rt.u8 => { + const x471: rt.u8 = _21024; + const _6300: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6300.value, x471 ^ 4); + rt.refMutRelease(_6300); + return x471; + }), "len"), (_21025: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_21025[0], _21025[1]); + })) & 0xff); + } else if (_638 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21020: rt.u8): rt.u8 => { + const x467: rt.u8 = _21020; + const _6297: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6297.value, x467 ^ 3); + rt.refMutRelease(_6297); + return x467; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21021: rt.u8): rt.u8 => { + const x468: rt.u8 = _21021; + const _6298: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6298.value, x468 ^ 4); + rt.refMutRelease(_6298); + return x468; + }), "len"), (_21022: [rt.u8, rt.u8]): boolean => { + return _21022[0] < 128; + })) & 0xff); + } else if (_638 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21017: rt.u8): rt.u8 => { + const x465: rt.u8 = _21017; + const _6295: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6295.value, x465 ^ 3); + rt.refMutRelease(_6295); + return x465; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21018: rt.u8): rt.u8 => { + const x466: rt.u8 = _21018; + const _6296: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6296.value, x466 ^ 4); + rt.refMutRelease(_6296); + return x466; + }), "len")), (_21019: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _21019[0] & 0xff; + })), 238)); + } else if (_638 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21015: rt.u8): rt.u8 => { + const x463: rt.u8 = _21015; + const _6293: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6293.value, x463 ^ 3); + rt.refMutRelease(_6293); + return x463; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21016: rt.u8): rt.u8 => { + const x464: rt.u8 = _21016; + const _6294: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6294.value, x464 ^ 4); + rt.refMutRelease(_6294); + return x464; + }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_638 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21013: rt.u8): rt.u8 => { + const x461: rt.u8 = _21013; + const _6291: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6291.value, x461 ^ 3); + rt.refMutRelease(_6291); + return x461; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21014: rt.u8): rt.u8 => { + const x462: rt.u8 = _21014; + const _6292: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6292.value, x462 ^ 4); + rt.refMutRelease(_6292); + return x462; + }), "len"), n)) & 0xff); + } else if (_638 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21011: rt.u8): rt.u8 => { + const x459: rt.u8 = _21011; + const _6289: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6289.value, x459 ^ 3); + rt.refMutRelease(_6289); + return x459; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21012: rt.u8): rt.u8 => { + const x460: rt.u8 = _21012; + const _6290: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6290.value, x460 ^ 4); + rt.refMutRelease(_6290); + return x460; + }), "len"), n)) & 0xff); + } else { + const p2: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21009: rt.u8): rt.u8 => { + const x457: rt.u8 = _21009; + const _6287: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6287.value, x457 ^ 3); + rt.refMutRelease(_6287); + return x457; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21010: rt.u8): rt.u8 => { + const x458: rt.u8 = _21010; + const _6288: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6288.value, x458 ^ 4); + rt.refMutRelease(_6288); + return x458; + }), "len")); + rt.byteVecPush(out, (rt.peekablePeek(p2) !== undefined ? 1 : 0) ^ (rt.iterCount(p2) & 0xff)); + } + } + } else if ((kind & 16) === 0) { + const _765: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_765 === 0) { + const z13: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2998: rt.u8): rt.u8 => { + const x445: rt.u8 = _2998; + const _6283: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6283.value, x445 ^ 5); + rt.refMutRelease(_6283); + return x445; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2999: rt.u8): rt.u8 => { + const x446: rt.u8 = _2999; + const _6284: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6284.value, x446 ^ 6); + rt.refMutRelease(_6284); + return x446; }), "len"); - const _202: rt.usize = rt.usizeRem(data.length, 8); - if (_202 === 0) { - rt.byteVecPush(out, rt.iterCount(z3) & 0xff); - } else if (_202 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z3), 238, (_2269: [rt.u8, rt.u8]): rt.u8 => { - return _2269[0] ^ _2269[1]; + const _784: rt.usize = rt.usizeRem(data.length, 8); + if (_784 === 0) { + rt.byteVecPush(out, rt.iterCount(z13) & 0xff); + } else if (_784 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z13), 238, (_21008: [rt.u8, rt.u8]): rt.u8 => { + return _21008[0] ^ _21008[1]; })); - } else if (_202 === 2) { - rt.iterForEach(z3, (p19: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _201(p19)); + } else if (_784 === 2) { + rt.iterForEach(z13, (p57: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _783(p57)); }); - } else if (_202 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z3, (_2268: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2268[0] as rt.u32, _2268[1] as rt.u32); + } else if (_784 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z13, (_21007: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21007[0] as rt.u32, _21007[1] as rt.u32); }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_202 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z3, (_2267: [rt.u8, rt.u8]): rt.u8 => { - return _2267[0] ^ _2267[1]; + } else if (_784 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z13, (_21006: [rt.u8, rt.u8]): rt.u8 => { + return _21006[0] ^ _21006[1]; }), undefined, true)), undefined, true); - } else if (_202 === 5) { - rt.byteVecPush(out, rt.iterFold(z3, 0, (acc6: rt.u8, p18: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc6, 3) ^ _201(p18); + } else if (_784 === 5) { + rt.byteVecPush(out, rt.iterFold(z13, 0, (acc25: rt.u8, p56: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc25, 3) ^ _783(p56); })); - } else if (_202 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z3, (_2266: [rt.u8, rt.u8]): rt.u8 => { - return _2266[0] ^ _2266[1]; - }), (x208: rt.u8): boolean => { - return x208 === 0; + } else if (_784 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z13, (_21005: [rt.u8, rt.u8]): rt.u8 => { + return _21005[0] ^ _21005[1]; + }), (x453: rt.u8): boolean => { + return x453 === 0; }) ? 1 : 0); } else { - const z4: rt.Iter<[rt.u8, rt.u8]> = z3; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z4, (_2261: [rt.u8, rt.u8]): boolean => { - return _2261[0] > _2261[1]; - }), 238, (i12: rt.usize): rt.u8 => { - return i12 & 0xff; + const z14: rt.Iter<[rt.u8, rt.u8]> = z13; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z14, (_21000: [rt.u8, rt.u8]): boolean => { + return _21000[0] > _21000[1]; + }), 238, (i30: rt.usize): rt.u8 => { + return i30 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z14, (_21001: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21001[0], 3) === 0; + }), 238, (_21002: [rt.u8, rt.u8]): rt.u8 => { + return _21002[0] ^ _21002[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z14, n), 238, (_21003: [rt.u8, rt.u8]): rt.u8 => { + return _21003[0] ^ _21003[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z14.next()), 238, (_21004: [rt.u8, rt.u8]): rt.u8 => { + return _21004[0] ^ _21004[1]; + })); + } + } else if (_765 === 1) { + const z15: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2987: rt.u8): rt.u8 => { + const x433: rt.u8 = _2987; + const _6279: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6279.value, x433 ^ 5); + rt.refMutRelease(_6279); + return x433; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2988: rt.u8): rt.u8 => { + const x434: rt.u8 = _2988; + const _6280: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6280.value, x434 ^ 6); + rt.refMutRelease(_6280); + return x434; + }), "len"); + const _837: rt.usize = rt.usizeRem(data.length, 8); + if (_837 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z15)) & 0xff); + } else if (_837 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z15)), 238, (_2997: [rt.u8, rt.u8]): rt.u8 => { + return _2997[0] ^ _2997[1]; + })); + } else if (_837 === 2) { + const _844: (a0: [rt.u8, rt.u8]) => undefined = (p55: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _836(p55)); + }; + rt.iterForEach(rt.iterBox(z15), _844); + } else if (_837 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z15), (_2996: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2996[0] as rt.u32, _2996[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_837 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z15), (_2995: [rt.u8, rt.u8]): rt.u8 => { + return _2995[0] ^ _2995[1]; + }), "next")), undefined, true); + } else if (_837 === 5) { + const _852: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc24: rt.u8, p54: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc24, 3) ^ _836(p54); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z15), 0, _852)); + } else if (_837 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z15), (_2994: [rt.u8, rt.u8]): rt.u8 => { + return _2994[0] ^ _2994[1]; + }), (x441: rt.u8): boolean => { + return x441 === 0; + }) ? 1 : 0); + } else { + const z16: rt.Iter<[rt.u8, rt.u8]> = z15; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z16), (_2989: [rt.u8, rt.u8]): boolean => { + return _2989[0] > _2989[1]; + }), 238, (i29: rt.usize): rt.u8 => { + return i29 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z16), (_2990: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2990[0], 3) === 0; + }), 238, (_2991: [rt.u8, rt.u8]): rt.u8 => { + return _2991[0] ^ _2991[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z16), n), 238, (_2992: [rt.u8, rt.u8]): rt.u8 => { + return _2992[0] ^ _2992[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z16.next()), 238, (_2993: [rt.u8, rt.u8]): rt.u8 => { + return _2993[0] ^ _2993[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z4, (_2262: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2262[0], 3) === 0; - }), 238, (_2263: [rt.u8, rt.u8]): rt.u8 => { - return _2263[0] ^ _2263[1]; + } + } else if (_765 === 2) { + const z17: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2976: rt.u8): rt.u8 => { + const x421: rt.u8 = _2976; + const _6275: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6275.value, x421 ^ 5); + rt.refMutRelease(_6275); + return x421; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2977: rt.u8): rt.u8 => { + const x422: rt.u8 = _2977; + const _6276: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6276.value, x422 ^ 6); + rt.refMutRelease(_6276); + return x422; + }), "len"), n); + const _891: rt.usize = rt.usizeRem(data.length, 8); + if (_891 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z17)) & 0xff); + } else if (_891 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z17)), 238, (_2986: [rt.u8, rt.u8]): rt.u8 => { + return _2986[0] ^ _2986[1]; + })); + } else if (_891 === 2) { + const _898: (a0: [rt.u8, rt.u8]) => undefined = (p53: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _890(p53)); + }; + rt.iterForEach(rt.iterBox(z17), _898); + } else if (_891 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z17), (_2985: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2985[0] as rt.u32, _2985[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_891 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z17), (_2984: [rt.u8, rt.u8]): rt.u8 => { + return _2984[0] ^ _2984[1]; + }), "next")), undefined, true); + } else if (_891 === 5) { + const _906: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc23: rt.u8, p52: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc23, 3) ^ _890(p52); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z17), 0, _906)); + } else if (_891 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z17), (_2983: [rt.u8, rt.u8]): rt.u8 => { + return _2983[0] ^ _2983[1]; + }), (x429: rt.u8): boolean => { + return x429 === 0; + }) ? 1 : 0); + } else { + const z18: rt.Iter<[rt.u8, rt.u8]> = z17; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z18), (_2978: [rt.u8, rt.u8]): boolean => { + return _2978[0] > _2978[1]; + }), 238, (i28: rt.usize): rt.u8 => { + return i28 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z18), (_2979: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2979[0], 3) === 0; + }), 238, (_2980: [rt.u8, rt.u8]): rt.u8 => { + return _2980[0] ^ _2980[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z4, n), 238, (_2264: [rt.u8, rt.u8]): rt.u8 => { - return _2264[0] ^ _2264[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z18), n), 238, (_2981: [rt.u8, rt.u8]): rt.u8 => { + return _2981[0] ^ _2981[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z4.next()), 238, (_2265: [rt.u8, rt.u8]): rt.u8 => { - return _2265[0] ^ _2265[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z18.next()), 238, (_2982: [rt.u8, rt.u8]): rt.u8 => { + return _2982[0] ^ _2982[1]; + })); + } + } else if (_765 === 3) { + const _930: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2965: rt.u8): rt.u8 => { + const x409: rt.u8 = _2965; + const _6271: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6271.value, x409 ^ 5); + rt.refMutRelease(_6271); + return x409; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2966: rt.u8): rt.u8 => { + const x410: rt.u8 = _2966; + const _6272: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6272.value, x410 ^ 6); + rt.refMutRelease(_6272); + return x410; + }), "len"); + const _945: rt.usize = rt.usizeRem(data.length, 8); + if (_945 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_930)))) & 0xff); + } else if (_945 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_930)))), 238, (_2975: [rt.u8, rt.u8]): rt.u8 => { + return _2975[0] ^ _2975[1]; + })); + } else if (_945 === 2) { + const _952: (a0: [rt.u8, rt.u8]) => undefined = (p51: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _944(p51)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_930))), _952); + } else if (_945 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_930))), (_2974: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2974[0] as rt.u32, _2974[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_945 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_930))), (_2973: [rt.u8, rt.u8]): rt.u8 => { + return _2973[0] ^ _2973[1]; + }), "next")), undefined, true); + } else if (_945 === 5) { + const _960: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc22: rt.u8, p50: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc22, 3) ^ _944(p50); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_930))), 0, _960)); + } else if (_945 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_930))), (_2972: [rt.u8, rt.u8]): rt.u8 => { + return _2972[0] ^ _2972[1]; + }), (x417: rt.u8): boolean => { + return x417 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_930), (_2967: [rt.u8, rt.u8]): boolean => { + return _2967[0] > _2967[1]; + }), 238, (i27: rt.usize): rt.u8 => { + return i27 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_930), (_2968: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2968[0], 3) === 0; + }), 238, (_2969: [rt.u8, rt.u8]): rt.u8 => { + return _2969[0] ^ _2969[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_930), n), 238, (_2970: [rt.u8, rt.u8]): rt.u8 => { + return _2970[0] ^ _2970[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_930.next()), 238, (_2971: [rt.u8, rt.u8]): rt.u8 => { + return _2971[0] ^ _2971[1]; })); } } else { - const _240: rt.usize = rt.usizeRem(data.length, 8); - if (_240 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2256: rt.u8): rt.u8 => { - const x197: rt.u8 = _2256; - const _6216: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6216.value, x197 ^ 3); - rt.refMutRelease(_6216); - return x197; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2257: rt.u8): rt.u8 => { - const x198: rt.u8 = _2257; - const _6217: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6217.value, x198 ^ 4); - rt.refMutRelease(_6217); - return x198; - }), "len"), (_2258: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2258[0], 2) === 0; + const _979: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2954: rt.u8): rt.u8 => { + const x397: rt.u8 = _2954; + const _6267: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6267.value, x397 ^ 5); + rt.refMutRelease(_6267); + return x397; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2955: rt.u8): rt.u8 => { + const x398: rt.u8 = _2955; + const _6268: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6268.value, x398 ^ 6); + rt.refMutRelease(_6268); + return x398; + }), "len"), n); + const _995: rt.usize = rt.usizeRem(data.length, 8); + if (_995 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_979)))) & 0xff); + } else if (_995 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_979)))), 238, (_2964: [rt.u8, rt.u8]): rt.u8 => { + return _2964[0] ^ _2964[1]; + })); + } else if (_995 === 2) { + const _1002: (a0: [rt.u8, rt.u8]) => undefined = (p49: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _994(p49)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_979))), _1002); + } else if (_995 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_979))), (_2963: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2963[0] as rt.u32, _2963[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_995 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_979))), (_2962: [rt.u8, rt.u8]): rt.u8 => { + return _2962[0] ^ _2962[1]; + }), "next")), undefined, true); + } else if (_995 === 5) { + const _1010: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc21: rt.u8, p48: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc21, 3) ^ _994(p48); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_979))), 0, _1010)); + } else if (_995 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_979))), (_2961: [rt.u8, rt.u8]): rt.u8 => { + return _2961[0] ^ _2961[1]; + }), (x405: rt.u8): boolean => { + return x405 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_979), (_2956: [rt.u8, rt.u8]): boolean => { + return _2956[0] > _2956[1]; + }), 238, (i26: rt.usize): rt.u8 => { + return i26 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_979), (_2957: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2957[0], 3) === 0; + }), 238, (_2958: [rt.u8, rt.u8]): rt.u8 => { + return _2958[0] ^ _2958[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_979), n), 238, (_2959: [rt.u8, rt.u8]): rt.u8 => { + return _2959[0] ^ _2959[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_979.next()), 238, (_2960: [rt.u8, rt.u8]): rt.u8 => { + return _2960[0] ^ _2960[1]; + })); + } + } + } else { + const _1028: rt.usize = rt.usizeRem(data.length, 8); + if (_1028 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2951: rt.u8): rt.u8 => { + const x394: rt.u8 = _2951; + const _6265: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6265.value, x394 ^ 5); + rt.refMutRelease(_6265); + return x394; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2952: rt.u8): rt.u8 => { + const x395: rt.u8 = _2952; + const _6266: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6266.value, x395 ^ 6); + rt.refMutRelease(_6266); + return x395; + }), "len"), (_2953: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2953[0], 2) === 0; + })) & 0xff); + } else if (_1028 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2948: rt.u8): rt.u8 => { + const x391: rt.u8 = _2948; + const _6263: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6263.value, x391 ^ 5); + rt.refMutRelease(_6263); + return x391; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2949: rt.u8): rt.u8 => { + const x392: rt.u8 = _2949; + const _6264: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6264.value, x392 ^ 6); + rt.refMutRelease(_6264); + return x392; + }), "len"), (_2950: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2950[0], _2950[1]); + })) & 0xff); + } else if (_1028 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2945: rt.u8): rt.u8 => { + const x388: rt.u8 = _2945; + const _6261: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6261.value, x388 ^ 5); + rt.refMutRelease(_6261); + return x388; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2946: rt.u8): rt.u8 => { + const x389: rt.u8 = _2946; + const _6262: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6262.value, x389 ^ 6); + rt.refMutRelease(_6262); + return x389; + }), "len"), (_2947: [rt.u8, rt.u8]): boolean => { + return _2947[0] < 128; + })) & 0xff); + } else if (_1028 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2942: rt.u8): rt.u8 => { + const x386: rt.u8 = _2942; + const _6259: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6259.value, x386 ^ 5); + rt.refMutRelease(_6259); + return x386; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2943: rt.u8): rt.u8 => { + const x387: rt.u8 = _2943; + const _6260: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6260.value, x387 ^ 6); + rt.refMutRelease(_6260); + return x387; + }), "len")), (_2944: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2944[0] & 0xff; + })), 238)); + } else if (_1028 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2940: rt.u8): rt.u8 => { + const x384: rt.u8 = _2940; + const _6257: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6257.value, x384 ^ 5); + rt.refMutRelease(_6257); + return x384; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2941: rt.u8): rt.u8 => { + const x385: rt.u8 = _2941; + const _6258: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6258.value, x385 ^ 6); + rt.refMutRelease(_6258); + return x385; + }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_1028 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2938: rt.u8): rt.u8 => { + const x382: rt.u8 = _2938; + const _6255: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6255.value, x382 ^ 5); + rt.refMutRelease(_6255); + return x382; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2939: rt.u8): rt.u8 => { + const x383: rt.u8 = _2939; + const _6256: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6256.value, x383 ^ 6); + rt.refMutRelease(_6256); + return x383; + }), "len"), n)) & 0xff); + } else if (_1028 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2936: rt.u8): rt.u8 => { + const x380: rt.u8 = _2936; + const _6253: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6253.value, x380 ^ 5); + rt.refMutRelease(_6253); + return x380; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2937: rt.u8): rt.u8 => { + const x381: rt.u8 = _2937; + const _6254: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6254.value, x381 ^ 6); + rt.refMutRelease(_6254); + return x381; + }), "len"), n)) & 0xff); + } else { + const p3: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2934: rt.u8): rt.u8 => { + const x378: rt.u8 = _2934; + const _6251: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6251.value, x378 ^ 5); + rt.refMutRelease(_6251); + return x378; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2935: rt.u8): rt.u8 => { + const x379: rt.u8 = _2935; + const _6252: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6252.value, x379 ^ 6); + rt.refMutRelease(_6252); + return x379; + }), "len")); + rt.byteVecPush(out, (rt.peekablePeek(p3) !== undefined ? 1 : 0) ^ (rt.iterCount(p3) & 0xff)); + } + } + } else if (_28 === 2) { + if (!other) { + if ((kind & 16) === 0) { + const _1171: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_1171 === 0) { + const z19: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x366: rt.u8): rt.u8 => { + const _6247: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6247.value, x366 ^ 7); + rt.refMutRelease(_6247); + return x366; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x367: rt.u8): rt.u8 => { + const _6248: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6248.value, x367 ^ 8); + rt.refMutRelease(_6248); + return x367; + }), "index"); + const _1188: rt.usize = rt.usizeRem(data.length, 8); + if (_1188 === 0) { + rt.byteVecPush(out, rt.iterCount(z19) & 0xff); + } else if (_1188 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z19), 238, (_2933: [rt.u8, rt.u8]): rt.u8 => { + return _2933[0] ^ _2933[1]; + })); + } else if (_1188 === 2) { + rt.iterForEach(z19, (p47: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1187(p47)); + }); + } else if (_1188 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z19, (_2932: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2932[0] as rt.u32, _2932[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1188 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z19, (_2931: [rt.u8, rt.u8]): rt.u8 => { + return _2931[0] ^ _2931[1]; + }), "index", true, 1)), undefined, true); + } else if (_1188 === 5) { + rt.byteVecPush(out, rt.iterFold(z19, 0, (acc20: rt.u8, p46: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc20, 3) ^ _1187(p46); + })); + } else if (_1188 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z19, (_2930: [rt.u8, rt.u8]): rt.u8 => { + return _2930[0] ^ _2930[1]; + }), (x374: rt.u8): boolean => { + return x374 === 0; + }) ? 1 : 0); + } else { + const z20: rt.Iter<[rt.u8, rt.u8]> = z19; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z20, (_2925: [rt.u8, rt.u8]): boolean => { + return _2925[0] > _2925[1]; + }), 238, (i24: rt.usize): rt.u8 => { + return i24 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z20, (_2926: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2926[0], 3) === 0; + }), 238, (_2927: [rt.u8, rt.u8]): rt.u8 => { + return _2927[0] ^ _2927[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z20, n), 238, (_2928: [rt.u8, rt.u8]): rt.u8 => { + return _2928[0] ^ _2928[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z20.next()), 238, (_2929: [rt.u8, rt.u8]): rt.u8 => { + return _2929[0] ^ _2929[1]; + })); + } + } else if (_1171 === 1) { + const z21: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x354: rt.u8): rt.u8 => { + const _6243: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6243.value, x354 ^ 7); + rt.refMutRelease(_6243); + return x354; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x355: rt.u8): rt.u8 => { + const _6244: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6244.value, x355 ^ 8); + rt.refMutRelease(_6244); + return x355; + }), "index"); + const _1239: rt.usize = rt.usizeRem(data.length, 8); + if (_1239 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z21)) & 0xff); + } else if (_1239 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z21)), 238, (_2924: [rt.u8, rt.u8]): rt.u8 => { + return _2924[0] ^ _2924[1]; + })); + } else if (_1239 === 2) { + const _1246: (a0: [rt.u8, rt.u8]) => undefined = (p45: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1238(p45)); + }; + rt.iterForEach(rt.iterBox(z21), _1246); + } else if (_1239 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z21), (_2923: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2923[0] as rt.u32, _2923[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1239 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z21), (_2922: [rt.u8, rt.u8]): rt.u8 => { + return _2922[0] ^ _2922[1]; + }), "next")), undefined, true); + } else if (_1239 === 5) { + const _1254: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc19: rt.u8, p44: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc19, 3) ^ _1238(p44); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z21), 0, _1254)); + } else if (_1239 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z21), (_2921: [rt.u8, rt.u8]): rt.u8 => { + return _2921[0] ^ _2921[1]; + }), (x362: rt.u8): boolean => { + return x362 === 0; + }) ? 1 : 0); + } else { + const z22: rt.Iter<[rt.u8, rt.u8]> = z21; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z22), (_2916: [rt.u8, rt.u8]): boolean => { + return _2916[0] > _2916[1]; + }), 238, (i23: rt.usize): rt.u8 => { + return i23 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z22), (_2917: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2917[0], 3) === 0; + }), 238, (_2918: [rt.u8, rt.u8]): rt.u8 => { + return _2918[0] ^ _2918[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z22), n), 238, (_2919: [rt.u8, rt.u8]): rt.u8 => { + return _2919[0] ^ _2919[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z22.next()), 238, (_2920: [rt.u8, rt.u8]): rt.u8 => { + return _2920[0] ^ _2920[1]; + })); + } + } else if (_1171 === 2) { + const z23: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x342: rt.u8): rt.u8 => { + const _6239: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6239.value, x342 ^ 7); + rt.refMutRelease(_6239); + return x342; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x343: rt.u8): rt.u8 => { + const _6240: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6240.value, x343 ^ 8); + rt.refMutRelease(_6240); + return x343; + }), "index"), n); + const _1291: rt.usize = rt.usizeRem(data.length, 8); + if (_1291 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z23)) & 0xff); + } else if (_1291 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z23)), 238, (_2915: [rt.u8, rt.u8]): rt.u8 => { + return _2915[0] ^ _2915[1]; + })); + } else if (_1291 === 2) { + const _1298: (a0: [rt.u8, rt.u8]) => undefined = (p43: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1290(p43)); + }; + rt.iterForEach(rt.iterBox(z23), _1298); + } else if (_1291 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z23), (_2914: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2914[0] as rt.u32, _2914[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1291 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z23), (_2913: [rt.u8, rt.u8]): rt.u8 => { + return _2913[0] ^ _2913[1]; + }), "next")), undefined, true); + } else if (_1291 === 5) { + const _1306: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc18: rt.u8, p42: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc18, 3) ^ _1290(p42); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z23), 0, _1306)); + } else if (_1291 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z23), (_2912: [rt.u8, rt.u8]): rt.u8 => { + return _2912[0] ^ _2912[1]; + }), (x350: rt.u8): boolean => { + return x350 === 0; + }) ? 1 : 0); + } else { + const z24: rt.Iter<[rt.u8, rt.u8]> = z23; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z24), (_2907: [rt.u8, rt.u8]): boolean => { + return _2907[0] > _2907[1]; + }), 238, (i22: rt.usize): rt.u8 => { + return i22 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z24), (_2908: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2908[0], 3) === 0; + }), 238, (_2909: [rt.u8, rt.u8]): rt.u8 => { + return _2909[0] ^ _2909[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z24), n), 238, (_2910: [rt.u8, rt.u8]): rt.u8 => { + return _2910[0] ^ _2910[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z24.next()), 238, (_2911: [rt.u8, rt.u8]): rt.u8 => { + return _2911[0] ^ _2911[1]; + })); + } + } else if (_1171 === 3) { + const _1330: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x330: rt.u8): rt.u8 => { + const _6235: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6235.value, x330 ^ 7); + rt.refMutRelease(_6235); + return x330; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x331: rt.u8): rt.u8 => { + const _6236: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6236.value, x331 ^ 8); + rt.refMutRelease(_6236); + return x331; + }), "index"); + const _1343: rt.usize = rt.usizeRem(data.length, 8); + if (_1343 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1330)))) & 0xff); + } else if (_1343 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1330)))), 238, (_2906: [rt.u8, rt.u8]): rt.u8 => { + return _2906[0] ^ _2906[1]; + })); + } else if (_1343 === 2) { + const _1350: (a0: [rt.u8, rt.u8]) => undefined = (p41: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1342(p41)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1330))), _1350); + } else if (_1343 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1330))), (_2905: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2905[0] as rt.u32, _2905[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1343 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1330))), (_2904: [rt.u8, rt.u8]): rt.u8 => { + return _2904[0] ^ _2904[1]; + }), "next")), undefined, true); + } else if (_1343 === 5) { + const _1358: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc17: rt.u8, p40: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc17, 3) ^ _1342(p40); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1330))), 0, _1358)); + } else if (_1343 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1330))), (_2903: [rt.u8, rt.u8]): rt.u8 => { + return _2903[0] ^ _2903[1]; + }), (x338: rt.u8): boolean => { + return x338 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_1330), (_2898: [rt.u8, rt.u8]): boolean => { + return _2898[0] > _2898[1]; + }), 238, (i21: rt.usize): rt.u8 => { + return i21 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_1330), (_2899: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2899[0], 3) === 0; + }), 238, (_2900: [rt.u8, rt.u8]): rt.u8 => { + return _2900[0] ^ _2900[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_1330), n), 238, (_2901: [rt.u8, rt.u8]): rt.u8 => { + return _2901[0] ^ _2901[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_1330.next()), 238, (_2902: [rt.u8, rt.u8]): rt.u8 => { + return _2902[0] ^ _2902[1]; + })); + } + } else { + const _1377: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x318: rt.u8): rt.u8 => { + const _6231: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6231.value, x318 ^ 7); + rt.refMutRelease(_6231); + return x318; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x319: rt.u8): rt.u8 => { + const _6232: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6232.value, x319 ^ 8); + rt.refMutRelease(_6232); + return x319; + }), "index"), n); + const _1391: rt.usize = rt.usizeRem(data.length, 8); + if (_1391 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1377)))) & 0xff); + } else if (_1391 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1377)))), 238, (_2897: [rt.u8, rt.u8]): rt.u8 => { + return _2897[0] ^ _2897[1]; + })); + } else if (_1391 === 2) { + const _1398: (a0: [rt.u8, rt.u8]) => undefined = (p39: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1390(p39)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1377))), _1398); + } else if (_1391 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1377))), (_2896: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2896[0] as rt.u32, _2896[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1391 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1377))), (_2895: [rt.u8, rt.u8]): rt.u8 => { + return _2895[0] ^ _2895[1]; + }), "next")), undefined, true); + } else if (_1391 === 5) { + const _1406: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc16: rt.u8, p38: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc16, 3) ^ _1390(p38); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1377))), 0, _1406)); + } else if (_1391 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1377))), (_2894: [rt.u8, rt.u8]): rt.u8 => { + return _2894[0] ^ _2894[1]; + }), (x326: rt.u8): boolean => { + return x326 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_1377), (_2889: [rt.u8, rt.u8]): boolean => { + return _2889[0] > _2889[1]; + }), 238, (i20: rt.usize): rt.u8 => { + return i20 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_1377), (_2890: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2890[0], 3) === 0; + }), 238, (_2891: [rt.u8, rt.u8]): rt.u8 => { + return _2891[0] ^ _2891[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_1377), n), 238, (_2892: [rt.u8, rt.u8]): rt.u8 => { + return _2892[0] ^ _2892[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_1377.next()), 238, (_2893: [rt.u8, rt.u8]): rt.u8 => { + return _2893[0] ^ _2893[1]; + })); + } + } + } else { + const _1424: rt.usize = rt.usizeRem(data.length, 8); + if (_1424 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x315: rt.u8): rt.u8 => { + const _6229: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6229.value, x315 ^ 7); + rt.refMutRelease(_6229); + return x315; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x316: rt.u8): rt.u8 => { + const _6230: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6230.value, x316 ^ 8); + rt.refMutRelease(_6230); + return x316; + }), "index"), (_2888: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2888[0], 2) === 0; })) & 0xff); - } else if (_240 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2253: rt.u8): rt.u8 => { - const x194: rt.u8 = _2253; - const _6214: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6214.value, x194 ^ 3); - rt.refMutRelease(_6214); - return x194; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2254: rt.u8): rt.u8 => { - const x195: rt.u8 = _2254; - const _6215: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6215.value, x195 ^ 4); - rt.refMutRelease(_6215); - return x195; - }), "len"), (_2255: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2255[0], _2255[1]); + } else if (_1424 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x312: rt.u8): rt.u8 => { + const _6227: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6227.value, x312 ^ 7); + rt.refMutRelease(_6227); + return x312; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x313: rt.u8): rt.u8 => { + const _6228: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6228.value, x313 ^ 8); + rt.refMutRelease(_6228); + return x313; + }), "index"), (_2887: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2887[0], _2887[1]); })) & 0xff); - } else if (_240 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2250: rt.u8): rt.u8 => { - const x191: rt.u8 = _2250; - const _6212: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6212.value, x191 ^ 3); - rt.refMutRelease(_6212); - return x191; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2251: rt.u8): rt.u8 => { - const x192: rt.u8 = _2251; - const _6213: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6213.value, x192 ^ 4); - rt.refMutRelease(_6213); - return x192; - }), "len"), (_2252: [rt.u8, rt.u8]): boolean => { - return _2252[0] < 128; + } else if (_1424 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x309: rt.u8): rt.u8 => { + const _6225: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6225.value, x309 ^ 7); + rt.refMutRelease(_6225); + return x309; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x310: rt.u8): rt.u8 => { + const _6226: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6226.value, x310 ^ 8); + rt.refMutRelease(_6226); + return x310; + }), "index"), (_2886: [rt.u8, rt.u8]): boolean => { + return _2886[0] < 128; })) & 0xff); - } else if (_240 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2247: rt.u8): rt.u8 => { - const x189: rt.u8 = _2247; - const _6210: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6210.value, x189 ^ 3); - rt.refMutRelease(_6210); - return x189; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2248: rt.u8): rt.u8 => { - const x190: rt.u8 = _2248; - const _6211: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6211.value, x190 ^ 4); - rt.refMutRelease(_6211); - return x190; - }), "len")), (_2249: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2249[0] & 0xff; + } else if (_1424 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x307: rt.u8): rt.u8 => { + const _6223: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6223.value, x307 ^ 7); + rt.refMutRelease(_6223); + return x307; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x308: rt.u8): rt.u8 => { + const _6224: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6224.value, x308 ^ 8); + rt.refMutRelease(_6224); + return x308; + }), "index")), (_2885: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2885[0] & 0xff; })), 238)); - } else if (_240 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2245: rt.u8): rt.u8 => { - const x187: rt.u8 = _2245; - const _6208: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6208.value, x187 ^ 3); - rt.refMutRelease(_6208); - return x187; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2246: rt.u8): rt.u8 => { - const x188: rt.u8 = _2246; - const _6209: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6209.value, x188 ^ 4); - rt.refMutRelease(_6209); - return x188; - }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_240 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2243: rt.u8): rt.u8 => { - const x185: rt.u8 = _2243; - const _6206: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6206.value, x185 ^ 3); - rt.refMutRelease(_6206); - return x185; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2244: rt.u8): rt.u8 => { - const x186: rt.u8 = _2244; - const _6207: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6207.value, x186 ^ 4); - rt.refMutRelease(_6207); - return x186; - }), "len"), n)) & 0xff); - } else if (_240 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2241: rt.u8): rt.u8 => { - const x183: rt.u8 = _2241; - const _6204: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6204.value, x183 ^ 3); - rt.refMutRelease(_6204); - return x183; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2242: rt.u8): rt.u8 => { - const x184: rt.u8 = _2242; - const _6205: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6205.value, x184 ^ 4); - rt.refMutRelease(_6205); - return x184; - }), "len"), n)) & 0xff); + } else if (_1424 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x305: rt.u8): rt.u8 => { + const _6221: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6221.value, x305 ^ 7); + rt.refMutRelease(_6221); + return x305; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x306: rt.u8): rt.u8 => { + const _6222: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6222.value, x306 ^ 8); + rt.refMutRelease(_6222); + return x306; + }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_1424 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x303: rt.u8): rt.u8 => { + const _6219: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6219.value, x303 ^ 7); + rt.refMutRelease(_6219); + return x303; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x304: rt.u8): rt.u8 => { + const _6220: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6220.value, x304 ^ 8); + rt.refMutRelease(_6220); + return x304; + }), "index"), n)) & 0xff); + } else if (_1424 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x301: rt.u8): rt.u8 => { + const _6217: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6217.value, x301 ^ 7); + rt.refMutRelease(_6217); + return x301; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x302: rt.u8): rt.u8 => { + const _6218: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6218.value, x302 ^ 8); + rt.refMutRelease(_6218); + return x302; + }), "index"), n)) & 0xff); } else { - const p2: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2239: rt.u8): rt.u8 => { - const x181: rt.u8 = _2239; - const _6202: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6202.value, x181 ^ 3); - rt.refMutRelease(_6202); - return x181; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2240: rt.u8): rt.u8 => { - const x182: rt.u8 = _2240; - const _6203: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6203.value, x182 ^ 4); - rt.refMutRelease(_6203); - return x182; - }), "len")); - rt.byteVecPush(out, (rt.peekablePeek(p2) !== undefined ? 1 : 0) ^ (rt.iterCount(p2) & 0xff)); + const p4: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x299: rt.u8): rt.u8 => { + const _6215: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6215.value, x299 ^ 7); + rt.refMutRelease(_6215); + return x299; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x300: rt.u8): rt.u8 => { + const _6216: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6216.value, x300 ^ 8); + rt.refMutRelease(_6216); + return x300; + }), "index")); + rt.byteVecPush(out, (rt.peekablePeek(p4) !== undefined ? 1 : 0) ^ (rt.iterCount(p4) & 0xff)); } } } else if ((kind & 16) === 0) { - const z5: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2228: rt.u8): rt.u8 => { - const x169: rt.u8 = _2228; - const _6198: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6198.value, x169 ^ 5); - rt.refMutRelease(_6198); - return x169; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2229: rt.u8): rt.u8 => { - const x170: rt.u8 = _2229; - const _6199: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6199.value, x170 ^ 6); - rt.refMutRelease(_6199); - return x170; - }), "len"); - const _381: rt.usize = rt.usizeRem(data.length, 8); - if (_381 === 0) { - rt.byteVecPush(out, rt.iterCount(z5) & 0xff); - } else if (_381 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z5), 238, (_2238: [rt.u8, rt.u8]): rt.u8 => { - return _2238[0] ^ _2238[1]; - })); - } else if (_381 === 2) { - rt.iterForEach(z5, (p17: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _380(p17)); - }); - } else if (_381 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z5, (_2237: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2237[0] as rt.u32, _2237[1] as rt.u32); - }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_381 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z5, (_2236: [rt.u8, rt.u8]): rt.u8 => { - return _2236[0] ^ _2236[1]; - }), undefined, true)), undefined, true); - } else if (_381 === 5) { - rt.byteVecPush(out, rt.iterFold(z5, 0, (acc5: rt.u8, p16: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc5, 3) ^ _380(p16); - })); - } else if (_381 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z5, (_2235: [rt.u8, rt.u8]): rt.u8 => { - return _2235[0] ^ _2235[1]; - }), (x177: rt.u8): boolean => { - return x177 === 0; - }) ? 1 : 0); + const _1551: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_1551 === 0) { + const z25: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x287: rt.u8): rt.u8 => { + const _6211: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6211.value, x287 ^ 9); + rt.refMutRelease(_6211); + return x287; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2875: rt.u8): rt.u8 => { + const x288: rt.u8 = _2875; + const _6212: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6212.value, x288 ^ 10); + rt.refMutRelease(_6212); + return x288; + }), "index"); + const _1568: rt.usize = rt.usizeRem(data.length, 8); + if (_1568 === 0) { + rt.byteVecPush(out, rt.iterCount(z25) & 0xff); + } else if (_1568 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z25), 238, (_2884: [rt.u8, rt.u8]): rt.u8 => { + return _2884[0] ^ _2884[1]; + })); + } else if (_1568 === 2) { + rt.iterForEach(z25, (p37: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1567(p37)); + }); + } else if (_1568 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z25, (_2883: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2883[0] as rt.u32, _2883[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1568 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z25, (_2882: [rt.u8, rt.u8]): rt.u8 => { + return _2882[0] ^ _2882[1]; + }), "index", true, 1)), undefined, true); + } else if (_1568 === 5) { + rt.byteVecPush(out, rt.iterFold(z25, 0, (acc15: rt.u8, p36: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc15, 3) ^ _1567(p36); + })); + } else if (_1568 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z25, (_2881: [rt.u8, rt.u8]): rt.u8 => { + return _2881[0] ^ _2881[1]; + }), (x295: rt.u8): boolean => { + return x295 === 0; + }) ? 1 : 0); + } else { + const z26: rt.Iter<[rt.u8, rt.u8]> = z25; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z26, (_2876: [rt.u8, rt.u8]): boolean => { + return _2876[0] > _2876[1]; + }), 238, (i18: rt.usize): rt.u8 => { + return i18 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z26, (_2877: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2877[0], 3) === 0; + }), 238, (_2878: [rt.u8, rt.u8]): rt.u8 => { + return _2878[0] ^ _2878[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z26, n), 238, (_2879: [rt.u8, rt.u8]): rt.u8 => { + return _2879[0] ^ _2879[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z26.next()), 238, (_2880: [rt.u8, rt.u8]): rt.u8 => { + return _2880[0] ^ _2880[1]; + })); + } + } else if (_1551 === 1) { + const z27: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x275: rt.u8): rt.u8 => { + const _6207: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6207.value, x275 ^ 9); + rt.refMutRelease(_6207); + return x275; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2865: rt.u8): rt.u8 => { + const x276: rt.u8 = _2865; + const _6208: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6208.value, x276 ^ 10); + rt.refMutRelease(_6208); + return x276; + }), "index"); + const _1619: rt.usize = rt.usizeRem(data.length, 8); + if (_1619 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z27)) & 0xff); + } else if (_1619 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z27)), 238, (_2874: [rt.u8, rt.u8]): rt.u8 => { + return _2874[0] ^ _2874[1]; + })); + } else if (_1619 === 2) { + const _1626: (a0: [rt.u8, rt.u8]) => undefined = (p35: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1618(p35)); + }; + rt.iterForEach(rt.iterBox(z27), _1626); + } else if (_1619 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z27), (_2873: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2873[0] as rt.u32, _2873[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1619 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z27), (_2872: [rt.u8, rt.u8]): rt.u8 => { + return _2872[0] ^ _2872[1]; + }), "next")), undefined, true); + } else if (_1619 === 5) { + const _1634: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc14: rt.u8, p34: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc14, 3) ^ _1618(p34); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z27), 0, _1634)); + } else if (_1619 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z27), (_2871: [rt.u8, rt.u8]): rt.u8 => { + return _2871[0] ^ _2871[1]; + }), (x283: rt.u8): boolean => { + return x283 === 0; + }) ? 1 : 0); + } else { + const z28: rt.Iter<[rt.u8, rt.u8]> = z27; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z28), (_2866: [rt.u8, rt.u8]): boolean => { + return _2866[0] > _2866[1]; + }), 238, (i17: rt.usize): rt.u8 => { + return i17 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z28), (_2867: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2867[0], 3) === 0; + }), 238, (_2868: [rt.u8, rt.u8]): rt.u8 => { + return _2868[0] ^ _2868[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z28), n), 238, (_2869: [rt.u8, rt.u8]): rt.u8 => { + return _2869[0] ^ _2869[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z28.next()), 238, (_2870: [rt.u8, rt.u8]): rt.u8 => { + return _2870[0] ^ _2870[1]; + })); + } + } else if (_1551 === 2) { + const z29: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x263: rt.u8): rt.u8 => { + const _6203: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6203.value, x263 ^ 9); + rt.refMutRelease(_6203); + return x263; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2855: rt.u8): rt.u8 => { + const x264: rt.u8 = _2855; + const _6204: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6204.value, x264 ^ 10); + rt.refMutRelease(_6204); + return x264; + }), "index"), n); + const _1671: rt.usize = rt.usizeRem(data.length, 8); + if (_1671 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z29)) & 0xff); + } else if (_1671 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z29)), 238, (_2864: [rt.u8, rt.u8]): rt.u8 => { + return _2864[0] ^ _2864[1]; + })); + } else if (_1671 === 2) { + const _1678: (a0: [rt.u8, rt.u8]) => undefined = (p33: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1670(p33)); + }; + rt.iterForEach(rt.iterBox(z29), _1678); + } else if (_1671 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z29), (_2863: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2863[0] as rt.u32, _2863[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1671 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z29), (_2862: [rt.u8, rt.u8]): rt.u8 => { + return _2862[0] ^ _2862[1]; + }), "next")), undefined, true); + } else if (_1671 === 5) { + const _1686: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc13: rt.u8, p32: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc13, 3) ^ _1670(p32); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z29), 0, _1686)); + } else if (_1671 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z29), (_2861: [rt.u8, rt.u8]): rt.u8 => { + return _2861[0] ^ _2861[1]; + }), (x271: rt.u8): boolean => { + return x271 === 0; + }) ? 1 : 0); + } else { + const z30: rt.Iter<[rt.u8, rt.u8]> = z29; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z30), (_2856: [rt.u8, rt.u8]): boolean => { + return _2856[0] > _2856[1]; + }), 238, (i16: rt.usize): rt.u8 => { + return i16 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z30), (_2857: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2857[0], 3) === 0; + }), 238, (_2858: [rt.u8, rt.u8]): rt.u8 => { + return _2858[0] ^ _2858[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z30), n), 238, (_2859: [rt.u8, rt.u8]): rt.u8 => { + return _2859[0] ^ _2859[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z30.next()), 238, (_2860: [rt.u8, rt.u8]): rt.u8 => { + return _2860[0] ^ _2860[1]; + })); + } + } else if (_1551 === 3) { + const _1710: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x251: rt.u8): rt.u8 => { + const _6199: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6199.value, x251 ^ 9); + rt.refMutRelease(_6199); + return x251; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2845: rt.u8): rt.u8 => { + const x252: rt.u8 = _2845; + const _6200: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6200.value, x252 ^ 10); + rt.refMutRelease(_6200); + return x252; + }), "index"); + const _1723: rt.usize = rt.usizeRem(data.length, 8); + if (_1723 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1710)))) & 0xff); + } else if (_1723 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1710)))), 238, (_2854: [rt.u8, rt.u8]): rt.u8 => { + return _2854[0] ^ _2854[1]; + })); + } else if (_1723 === 2) { + const _1730: (a0: [rt.u8, rt.u8]) => undefined = (p31: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1722(p31)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1710))), _1730); + } else if (_1723 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1710))), (_2853: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2853[0] as rt.u32, _2853[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1723 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1710))), (_2852: [rt.u8, rt.u8]): rt.u8 => { + return _2852[0] ^ _2852[1]; + }), "next")), undefined, true); + } else if (_1723 === 5) { + const _1738: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc12: rt.u8, p30: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc12, 3) ^ _1722(p30); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1710))), 0, _1738)); + } else if (_1723 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1710))), (_2851: [rt.u8, rt.u8]): rt.u8 => { + return _2851[0] ^ _2851[1]; + }), (x259: rt.u8): boolean => { + return x259 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_1710), (_2846: [rt.u8, rt.u8]): boolean => { + return _2846[0] > _2846[1]; + }), 238, (i15: rt.usize): rt.u8 => { + return i15 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_1710), (_2847: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2847[0], 3) === 0; + }), 238, (_2848: [rt.u8, rt.u8]): rt.u8 => { + return _2848[0] ^ _2848[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_1710), n), 238, (_2849: [rt.u8, rt.u8]): rt.u8 => { + return _2849[0] ^ _2849[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_1710.next()), 238, (_2850: [rt.u8, rt.u8]): rt.u8 => { + return _2850[0] ^ _2850[1]; + })); + } } else { - const z6: rt.Iter<[rt.u8, rt.u8]> = z5; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z6, (_2230: [rt.u8, rt.u8]): boolean => { - return _2230[0] > _2230[1]; - }), 238, (i10: rt.usize): rt.u8 => { - return i10 & 0xff; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z6, (_2231: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2231[0], 3) === 0; - }), 238, (_2232: [rt.u8, rt.u8]): rt.u8 => { - return _2232[0] ^ _2232[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z6, n), 238, (_2233: [rt.u8, rt.u8]): rt.u8 => { - return _2233[0] ^ _2233[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z6.next()), 238, (_2234: [rt.u8, rt.u8]): rt.u8 => { - return _2234[0] ^ _2234[1]; - })); - } - } else { - const _419: rt.usize = rt.usizeRem(data.length, 8); - if (_419 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2225: rt.u8): rt.u8 => { - const x166: rt.u8 = _2225; + const _1757: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x239: rt.u8): rt.u8 => { + const _6195: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6195.value, x239 ^ 9); + rt.refMutRelease(_6195); + return x239; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2835: rt.u8): rt.u8 => { + const x240: rt.u8 = _2835; const _6196: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6196.value, x166 ^ 5); + rt.byteVecPush(_6196.value, x240 ^ 10); rt.refMutRelease(_6196); - return x166; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2226: rt.u8): rt.u8 => { - const x167: rt.u8 = _2226; - const _6197: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6197.value, x167 ^ 6); - rt.refMutRelease(_6197); - return x167; - }), "len"), (_2227: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2227[0], 2) === 0; - })) & 0xff); - } else if (_419 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2222: rt.u8): rt.u8 => { - const x163: rt.u8 = _2222; + return x240; + }), "index"), n); + const _1771: rt.usize = rt.usizeRem(data.length, 8); + if (_1771 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1757)))) & 0xff); + } else if (_1771 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1757)))), 238, (_2844: [rt.u8, rt.u8]): rt.u8 => { + return _2844[0] ^ _2844[1]; + })); + } else if (_1771 === 2) { + const _1778: (a0: [rt.u8, rt.u8]) => undefined = (p29: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1770(p29)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1757))), _1778); + } else if (_1771 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1757))), (_2843: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2843[0] as rt.u32, _2843[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1771 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1757))), (_2842: [rt.u8, rt.u8]): rt.u8 => { + return _2842[0] ^ _2842[1]; + }), "next")), undefined, true); + } else if (_1771 === 5) { + const _1786: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc11: rt.u8, p28: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc11, 3) ^ _1770(p28); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1757))), 0, _1786)); + } else if (_1771 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_1757))), (_2841: [rt.u8, rt.u8]): rt.u8 => { + return _2841[0] ^ _2841[1]; + }), (x247: rt.u8): boolean => { + return x247 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_1757), (_2836: [rt.u8, rt.u8]): boolean => { + return _2836[0] > _2836[1]; + }), 238, (i14: rt.usize): rt.u8 => { + return i14 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_1757), (_2837: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2837[0], 3) === 0; + }), 238, (_2838: [rt.u8, rt.u8]): rt.u8 => { + return _2838[0] ^ _2838[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_1757), n), 238, (_2839: [rt.u8, rt.u8]): rt.u8 => { + return _2839[0] ^ _2839[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_1757.next()), 238, (_2840: [rt.u8, rt.u8]): rt.u8 => { + return _2840[0] ^ _2840[1]; + })); + } + } + } else { + const _1804: rt.usize = rt.usizeRem(data.length, 8); + if (_1804 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x236: rt.u8): rt.u8 => { + const _6193: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6193.value, x236 ^ 9); + rt.refMutRelease(_6193); + return x236; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2833: rt.u8): rt.u8 => { + const x237: rt.u8 = _2833; const _6194: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6194.value, x163 ^ 5); + rt.byteVecPush(_6194.value, x237 ^ 10); rt.refMutRelease(_6194); - return x163; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2223: rt.u8): rt.u8 => { - const x164: rt.u8 = _2223; - const _6195: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6195.value, x164 ^ 6); - rt.refMutRelease(_6195); - return x164; - }), "len"), (_2224: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2224[0], _2224[1]); + return x237; + }), "index"), (_2834: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2834[0], 2) === 0; })) & 0xff); - } else if (_419 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2219: rt.u8): rt.u8 => { - const x160: rt.u8 = _2219; + } else if (_1804 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x233: rt.u8): rt.u8 => { + const _6191: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6191.value, x233 ^ 9); + rt.refMutRelease(_6191); + return x233; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2831: rt.u8): rt.u8 => { + const x234: rt.u8 = _2831; const _6192: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6192.value, x160 ^ 5); + rt.byteVecPush(_6192.value, x234 ^ 10); rt.refMutRelease(_6192); - return x160; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2220: rt.u8): rt.u8 => { - const x161: rt.u8 = _2220; - const _6193: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6193.value, x161 ^ 6); - rt.refMutRelease(_6193); - return x161; - }), "len"), (_2221: [rt.u8, rt.u8]): boolean => { - return _2221[0] < 128; + return x234; + }), "index"), (_2832: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2832[0], _2832[1]); })) & 0xff); - } else if (_419 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2216: rt.u8): rt.u8 => { - const x158: rt.u8 = _2216; + } else if (_1804 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x230: rt.u8): rt.u8 => { + const _6189: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6189.value, x230 ^ 9); + rt.refMutRelease(_6189); + return x230; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2829: rt.u8): rt.u8 => { + const x231: rt.u8 = _2829; const _6190: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6190.value, x158 ^ 5); + rt.byteVecPush(_6190.value, x231 ^ 10); rt.refMutRelease(_6190); - return x158; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2217: rt.u8): rt.u8 => { - const x159: rt.u8 = _2217; - const _6191: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6191.value, x159 ^ 6); - rt.refMutRelease(_6191); - return x159; - }), "len")), (_2218: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2218[0] & 0xff; - })), 238)); - } else if (_419 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2214: rt.u8): rt.u8 => { - const x156: rt.u8 = _2214; + return x231; + }), "index"), (_2830: [rt.u8, rt.u8]): boolean => { + return _2830[0] < 128; + })) & 0xff); + } else if (_1804 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x228: rt.u8): rt.u8 => { + const _6187: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6187.value, x228 ^ 9); + rt.refMutRelease(_6187); + return x228; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2827: rt.u8): rt.u8 => { + const x229: rt.u8 = _2827; const _6188: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6188.value, x156 ^ 5); + rt.byteVecPush(_6188.value, x229 ^ 10); rt.refMutRelease(_6188); - return x156; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2215: rt.u8): rt.u8 => { - const x157: rt.u8 = _2215; - const _6189: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6189.value, x157 ^ 6); - rt.refMutRelease(_6189); - return x157; - }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_419 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2212: rt.u8): rt.u8 => { - const x154: rt.u8 = _2212; + return x229; + }), "index")), (_2828: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2828[0] & 0xff; + })), 238)); + } else if (_1804 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x226: rt.u8): rt.u8 => { + const _6185: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6185.value, x226 ^ 9); + rt.refMutRelease(_6185); + return x226; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2826: rt.u8): rt.u8 => { + const x227: rt.u8 = _2826; const _6186: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6186.value, x154 ^ 5); + rt.byteVecPush(_6186.value, x227 ^ 10); rt.refMutRelease(_6186); - return x154; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2213: rt.u8): rt.u8 => { - const x155: rt.u8 = _2213; - const _6187: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6187.value, x155 ^ 6); - rt.refMutRelease(_6187); - return x155; - }), "len"), n)) & 0xff); - } else if (_419 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2210: rt.u8): rt.u8 => { - const x152: rt.u8 = _2210; + return x227; + }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_1804 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x224: rt.u8): rt.u8 => { + const _6183: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6183.value, x224 ^ 9); + rt.refMutRelease(_6183); + return x224; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2825: rt.u8): rt.u8 => { + const x225: rt.u8 = _2825; const _6184: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6184.value, x152 ^ 5); + rt.byteVecPush(_6184.value, x225 ^ 10); rt.refMutRelease(_6184); - return x152; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2211: rt.u8): rt.u8 => { - const x153: rt.u8 = _2211; - const _6185: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6185.value, x153 ^ 6); - rt.refMutRelease(_6185); - return x153; - }), "len"), n)) & 0xff); - } else { - const p3: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2208: rt.u8): rt.u8 => { - const x150: rt.u8 = _2208; + return x225; + }), "index"), n)) & 0xff); + } else if (_1804 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x222: rt.u8): rt.u8 => { + const _6181: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6181.value, x222 ^ 9); + rt.refMutRelease(_6181); + return x222; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2824: rt.u8): rt.u8 => { + const x223: rt.u8 = _2824; const _6182: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6182.value, x150 ^ 5); + rt.byteVecPush(_6182.value, x223 ^ 10); rt.refMutRelease(_6182); - return x150; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2209: rt.u8): rt.u8 => { - const x151: rt.u8 = _2209; - const _6183: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6183.value, x151 ^ 6); - rt.refMutRelease(_6183); - return x151; - }), "len")); - rt.byteVecPush(out, (rt.peekablePeek(p3) !== undefined ? 1 : 0) ^ (rt.iterCount(p3) & 0xff)); - } - } - } else if (_28 === 2) { - if (!other) { - if ((kind & 16) === 0) { - const z7: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x138: rt.u8): rt.u8 => { - const _6178: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6178.value, x138 ^ 7); - rt.refMutRelease(_6178); - return x138; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x139: rt.u8): rt.u8 => { + return x223; + }), "index"), n)) & 0xff); + } else { + const p5: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x220: rt.u8): rt.u8 => { const _6179: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6179.value, x139 ^ 8); + rt.byteVecPush(_6179.value, x220 ^ 9); rt.refMutRelease(_6179); - return x139; - }), "index"); - const _574: rt.usize = rt.usizeRem(data.length, 8); - if (_574 === 0) { - rt.byteVecPush(out, rt.iterCount(z7) & 0xff); - } else if (_574 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z7), 238, (_2207: [rt.u8, rt.u8]): rt.u8 => { - return _2207[0] ^ _2207[1]; + return x220; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2823: rt.u8): rt.u8 => { + const x221: rt.u8 = _2823; + const _6180: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6180.value, x221 ^ 10); + rt.refMutRelease(_6180); + return x221; + }), "index")); + rt.byteVecPush(out, (rt.peekablePeek(p5) !== undefined ? 1 : 0) ^ (rt.iterCount(p5) & 0xff)); + } + } + } else if (!other) { + if ((kind & 16) === 0) { + const _1931: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_1931 === 0) { + const z31: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2811: rt.u8): rt.u8 => { + const x208: rt.u8 = _2811; + const _6175: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6175.value, x208 ^ 11); + rt.refMutRelease(_6175); + return x208; + }), (_2812: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2813: rt.u8): rt.u8 => { + const x209: rt.u8 = _2813; + const _6176: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6176.value, x209 ^ 12); + rt.refMutRelease(_6176); + return x209; + })); + const _1947: rt.usize = rt.usizeRem(data.length, 8); + if (_1947 === 0) { + rt.byteVecPush(out, rt.iterCount(z31) & 0xff); + } else if (_1947 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z31), 238, (_2822: [rt.u8, rt.u8]): rt.u8 => { + return _2822[0] ^ _2822[1]; })); - } else if (_574 === 2) { - rt.iterForEach(z7, (p15: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _573(p15)); + } else if (_1947 === 2) { + rt.iterForEach(z31, (p27: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1946(p27)); }); - } else if (_574 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z7, (_2206: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2206[0] as rt.u32, _2206[1] as rt.u32); + } else if (_1947 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z31, (_2821: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2821[0] as rt.u32, _2821[1] as rt.u32); }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_574 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z7, (_2205: [rt.u8, rt.u8]): rt.u8 => { - return _2205[0] ^ _2205[1]; - }), "index", true, 1)), undefined, true); - } else if (_574 === 5) { - rt.byteVecPush(out, rt.iterFold(z7, 0, (acc4: rt.u8, p14: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc4, 3) ^ _573(p14); + } else if (_1947 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z31, (_2820: [rt.u8, rt.u8]): rt.u8 => { + return _2820[0] ^ _2820[1]; + }), "next")), undefined, true); + } else if (_1947 === 5) { + rt.byteVecPush(out, rt.iterFold(z31, 0, (acc10: rt.u8, p26: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc10, 3) ^ _1946(p26); })); - } else if (_574 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z7, (_2204: [rt.u8, rt.u8]): rt.u8 => { - return _2204[0] ^ _2204[1]; - }), (x146: rt.u8): boolean => { - return x146 === 0; + } else if (_1947 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z31, (_2819: [rt.u8, rt.u8]): rt.u8 => { + return _2819[0] ^ _2819[1]; + }), (x216: rt.u8): boolean => { + return x216 === 0; }) ? 1 : 0); } else { - const z8: rt.Iter<[rt.u8, rt.u8]> = z7; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z8, (_2199: [rt.u8, rt.u8]): boolean => { - return _2199[0] > _2199[1]; - }), 238, (i8: rt.usize): rt.u8 => { - return i8 & 0xff; + const z32: rt.Iter<[rt.u8, rt.u8]> = z31; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z32, (_2814: [rt.u8, rt.u8]): boolean => { + return _2814[0] > _2814[1]; + }), 238, (i12: rt.usize): rt.u8 => { + return i12 & 0xff; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z8, (_2200: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2200[0], 3) === 0; - }), 238, (_2201: [rt.u8, rt.u8]): rt.u8 => { - return _2201[0] ^ _2201[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z32, (_2815: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2815[0], 3) === 0; + }), 238, (_2816: [rt.u8, rt.u8]): rt.u8 => { + return _2816[0] ^ _2816[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z8, n), 238, (_2202: [rt.u8, rt.u8]): rt.u8 => { - return _2202[0] ^ _2202[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z32, n), 238, (_2817: [rt.u8, rt.u8]): rt.u8 => { + return _2817[0] ^ _2817[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z8.next()), 238, (_2203: [rt.u8, rt.u8]): rt.u8 => { - return _2203[0] ^ _2203[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z32.next()), 238, (_2818: [rt.u8, rt.u8]): rt.u8 => { + return _2818[0] ^ _2818[1]; })); } - } else { - const _612: rt.usize = rt.usizeRem(data.length, 8); - if (_612 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x135: rt.u8): rt.u8 => { - const _6176: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6176.value, x135 ^ 7); - rt.refMutRelease(_6176); - return x135; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x136: rt.u8): rt.u8 => { - const _6177: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6177.value, x136 ^ 8); - rt.refMutRelease(_6177); - return x136; - }), "index"), (_2198: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2198[0], 2) === 0; - })) & 0xff); - } else if (_612 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x132: rt.u8): rt.u8 => { - const _6174: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6174.value, x132 ^ 7); - rt.refMutRelease(_6174); - return x132; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x133: rt.u8): rt.u8 => { - const _6175: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6175.value, x133 ^ 8); - rt.refMutRelease(_6175); - return x133; - }), "index"), (_2197: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2197[0], _2197[1]); - })) & 0xff); - } else if (_612 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x129: rt.u8): rt.u8 => { - const _6172: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6172.value, x129 ^ 7); - rt.refMutRelease(_6172); - return x129; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x130: rt.u8): rt.u8 => { - const _6173: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6173.value, x130 ^ 8); - rt.refMutRelease(_6173); - return x130; - }), "index"), (_2196: [rt.u8, rt.u8]): boolean => { - return _2196[0] < 128; - })) & 0xff); - } else if (_612 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x127: rt.u8): rt.u8 => { - const _6170: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6170.value, x127 ^ 7); - rt.refMutRelease(_6170); - return x127; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x128: rt.u8): rt.u8 => { - const _6171: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6171.value, x128 ^ 8); - rt.refMutRelease(_6171); - return x128; - }), "index")), (_2195: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2195[0] & 0xff; - })), 238)); - } else if (_612 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x125: rt.u8): rt.u8 => { - const _6168: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6168.value, x125 ^ 7); - rt.refMutRelease(_6168); - return x125; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x126: rt.u8): rt.u8 => { - const _6169: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6169.value, x126 ^ 8); - rt.refMutRelease(_6169); - return x126; - }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_612 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x123: rt.u8): rt.u8 => { - const _6166: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6166.value, x123 ^ 7); - rt.refMutRelease(_6166); - return x123; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x124: rt.u8): rt.u8 => { - const _6167: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6167.value, x124 ^ 8); - rt.refMutRelease(_6167); - return x124; - }), "index"), n)) & 0xff); - } else if (_612 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x121: rt.u8): rt.u8 => { - const _6164: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6164.value, x121 ^ 7); - rt.refMutRelease(_6164); - return x121; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x122: rt.u8): rt.u8 => { - const _6165: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6165.value, x122 ^ 8); - rt.refMutRelease(_6165); - return x122; - }), "index"), n)) & 0xff); + } else if (_1931 === 1) { + const z33: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2799: rt.u8): rt.u8 => { + const x196: rt.u8 = _2799; + const _6171: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6171.value, x196 ^ 11); + rt.refMutRelease(_6171); + return x196; + }), (_2800: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2801: rt.u8): rt.u8 => { + const x197: rt.u8 = _2801; + const _6172: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6172.value, x197 ^ 12); + rt.refMutRelease(_6172); + return x197; + })); + const _1997: rt.usize = rt.usizeRem(data.length, 8); + if (_1997 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z33)) & 0xff); + } else if (_1997 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z33)), 238, (_2810: [rt.u8, rt.u8]): rt.u8 => { + return _2810[0] ^ _2810[1]; + })); + } else if (_1997 === 2) { + const _2004: (a0: [rt.u8, rt.u8]) => undefined = (p25: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1996(p25)); + }; + rt.iterForEach(rt.iterBox(z33), _2004); + } else if (_1997 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z33), (_2809: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2809[0] as rt.u32, _2809[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1997 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z33), (_2808: [rt.u8, rt.u8]): rt.u8 => { + return _2808[0] ^ _2808[1]; + }), "next")), undefined, true); + } else if (_1997 === 5) { + const _2012: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc9: rt.u8, p24: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc9, 3) ^ _1996(p24); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z33), 0, _2012)); + } else if (_1997 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z33), (_2807: [rt.u8, rt.u8]): rt.u8 => { + return _2807[0] ^ _2807[1]; + }), (x204: rt.u8): boolean => { + return x204 === 0; + }) ? 1 : 0); } else { - const p4: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x119: rt.u8): rt.u8 => { - const _6162: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6162.value, x119 ^ 7); - rt.refMutRelease(_6162); - return x119; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x120: rt.u8): rt.u8 => { - const _6163: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6163.value, x120 ^ 8); - rt.refMutRelease(_6163); - return x120; - }), "index")); - rt.byteVecPush(out, (rt.peekablePeek(p4) !== undefined ? 1 : 0) ^ (rt.iterCount(p4) & 0xff)); + const z34: rt.Iter<[rt.u8, rt.u8]> = z33; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z34), (_2802: [rt.u8, rt.u8]): boolean => { + return _2802[0] > _2802[1]; + }), 238, (i11: rt.usize): rt.u8 => { + return i11 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z34), (_2803: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2803[0], 3) === 0; + }), 238, (_2804: [rt.u8, rt.u8]): rt.u8 => { + return _2804[0] ^ _2804[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z34), n), 238, (_2805: [rt.u8, rt.u8]): rt.u8 => { + return _2805[0] ^ _2805[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z34.next()), 238, (_2806: [rt.u8, rt.u8]): rt.u8 => { + return _2806[0] ^ _2806[1]; + })); } - } - } else if ((kind & 16) === 0) { - const z9: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x107: rt.u8): rt.u8 => { - const _6158: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6158.value, x107 ^ 9); - rt.refMutRelease(_6158); - return x107; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2185: rt.u8): rt.u8 => { - const x108: rt.u8 = _2185; - const _6159: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6159.value, x108 ^ 10); - rt.refMutRelease(_6159); - return x108; - }), "index"); - const _751: rt.usize = rt.usizeRem(data.length, 8); - if (_751 === 0) { - rt.byteVecPush(out, rt.iterCount(z9) & 0xff); - } else if (_751 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z9), 238, (_2194: [rt.u8, rt.u8]): rt.u8 => { - return _2194[0] ^ _2194[1]; - })); - } else if (_751 === 2) { - rt.iterForEach(z9, (p13: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _750(p13)); - }); - } else if (_751 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z9, (_2193: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2193[0] as rt.u32, _2193[1] as rt.u32); - }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_751 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z9, (_2192: [rt.u8, rt.u8]): rt.u8 => { - return _2192[0] ^ _2192[1]; - }), "index", true, 1)), undefined, true); - } else if (_751 === 5) { - rt.byteVecPush(out, rt.iterFold(z9, 0, (acc3: rt.u8, p12: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc3, 3) ^ _750(p12); + } else if (_1931 === 2) { + const z35: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2787: rt.u8): rt.u8 => { + const x184: rt.u8 = _2787; + const _6167: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6167.value, x184 ^ 11); + rt.refMutRelease(_6167); + return x184; + }), (_2788: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2789: rt.u8): rt.u8 => { + const x185: rt.u8 = _2789; + const _6168: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6168.value, x185 ^ 12); + rt.refMutRelease(_6168); + return x185; + })), n); + const _2048: rt.usize = rt.usizeRem(data.length, 8); + if (_2048 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z35)) & 0xff); + } else if (_2048 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z35)), 238, (_2798: [rt.u8, rt.u8]): rt.u8 => { + return _2798[0] ^ _2798[1]; + })); + } else if (_2048 === 2) { + const _2055: (a0: [rt.u8, rt.u8]) => undefined = (p23: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2047(p23)); + }; + rt.iterForEach(rt.iterBox(z35), _2055); + } else if (_2048 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z35), (_2797: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2797[0] as rt.u32, _2797[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2048 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z35), (_2796: [rt.u8, rt.u8]): rt.u8 => { + return _2796[0] ^ _2796[1]; + }), "next")), undefined, true); + } else if (_2048 === 5) { + const _2063: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc8: rt.u8, p22: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc8, 3) ^ _2047(p22); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z35), 0, _2063)); + } else if (_2048 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z35), (_2795: [rt.u8, rt.u8]): rt.u8 => { + return _2795[0] ^ _2795[1]; + }), (x192: rt.u8): boolean => { + return x192 === 0; + }) ? 1 : 0); + } else { + const z36: rt.Iter<[rt.u8, rt.u8]> = z35; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z36), (_2790: [rt.u8, rt.u8]): boolean => { + return _2790[0] > _2790[1]; + }), 238, (i10: rt.usize): rt.u8 => { + return i10 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z36), (_2791: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2791[0], 3) === 0; + }), 238, (_2792: [rt.u8, rt.u8]): rt.u8 => { + return _2792[0] ^ _2792[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z36), n), 238, (_2793: [rt.u8, rt.u8]): rt.u8 => { + return _2793[0] ^ _2793[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z36.next()), 238, (_2794: [rt.u8, rt.u8]): rt.u8 => { + return _2794[0] ^ _2794[1]; + })); + } + } else if (_1931 === 3) { + const _2087: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2775: rt.u8): rt.u8 => { + const x172: rt.u8 = _2775; + const _6163: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6163.value, x172 ^ 11); + rt.refMutRelease(_6163); + return x172; + }), (_2776: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2777: rt.u8): rt.u8 => { + const x173: rt.u8 = _2777; + const _6164: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6164.value, x173 ^ 12); + rt.refMutRelease(_6164); + return x173; })); - } else if (_751 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z9, (_2191: [rt.u8, rt.u8]): rt.u8 => { - return _2191[0] ^ _2191[1]; - }), (x115: rt.u8): boolean => { - return x115 === 0; - }) ? 1 : 0); + const _2099: rt.usize = rt.usizeRem(data.length, 8); + if (_2099 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2087)))) & 0xff); + } else if (_2099 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2087)))), 238, (_2786: [rt.u8, rt.u8]): rt.u8 => { + return _2786[0] ^ _2786[1]; + })); + } else if (_2099 === 2) { + const _2106: (a0: [rt.u8, rt.u8]) => undefined = (p21: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2098(p21)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2087))), _2106); + } else if (_2099 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2087))), (_2785: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2785[0] as rt.u32, _2785[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2099 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2087))), (_2784: [rt.u8, rt.u8]): rt.u8 => { + return _2784[0] ^ _2784[1]; + }), "next")), undefined, true); + } else if (_2099 === 5) { + const _2114: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc7: rt.u8, p20: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc7, 3) ^ _2098(p20); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2087))), 0, _2114)); + } else if (_2099 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2087))), (_2783: [rt.u8, rt.u8]): rt.u8 => { + return _2783[0] ^ _2783[1]; + }), (x180: rt.u8): boolean => { + return x180 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_2087), (_2778: [rt.u8, rt.u8]): boolean => { + return _2778[0] > _2778[1]; + }), 238, (i9: rt.usize): rt.u8 => { + return i9 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_2087), (_2779: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2779[0], 3) === 0; + }), 238, (_2780: [rt.u8, rt.u8]): rt.u8 => { + return _2780[0] ^ _2780[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_2087), n), 238, (_2781: [rt.u8, rt.u8]): rt.u8 => { + return _2781[0] ^ _2781[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_2087.next()), 238, (_2782: [rt.u8, rt.u8]): rt.u8 => { + return _2782[0] ^ _2782[1]; + })); + } } else { - const z10: rt.Iter<[rt.u8, rt.u8]> = z9; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z10, (_2186: [rt.u8, rt.u8]): boolean => { - return _2186[0] > _2186[1]; - }), 238, (i6: rt.usize): rt.u8 => { - return i6 & 0xff; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z10, (_2187: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2187[0], 3) === 0; - }), 238, (_2188: [rt.u8, rt.u8]): rt.u8 => { - return _2188[0] ^ _2188[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z10, n), 238, (_2189: [rt.u8, rt.u8]): rt.u8 => { - return _2189[0] ^ _2189[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z10.next()), 238, (_2190: [rt.u8, rt.u8]): rt.u8 => { - return _2190[0] ^ _2190[1]; - })); + const _2133: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2763: rt.u8): rt.u8 => { + const x160: rt.u8 = _2763; + const _6159: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6159.value, x160 ^ 11); + rt.refMutRelease(_6159); + return x160; + }), (_2764: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2765: rt.u8): rt.u8 => { + const x161: rt.u8 = _2765; + const _6160: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6160.value, x161 ^ 12); + rt.refMutRelease(_6160); + return x161; + })), n); + const _2146: rt.usize = rt.usizeRem(data.length, 8); + if (_2146 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2133)))) & 0xff); + } else if (_2146 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2133)))), 238, (_2774: [rt.u8, rt.u8]): rt.u8 => { + return _2774[0] ^ _2774[1]; + })); + } else if (_2146 === 2) { + const _2153: (a0: [rt.u8, rt.u8]) => undefined = (p19: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2145(p19)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2133))), _2153); + } else if (_2146 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2133))), (_2773: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2773[0] as rt.u32, _2773[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2146 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2133))), (_2772: [rt.u8, rt.u8]): rt.u8 => { + return _2772[0] ^ _2772[1]; + }), "next")), undefined, true); + } else if (_2146 === 5) { + const _2161: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc6: rt.u8, p18: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc6, 3) ^ _2145(p18); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2133))), 0, _2161)); + } else if (_2146 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2133))), (_2771: [rt.u8, rt.u8]): rt.u8 => { + return _2771[0] ^ _2771[1]; + }), (x168: rt.u8): boolean => { + return x168 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_2133), (_2766: [rt.u8, rt.u8]): boolean => { + return _2766[0] > _2766[1]; + }), 238, (i8: rt.usize): rt.u8 => { + return i8 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_2133), (_2767: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2767[0], 3) === 0; + }), 238, (_2768: [rt.u8, rt.u8]): rt.u8 => { + return _2768[0] ^ _2768[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_2133), n), 238, (_2769: [rt.u8, rt.u8]): rt.u8 => { + return _2769[0] ^ _2769[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_2133.next()), 238, (_2770: [rt.u8, rt.u8]): rt.u8 => { + return _2770[0] ^ _2770[1]; + })); + } } } else { - const _789: rt.usize = rt.usizeRem(data.length, 8); - if (_789 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x104: rt.u8): rt.u8 => { - const _6156: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6156.value, x104 ^ 9); - rt.refMutRelease(_6156); - return x104; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2183: rt.u8): rt.u8 => { - const x105: rt.u8 = _2183; + const _2179: rt.usize = rt.usizeRem(data.length, 8); + if (_2179 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2758: rt.u8): rt.u8 => { + const x157: rt.u8 = _2758; const _6157: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6157.value, x105 ^ 10); + rt.byteVecPush(_6157.value, x157 ^ 11); rt.refMutRelease(_6157); - return x105; - }), "index"), (_2184: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2184[0], 2) === 0; + return x157; + }), (_2760: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2761: rt.u8): rt.u8 => { + const x158: rt.u8 = _2761; + const _6158: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6158.value, x158 ^ 12); + rt.refMutRelease(_6158); + return x158; + })), (_2762: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2762[0], 2) === 0; })) & 0xff); - } else if (_789 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x101: rt.u8): rt.u8 => { - const _6154: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6154.value, x101 ^ 9); - rt.refMutRelease(_6154); - return x101; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2181: rt.u8): rt.u8 => { - const x102: rt.u8 = _2181; + } else if (_2179 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2747: rt.u8): rt.u8 => { + const x154: rt.u8 = _2747; const _6155: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6155.value, x102 ^ 10); + rt.byteVecPush(_6155.value, x154 ^ 11); rt.refMutRelease(_6155); - return x102; - }), "index"), (_2182: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2182[0], _2182[1]); + return x154; + }), (_2749: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2750: rt.u8): rt.u8 => { + const x155: rt.u8 = _2750; + const _6156: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6156.value, x155 ^ 12); + rt.refMutRelease(_6156); + return x155; + })), (_2755: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2755[0], _2755[1]); })) & 0xff); - } else if (_789 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x98: rt.u8): rt.u8 => { - const _6152: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6152.value, x98 ^ 9); - rt.refMutRelease(_6152); - return x98; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2179: rt.u8): rt.u8 => { - const x99: rt.u8 = _2179; + } else if (_2179 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2734: rt.u8): rt.u8 => { + const x151: rt.u8 = _2734; const _6153: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6153.value, x99 ^ 10); + rt.byteVecPush(_6153.value, x151 ^ 11); rt.refMutRelease(_6153); - return x99; - }), "index"), (_2180: [rt.u8, rt.u8]): boolean => { - return _2180[0] < 128; + return x151; + }), (_2739: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2744: rt.u8): rt.u8 => { + const x152: rt.u8 = _2744; + const _6154: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6154.value, x152 ^ 12); + rt.refMutRelease(_6154); + return x152; + })), (_2745: [rt.u8, rt.u8]): boolean => { + return _2745[0] < 128; })) & 0xff); - } else if (_789 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x96: rt.u8): rt.u8 => { - const _6150: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6150.value, x96 ^ 9); - rt.refMutRelease(_6150); - return x96; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2177: rt.u8): rt.u8 => { - const x97: rt.u8 = _2177; + } else if (_2179 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2716: rt.u8): rt.u8 => { + const x149: rt.u8 = _2716; const _6151: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6151.value, x97 ^ 10); + rt.byteVecPush(_6151.value, x149 ^ 11); rt.refMutRelease(_6151); - return x97; - }), "index")), (_2178: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2178[0] & 0xff; + return x149; + }), (_2721: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2726: rt.u8): rt.u8 => { + const x150: rt.u8 = _2726; + const _6152: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6152.value, x150 ^ 12); + rt.refMutRelease(_6152); + return x150; + }))), (_2727: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2727[0] & 0xff; })), 238)); - } else if (_789 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x94: rt.u8): rt.u8 => { - const _6148: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6148.value, x94 ^ 9); - rt.refMutRelease(_6148); - return x94; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2176: rt.u8): rt.u8 => { - const x95: rt.u8 = _2176; + } else if (_2179 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2696: rt.u8): rt.u8 => { + const x147: rt.u8 = _2696; const _6149: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6149.value, x95 ^ 10); + rt.byteVecPush(_6149.value, x147 ^ 11); rt.refMutRelease(_6149); - return x95; - }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_789 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x92: rt.u8): rt.u8 => { - const _6146: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6146.value, x92 ^ 9); - rt.refMutRelease(_6146); - return x92; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2175: rt.u8): rt.u8 => { - const x93: rt.u8 = _2175; + return x147; + }), (_2701: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2706: rt.u8): rt.u8 => { + const x148: rt.u8 = _2706; + const _6150: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6150.value, x148 ^ 12); + rt.refMutRelease(_6150); + return x148; + })), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_2179 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2674: rt.u8): rt.u8 => { + const x145: rt.u8 = _2674; const _6147: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6147.value, x93 ^ 10); + rt.byteVecPush(_6147.value, x145 ^ 11); rt.refMutRelease(_6147); - return x93; - }), "index"), n)) & 0xff); - } else if (_789 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x90: rt.u8): rt.u8 => { - const _6144: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6144.value, x90 ^ 9); - rt.refMutRelease(_6144); - return x90; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2174: rt.u8): rt.u8 => { - const x91: rt.u8 = _2174; + return x145; + }), (_2679: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2684: rt.u8): rt.u8 => { + const x146: rt.u8 = _2684; + const _6148: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6148.value, x146 ^ 12); + rt.refMutRelease(_6148); + return x146; + })), n)) & 0xff); + } else if (_2179 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2654: rt.u8): rt.u8 => { + const x143: rt.u8 = _2654; const _6145: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6145.value, x91 ^ 10); + rt.byteVecPush(_6145.value, x143 ^ 11); rt.refMutRelease(_6145); - return x91; - }), "index"), n)) & 0xff); + return x143; + }), (_2659: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2664: rt.u8): rt.u8 => { + const x144: rt.u8 = _2664; + const _6146: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6146.value, x144 ^ 12); + rt.refMutRelease(_6146); + return x144; + })), n)) & 0xff); } else { - const p5: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x88: rt.u8): rt.u8 => { - const _6142: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6142.value, x88 ^ 9); - rt.refMutRelease(_6142); - return x88; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2173: rt.u8): rt.u8 => { - const x89: rt.u8 = _2173; + const p6: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2633: rt.u8): rt.u8 => { + const x141: rt.u8 = _2633; const _6143: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6143.value, x89 ^ 10); + rt.byteVecPush(_6143.value, x141 ^ 11); rt.refMutRelease(_6143); - return x89; - }), "index")); - rt.byteVecPush(out, (rt.peekablePeek(p5) !== undefined ? 1 : 0) ^ (rt.iterCount(p5) & 0xff)); + return x141; + }), (_2638: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2643: rt.u8): rt.u8 => { + const x142: rt.u8 = _2643; + const _6144: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6144.value, x142 ^ 12); + rt.refMutRelease(_6144); + return x142; + }))); + rt.byteVecPush(out, (rt.peekablePeek(p6) !== undefined ? 1 : 0) ^ (rt.iterCount(p6) & 0xff)); } } - } else if (!other) { - if ((kind & 16) === 0) { - const z11: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2161: rt.u8): rt.u8 => { - const x76: rt.u8 = _2161; + } else if ((kind & 16) === 0) { + const _2298: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_2298 === 0) { + const z37: rt.Iter<[rt.u8, rt.u8]> = rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2556: rt.u8): rt.u8 => { + const x127: rt.u8 = _2556; + const _6137: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6137.value, x127 ^ 13); + rt.refMutRelease(_6137); + return x127; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2564: rt.u8): rt.u8 => { + const x128: rt.u8 = _2564; const _6138: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6138.value, x76 ^ 11); + rt.byteVecPush(_6138.value, x128 ^ 14); rt.refMutRelease(_6138); - return x76; - }), (_2162: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2163: rt.u8): rt.u8 => { - const x77: rt.u8 = _2163; + return x128; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2567: rt.u8): rt.u8 => { + const x129: rt.u8 = _2567; const _6139: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6139.value, x77 ^ 12); + rt.byteVecPush(_6139.value, x129 ^ 15); rt.refMutRelease(_6139); - return x77; - })); - const _927: rt.usize = rt.usizeRem(data.length, 8); - if (_927 === 0) { - rt.byteVecPush(out, rt.iterCount(z11) & 0xff); - } else if (_927 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z11), 238, (_2172: [rt.u8, rt.u8]): rt.u8 => { - return _2172[0] ^ _2172[1]; + return x129; + }), "len"), (_2569: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2569[0][0] ^ _2569[1], _2569[0][1]] as [rt.u8, rt.u8]; + }); + const _2321: rt.usize = rt.usizeRem(data.length, 8); + if (_2321 === 0) { + rt.byteVecPush(out, rt.iterCount(z37) & 0xff); + } else if (_2321 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z37), 238, (_2623: [rt.u8, rt.u8]): rt.u8 => { + return _2623[0] ^ _2623[1]; })); - } else if (_927 === 2) { - rt.iterForEach(z11, (p11: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _926(p11)); + } else if (_2321 === 2) { + rt.iterForEach(z37, (p17: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2320(p17)); }); - } else if (_927 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z11, (_2171: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2171[0] as rt.u32, _2171[1] as rt.u32); + } else if (_2321 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z37, (_2618: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2618[0] as rt.u32, _2618[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2321 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z37, (_2613: [rt.u8, rt.u8]): rt.u8 => { + return _2613[0] ^ _2613[1]; + }), undefined, true)), undefined, true); + } else if (_2321 === 5) { + rt.byteVecPush(out, rt.iterFold(z37, 0, (acc5: rt.u8, p16: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc5, 3) ^ _2320(p16); + })); + } else if (_2321 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z37, (_2603: [rt.u8, rt.u8]): rt.u8 => { + return _2603[0] ^ _2603[1]; + }), (x137: rt.u8): boolean => { + return x137 === 0; + }) ? 1 : 0); + } else { + const z38: rt.Iter<[rt.u8, rt.u8]> = z37; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z38, (_2572: [rt.u8, rt.u8]): boolean => { + return _2572[0] > _2572[1]; + }), 238, (i6: rt.usize): rt.u8 => { + return i6 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z38, (_2575: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2575[0], 3) === 0; + }), 238, (_2578: [rt.u8, rt.u8]): rt.u8 => { + return _2578[0] ^ _2578[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z38, n), 238, (_2593: [rt.u8, rt.u8]): rt.u8 => { + return _2593[0] ^ _2593[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z38.next()), 238, (_2598: [rt.u8, rt.u8]): rt.u8 => { + return _2598[0] ^ _2598[1]; + })); + } + } else if (_2298 === 1) { + const z39: rt.Iter<[rt.u8, rt.u8]> = rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2487: rt.u8): rt.u8 => { + const x113: rt.u8 = _2487; + const _6131: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6131.value, x113 ^ 13); + rt.refMutRelease(_6131); + return x113; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2492: rt.u8): rt.u8 => { + const x114: rt.u8 = _2492; + const _6132: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6132.value, x114 ^ 14); + rt.refMutRelease(_6132); + return x114; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2502: rt.u8): rt.u8 => { + const x115: rt.u8 = _2502; + const _6133: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6133.value, x115 ^ 15); + rt.refMutRelease(_6133); + return x115; + }), "len"), (_2510: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2510[0][0] ^ _2510[1], _2510[0][1]] as [rt.u8, rt.u8]; + }); + const _2378: rt.usize = rt.usizeRem(data.length, 8); + if (_2378 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z39)) & 0xff); + } else if (_2378 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z39)), 238, (_2546: [rt.u8, rt.u8]): rt.u8 => { + return _2546[0] ^ _2546[1]; + })); + } else if (_2378 === 2) { + const _2385: (a0: [rt.u8, rt.u8]) => undefined = (p15: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2377(p15)); + }; + rt.iterForEach(rt.iterBox(z39), _2385); + } else if (_2378 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z39), (_2541: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2541[0] as rt.u32, _2541[1] as rt.u32); }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_927 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z11, (_2170: [rt.u8, rt.u8]): rt.u8 => { - return _2170[0] ^ _2170[1]; + } else if (_2378 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z39), (_2536: [rt.u8, rt.u8]): rt.u8 => { + return _2536[0] ^ _2536[1]; }), "next")), undefined, true); - } else if (_927 === 5) { - rt.byteVecPush(out, rt.iterFold(z11, 0, (acc2: rt.u8, p10: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc2, 3) ^ _926(p10); + } else if (_2378 === 5) { + const _2393: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc4: rt.u8, p14: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc4, 3) ^ _2377(p14); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z39), 0, _2393)); + } else if (_2378 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z39), (_2527: [rt.u8, rt.u8]): rt.u8 => { + return _2527[0] ^ _2527[1]; + }), (x123: rt.u8): boolean => { + return x123 === 0; + }) ? 1 : 0); + } else { + const z40: rt.Iter<[rt.u8, rt.u8]> = z39; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z40), (_2513: [rt.u8, rt.u8]): boolean => { + return _2513[0] > _2513[1]; + }), 238, (i5: rt.usize): rt.u8 => { + return i5 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z40), (_2515: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2515[0], 3) === 0; + }), 238, (_2518: [rt.u8, rt.u8]): rt.u8 => { + return _2518[0] ^ _2518[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z40), n), 238, (_2521: [rt.u8, rt.u8]): rt.u8 => { + return _2521[0] ^ _2521[1]; })); - } else if (_927 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z11, (_2169: [rt.u8, rt.u8]): rt.u8 => { - return _2169[0] ^ _2169[1]; - }), (x84: rt.u8): boolean => { - return x84 === 0; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z40.next()), 238, (_2524: [rt.u8, rt.u8]): rt.u8 => { + return _2524[0] ^ _2524[1]; + })); + } + } else if (_2298 === 2) { + const z41: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2452: rt.u8): rt.u8 => { + const x99: rt.u8 = _2452; + const _6125: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6125.value, x99 ^ 13); + rt.refMutRelease(_6125); + return x99; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2455: rt.u8): rt.u8 => { + const x100: rt.u8 = _2455; + const _6126: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6126.value, x100 ^ 14); + rt.refMutRelease(_6126); + return x100; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2457: rt.u8): rt.u8 => { + const x101: rt.u8 = _2457; + const _6127: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6127.value, x101 ^ 15); + rt.refMutRelease(_6127); + return x101; + }), "len"), (_2458: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2458[0][0] ^ _2458[1], _2458[0][1]] as [rt.u8, rt.u8]; + }), n); + const _2436: rt.usize = rt.usizeRem(data.length, 8); + if (_2436 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBox(z41)) & 0xff); + } else if (_2436 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBox(z41)), 238, (_2482: [rt.u8, rt.u8]): rt.u8 => { + return _2482[0] ^ _2482[1]; + })); + } else if (_2436 === 2) { + const _2443: (a0: [rt.u8, rt.u8]) => undefined = (p13: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2435(p13)); + }; + rt.iterForEach(rt.iterBox(z41), _2443); + } else if (_2436 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBox(z41), (_2474: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2474[0] as rt.u32, _2474[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2436 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBox(z41), (_2473: [rt.u8, rt.u8]): rt.u8 => { + return _2473[0] ^ _2473[1]; + }), "next")), undefined, true); + } else if (_2436 === 5) { + const _2451: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc3: rt.u8, p12: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc3, 3) ^ _2435(p12); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(z41), 0, _2451)); + } else if (_2436 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBox(z41), (_2470: [rt.u8, rt.u8]): rt.u8 => { + return _2470[0] ^ _2470[1]; + }), (x109: rt.u8): boolean => { + return x109 === 0; }) ? 1 : 0); } else { - const z12: rt.Iter<[rt.u8, rt.u8]> = z11; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z12, (_2164: [rt.u8, rt.u8]): boolean => { - return _2164[0] > _2164[1]; + const z42: rt.Iter<[rt.u8, rt.u8]> = z41; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(z42), (_2461: [rt.u8, rt.u8]): boolean => { + return _2461[0] > _2461[1]; }), 238, (i4: rt.usize): rt.u8 => { return i4 & 0xff; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z12, (_2165: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2165[0], 3) === 0; - }), 238, (_2166: [rt.u8, rt.u8]): rt.u8 => { - return _2166[0] ^ _2166[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(z42), (_2462: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2462[0], 3) === 0; + }), 238, (_2465: [rt.u8, rt.u8]): rt.u8 => { + return _2465[0] ^ _2465[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z12, n), 238, (_2167: [rt.u8, rt.u8]): rt.u8 => { - return _2167[0] ^ _2167[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(z42), n), 238, (_2466: [rt.u8, rt.u8]): rt.u8 => { + return _2466[0] ^ _2466[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z12.next()), 238, (_2168: [rt.u8, rt.u8]): rt.u8 => { - return _2168[0] ^ _2168[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z42.next()), 238, (_2469: [rt.u8, rt.u8]): rt.u8 => { + return _2469[0] ^ _2469[1]; })); } - } else { - const _965: rt.usize = rt.usizeRem(data.length, 8); - if (_965 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2157: rt.u8): rt.u8 => { - const x73: rt.u8 = _2157; - const _6136: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6136.value, x73 ^ 11); - rt.refMutRelease(_6136); - return x73; - }), (_2158: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2159: rt.u8): rt.u8 => { - const x74: rt.u8 = _2159; - const _6137: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6137.value, x74 ^ 12); - rt.refMutRelease(_6137); - return x74; - })), (_2160: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2160[0], 2) === 0; - })) & 0xff); - } else if (_965 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2153: rt.u8): rt.u8 => { - const x70: rt.u8 = _2153; - const _6134: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6134.value, x70 ^ 11); - rt.refMutRelease(_6134); - return x70; - }), (_2154: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2155: rt.u8): rt.u8 => { - const x71: rt.u8 = _2155; - const _6135: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6135.value, x71 ^ 12); - rt.refMutRelease(_6135); - return x71; - })), (_2156: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2156[0], _2156[1]); - })) & 0xff); - } else if (_965 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2149: rt.u8): rt.u8 => { - const x67: rt.u8 = _2149; - const _6132: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6132.value, x67 ^ 11); - rt.refMutRelease(_6132); - return x67; - }), (_2150: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2151: rt.u8): rt.u8 => { - const x68: rt.u8 = _2151; - const _6133: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6133.value, x68 ^ 12); - rt.refMutRelease(_6133); - return x68; - })), (_2152: [rt.u8, rt.u8]): boolean => { - return _2152[0] < 128; - })) & 0xff); - } else if (_965 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2145: rt.u8): rt.u8 => { - const x65: rt.u8 = _2145; - const _6130: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6130.value, x65 ^ 11); - rt.refMutRelease(_6130); - return x65; - }), (_2146: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2147: rt.u8): rt.u8 => { - const x66: rt.u8 = _2147; - const _6131: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6131.value, x66 ^ 12); - rt.refMutRelease(_6131); - return x66; - }))), (_2148: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2148[0] & 0xff; - })), 238)); - } else if (_965 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2142: rt.u8): rt.u8 => { - const x63: rt.u8 = _2142; - const _6128: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6128.value, x63 ^ 11); - rt.refMutRelease(_6128); - return x63; - }), (_2143: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2144: rt.u8): rt.u8 => { - const x64: rt.u8 = _2144; - const _6129: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6129.value, x64 ^ 12); - rt.refMutRelease(_6129); - return x64; - })), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_965 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2139: rt.u8): rt.u8 => { - const x61: rt.u8 = _2139; - const _6126: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6126.value, x61 ^ 11); - rt.refMutRelease(_6126); - return x61; - }), (_2140: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2141: rt.u8): rt.u8 => { - const x62: rt.u8 = _2141; - const _6127: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6127.value, x62 ^ 12); - rt.refMutRelease(_6127); - return x62; - })), n)) & 0xff); - } else if (_965 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2136: rt.u8): rt.u8 => { - const x59: rt.u8 = _2136; - const _6124: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6124.value, x59 ^ 11); - rt.refMutRelease(_6124); - return x59; - }), (_2137: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2138: rt.u8): rt.u8 => { - const x60: rt.u8 = _2138; - const _6125: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6125.value, x60 ^ 12); - rt.refMutRelease(_6125); - return x60; - })), n)) & 0xff); + } else if (_2298 === 3) { + const _2475: rt.Iter<[rt.u8, rt.u8]> = rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2400: rt.u8): rt.u8 => { + const x85: rt.u8 = _2400; + const _6119: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6119.value, x85 ^ 13); + rt.refMutRelease(_6119); + return x85; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2403: rt.u8): rt.u8 => { + const x86: rt.u8 = _2403; + const _6120: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6120.value, x86 ^ 14); + rt.refMutRelease(_6120); + return x86; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2404: rt.u8): rt.u8 => { + const x87: rt.u8 = _2404; + const _6121: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6121.value, x87 ^ 15); + rt.refMutRelease(_6121); + return x87; + }), "len"), (_2407: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2407[0][0] ^ _2407[1], _2407[0][1]] as [rt.u8, rt.u8]; + }); + const _2494: rt.usize = rt.usizeRem(data.length, 8); + if (_2494 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2475)))) & 0xff); + } else if (_2494 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2475)))), 238, (_2444: [rt.u8, rt.u8]): rt.u8 => { + return _2444[0] ^ _2444[1]; + })); + } else if (_2494 === 2) { + const _2501: (a0: [rt.u8, rt.u8]) => undefined = (p11: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2493(p11)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2475))), _2501); + } else if (_2494 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2475))), (_2434: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2434[0] as rt.u32, _2434[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2494 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2475))), (_2429: [rt.u8, rt.u8]): rt.u8 => { + return _2429[0] ^ _2429[1]; + }), "next")), undefined, true); + } else if (_2494 === 5) { + const _2509: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc2: rt.u8, p10: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc2, 3) ^ _2493(p10); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2475))), 0, _2509)); + } else if (_2494 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2475))), (_2424: [rt.u8, rt.u8]): rt.u8 => { + return _2424[0] ^ _2424[1]; + }), (x95: rt.u8): boolean => { + return x95 === 0; + }) ? 1 : 0); } else { - const p6: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2133: rt.u8): rt.u8 => { - const x57: rt.u8 = _2133; - const _6122: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6122.value, x57 ^ 11); - rt.refMutRelease(_6122); - return x57; - }), (_2134: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2135: rt.u8): rt.u8 => { - const x58: rt.u8 = _2135; - const _6123: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6123.value, x58 ^ 12); - rt.refMutRelease(_6123); - return x58; - }))); - rt.byteVecPush(out, (rt.peekablePeek(p6) !== undefined ? 1 : 0) ^ (rt.iterCount(p6) & 0xff)); + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_2475), (_2408: [rt.u8, rt.u8]): boolean => { + return _2408[0] > _2408[1]; + }), 238, (i3: rt.usize): rt.u8 => { + return i3 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_2475), (_2411: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2411[0], 3) === 0; + }), 238, (_2412: [rt.u8, rt.u8]): rt.u8 => { + return _2412[0] ^ _2412[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_2475), n), 238, (_2415: [rt.u8, rt.u8]): rt.u8 => { + return _2415[0] ^ _2415[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_2475.next()), 238, (_2416: [rt.u8, rt.u8]): rt.u8 => { + return _2416[0] ^ _2416[1]; + })); } - } - } else if ((kind & 16) === 0) { - const z13: rt.Iter<[rt.u8, rt.u8]> = rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2120: rt.u8): rt.u8 => { - const x43: rt.u8 = _2120; - const _6116: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6116.value, x43 ^ 13); - rt.refMutRelease(_6116); - return x43; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2121: rt.u8): rt.u8 => { - const x44: rt.u8 = _2121; - const _6117: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6117.value, x44 ^ 14); - rt.refMutRelease(_6117); - return x44; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2122: rt.u8): rt.u8 => { - const x45: rt.u8 = _2122; - const _6118: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6118.value, x45 ^ 15); - rt.refMutRelease(_6118); - return x45; - }), "len"), (_2123: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2123[0][0] ^ _2123[1], _2123[0][1]] as [rt.u8, rt.u8]; - }); - const _1102: rt.usize = rt.usizeRem(data.length, 8); - if (_1102 === 0) { - rt.byteVecPush(out, rt.iterCount(z13) & 0xff); - } else if (_1102 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z13), 238, (_2132: [rt.u8, rt.u8]): rt.u8 => { - return _2132[0] ^ _2132[1]; - })); - } else if (_1102 === 2) { - rt.iterForEach(z13, (p9: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _1101(p9)); - }); - } else if (_1102 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z13, (_2131: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2131[0] as rt.u32, _2131[1] as rt.u32); - }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_1102 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z13, (_2130: [rt.u8, rt.u8]): rt.u8 => { - return _2130[0] ^ _2130[1]; - }), undefined, true)), undefined, true); - } else if (_1102 === 5) { - rt.byteVecPush(out, rt.iterFold(z13, 0, (acc: rt.u8, p8: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc, 3) ^ _1101(p8); - })); - } else if (_1102 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z13, (_2129: [rt.u8, rt.u8]): rt.u8 => { - return _2129[0] ^ _2129[1]; - }), (x53: rt.u8): boolean => { - return x53 === 0; - }) ? 1 : 0); } else { - const z14: rt.Iter<[rt.u8, rt.u8]> = z13; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z14, (_2124: [rt.u8, rt.u8]): boolean => { - return _2124[0] > _2124[1]; - }), 238, (i2: rt.usize): rt.u8 => { - return i2 & 0xff; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z14, (_2125: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2125[0], 3) === 0; - }), 238, (_2126: [rt.u8, rt.u8]): rt.u8 => { - return _2126[0] ^ _2126[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z14, n), 238, (_2127: [rt.u8, rt.u8]): rt.u8 => { - return _2127[0] ^ _2127[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z14.next()), 238, (_2128: [rt.u8, rt.u8]): rt.u8 => { - return _2128[0] ^ _2128[1]; - })); - } - } else { - const _1140: rt.usize = rt.usizeRem(data.length, 8); - if (_1140 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2115: rt.u8): rt.u8 => { - const x38: rt.u8 = _2115; - const _6112: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6112.value, x38 ^ 13); - rt.refMutRelease(_6112); - return x38; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2116: rt.u8): rt.u8 => { - const x39: rt.u8 = _2116; + const _2528: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2350: rt.u8): rt.u8 => { + const x71: rt.u8 = _2350; const _6113: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6113.value, x39 ^ 14); + rt.byteVecPush(_6113.value, x71 ^ 13); rt.refMutRelease(_6113); - return x39; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2117: rt.u8): rt.u8 => { - const x40: rt.u8 = _2117; + return x71; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2351: rt.u8): rt.u8 => { + const x72: rt.u8 = _2351; const _6114: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6114.value, x40 ^ 15); + rt.byteVecPush(_6114.value, x72 ^ 14); rt.refMutRelease(_6114); - return x40; - }), "len"), (_2118: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2118[0][0] ^ _2118[1], _2118[0][1]] as [rt.u8, rt.u8]; - }), (_2119: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2119[0], 2) === 0; - })) & 0xff); - } else if (_1140 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2110: rt.u8): rt.u8 => { - const x33: rt.u8 = _2110; - const _6108: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6108.value, x33 ^ 13); - rt.refMutRelease(_6108); - return x33; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2111: rt.u8): rt.u8 => { - const x34: rt.u8 = _2111; + return x72; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2354: rt.u8): rt.u8 => { + const x73: rt.u8 = _2354; + const _6115: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6115.value, x73 ^ 15); + rt.refMutRelease(_6115); + return x73; + }), "len"), (_2355: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2355[0][0] ^ _2355[1], _2355[0][1]] as [rt.u8, rt.u8]; + }), n); + const _2548: rt.usize = rt.usizeRem(data.length, 8); + if (_2548 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2528)))) & 0xff); + } else if (_2548 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2528)))), 238, (_2399: [rt.u8, rt.u8]): rt.u8 => { + return _2399[0] ^ _2399[1]; + })); + } else if (_2548 === 2) { + const _2555: (a0: [rt.u8, rt.u8]) => undefined = (p9: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2547(p9)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2528))), _2555); + } else if (_2548 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2528))), (_2397: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2397[0] as rt.u32, _2397[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2548 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2528))), (_2394: [rt.u8, rt.u8]): rt.u8 => { + return _2394[0] ^ _2394[1]; + }), "next")), undefined, true); + } else if (_2548 === 5) { + const _2563: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc: rt.u8, p8: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc, 3) ^ _2547(p8); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2528))), 0, _2563)); + } else if (_2548 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBox(rt.iterBorrow(_2528))), (_2386: [rt.u8, rt.u8]): rt.u8 => { + return _2386[0] ^ _2386[1]; + }), (x81: rt.u8): boolean => { + return x81 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBox(_2528), (_2358: [rt.u8, rt.u8]): boolean => { + return _2358[0] > _2358[1]; + }), 238, (i2: rt.usize): rt.u8 => { + return i2 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBox(_2528), (_2359: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2359[0], 3) === 0; + }), 238, (_2366: [rt.u8, rt.u8]): rt.u8 => { + return _2366[0] ^ _2366[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBox(_2528), n), 238, (_2371: [rt.u8, rt.u8]): rt.u8 => { + return _2371[0] ^ _2371[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_2528.next()), 238, (_2376: [rt.u8, rt.u8]): rt.u8 => { + return _2376[0] ^ _2376[1]; + })); + } + } + } else { + const _2581: rt.usize = rt.usizeRem(data.length, 8); + if (_2581 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2340: rt.u8): rt.u8 => { + const x66: rt.u8 = _2340; const _6109: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6109.value, x34 ^ 14); + rt.byteVecPush(_6109.value, x66 ^ 13); rt.refMutRelease(_6109); - return x34; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2112: rt.u8): rt.u8 => { - const x35: rt.u8 = _2112; + return x66; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2342: rt.u8): rt.u8 => { + const x67: rt.u8 = _2342; const _6110: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6110.value, x35 ^ 15); + rt.byteVecPush(_6110.value, x67 ^ 14); rt.refMutRelease(_6110); - return x35; - }), "len"), (_2113: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2113[0][0] ^ _2113[1], _2113[0][1]] as [rt.u8, rt.u8]; - }), (_2114: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2114[0], _2114[1]); + return x67; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2343: rt.u8): rt.u8 => { + const x68: rt.u8 = _2343; + const _6111: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6111.value, x68 ^ 15); + rt.refMutRelease(_6111); + return x68; + }), "len"), (_2346: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2346[0][0] ^ _2346[1], _2346[0][1]] as [rt.u8, rt.u8]; + }), (_2347: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2347[0], 2) === 0; })) & 0xff); - } else if (_1140 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2105: rt.u8): rt.u8 => { - const x28: rt.u8 = _2105; - const _6104: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6104.value, x28 ^ 13); - rt.refMutRelease(_6104); - return x28; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2106: rt.u8): rt.u8 => { - const x29: rt.u8 = _2106; + } else if (_2581 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2309: rt.u8): rt.u8 => { + const x61: rt.u8 = _2309; const _6105: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6105.value, x29 ^ 14); + rt.byteVecPush(_6105.value, x61 ^ 13); rt.refMutRelease(_6105); - return x29; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2107: rt.u8): rt.u8 => { - const x30: rt.u8 = _2107; + return x61; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2314: rt.u8): rt.u8 => { + const x62: rt.u8 = _2314; const _6106: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6106.value, x30 ^ 15); + rt.byteVecPush(_6106.value, x62 ^ 14); rt.refMutRelease(_6106); - return x30; - }), "len"), (_2108: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2108[0][0] ^ _2108[1], _2108[0][1]] as [rt.u8, rt.u8]; - }), (_2109: [rt.u8, rt.u8]): boolean => { - return _2109[0] < 128; + return x62; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2319: rt.u8): rt.u8 => { + const x63: rt.u8 = _2319; + const _6107: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6107.value, x63 ^ 15); + rt.refMutRelease(_6107); + return x63; + }), "len"), (_2329: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2329[0][0] ^ _2329[1], _2329[0][1]] as [rt.u8, rt.u8]; + }), (_2337: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2337[0], _2337[1]); })) & 0xff); - } else if (_1140 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2100: rt.u8): rt.u8 => { - const x24: rt.u8 = _2100; - const _6100: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6100.value, x24 ^ 13); - rt.refMutRelease(_6100); - return x24; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2101: rt.u8): rt.u8 => { - const x25: rt.u8 = _2101; + } else if (_2581 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2287: rt.u8): rt.u8 => { + const x56: rt.u8 = _2287; const _6101: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6101.value, x25 ^ 14); + rt.byteVecPush(_6101.value, x56 ^ 13); rt.refMutRelease(_6101); - return x25; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2102: rt.u8): rt.u8 => { - const x26: rt.u8 = _2102; + return x56; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2289: rt.u8): rt.u8 => { + const x57: rt.u8 = _2289; const _6102: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6102.value, x26 ^ 15); + rt.byteVecPush(_6102.value, x57 ^ 14); rt.refMutRelease(_6102); - return x26; - }), "len"), (_2103: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2103[0][0] ^ _2103[1], _2103[0][1]] as [rt.u8, rt.u8]; - })), (_2104: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2104[0] & 0xff; + return x57; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2291: rt.u8): rt.u8 => { + const x58: rt.u8 = _2291; + const _6103: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6103.value, x58 ^ 15); + rt.refMutRelease(_6103); + return x58; + }), "len"), (_2292: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2292[0][0] ^ _2292[1], _2292[0][1]] as [rt.u8, rt.u8]; + }), (_2303: [rt.u8, rt.u8]): boolean => { + return _2303[0] < 128; + })) & 0xff); + } else if (_2581 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2271: rt.u8): rt.u8 => { + const x52: rt.u8 = _2271; + const _682: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_682.value, x52 ^ 13); + rt.refMutRelease(_682); + return x52; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2275: rt.u8): rt.u8 => { + const x53: rt.u8 = _2275; + const _692: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_692.value, x53 ^ 14); + rt.refMutRelease(_692); + return x53; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2276: rt.u8): rt.u8 => { + const x54: rt.u8 = _2276; + const _697: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_697.value, x54 ^ 15); + rt.refMutRelease(_697); + return x54; + }), "len"), (_2282: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2282[0][0] ^ _2282[1], _2282[0][1]] as [rt.u8, rt.u8]; + })), (_2286: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2286[0] & 0xff; })), 238)); - } else if (_1140 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_279: rt.u8): rt.u8 => { - const x20: rt.u8 = _279; - const _671: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_671.value, x20 ^ 13); - rt.refMutRelease(_671); - return x20; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_284: rt.u8): rt.u8 => { - const x21: rt.u8 = _284; - const _680: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_680.value, x21 ^ 14); - rt.refMutRelease(_680); - return x21; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_294: rt.u8): rt.u8 => { - const x22: rt.u8 = _294; - const _685: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_685.value, x22 ^ 15); - rt.refMutRelease(_685); - return x22; - }), "len"), (_299: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_299[0][0] ^ _299[1], _299[0][1]] as [rt.u8, rt.u8]; + } else if (_2581 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2243: rt.u8): rt.u8 => { + const x48: rt.u8 = _2243; + const _654: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_654.value, x48 ^ 13); + rt.refMutRelease(_654); + return x48; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2247: rt.u8): rt.u8 => { + const x49: rt.u8 = _2247; + const _663: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_663.value, x49 ^ 14); + rt.refMutRelease(_663); + return x49; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2258: rt.u8): rt.u8 => { + const x50: rt.u8 = _2258; + const _668: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_668.value, x50 ^ 15); + rt.refMutRelease(_668); + return x50; + }), "len"), (_2262: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2262[0][0] ^ _2262[1], _2262[0][1]] as [rt.u8, rt.u8]; }), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_1140 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_251: rt.u8): rt.u8 => { - const x16: rt.u8 = _251; - const _642: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_642.value, x16 ^ 13); - rt.refMutRelease(_642); - return x16; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_256: rt.u8): rt.u8 => { - const x17: rt.u8 = _256; - const _651: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_651.value, x17 ^ 14); - rt.refMutRelease(_651); - return x17; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_265: rt.u8): rt.u8 => { - const x18: rt.u8 = _265; - const _656: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_656.value, x18 ^ 15); - rt.refMutRelease(_656); - return x18; - }), "len"), (_270: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_270[0][0] ^ _270[1], _270[0][1]] as [rt.u8, rt.u8]; + } else if (_2581 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2216: rt.u8): rt.u8 => { + const x44: rt.u8 = _2216; + const _629: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_629.value, x44 ^ 13); + rt.refMutRelease(_629); + return x44; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2220: rt.u8): rt.u8 => { + const x45: rt.u8 = _2220; + const _632: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_632.value, x45 ^ 14); + rt.refMutRelease(_632); + return x45; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2230: rt.u8): rt.u8 => { + const x46: rt.u8 = _2230; + const _635: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_635.value, x46 ^ 15); + rt.refMutRelease(_635); + return x46; + }), "len"), (_2234: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2234[0][0] ^ _2234[1], _2234[0][1]] as [rt.u8, rt.u8]; }), n)) & 0xff); - } else if (_1140 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_232: rt.u8): rt.u8 => { - const x12: rt.u8 = _232; - const _611: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_611.value, x12 ^ 13); - rt.refMutRelease(_611); - return x12; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_235: rt.u8): rt.u8 => { - const x13: rt.u8 = _235; - const _623: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_623.value, x13 ^ 14); - rt.refMutRelease(_623); - return x13; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_236: rt.u8): rt.u8 => { - const x14: rt.u8 = _236; - const _628: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_628.value, x14 ^ 15); - rt.refMutRelease(_628); - return x14; - }), "len"), (_239: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_239[0][0] ^ _239[1], _239[0][1]] as [rt.u8, rt.u8]; + } else if (_2581 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2190: rt.u8): rt.u8 => { + const x40: rt.u8 = _2190; + const _613: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_613.value, x40 ^ 13); + rt.refMutRelease(_613); + return x40; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2194: rt.u8): rt.u8 => { + const x41: rt.u8 = _2194; + const _621: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_621.value, x41 ^ 14); + rt.refMutRelease(_621); + return x41; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2203: rt.u8): rt.u8 => { + const x42: rt.u8 = _2203; + const _624: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_624.value, x42 ^ 15); + rt.refMutRelease(_624); + return x42; + }), "len"), (_2207: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2207[0][0] ^ _2207[1], _2207[0][1]] as [rt.u8, rt.u8]; }), n)) & 0xff); } else { - const p7: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_224: rt.u8): rt.u8 => { - const x8: rt.u8 = _224; + const p7: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2167: rt.u8): rt.u8 => { + const x36: rt.u8 = _2167; const _62: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_62.value, x8 ^ 13); + rt.byteVecPush(_62.value, x36 ^ 13); rt.refMutRelease(_62); - return x8; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_227: rt.u8): rt.u8 => { - const x9: rt.u8 = _227; - const _63: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_63.value, x9 ^ 14); - rt.refMutRelease(_63); - return x9; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_228: rt.u8): rt.u8 => { - const x10: rt.u8 = _228; - const _66: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_66.value, x10 ^ 15); - rt.refMutRelease(_66); - return x10; - }), "len"), (_231: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_231[0][0] ^ _231[1], _231[0][1]] as [rt.u8, rt.u8]; + return x36; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2170: rt.u8): rt.u8 => { + const x37: rt.u8 = _2170; + const _65: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_65.value, x37 ^ 14); + rt.refMutRelease(_65); + return x37; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2173: rt.u8): rt.u8 => { + const x38: rt.u8 = _2173; + const _67: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_67.value, x38 ^ 15); + rt.refMutRelease(_67); + return x38; + }), "len"), (_2176: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2176[0][0] ^ _2176[1], _2176[0][1]] as [rt.u8, rt.u8]; })); rt.byteVecPush(out, (rt.peekablePeek(p7) !== undefined ? 1 : 0) ^ (rt.iterCount(p7) & 0xff)); } } - const _1318: rt.RefCell = rt.refCellBorrow(log); - rt.byteVecExtendFromSlice(out, rt.byteVecSlice(_1318.value)); - rt.refRelease(_1318); + const _2759: rt.RefCell = rt.refCellBorrow(log); + rt.byteVecExtendFromSlice(out, rt.byteVecSlice(_2759.value)); + rt.refRelease(_2759); } /** @@ -9527,8 +11439,8 @@ export function lent(data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterToOption(Countdown.next$iter_Iterator(held)), 170)); held = other; rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterToOption(Countdown.next$iter_Iterator(held)), 187)); - rt.iterExtendBytes(out, rt.iterFrom(own, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it)), "next"); - rt.iterExtendBytes(out, rt.iterFrom(other, (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it)), "next"); + rt.iterExtendBytes(out, rt.iterFrom(own, Countdown.next$iter_Iterator), "next"); + rt.iterExtendBytes(out, rt.iterFrom(other, Countdown.next$iter_Iterator), "next"); const range: rt.Range = new rt.Range(0, rt.u8Mul(n & 0xff, 3)); let erased: rt.Iter = rt.iterDyn(rt.iterBorrow(range)); rt.iterExtendBytes(out, rt.iterTake(rt.iterStepBy(rt.iterBorrow(erased), 2), 2), "next"); diff --git a/ts/fixtures/lang/iters/src/iters.rs b/ts/fixtures/lang/iters/src/iters.rs index d66cee380..bc246dbeb 100644 --- a/ts/fixtures/lang/iters/src/iters.rs +++ b/ts/fixtures/lang/iters/src/iters.rs @@ -1190,7 +1190,8 @@ fn at(items: &[T], i: usize) -> Option<&T> { /// A zip of each kind std specializes, of sides whose closures log each item they make, and /// either side shorter or empty: by index (`TrustedRandomAccess`), folded by its size hint /// (`TrustedLen`, or only `TrustedRandomAccessNoCoerce`), and by `next` (neither), read by -/// each of std's consumers, and through adaptors that fold it or read it by `try_fold`. +/// each of std's consumers, through adaptors that fold it or read it by `try_fold`, and +/// through a box. pub fn zips(kind: u8, data: &[u8], out: &mut Vec) { let split = (kind >> 5) as usize % (data.len() + 1); let (a, b) = data.split_at(split); @@ -1228,6 +1229,7 @@ pub fn zips(kind: u8, data: &[u8], out: &mut Vec) { 5 => out.push(z.fold(0u8, |acc, p| acc.wrapping_mul(3) ^ at(p))), 6 => out.push(z.map(at).any(|x| x == 0) as u8), _ => { + #[allow(unused_mut, reason = "a zip read through a `&mut` needs none")] let mut z = z; out.push(z.position(|(x, y)| x > y).map_or(0xee, |i| i as u8)); out.push(z.find(|&(x, _)| x % 3 == 0).map_or(0xee, at)); @@ -1237,11 +1239,19 @@ pub fn zips(kind: u8, data: &[u8], out: &mut Vec) { } }}; } - // `$zip` and then adaptors of it, each folding it or reading it by `try_fold`. + // `$zip` and then adaptors of it, each folding it or reading it by `try_fold`, or a box + // of it, owned or borrowed, which std's reads by `next` for each consumer but `nth` and + // `last`. macro_rules! adapt { ($zip:expr) => {{ match kind & 16 { - 0 => read!($zip), + 0 => match data.len() / 8 % 5 { + 0 => read!($zip), + 1 => read!(Box::new($zip)), + 2 => read!(Box::new($zip.skip(n))), + 3 => read!(&mut Box::new($zip)), + _ => read!(&mut Box::new($zip.skip(n))), + }, _ => match data.len() % 8 { 0 => out.push($zip.filter(|&(x, _)| x % 2 == 0).count() as u8), 1 => out.push($zip.filter_map(|(x, y)| x.checked_sub(y)).count() as u8), diff --git a/ts/fixtures/lang/strs/expected/strs.ts b/ts/fixtures/lang/strs/expected/strs.ts index cd49ab713..51075ffc1 100644 --- a/ts/fixtures/lang/strs/expected/strs.ts +++ b/ts/fixtures/lang/strs/expected/strs.ts @@ -1240,7 +1240,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.iterEmpty(); put(out, rt.stringExtendChars("", rt.iterEmpty() as rt.Iter)); put(out, rt.stringExtendChars("", rt.iterOption(rt.charFromU32(kind as rt.u32)))); - put(out, rt.stringExtendChars("", rt.iterFrom({ items: chars, nexts }, (it: Counted.Counted) => Counted.next$iter_Iterator_char(it)))); + put(out, rt.stringExtendChars("", rt.iterFrom({ items: chars, nexts }, Counted.next$iter_Iterator_char))); } else if (_21 === 1) { put(out, rt.stringExtend("", rt.iterSlice(parts))); put(out, rt.stringExtend("", rt.iterRev(rt.strSplit(s, "/")))); @@ -1263,7 +1263,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { put(out, rt.stringFromStrings(rt.iterMap(rt.iterSlice(owned), (p7: string): string => { return p7; }))); - put(out, rt.stringFromStrings(rt.iterFrom({ items: owned, nexts }, (it: Counted.Counted) => Counted.next$iter_Iterator_String(it)))); + put(out, rt.stringFromStrings(rt.iterFrom({ items: owned, nexts }, Counted.next$iter_Iterator_String))); } else if (_21 === 2) { let t: string = "é"; const _153: rt.char[] = chars; @@ -1274,7 +1274,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.iterEmpty(); named.name = rt.stringExtendChars(named.name, rt.iterEmpty() as rt.Iter); const counted3: Counted.Counted = { items: chars, nexts }; - t = rt.stringExtendChars(t, rt.iterFrom(counted3, (it: Counted.Counted) => Counted.next$iter_Iterator_char(it))); + t = rt.stringExtendChars(t, rt.iterFrom(counted3, Counted.next$iter_Iterator_char)); put(out, t); } else { let t2: string = ""; @@ -1294,7 +1294,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.iterEmpty(); named.name = rt.stringExtend(named.name, rt.iterEmpty() as rt.Iter); const counted4: Counted.Counted = { items: parts, nexts }; - t2 = rt.stringExtend(t2, rt.iterFrom(counted4, (it: Counted.Counted) => Counted.next$iter_Iterator_ref_str(it))); + t2 = rt.stringExtend(t2, rt.iterFrom(counted4, Counted.next$iter_Iterator_ref_str)); put(out, t2); } put(out, named.name); diff --git a/ts/fixtures/reject/census.txt b/ts/fixtures/reject/census.txt index 5b9a5691e..e781d3073 100644 --- a/ts/fixtures/reject/census.txt +++ b/ts/fixtures/reject/census.txt @@ -36,8 +36,14 @@ fixtures/reject/src/fmt.rs:written+2:10: `fmt::Arguments` with a placeholder, or fixtures/reject/src/futures.rs:generic_pending+1:2: `futures::Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>` fixtures/reject/src/futures.rs:nested_poll+0:20: `Poll>>>` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` fixtures/reject/src/futures.rs:pending_output+0:34: a future of `std::task::Poll`, which can be `rt.Pending`, as the future's own `Pending` is -fixtures/reject/src/iters.rs:impl DoubleEndedIterator for Backs+5:2: overriding `DoubleEndedIterator::nth_back`, which std's adaptors call in place of `next` or beside it -fixtures/reject/src/iters.rs:impl Iterator for Folds+7:2: overriding `Iterator::fold`, which std's adaptors call in place of `next` or beside it +fixtures/reject/src/iters.rs:impl DoubleEndedIterator for Backs+5:2: overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it +fixtures/reject/src/iters.rs:impl Iterator for Discards+11:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Disposes+10:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Folds+8:3: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Keeps+8:18: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Measures+11:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Probes+8:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Sizes+8:11: overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet fixtures/reject/src/iters.rs:parts_summed+1:17: unsupported call to ` as std::iter::Iterator>::sum::` fixtures/reject/src/iters.rs:parts_summed+1:38: unsupported call to ` as std::iter::Iterator>::sum::` fixtures/reject/src/iters.rs:scanned+2:4: `Iterator::scan` of `Option>`, whose `None` is `rt.None`, which is not supported yet diff --git a/ts/fixtures/reject/expected.txt b/ts/fixtures/reject/expected.txt index bab20641e..dfb6d567c 100644 --- a/ts/fixtures/reject/expected.txt +++ b/ts/fixtures/reject/expected.txt @@ -38,8 +38,14 @@ fixtures/reject/src/fmt.rs:written+2:10: `fmt::Arguments` with a placeholder, or fixtures/reject/src/futures.rs:generic_pending+1:2: `futures::Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>` fixtures/reject/src/futures.rs:nested_poll+0:20: `Poll>>>` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` fixtures/reject/src/futures.rs:pending_output+0:34: a future of `std::task::Poll`, which can be `rt.Pending`, as the future's own `Pending` is -fixtures/reject/src/iters.rs:impl DoubleEndedIterator for Backs+5:2: overriding `DoubleEndedIterator::nth_back`, which std's adaptors call in place of `next` or beside it -fixtures/reject/src/iters.rs:impl Iterator for Folds+7:2: overriding `Iterator::fold`, which std's adaptors call in place of `next` or beside it +fixtures/reject/src/iters.rs:impl DoubleEndedIterator for Backs+5:2: overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it +fixtures/reject/src/iters.rs:impl Iterator for Discards+11:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Disposes+10:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Folds+8:3: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Keeps+8:18: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Measures+11:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Probes+8:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +fixtures/reject/src/iters.rs:impl Iterator for Sizes+8:11: overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet fixtures/reject/src/iters.rs:parts_summed+1:17: unsupported call to ` as std::iter::Iterator>::sum::` fixtures/reject/src/iters.rs:parts_summed+1:38: unsupported call to ` as std::iter::Iterator>::sum::` fixtures/reject/src/iters.rs:scanned+2:4: `Iterator::scan` of `Option>`, whose `None` is `rt.None`, which is not supported yet diff --git a/ts/fixtures/reject/src/iters.rs b/ts/fixtures/reject/src/iters.rs index 76620466b..6423004bd 100644 --- a/ts/fixtures/reject/src/iters.rs +++ b/ts/fixtures/reject/src/iters.rs @@ -7,7 +7,7 @@ pub fn scanned(v: &[u8]) -> usize { .count() } -/// An iterator whose `fold` std's adaptors would call in place of its `next`. +/// An iterator whose own `fold` holds its accumulator in an `Option`, of an `rt.None` or not. pub struct Folds; impl Iterator for Folds { @@ -18,7 +18,7 @@ impl Iterator for Folds { } fn fold B>(self, init: B, _f: F) -> B { - init + Some(init).unwrap() } } @@ -26,7 +26,7 @@ pub fn folds() -> usize { Folds.map(|b| b + 1).count() } -/// An iterator whose `nth_back` std's adaptors would call in place of its `next_back`. +/// An iterator whose `rfind` std's adaptors would call in place of its `next_back`. pub struct Backs; impl Iterator for Backs { @@ -42,13 +42,13 @@ impl DoubleEndedIterator for Backs { None } - fn nth_back(&mut self, _n: usize) -> Option { + fn rfind bool>(&mut self, _p: P) -> Option { Some(0) } } -pub fn backs() -> usize { - Backs.rev().skip(1).count() +pub fn backs() -> Option { + Backs.rev().find(|&b| b == 0) } /// `scan` of `()`s: its closure's `None` and `Some(())` would both be `undefined`. @@ -96,3 +96,157 @@ impl Extend for Tens { pub fn tens(data: &[u8]) -> (Vec, Tens) { data.iter().map(|&b| (b, b)).collect() } + +/// An iterator whose own `fold` tells its accumulator apart by a helper generic over it, +/// in a closure. +pub struct Keeps; + +impl Iterator for Keeps { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn fold B>(self, init: B, _f: F) -> B { + let kept = |x| keep(x); + kept(init) + } +} + +#[inline(never)] +fn keep(x: T) -> T { + Some(x).unwrap() +} + +pub fn keeps() -> usize { + Keeps.map(|b| b + 1).count() +} + +/// An iterator whose own `fold` tells its accumulator apart by its size. +pub struct Sizes; + +impl Iterator for Sizes { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn fold B>(self, init: B, _f: F) -> B { + assert!(const { size_of::() } > 0); + init + } +} + +pub fn sizes() -> usize { + Sizes.map(|b| b + 1).count() +} + +/// An iterator whose own `fold` drops its accumulator, as the one it is translated for drops. +pub struct Discards; + +impl Iterator for Discards { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + #[allow(clippy::empty_loop)] + fn fold B>(self, init: B, _f: F) -> B { + { + let _held = init; + } + loop {} + } +} + +pub fn discards() -> usize { + Discards.map(|b| b + 1).count() +} + +/// An iterator whose own `fold` drops its accumulator by `drop`, which only its closure can be. +pub struct Disposes; + +impl Iterator for Disposes { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + #[allow(clippy::empty_loop)] + fn fold B>(self, init: B, f: F) -> B { + drop(f); + drop(init); + loop {} + } +} + +pub fn disposes() -> usize { + Disposes.map(|b| b + 1).count() +} + +/// An iterator whose own `fold` tells its accumulator apart by an iterator of the crate over it. +pub struct Probes; + +impl Iterator for Probes { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn fold B>(self, init: B, _f: F) -> B { + assert!(Probe(&init).count() > 0); + init + } +} + +/// Counts its type parameter's size. +pub struct Probe<'a, T>(&'a T); + +impl Iterator for Probe<'_, T> { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn count(self) -> usize { + size_of::() + } +} + +pub fn probes() -> usize { + Probes.map(|b| b + 1).count() +} + +/// An iterator whose own `fold` tells its closure apart by the size of a closure holding it. +pub struct Measures; + +impl Iterator for Measures { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn fold B>(self, init: B, f: F) -> B { + let held = move || { + let _held = &f; + }; + assert!(measure(held) > 0); + init + } +} + +#[inline(never)] +fn measure(_x: T) -> usize { + size_of::() +} + +pub fn measures() -> usize { + Measures.map(|b| b + 1).count() +} diff --git a/ts/fixtures/reject/ts.toml b/ts/fixtures/reject/ts.toml index 8f8b3cb42..78e94574c 100644 --- a/ts/fixtures/reject/ts.toml +++ b/ts/fixtures/reject/ts.toml @@ -29,10 +29,16 @@ roots = [ "futures::nested_poll", "futures::pending_output", "iters::backs", + "iters::discards", + "iters::disposes", "iters::folds", + "iters::keeps", + "iters::measures", "iters::parts_summed", + "iters::probes", "iters::scanned", "iters::scanned_unit", + "iters::sizes", "iters::tens", "kept::atomic_exchanged", "kept::atomic_swapped", diff --git a/ts/fixtures/stock/expected/hashlink/linked_hash_map.Keys.ts b/ts/fixtures/stock/expected/hashlink/linked_hash_map.Keys.ts index 312f5ddcf..54dd3fc38 100644 --- a/ts/fixtures/stock/expected/hashlink/linked_hash_map.Keys.ts +++ b/ts/fixtures/stock/expected/hashlink/linked_hash_map.Keys.ts @@ -25,7 +25,7 @@ export function nextBack$iter_DoubleEndedIterator_u16_u32(self: Keys): rt.usize { - return rt.iterFrom(self.inner, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))).len(); + return rt.iterFrom(self.inner, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }).len(); } //# sourceMappingURL=linked_hash_map.Keys.ts.map diff --git a/ts/fixtures/stock/expected/hashlink/linked_hash_map.Values.ts b/ts/fixtures/stock/expected/hashlink/linked_hash_map.Values.ts index c869096d2..a8b52fc55 100644 --- a/ts/fixtures/stock/expected/hashlink/linked_hash_map.Values.ts +++ b/ts/fixtures/stock/expected/hashlink/linked_hash_map.Values.ts @@ -25,7 +25,7 @@ export function nextBack$iter_DoubleEndedIterator_u16_u32(self: Values): rt.usize { - return rt.iterFrom(self.inner, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))).len(); + return rt.iterFrom(self.inner, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }).len(); } //# sourceMappingURL=linked_hash_map.Values.ts.map diff --git a/ts/fixtures/stock/expected/hashlink/linked_hash_map.ValuesMut.ts b/ts/fixtures/stock/expected/hashlink/linked_hash_map.ValuesMut.ts index beb590cfc..c46de6f79 100644 --- a/ts/fixtures/stock/expected/hashlink/linked_hash_map.ValuesMut.ts +++ b/ts/fixtures/stock/expected/hashlink/linked_hash_map.ValuesMut.ts @@ -25,7 +25,7 @@ export function nextBack$iter_DoubleEndedIterator_u16_u32(self: ValuesMut): rt.usize { - return rt.iterFrom(self.inner, (it: IterMut.IterMut) => IterMut.next$iter_Iterator_u16_u32(it), undefined, (it: IterMut.IterMut) => IterMut.sizeHint$iter_Iterator_u16_u32(it), (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it))).len(); + return rt.iterFrom(self.inner, IterMut.next$iter_Iterator_u16_u32, undefined, { hint: IterMut.sizeHint$iter_Iterator_u16_u32, back: (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }).len(); } //# sourceMappingURL=linked_hash_map.ValuesMut.ts.map diff --git a/ts/fixtures/stock/expected/maps.ts b/ts/fixtures/stock/expected/maps.ts index ecfd975f6..e50e57e21 100644 --- a/ts/fixtures/stock/expected/maps.ts +++ b/ts/fixtures/stock/expected/maps.ts @@ -725,9 +725,9 @@ export function ends$hashlink_linked_hash_map_Drain_u16_u32_maps_linked_iters_cl } else if (_20 === 1) { item = linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_Drain_u16_u32, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNth(rt.iterFrom(it, linked_hash_map_Drain.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_Drain_u16_u32, { hint: linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_Drain_u16_u32, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNthBack(rt.iterFrom(it, linked_hash_map_Drain.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_Drain_u16_u32, { hint: linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } put(out, option_mapOr$0iaogpf(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32(it); @@ -736,7 +736,7 @@ export function ends$hashlink_linked_hash_map_Drain_u16_u32_maps_linked_iters_cl put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_Drain_u16_u32, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it)))); + const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, linked_hash_map_Drain.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_Drain_u16_u32, { hint: linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })); while (true) { const _41: [rt.u16, rt.u32] | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -768,9 +768,9 @@ export function ends$hashlink_linked_hash_map_IntoIter_u16_u32_maps_linked_iters } else if (_20 === 1) { item = linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNth(rt.iterFrom(it, linked_hash_map_IntoIter.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, { hint: linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNthBack(rt.iterFrom(it, linked_hash_map_IntoIter.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, { hint: linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } put(out, option_mapOr$0iaogpf(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32(it); @@ -779,7 +779,7 @@ export function ends$hashlink_linked_hash_map_IntoIter_u16_u32_maps_linked_iters put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it)))); + const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, linked_hash_map_IntoIter.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, { hint: linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })); while (true) { const _41: [rt.u16, rt.u32] | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -811,9 +811,9 @@ export function ends$hashlink_linked_hash_map_IterMut_u16_u32_maps_linked_iters_ } else if (_20 === 1) { item = IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: IterMut.IterMut) => IterMut.next$iter_Iterator_u16_u32(it), undefined, (it: IterMut.IterMut) => IterMut.sizeHint$iter_Iterator_u16_u32(it), (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNth(rt.iterFrom(it, IterMut.next$iter_Iterator_u16_u32, undefined, { hint: IterMut.sizeHint$iter_Iterator_u16_u32, back: (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: IterMut.IterMut) => IterMut.next$iter_Iterator_u16_u32(it), undefined, (it: IterMut.IterMut) => IterMut.sizeHint$iter_Iterator_u16_u32(it), (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNthBack(rt.iterFrom(it, IterMut.next$iter_Iterator_u16_u32, undefined, { hint: IterMut.sizeHint$iter_Iterator_u16_u32, back: (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } put(out, option_mapOr$1noewr3(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = IterMut.sizeHint$iter_Iterator_u16_u32(it); @@ -822,7 +822,7 @@ export function ends$hashlink_linked_hash_map_IterMut_u16_u32_maps_linked_iters_ put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter<[rt.u16, rt.Place]> = rt.iterRev(rt.iterFrom(it, (it: IterMut.IterMut) => IterMut.next$iter_Iterator_u16_u32(it), undefined, (it: IterMut.IterMut) => IterMut.sizeHint$iter_Iterator_u16_u32(it), (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)))); + const iter2: rt.Iter<[rt.u16, rt.Place]> = rt.iterRev(rt.iterFrom(it, IterMut.next$iter_Iterator_u16_u32, undefined, { hint: IterMut.sizeHint$iter_Iterator_u16_u32, back: (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })); while (true) { const _41: [rt.u16, rt.Place] | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -853,9 +853,9 @@ export function ends$hashlink_linked_hash_map_Iter_u16_u32_maps_linked_iters_clo } else if (_20 === 1) { item = linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNth(rt.iterFrom(it, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNthBack(rt.iterFrom(it, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } put(out, option_mapOr$0iaogpf(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it); @@ -864,7 +864,7 @@ export function ends$hashlink_linked_hash_map_Iter_u16_u32_maps_linked_iters_clo put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)))); + const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })); while (true) { const _41: [rt.u16, rt.u32] | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -895,9 +895,9 @@ export function ends$hashlink_linked_hash_map_Keys_u16_u32_maps_linked_iters_clo } else if (_20 === 1) { item = Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: Keys.Keys) => Keys.next$iter_Iterator_u16_u32(it), undefined, (it: Keys.Keys) => Keys.sizeHint$iter_Iterator_u16_u32(it), (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: Keys.Keys) => Keys.len$iter_ExactSizeIterator_u16_u32(it)), n); + item = rt.iterNth(rt.iterFrom(it, Keys.next$iter_Iterator_u16_u32, undefined, { hint: Keys.sizeHint$iter_Iterator_u16_u32, back: (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: Keys.len$iter_ExactSizeIterator_u16_u32 }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: Keys.Keys) => Keys.next$iter_Iterator_u16_u32(it), undefined, (it: Keys.Keys) => Keys.sizeHint$iter_Iterator_u16_u32(it), (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: Keys.Keys) => Keys.len$iter_ExactSizeIterator_u16_u32(it)), n); + item = rt.iterNthBack(rt.iterFrom(it, Keys.next$iter_Iterator_u16_u32, undefined, { hint: Keys.sizeHint$iter_Iterator_u16_u32, back: (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: Keys.len$iter_ExactSizeIterator_u16_u32 }), n); } put(out, option_mapOr$0yixjb2(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = Keys.sizeHint$iter_Iterator_u16_u32(it); @@ -906,7 +906,7 @@ export function ends$hashlink_linked_hash_map_Keys_u16_u32_maps_linked_iters_clo put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter = rt.iterRev(rt.iterFrom(it, (it: Keys.Keys) => Keys.next$iter_Iterator_u16_u32(it), undefined, (it: Keys.Keys) => Keys.sizeHint$iter_Iterator_u16_u32(it), (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: Keys.Keys) => Keys.len$iter_ExactSizeIterator_u16_u32(it))); + const iter2: rt.Iter = rt.iterRev(rt.iterFrom(it, Keys.next$iter_Iterator_u16_u32, undefined, { hint: Keys.sizeHint$iter_Iterator_u16_u32, back: (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: Keys.len$iter_ExactSizeIterator_u16_u32 })); while (true) { const _41: rt.u16 | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -937,9 +937,9 @@ export function ends$hashlink_linked_hash_map_Values_u16_u32_maps_linked_iters_c } else if (_20 === 1) { item = linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32(it)), n); + item = rt.iterNth(rt.iterFrom(it, linked_hash_map_Values.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32 }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32(it)), n); + item = rt.iterNthBack(rt.iterFrom(it, linked_hash_map_Values.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32 }), n); } put(out, option_mapOr$1vcgixw(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it); @@ -948,7 +948,7 @@ export function ends$hashlink_linked_hash_map_Values_u16_u32_maps_linked_iters_c put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter = rt.iterRev(rt.iterFrom(it, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32(it))); + const iter2: rt.Iter = rt.iterRev(rt.iterFrom(it, linked_hash_map_Values.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32 })); while (true) { const _41: rt.u32 | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -994,7 +994,7 @@ export function linkedIters(dataData: Uint8Array, dataStart: number, dataLen: nu const _44: (a0: [rt.u16, rt.u32]) => undefined = (e2: [rt.u16, rt.u32]): undefined => { put(out, _34(e2)); }; - rt.iterForEach(rt.iterFrom(_42, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), _44); + rt.iterForEach(rt.iterFrom(_42, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), _44); } else if (_35 === 2) { ends$hashlink_linked_hash_map_Keys_u16_u32_maps_linked_iters_closure3(LinkedHashMap.keys$u16_u32_hash_RandomState(m), new rt.ByteSlice(dataData, dataStart + 2, dataLen - 2), out, (k5: rt.u16): rt.usize => { return k5 as rt.usize; @@ -1016,14 +1016,14 @@ export function linkedIters(dataData: Uint8Array, dataStart: number, dataLen: nu } else if (_35 === 6) { it = LinkedHashMap.valuesMut$u16_u32_hash_RandomState(m); const _64: rt.usize = rt.usizeRem(k, 4); - put(out, option_mapOr$1787w44(rt.iterNthBack(rt.iterFrom(it, (it: ValuesMut.ValuesMut) => ValuesMut.next$iter_Iterator_u16_u32(it), undefined, (it: ValuesMut.ValuesMut) => ValuesMut.sizeHint$iter_Iterator_u16_u32(it), (it: ValuesMut.ValuesMut) => rt.iterFromOption(ValuesMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: ValuesMut.ValuesMut) => ValuesMut.len$iter_ExactSizeIterator_u16_u32(it)), _64), 256, (v: rt.Place): rt.usize => { + put(out, option_mapOr$1787w44(rt.iterNthBack(rt.iterFrom(it, ValuesMut.next$iter_Iterator_u16_u32, undefined, { hint: ValuesMut.sizeHint$iter_Iterator_u16_u32, back: (it: ValuesMut.ValuesMut) => rt.iterFromOption(ValuesMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: ValuesMut.len$iter_ExactSizeIterator_u16_u32 }), _64), 256, (v: rt.Place): rt.usize => { return v.v as rt.usize; })); put(out, ValuesMut.len$iter_ExactSizeIterator_u16_u32(it)); - rt.iterForEach(rt.iterRev(rt.iterFrom(it, (it: ValuesMut.ValuesMut) => ValuesMut.next$iter_Iterator_u16_u32(it), undefined, (it: ValuesMut.ValuesMut) => ValuesMut.sizeHint$iter_Iterator_u16_u32(it), (it: ValuesMut.ValuesMut) => rt.iterFromOption(ValuesMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: ValuesMut.ValuesMut) => ValuesMut.len$iter_ExactSizeIterator_u16_u32(it))), (v2: rt.Place): undefined => { + rt.iterForEach(rt.iterRev(rt.iterFrom(it, ValuesMut.next$iter_Iterator_u16_u32, undefined, { hint: ValuesMut.sizeHint$iter_Iterator_u16_u32, back: (it: ValuesMut.ValuesMut) => rt.iterFromOption(ValuesMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: ValuesMut.len$iter_ExactSizeIterator_u16_u32 })), (v2: rt.Place): undefined => { v2.v = rt.u32Add(v2.v, 1); }); - rt.iterForEach(rt.iterFrom(LinkedHashMap.values$u16_u32_hash_RandomState(m), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32(it)), (v3: rt.u32): undefined => { + rt.iterForEach(rt.iterFrom(LinkedHashMap.values$u16_u32_hash_RandomState(m), linked_hash_map_Values.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32 }), (v3: rt.u32): undefined => { put(out, v3 as rt.usize); }); } else { @@ -1031,15 +1031,15 @@ export function linkedIters(dataData: Uint8Array, dataStart: number, dataLen: nu put(out, option_mapOr$0iaogpf(rt.iterToOption(linked_hash_map_Iter.next$iter_Iterator_u16_u32(it2)), 256, (_210: [rt.u16, rt.u32]): rt.usize => { return rt.usizeAdd(rt.usizeMul(_210[0] as rt.usize, 4096), _210[1] as rt.usize); })); - put(out, rt.iterFrom(it2, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))).len()); - const rest: rt.usize[] = rt.iterToArray(rt.iterMap(rt.iterSkip(rt.iterRev(rt.iterFrom(it2, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)))), rt.usizeRem(k, 4)), (_211: [rt.u16, rt.u32]): rt.usize => { + put(out, rt.iterFrom(it2, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }).len()); + const rest: rt.usize[] = rt.iterToArray(rt.iterMap(rt.iterSkip(rt.iterRev(rt.iterFrom(it2, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })), rt.usizeRem(k, 4)), (_211: [rt.u16, rt.u32]): rt.usize => { return rt.usizeAdd(rt.usizeMul(_211[0] as rt.usize, 4096), _211[1] as rt.usize); }), "next", 4); put(out, rt.vecCapacity(rest, 4)); rt.iterForEach(rt.iterSlice(rest), (e: rt.usize): undefined => { put(out, e); }); - put(out, option_unwrapOr$0l7j3f6(rt.iterRposition(rt.iterFrom(LinkedHashMap.keys$u16_u32_hash_RandomState(m), (it: Keys.Keys) => Keys.next$iter_Iterator_u16_u32(it), undefined, (it: Keys.Keys) => Keys.sizeHint$iter_Iterator_u16_u32(it), (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: Keys.Keys) => Keys.len$iter_ExactSizeIterator_u16_u32(it)), (k2: rt.u16): boolean => { + put(out, option_unwrapOr$0l7j3f6(rt.iterRposition(rt.iterFrom(LinkedHashMap.keys$u16_u32_hash_RandomState(m), Keys.next$iter_Iterator_u16_u32, undefined, { hint: Keys.sizeHint$iter_Iterator_u16_u32, back: (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: Keys.len$iter_ExactSizeIterator_u16_u32 }), (k2: rt.u16): boolean => { return rt.u16Rem(k2, 2) === 0; }), 256)); } diff --git a/ts/fixtures/task/expected/core/result.ts b/ts/fixtures/task/expected/core/result.ts index 6aadff06d..b70062126 100644 --- a/ts/fixtures/task/expected/core/result.ts +++ b/ts/fixtures/task/expected/core/result.ts @@ -100,6 +100,13 @@ export function mapOrElse$196aho3(self: rt.Result, def return default_(self.error); } +export function mapErr$0nvqjog(self: rt.Result, op: (a0: Guard.Guard) => rt.u32): rt.Result { + if (self.ok) { + return self as rt.Result; + } + return rt.Err(op(self.error)); +} + export function mapErr$1c43xsx(self: rt.Result, op: (a0: rt.u32) => rt.u32): rt.Result { let _0!: rt.Result; let _9: boolean = false; diff --git a/ts/fixtures/task/expected/drops.ts b/ts/fixtures/task/expected/drops.ts index cfcd3caf5..6b3f3e189 100644 --- a/ts/fixtures/task/expected/drops.ts +++ b/ts/fixtures/task/expected/drops.ts @@ -1275,8 +1275,8 @@ export function folded(log: Log.Log, id: rt.u32, arg: rt.u8): void { } /** - * Run scenario `arg % 9` of what folds back to front, and through what wraps a closure - * beside another. + * Run scenario `arg % 18` of what folds back to front, through what wraps a closure beside + * another, and through a crate's iterator with folds of its own. The last panics in a fold. */ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { folds_rfolded(log, id, arg); diff --git a/ts/fixtures/task/expected/drops/folds.Pile.ts b/ts/fixtures/task/expected/drops/folds.Pile.ts new file mode 100644 index 000000000..8048fbf64 --- /dev/null +++ b/ts/fixtures/task/expected/drops/folds.Pile.ts @@ -0,0 +1,121 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "../rt.ts"; +import { then$1xpp3sz } from "../core/bool.ts"; +import * as Log from "../log.Log.ts"; +import type * as Guard from "../model.Guard.ts"; + +/** + * Guards popped from the back of a `Vec`, with its own `nth`, `nth_back`, folds, `count`, + * and `last`, each of which notes it was called. Its folds stop short of the last guard + * and drop their closure before they note they folded, and the rest drop with it. + */ +export class Pile { + held: Guard.Guard[]; + log: Log.Log; + + constructor(held: Guard.Guard[], log: Log.Log) { + this.held = held; + this.log = log; + } + + [Symbol.dispose](): void { + rt.dropAll(this.held); + this.log[Symbol.dispose](); + } +} + +export function next$iter_Iterator(self: Pile): Guard.Guard | rt.Done { + return rt.iterFromOption(self.held.pop()); +} + +export function sizeHint$iter_Iterator(self: Pile): [rt.usize, rt.usize | undefined] { + return [self.held.length, self.held.length] as [rt.usize, rt.usize | undefined]; +} + +export function nth$iter_Iterator(self: Pile, n: rt.usize): Guard.Guard | undefined { + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n, f)]; + const _5: string = rt.fmtFormat(["pile nth ", args2[0]]); + Log.note(self.log, _5); + let iterStart: rt.usize = 0; + const iterEnd: rt.usize = n; + while (iterStart++ < iterEnd) { + const _21: Guard.Guard | undefined = self.held.pop(); + if (_21 !== undefined) { + _21[Symbol.dispose](); + } else { + return undefined; + } + } + return self.held.pop(); +} + +export function fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32(self: Pile, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: Guard.Guard) => rt.u32 | undefined): rt.u32 | undefined { + Log.note(self.log, "pile fold"); + let acc: rt.u32 | undefined = init; + while (self.held.length > 1) { + const part = rt.optionUnwrap(self.held.pop()); + acc = f(acc, part); + } + rt.drop(f); + Log.note(self.log, "pile folded"); + self[Symbol.dispose](); + return acc; +} + +export function count$iter_Iterator(self: Pile): rt.usize { + const part = self.held.length; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part, f)]; + const _4: string = rt.fmtFormat(["pile count ", args2[0]]); + Log.note(self.log, _4); + const _0: rt.usize = self.held.length; + self[Symbol.dispose](); + return _0; +} + +export function last$iter_Iterator(self: Pile): Guard.Guard | undefined { + Log.note(self.log, "pile last"); + const _0: Guard.Guard | undefined = then$1xpp3sz(!((self.held.length === 0)), (): Guard.Guard => { + return rt.vecRemove(self.held, 0); + }); + self[Symbol.dispose](); + return _0; +} + +export function nextBack$iter_DoubleEndedIterator(self: Pile): Guard.Guard | undefined { + return then$1xpp3sz(!((self.held.length === 0)), (): Guard.Guard => { + return rt.vecRemove(self.held, 0); + }); +} + +export function nthBack$iter_DoubleEndedIterator(self: Pile, n: rt.usize): Guard.Guard | undefined { + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n, f)]; + const _5: string = rt.fmtFormat(["pile nth_back ", args2[0]]); + Log.note(self.log, _5); + let iterStart: rt.usize = 0; + const iterEnd: rt.usize = n; + while (iterStart++ < iterEnd) { + const _21: Guard.Guard | undefined = nextBack$iter_DoubleEndedIterator(self); + if (_21 !== undefined) { + _21[Symbol.dispose](); + } else { + return undefined; + } + } + return nextBack$iter_DoubleEndedIterator(self); +} + +export function rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32(self: Pile, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: Guard.Guard) => rt.u32 | undefined): rt.u32 | undefined { + Log.note(self.log, "pile rfold"); + let acc: rt.u32 | undefined = init; + while (self.held.length > 1) { + const part = rt.vecRemove(self.held, 0); + acc = f(acc, part); + } + rt.drop(f); + Log.note(self.log, "pile rfolded"); + self[Symbol.dispose](); + return acc; +} + +//# sourceMappingURL=folds.Pile.ts.map diff --git a/ts/fixtures/task/expected/drops/folds.ts b/ts/fixtures/task/expected/drops/folds.ts index ac3afed07..02a058719 100644 --- a/ts/fixtures/task/expected/drops/folds.ts +++ b/ts/fixtures/task/expected/drops/folds.ts @@ -4,6 +4,8 @@ import * as rt from "../rt.ts"; import { drop$Option_tuple2_tuple2_model_Guard_model_Guard_model_Guard as lib_drop$Option_tuple2_tuple2_model_Guard_model_Guard_model_Guard, drop$tuple2_i32_model_Guard as lib_drop$tuple2_i32_model_Guard, drop$tuple2_model_Guard_i32 as lib_drop$tuple2_model_Guard_i32, drop$tuple2_model_Guard_model_Guard as lib_drop$tuple2_model_Guard_model_Guard, drop$tuple2_model_Guard_u64 as lib_drop$tuple2_model_Guard_u64, drop$tuple2_tuple2_model_Guard_model_Guard_model_Guard as lib_drop$tuple2_tuple2_model_Guard_model_Guard_model_Guard, drop$tuple2_usize_model_Guard as lib_drop$tuple2_usize_model_Guard } from "../lib.ts"; import { thenSome$0zvoczk, thenSome$1af3oea, then$06wuxll, then$1xpp3sz, then$0ea5h05 } from "../core/bool.ts"; import { map$0ccnsmq as option_map$0ccnsmq, map$1raha9y as option_map$1raha9y, map$0lq7mno as option_map$0lq7mno, map$01pvlgn as option_map$01pvlgn, map$14zg54s as option_map$14zg54s, mapOr$01ozsk3 as option_mapOr$01ozsk3 } from "../core/option.ts"; +import { mapErr$0nvqjog as result_mapErr$0nvqjog } from "../core/result.ts"; +import * as Pile from "../drops/folds.Pile.ts"; import * as Log from "../log.Log.ts"; import * as Guard from "../model.Guard.ts"; @@ -933,353 +935,759 @@ export function folded(log: Log.Log, id: rt.u32, arg: rt.u8): void { } /** - * Run scenario `arg % 9` of what folds back to front and through what wraps a closure - * beside another, as `folded` does. + * Run scenario `arg % 18` of what folds back to front and through what wraps a closure + * beside another, as `folded` does, of `rfold` and `try_rfold` themselves, and of a + * crate's iterator with folds of its own. The last panics in a `try_rfold`, with what + * dropped before. */ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { + let n!: rt.u32; let f!: Guard.Guard; - let _344: boolean = false; - let _343: boolean = false; - const guard: (a0: rt.u32) => Guard.Guard = (n7: rt.u32): Guard.Guard => { - return Guard.new(rt.u32Add(id, n7), Log.clone$Clone(log)); + let broke!: rt.u32 | undefined; + let _775: boolean = false; + let _774: boolean = false; + let _773: boolean = false; + const guard: (a0: rt.u32) => Guard.Guard = (n12: rt.u32): Guard.Guard => { + return Guard.new(rt.u32Add(id, n12), Log.clone$Clone(log)); }; const guards: (a0: rt.u32, a1: rt.u32) => Guard.Guard[] = (from: rt.u32, to: rt.u32): Guard.Guard[] => { return rt.iterToArray(rt.iterMap(new rt.Range(from, to), guard), undefined, 8, true); }; const _11: [Guard.Guard, Guard.Guard, Guard.Guard] = [guard(10), guard(11), guard(12)]; + _775 = true; const c: Guard.Guard = _11[0]; - _344 = true; + _774 = true; const d: Guard.Guard = _11[1]; - _343 = true; + _773 = true; const e: Guard.Guard = _11[2]; - const _21: rt.u8 = rt.u8Rem(arg, 9); - if (_21 === 0) { - const _27: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured24 = c; - const _25: rt.Iter = rt.iterRev(rt.iterMap(_27, rt.closure((g27: Guard.Guard): Guard.Guard => { - const _917: rt.u32 = Guard.id(g27); - const _1216: rt.u32 = Guard.id(captured24); - const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_917, f), (f: rt.Formatter) => rt.u32Display(_1216, f)]; - Log.note(log, rt.fmtFormat(["map ", args36[0], " ", args36[1]])); - return g27; + const pile: (a0: rt.u32, a1: rt.u32) => Pile.Pile = (from2: rt.u32, to2: rt.u32): Pile.Pile => { + return new Pile.Pile(guards(from2, to2), Log.clone$Clone(log)); + }; + const _23: rt.u8 = rt.u8Rem(arg, 18); + if (_23 === 0) { + const _29: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _775 = false; + const captured48 = c; + const _27: rt.Iter = rt.iterRev(rt.iterMap(_29, rt.closure((g53: Guard.Guard): Guard.Guard => { + const _928: rt.u32 = Guard.id(g53); + const _1226: rt.u32 = Guard.id(captured48); + const args86: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_928, f), (f: rt.Formatter) => rt.u32Display(_1226, f)]; + Log.note(log, rt.fmtFormat(["map ", args86[0], " ", args86[1]])); + return g53; }, (): void => { - captured24[Symbol.dispose](); + captured48[Symbol.dispose](); }))); - _344 = false; - const captured25 = id; - const captured26 = d; - const n: rt.u32 = rt.iterSum(rt.iterMap(_25, rt.closure((g28: Guard.Guard): rt.u32 => { - const _029: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g28), captured25), Guard.id(captured26)), Guard.id(captured26)); - g28[Symbol.dispose](); - return _029; + _774 = false; + const captured49 = id; + const captured50 = d; + n = rt.iterSum(rt.iterMap(_27, rt.closure((g54: Guard.Guard): rt.u32 => { + const _060: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g54), captured49), Guard.id(captured50)), Guard.id(captured50)); + g54[Symbol.dispose](); + return _060; }, (): void => { - captured26[Symbol.dispose](); + captured50[Symbol.dispose](); })), rt.u32Add, 0, true); - const _39: rt.u32 = Guard.id(e); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n, f), (f: rt.Formatter) => rt.u32Display(_39, f)]; + const _41: rt.u32 = Guard.id(e); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n, f), (f: rt.Formatter) => rt.u32Display(_41, f)]; Log.note(log, rt.fmtFormat(["map ", args2[0], " ", args2[1]])); - } else if (_21 === 1) { - const _51: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured19 = c; - const _49: rt.Iter = rt.iterRev(rt.iterFilter(_51, rt.closure((g23: Guard.Guard): boolean => { - return Guard.id(g23) !== Guard.id(captured19); + } else if (_23 === 1) { + const _53: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _775 = false; + const captured43 = c; + const _51: rt.Iter = rt.iterRev(rt.iterFilter(_53, rt.closure((g49: Guard.Guard): boolean => { + return Guard.id(g49) !== Guard.id(captured43); }, (): void => { - captured19[Symbol.dispose](); + captured43[Symbol.dispose](); }), rt.drop)); - _344 = false; - const captured20 = id; - const captured21 = d; - const n2: rt.u32 = rt.iterSum(rt.iterMap(_49, rt.closure((g24: Guard.Guard): rt.u32 => { - const _025: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g24), captured20), Guard.id(captured21)), Guard.id(captured21)); - g24[Symbol.dispose](); - return _025; + _774 = false; + const captured44 = id; + const captured45 = d; + const n2: rt.u32 = rt.iterSum(rt.iterMap(_51, rt.closure((g50: Guard.Guard): rt.u32 => { + const _056: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g50), captured44), Guard.id(captured45)), Guard.id(captured45)); + g50[Symbol.dispose](); + return _056; }, (): void => { - captured21[Symbol.dispose](); + captured45[Symbol.dispose](); })), rt.u32Add, 0, true); f = guard(13); - const _64: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _343 = false; - const captured22 = e; - const _62: rt.Iter = rt.iterRev(rt.iterFilterMap(_64, rt.closure((g25: Guard.Guard): Guard.Guard | undefined => { - return thenSome$0zvoczk(Guard.id(g25) !== Guard.id(captured22), g25); + const _66: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); + _773 = false; + const captured46 = e; + const _64: rt.Iter = rt.iterRev(rt.iterFilterMap(_66, rt.closure((g51: Guard.Guard): Guard.Guard | undefined => { + return thenSome$0zvoczk(Guard.id(g51) !== Guard.id(captured46), g51); }, (): void => { - captured22[Symbol.dispose](); + captured46[Symbol.dispose](); }))); - const captured23 = f; - const m: rt.usize = rt.ownedCount(rt.iterMap(_62, rt.closure((g26: Guard.Guard): rt.u32 => { - const _027: rt.u32 = rt.u32Add(Guard.id(g26), Guard.id(captured23)); - g26[Symbol.dispose](); - return _027; + const captured47 = f; + const m: rt.usize = rt.ownedCount(rt.iterMap(_64, rt.closure((g52: Guard.Guard): rt.u32 => { + const _058: rt.u32 = rt.u32Add(Guard.id(g52), Guard.id(captured47)); + g52[Symbol.dispose](); + return _058; }, (): void => { - captured23[Symbol.dispose](); + captured47[Symbol.dispose](); }))); const args4: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n2, f), (f: rt.Formatter) => rt.usizeDisplay(m, f)]; Log.note(log, rt.fmtFormat(["filter ", args4[0], " ", args4[1]])); - } else if (_21 === 2) { - const _85: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); - const captured15 = c; - const _84: rt.Iter = rt.iterInspect(_85, rt.closure((g19: Guard.Guard): undefined => { - const _914: rt.u32 = Guard.id(g19); - const _1112: rt.u32 = Guard.id(captured15); - const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_914, f), (f: rt.Formatter) => rt.u32Display(_1112, f)]; - Log.note(log, rt.fmtFormat(["inspect ", args32[0], " ", args32[1]])); + } else if (_23 === 2) { + const _87: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); + _775 = false; + const captured39 = c; + const _86: rt.Iter = rt.iterInspect(_87, rt.closure((g45: Guard.Guard): undefined => { + const _925: rt.u32 = Guard.id(g45); + const _1136: rt.u32 = Guard.id(captured39); + const args82: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_925, f), (f: rt.Formatter) => rt.u32Display(_1136, f)]; + Log.note(log, rt.fmtFormat(["inspect ", args82[0], " ", args82[1]])); }, (): void => { - captured15[Symbol.dispose](); + captured39[Symbol.dispose](); })); - _344 = false; - const captured16 = d; - const n3: rt.usize = rt.ownedCount(rt.iterMap(_84, rt.closure((g20: Guard.Guard): rt.u32 => { - const _022: rt.u32 = rt.u32Add(Guard.id(g20), Guard.id(captured16)); - g20[Symbol.dispose](); - return _022; + _774 = false; + const captured40 = d; + const n3: rt.usize = rt.ownedCount(rt.iterMap(_86, rt.closure((g46: Guard.Guard): rt.u32 => { + const _053: rt.u32 = rt.u32Add(Guard.id(g46), Guard.id(captured40)); + g46[Symbol.dispose](); + return _053; }, (): void => { - captured16[Symbol.dispose](); + captured40[Symbol.dispose](); }))); const f2: Guard.Guard = guard(13); - const _98: rt.Iter = rt.iterSlice(guards(4, 8), rt.drop); - _343 = false; - const captured17 = e; - const _96: rt.Iter = rt.iterRev(rt.iterInspect(_98, rt.closure((g21: Guard.Guard): undefined => { - const _915: rt.u32 = Guard.id(g21); - const _1113: rt.u32 = Guard.id(captured17); - const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_915, f), (f: rt.Formatter) => rt.u32Display(_1113, f)]; - Log.note(log, rt.fmtFormat(["inspect ", args34[0], " ", args34[1]])); + const _100: rt.Iter = rt.iterSlice(guards(4, 8), rt.drop); + _773 = false; + const captured41 = e; + const _98: rt.Iter = rt.iterRev(rt.iterInspect(_100, rt.closure((g47: Guard.Guard): undefined => { + const _926: rt.u32 = Guard.id(g47); + const _1139: rt.u32 = Guard.id(captured41); + const args84: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_926, f), (f: rt.Formatter) => rt.u32Display(_1139, f)]; + Log.note(log, rt.fmtFormat(["inspect ", args84[0], " ", args84[1]])); }, (): void => { - captured17[Symbol.dispose](); + captured41[Symbol.dispose](); }))); - const captured18 = f2; - const m2: rt.usize = rt.ownedCount(rt.iterMap(_96, rt.closure((g22: Guard.Guard): rt.u32 => { - const _023: rt.u32 = rt.u32Add(Guard.id(g22), Guard.id(captured18)); - g22[Symbol.dispose](); - return _023; + const captured42 = f2; + const m2: rt.usize = rt.ownedCount(rt.iterMap(_98, rt.closure((g48: Guard.Guard): rt.u32 => { + const _054: rt.u32 = rt.u32Add(Guard.id(g48), Guard.id(captured42)); + g48[Symbol.dispose](); + return _054; }, (): void => { - captured18[Symbol.dispose](); + captured42[Symbol.dispose](); }))); const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n3, f), (f: rt.Formatter) => rt.usizeDisplay(m2, f)]; Log.note(log, rt.fmtFormat(["inspect ", args6[0], " ", args6[1]])); - } else if (_21 === 3) { - const _120: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured14 = c; - const _131: [rt.usize, rt.u32] | undefined = option_map$14zg54s(rt.ownedLast(rt.iterRev(rt.iterEnumerate(rt.iterMap(_120, rt.closure((g17: Guard.Guard): Guard.Guard => { - const _913: rt.u32 = Guard.id(g17); - const _1214: rt.u32 = Guard.id(captured14); - const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_913, f), (f: rt.Formatter) => rt.u32Display(_1214, f)]; - Log.note(log, rt.fmtFormat(["map ", args30[0], " ", args30[1]])); - return g17; + } else if (_23 === 3) { + const _122: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _775 = false; + const captured38 = c; + const _133: [rt.usize, rt.u32] | undefined = option_map$14zg54s(rt.ownedLast(rt.iterRev(rt.iterEnumerate(rt.iterMap(_122, rt.closure((g43: Guard.Guard): Guard.Guard => { + const _924: rt.u32 = Guard.id(g43); + const _1224: rt.u32 = Guard.id(captured38); + const args80: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_924, f), (f: rt.Formatter) => rt.u32Display(_1224, f)]; + Log.note(log, rt.fmtFormat(["map ", args80[0], " ", args80[1]])); + return g43; }, (): void => { - captured14[Symbol.dispose](); - })))), lib_drop$tuple2_usize_model_Guard), (_2: [rt.usize, Guard.Guard]): [rt.usize, rt.u32] => { - const i: rt.usize = _2[0]; - const g18: Guard.Guard = _2[1]; - const _021: [rt.usize, rt.u32] = [i, Guard.id(g18)]; - g18[Symbol.dispose](); - return _021; + captured38[Symbol.dispose](); + })))), lib_drop$tuple2_usize_model_Guard), (_230: [rt.usize, Guard.Guard]): [rt.usize, rt.u32] => { + const i: rt.usize = _230[0]; + const g44: Guard.Guard = _230[1]; + const _052: [rt.usize, rt.u32] = [i, Guard.id(g44)]; + g44[Symbol.dispose](); + return _052; }); - const _133: rt.u32 = Guard.id(d); - const _136: rt.u32 = Guard.id(e); - const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_131, f, (value: [rt.usize, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f)), (f: rt.Formatter) => rt.u32Display(_133, f), (f: rt.Formatter) => rt.u32Display(_136, f)]; + const _135: rt.u32 = Guard.id(d); + const _138: rt.u32 = Guard.id(e); + const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_133, f, (value: [rt.usize, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f)), (f: rt.Formatter) => rt.u32Display(_135, f), (f: rt.Formatter) => rt.u32Display(_138, f)]; Log.note(log, rt.fmtFormat(["enumerate ", args8[0], " ", args8[1], " ", args8[2]])); - } else if (_21 === 4) { - const _148: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured12 = c; - const n4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterRev(rt.iterMap(_148, rt.closure((g15: Guard.Guard): rt.u32 => { - const _017: rt.u32 = rt.u32Add(Guard.id(g15), Guard.id(captured12)); - g15[Symbol.dispose](); - return _017; + } else if (_23 === 4) { + const _150: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _775 = false; + const captured36 = c; + const n4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterRev(rt.iterMap(_150, rt.closure((g41: Guard.Guard): rt.u32 => { + const _048: rt.u32 = rt.u32Add(Guard.id(g41), Guard.id(captured36)); + g41[Symbol.dispose](); + return _048; }, (): void => { - captured12[Symbol.dispose](); + captured36[Symbol.dispose](); }))))); - const _156: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _344 = false; - const captured13 = d; - const m3: rt.u32 = rt.iterFold(rt.iterSkip(rt.iterMap(_156, rt.closure((g16: Guard.Guard): rt.u32 => { - const _018: rt.u32 = rt.u32Add(Guard.id(g16), Guard.id(captured13)); - g16[Symbol.dispose](); - return _018; + const _158: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); + _774 = false; + const captured37 = d; + const m3: rt.u32 = rt.iterFold(rt.iterSkip(rt.iterMap(_158, rt.closure((g42: Guard.Guard): rt.u32 => { + const _049: rt.u32 = rt.u32Add(Guard.id(g42), Guard.id(captured37)); + g42[Symbol.dispose](); + return _049; }, (): void => { - captured13[Symbol.dispose](); - })), 1), 0, (n8: rt.u32, k: rt.u32): rt.u32 => { - return rt.u32Add(n8, k); + captured37[Symbol.dispose](); + })), 1), 0, (n25: rt.u32, k6: rt.u32): rt.u32 => { + return rt.u32Add(n25, k6); }, true); - const _167: rt.u32 = Guard.id(e); - const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n4, f), (f: rt.Formatter) => rt.u32Display(m3, f), (f: rt.Formatter) => rt.u32Display(_167, f)]; + const _169: rt.u32 = Guard.id(e); + const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n4, f), (f: rt.Formatter) => rt.u32Display(m3, f), (f: rt.Formatter) => rt.u32Display(_169, f)]; Log.note(log, rt.fmtFormat(["twice ", args10[0], " ", args10[1], " ", args10[2]])); - } else if (_21 === 5) { - const _181: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured10 = c; - const _179: rt.Iter = rt.iterStepBy(rt.iterMap(_181, rt.closure((g11: Guard.Guard): Guard.Guard => { - const _911: rt.u32 = Guard.id(g11); - const _1212: rt.u32 = Guard.id(captured10); - const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_911, f), (f: rt.Formatter) => rt.u32Display(_1212, f)]; - Log.note(log, rt.fmtFormat(["map ", args28[0], " ", args28[1]])); - return g11; + } else if (_23 === 5) { + const _183: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _775 = false; + const captured34 = c; + const _181: rt.Iter = rt.iterStepBy(rt.iterMap(_183, rt.closure((g37: Guard.Guard): Guard.Guard => { + const _922: rt.u32 = Guard.id(g37); + const _1222: rt.u32 = Guard.id(captured34); + const args78: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_922, f), (f: rt.Formatter) => rt.u32Display(_1222, f)]; + Log.note(log, rt.fmtFormat(["map ", args78[0], " ", args78[1]])); + return g37; }, (): void => { - captured10[Symbol.dispose](); + captured34[Symbol.dispose](); })), 2, rt.drop); - _344 = false; - const captured11 = d; - const _197: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_179, rt.closure((g12: Guard.Guard): [Guard.Guard, rt.u32] => { - return [g12, Guard.id(captured11)] as [Guard.Guard, rt.u32]; + _774 = false; + const captured35 = d; + const _199: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_181, rt.closure((g38: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g38, Guard.id(captured35)] as [Guard.Guard, rt.u32]; }, (): void => { - captured11[Symbol.dispose](); - })), guard(20), (kept4: Guard.Guard | undefined, _315: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { - let _015!: Guard.Guard | undefined; - let _1213: boolean = false; - let _1111: boolean = false; - _1213 = true; - _1111 = true; - const g13: Guard.Guard = _315[0]; - if (!(rt.u32Rem(Guard.id(g13), 2) === 1)) { - _1213 = false; - _015 = kept4; + captured35[Symbol.dispose](); + })), guard(20), (kept7: Guard.Guard | undefined, _347: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { + let _046!: Guard.Guard | undefined; + let _1223: boolean = false; + let _1128: boolean = false; + _1223 = true; + _1128 = true; + const g39: Guard.Guard = _347[0]; + if (!(rt.u32Rem(Guard.id(g39), 2) === 1)) { + _1223 = false; + _046 = kept7; } else { - _1111 = false; - _015 = g13; + _1128 = false; + _046 = g39; } - if (_1111) { - g13[Symbol.dispose](); + if (_1128) { + g39[Symbol.dispose](); } - _1111 = false; - if (_1213) { - rt.drop(kept4); - return _015; + _1128 = false; + if (_1223) { + rt.drop(kept7); + return _046; } - return _015; - }, true), (g14: Guard.Guard): rt.u32 => { - const _016: rt.u32 = Guard.id(g14); - g14[Symbol.dispose](); - return _016; + return _046; + }, true), (g40: Guard.Guard): rt.u32 => { + const _047: rt.u32 = Guard.id(g40); + g40[Symbol.dispose](); + return _047; }); - const _199: rt.u32 = Guard.id(e); - const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_197, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_199, f)]; + const _201: rt.u32 = Guard.id(e); + const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_199, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_201, f)]; Log.note(log, rt.fmtFormat(["step ", args12[0], " ", args12[1]])); - } else if (_21 === 6) { - const _211: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); - const captured8 = c; - const _208: rt.Iter = rt.iterRev(rt.iterStepBy(rt.iterMap(_211, rt.closure((g7: Guard.Guard): Guard.Guard => { - const _94: rt.u32 = Guard.id(g7); - const _1210: rt.u32 = Guard.id(captured8); - const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_94, f), (f: rt.Formatter) => rt.u32Display(_1210, f)]; - Log.note(log, rt.fmtFormat(["map ", args26[0], " ", args26[1]])); - return g7; + } else if (_23 === 6) { + const _213: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _775 = false; + const captured32 = c; + const _210: rt.Iter = rt.iterRev(rt.iterStepBy(rt.iterMap(_213, rt.closure((g33: Guard.Guard): Guard.Guard => { + const _920: rt.u32 = Guard.id(g33); + const _1220: rt.u32 = Guard.id(captured32); + const args76: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_920, f), (f: rt.Formatter) => rt.u32Display(_1220, f)]; + Log.note(log, rt.fmtFormat(["map ", args76[0], " ", args76[1]])); + return g33; }, (): void => { - captured8[Symbol.dispose](); + captured32[Symbol.dispose](); })), 2, rt.drop)); - _344 = false; - const captured9 = d; - const _227: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_208, rt.closure((g8: Guard.Guard): [Guard.Guard, rt.u32] => { - return [g8, Guard.id(captured9)] as [Guard.Guard, rt.u32]; + _774 = false; + const captured33 = d; + const _229: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_210, rt.closure((g34: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g34, Guard.id(captured33)] as [Guard.Guard, rt.u32]; }, (): void => { - captured9[Symbol.dispose](); - })), guard(20), (kept3: Guard.Guard | undefined, _311: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { - let _011!: Guard.Guard | undefined; - let _1211: boolean = false; - let _1110: boolean = false; - _1211 = true; - _1110 = true; - const g9: Guard.Guard = _311[0]; - if (!(rt.u32Rem(Guard.id(g9), 2) === 1)) { - _1211 = false; - _011 = kept3; + captured33[Symbol.dispose](); + })), guard(20), (kept6: Guard.Guard | undefined, _344: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { + let _042!: Guard.Guard | undefined; + let _1221: boolean = false; + let _1123: boolean = false; + _1221 = true; + _1123 = true; + const g35: Guard.Guard = _344[0]; + if (!(rt.u32Rem(Guard.id(g35), 2) === 1)) { + _1221 = false; + _042 = kept6; } else { - _1110 = false; - _011 = g9; + _1123 = false; + _042 = g35; } - if (_1110) { - g9[Symbol.dispose](); + if (_1123) { + g35[Symbol.dispose](); } - _1110 = false; - if (_1211) { - rt.drop(kept3); - return _011; + _1123 = false; + if (_1221) { + rt.drop(kept6); + return _042; } - return _011; - }, true), (g10: Guard.Guard): rt.u32 => { - const _012: rt.u32 = Guard.id(g10); - g10[Symbol.dispose](); - return _012; + return _042; + }, true), (g36: Guard.Guard): rt.u32 => { + const _043: rt.u32 = Guard.id(g36); + g36[Symbol.dispose](); + return _043; }); - const _229: rt.u32 = Guard.id(e); - const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_227, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_229, f)]; + const _231: rt.u32 = Guard.id(e); + const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_229, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_231, f)]; Log.note(log, rt.fmtFormat(["step ", args14[0], " ", args14[1]])); - } else if (_21 === 7) { - const _239: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured5 = id; - const captured6 = c; - const n5: rt.u32 = rt.iterSum(rt.iterFuse(rt.iterMap(_239, rt.closure((g5: Guard.Guard): rt.u32 => { - const _07: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g5), captured5), Guard.id(captured6)), Guard.id(captured6)); - g5[Symbol.dispose](); - return _07; + } else if (_23 === 7) { + const _241: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _775 = false; + const captured29 = id; + const captured30 = c; + const n5: rt.u32 = rt.iterSum(rt.iterFuse(rt.iterMap(_241, rt.closure((g31: Guard.Guard): rt.u32 => { + const _038: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g31), captured29), Guard.id(captured30)), Guard.id(captured30)); + g31[Symbol.dispose](); + return _038; }, (): void => { - captured6[Symbol.dispose](); + captured30[Symbol.dispose](); })), true), rt.u32Add, 0, true); - const _248: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _344 = false; - const captured7 = d; - const m4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterFuse(rt.iterMap(_248, rt.closure((g6: Guard.Guard): rt.u32 => { - const _08: rt.u32 = rt.u32Add(Guard.id(g6), Guard.id(captured7)); - g6[Symbol.dispose](); - return _08; + const _250: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); + _774 = false; + const captured31 = d; + const m4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterFuse(rt.iterMap(_250, rt.closure((g32: Guard.Guard): rt.u32 => { + const _039: rt.u32 = rt.u32Add(Guard.id(g32), Guard.id(captured31)); + g32[Symbol.dispose](); + return _039; }, (): void => { - captured7[Symbol.dispose](); + captured31[Symbol.dispose](); })), true))); - const _259: rt.u32 = Guard.id(e); - const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n5, f), (f: rt.Formatter) => rt.usizeDisplay(m4, f), (f: rt.Formatter) => rt.u32Display(_259, f)]; + const _261: rt.u32 = Guard.id(e); + const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n5, f), (f: rt.Formatter) => rt.usizeDisplay(m4, f), (f: rt.Formatter) => rt.u32Display(_261, f)]; Log.note(log, rt.fmtFormat(["fuse ", args16[0], " ", args16[1], " ", args16[2]])); - } else { - const _271: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); - const captured = c; - const captured2 = guard; - const captured3 = id; - const flat: rt.Iter = rt.iterFlatten(rt.iterMap(_271, rt.closure((g: Guard.Guard): Guard.Guard[] => { - const _9: rt.u32 = Guard.id(g); - const _122: rt.u32 = Guard.id(captured); - const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_9, f), (f: rt.Formatter) => rt.u32Display(_122, f)]; - Log.note(log, rt.fmtFormat(["map ", args24[0], " ", args24[1]])); + } else if (_23 === 8) { + const _273: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); + _775 = false; + const captured25 = c; + const captured26 = guard; + const captured27 = id; + const flat: rt.Iter = rt.iterFlatten(rt.iterMap(_273, rt.closure((g27: Guard.Guard): Guard.Guard[] => { + const _918: rt.u32 = Guard.id(g27); + const _1218: rt.u32 = Guard.id(captured25); + const args74: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_918, f), (f: rt.Formatter) => rt.u32Display(_1218, f)]; + Log.note(log, rt.fmtFormat(["map ", args74[0], " ", args74[1]])); const v: Guard.Guard[] = []; - const _225: Guard.Guard = captured2(rt.u32Add(rt.u32Sub(Guard.id(g), captured3), 3)); - v.push(_225); - v.push(g); + const _2211: Guard.Guard = captured26(rt.u32Add(rt.u32Sub(Guard.id(g27), captured27), 3)); + v.push(_2211); + v.push(g27); return v; }, (): void => { - captured[Symbol.dispose](); + captured25[Symbol.dispose](); })), (value: Guard.Guard[]) => rt.iterSlice(value, rt.drop), true); - const part2 = option_map$1raha9y(rt.iterToOption(flat.next()), (g2: Guard.Guard): rt.u32 => { - const _04: rt.u32 = Guard.id(g2); - g2[Symbol.dispose](); - return _04; + const part8 = option_map$1raha9y(rt.iterToOption(flat.next()), (g28: Guard.Guard): rt.u32 => { + const _035: rt.u32 = Guard.id(g28); + g28[Symbol.dispose](); + return _035; }); - const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part2, f, rt.u32Debug)]; + const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part8, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["ends ", args18[0]])); - const part3 = option_map$1raha9y(rt.iterToOption(flat.nextBack()), (g3: Guard.Guard): rt.u32 => { + const part9 = option_map$1raha9y(rt.iterToOption(flat.nextBack()), (g29: Guard.Guard): rt.u32 => { + const _036: rt.u32 = Guard.id(g29); + g29[Symbol.dispose](); + return _036; + }); + const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part9, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["ends ", args20[0]])); + const _306: rt.Iter = flat; + _774 = false; + const captured28 = d; + const n6: rt.usize = rt.ownedCount(rt.iterMap(_306, rt.closure((g30: Guard.Guard): rt.u32 => { + const _037: rt.u32 = rt.u32Add(Guard.id(g30), Guard.id(captured28)); + g30[Symbol.dispose](); + return _037; + }, (): void => { + captured28[Symbol.dispose](); + }))); + const _314: rt.u32 = Guard.id(e); + const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n6, f), (f: rt.Formatter) => rt.u32Display(_314, f)]; + Log.note(log, rt.fmtFormat(["flat ", args22[0], " ", args22[1]])); + } else if (_23 === 9) { + const _324: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _775 = false; + const captured22 = c; + const _323: rt.Iter = rt.iterMap(_324, rt.closure((g24: Guard.Guard): Guard.Guard => { + const _916: rt.u32 = Guard.id(g24); + const _1216: rt.u32 = Guard.id(captured22); + const args70: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_916, f), (f: rt.Formatter) => rt.u32Display(_1216, f)]; + Log.note(log, rt.fmtFormat(["map ", args70[0], " ", args70[1]])); + return g24; + }, (): void => { + captured22[Symbol.dispose](); + })); + const _329: Guard.Guard | undefined = guard(20); + _774 = false; + const captured23 = d; + const kept3: Guard.Guard | undefined = rt.iterRfold(_323, _329, rt.closure((kept5: Guard.Guard | undefined, g25: Guard.Guard): Guard.Guard | undefined => { + let _031!: Guard.Guard | undefined; + let _304: boolean = false; + let _296: boolean = false; + _304 = true; + _296 = true; + const _1014: rt.u32 = Guard.id(g25); + const _1316: rt.u32 = Guard.id(captured23); + const args72: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1014, f), (f: rt.Formatter) => rt.u32Display(_1316, f)]; + Log.note(log, rt.fmtFormat(["rfold ", args72[0], " ", args72[1]])); + if (!(rt.u32Rem(Guard.id(g25), 2) === 1)) { + _304 = false; + _031 = kept5; + } else { + _296 = false; + _031 = g25; + } + if (_296) { + g25[Symbol.dispose](); + } + if (_304) { + rt.drop(kept5); + return _031; + } + return _031; + }, (): void => { + captured23[Symbol.dispose](); + }), true, true); + const _335: rt.Iter = rt.iterSlice([1, 2, 3]); + _773 = false; + const captured24 = e; + const n7: rt.u32 = rt.iterRfold(_335, 0, rt.closure((n24: rt.u32, _326: rt.u32): rt.u32 => { + return rt.u32Sub(rt.u32Add(rt.u32Add(rt.u32Mul(n24, 10), _326), Guard.id(captured24)), Guard.id(captured24)); + }, (): void => { + captured24[Symbol.dispose](); + }), undefined, true); + const _345: rt.u32 | undefined = option_map$1raha9y(kept3, (g26: Guard.Guard): rt.u32 => { + const _033: rt.u32 = Guard.id(g26); + g26[Symbol.dispose](); + return _033; + }); + const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_345, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(n7, f)]; + Log.note(log, rt.fmtFormat(["rfold ", args24[0], " ", args24[1]])); + } else if (_23 === 10) { + const held: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _775 = false; + const captured19 = c; + const captured20 = id; + const sum: rt.u32 | undefined = rt.iterTryRfold(held, 0, rt.closure((n22: rt.u32, g22: Guard.Guard): rt.u32 | undefined => { + const _1012: rt.u32 = Guard.id(g22); + const _1314: rt.u32 = Guard.id(captured19); + const args68: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1012, f), (f: rt.Formatter) => rt.u32Display(_1314, f)]; + Log.note(log, rt.fmtFormat(["try ", args68[0], " ", args68[1]])); + const _027: rt.u32 | undefined = then$0ea5h05(Guard.id(g22) !== rt.u32Add(captured20, 3), (): rt.u32 => { + return rt.u32Sub(rt.u32Add(n22, Guard.id(g22)), captured20); + }); + g22[Symbol.dispose](); + return _027; + }, (): void => { + captured19[Symbol.dispose](); + }), true, true); + const _365: rt.usize = held.len(); + const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(sum, f, rt.u32Debug), (f: rt.Formatter) => rt.usizeDisplay(_365, f)]; + Log.note(log, rt.fmtFormat(["tried ", args26[0], " ", args26[1]])); + _774 = false; + const captured21 = d; + const rest: rt.u32 | undefined = rt.iterTryRfold(held, 0, rt.closure((n23: rt.u32, g23: Guard.Guard): rt.u32 | undefined => { + const _029: rt.u32 | undefined = rt.u32Sub(rt.u32Add(rt.u32Add(n23, Guard.id(g23)), Guard.id(captured21)), Guard.id(captured21)); + g23[Symbol.dispose](); + return _029; + }, (): void => { + captured21[Symbol.dispose](); + }), true, true); + const _382: rt.u32 = Guard.id(e); + const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(rest, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_382, f)]; + Log.note(log, rt.fmtFormat(["rest ", args28[0], " ", args28[1]])); + rt.drop(held); + } else if (_23 === 11) { + const _391: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _775 = false; + const captured16 = c; + const mapped: rt.Iter = rt.iterMap(_391, rt.closure((g19: Guard.Guard): Guard.Guard => { + const _913: rt.u32 = Guard.id(g19); + const _1213: rt.u32 = Guard.id(captured16); + const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_913, f), (f: rt.Formatter) => rt.u32Display(_1213, f)]; + Log.note(log, rt.fmtFormat(["map ", args66[0], " ", args66[1]])); + return g19; + }, (): void => { + captured16[Symbol.dispose](); + })); + _774 = false; + const captured17 = id; + const captured18 = d; + const part5 = result_mapErr$0nvqjog(rt.iterTryRfold(mapped, 0, rt.closure((n21: rt.u32, g20: Guard.Guard): rt.Result => { + let _025!: rt.Result; + let _233: boolean = false; + _233 = true; + if (!(Guard.id(g20) === rt.u32Add(captured17, 2))) { + _025 = rt.Ok(rt.u32Sub(rt.u32Add(rt.u32Add(n21, Guard.id(g20)), Guard.id(captured18)), Guard.id(captured18))); + } else { + _233 = false; + _025 = rt.Err(g20); + } + if (_233) { + g20[Symbol.dispose](); + return _025; + } + return _025; + }, (): void => { + captured18[Symbol.dispose](); + }), undefined, true), (g21: Guard.Guard): rt.u32 => { + const _026: rt.u32 = Guard.id(g21); + g21[Symbol.dispose](); + return _026; + }); + const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part5, f, rt.u32Debug, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["tried ", args30[0]])); + rt.drop(mapped); + const part6 = Guard.id(e); + const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part6, f)]; + Log.note(log, rt.fmtFormat(["dropped ", args32[0]])); + } else if (_23 === 12) { + const chained: rt.Iter = rt.iterRev(rt.iterChain(rt.iterSlice(guards(1, 3), rt.drop), rt.iterSlice(guards(3, 6), rt.drop))); + _775 = false; + const captured14 = id; + const captured15 = c; + const r2: rt.Result = rt.iterTryRfold(chained, 0, rt.closure((n19: rt.u32, g17: Guard.Guard): rt.Result => { + let _022!: rt.Result; + let _232: boolean = false; + _232 = true; + if (!(Guard.id(g17) === rt.u32Add(captured14, 4))) { + _022 = rt.Ok(rt.u32Sub(rt.u32Add(rt.u32Add(n19, Guard.id(g17)), Guard.id(captured15)), Guard.id(captured15))); + } else { + _232 = false; + _022 = rt.Err(g17); + } + if (_232) { + g17[Symbol.dispose](); + return _022; + } + return _022; + }, (): void => { + captured15[Symbol.dispose](); + }), undefined, true); + if (r2.ok) { + broke = undefined; + } else { + const g: Guard.Guard = r2.error; + broke = Guard.id(g); + g[Symbol.dispose](); + } + const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(broke, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["broke ", args34[0]])); + const n8: rt.Result = rt.iterTryRfold(chained, 0, (n20: rt.u32, g18: Guard.Guard): rt.Result => { + const _023: rt.Result = rt.Ok(rt.u32Sub(rt.u32Add(n20, Guard.id(g18)), id)); + g18[Symbol.dispose](); + return _023; + }); + const _461: rt.u32 = Guard.id(d); + const _464: rt.u32 = Guard.id(e); + const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtControlFlow(n8, f, rt.u32Debug, rt.fmtUnit), (f: rt.Formatter) => rt.u32Display(_461, f), (f: rt.Formatter) => rt.u32Display(_464, f)]; + Log.note(log, rt.fmtFormat(["rest ", args36[0], " ", args36[1], " ", args36[2]])); + rt.drop(chained); + } else if (_23 === 13) { + const _474: rt.Iter = rt.iterSlice(guards(1, 1), rt.drop); + const _478: Guard.Guard = guard(20); + _775 = false; + const captured11 = c; + const none: Guard.Guard = rt.iterRfold(_474, _478, rt.closure((acc: Guard.Guard, _316: Guard.Guard): Guard.Guard => { + const part3 = Guard.id(captured11); + const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part3, f)]; + Log.note(log, rt.fmtFormat(["never ", args62[0]])); + _316[Symbol.dispose](); + return acc; + }, (): void => { + captured11[Symbol.dispose](); + }), true, true); + const _483: rt.Iter = rt.iterSlice(guards(1, 1), rt.drop); + _774 = false; + const captured12 = d; + const empty: rt.Iter = rt.iterMap(_483, rt.closure((g16: Guard.Guard): rt.u32 => { + const _020: rt.u32 = rt.u32Add(Guard.id(g16), Guard.id(captured12)); + g16[Symbol.dispose](); + return _020; + }, (): void => { + captured12[Symbol.dispose](); + })); + _773 = false; + const captured13 = e; + const tried: rt.u32 | undefined = rt.iterTryRfold(empty, 0, rt.closure((n18: rt.u32, k4: rt.u32): rt.u32 | undefined => { + const part4 = Guard.id(captured13); + const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part4, f)]; + Log.note(log, rt.fmtFormat(["never ", args64[0]])); + return rt.u32CheckedAdd(n18, k4); + }, (): void => { + captured13[Symbol.dispose](); + }), true, true); + const _497: rt.u32 = Guard.id(none); + const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_497, f), (f: rt.Formatter) => rt.fmtOption(tried, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["empty ", args38[0], " ", args38[1]])); + rt.drop(empty); + none[Symbol.dispose](); + } else if (_23 === 14) { + const _507: Pile.Pile = pile(1, 5); + _775 = false; + const captured7 = c; + const captured8 = id; + const _510: (a0: Guard.Guard) => rt.u32 = rt.closure((g13: Guard.Guard): rt.u32 => { + const _910: rt.u32 = Guard.id(g13); + const _1211: rt.u32 = Guard.id(captured7); + const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_910, f), (f: rt.Formatter) => rt.u32Display(_1211, f)]; + Log.note(log, rt.fmtFormat(["map ", args58[0], " ", args58[1]])); + const _016: rt.u32 = rt.u32Sub(Guard.id(g13), captured8); + g13[Symbol.dispose](); + return _016; + }, (): void => { + captured7[Symbol.dispose](); + }); + const part2 = rt.iterFold(rt.iterMap(rt.iterFrom(_507, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _510), 0, (n17: rt.u32, k3: rt.u32): rt.u32 => { + return rt.u32Add(rt.u32Mul(n17, 10), k3); + }, true); + const args40: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part2, f)]; + Log.note(log, rt.fmtFormat(["fold ", args40[0]])); + const _522: Pile.Pile = pile(5, 8); + _774 = false; + const captured9 = d; + const _525: (a0: Guard.Guard) => undefined = rt.closure((g14: Guard.Guard): undefined => { + const _810: rt.u32 = Guard.id(g14); + const _1112: rt.u32 = Guard.id(captured9); + const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_810, f), (f: rt.Formatter) => rt.u32Display(_1112, f)]; + Log.note(log, rt.fmtFormat(["each ", args60[0], " ", args60[1]])); + g14[Symbol.dispose](); + }, (): void => { + captured9[Symbol.dispose](); + }); + rt.iterForEach(rt.iterFrom(_522, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _525, true, true); + const _528: Pile.Pile = pile(1, 4); + _773 = false; + const captured10 = e; + const _531: (a0: Guard.Guard) => rt.u32 = rt.closure((g15: Guard.Guard): rt.u32 => { + const _018: rt.u32 = rt.u32Add(Guard.id(g15), Guard.id(captured10)); + g15[Symbol.dispose](); + return _018; + }, (): void => { + captured10[Symbol.dispose](); + }); + const m5: rt.usize = rt.ownedCount(rt.iterMap(rt.iterFrom(_528, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _531)); + const _538: rt.usize = Pile.count$iter_Iterator(pile(4, 6)); + const args42: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(m5, f), (f: rt.Formatter) => rt.usizeDisplay(_538, f)]; + Log.note(log, rt.fmtFormat(["count ", args42[0], " ", args42[1]])); + } else if (_23 === 15) { + const last2: Guard.Guard | undefined = Pile.last$iter_Iterator(pile(1, 4)); + const back: Guard.Guard | undefined = rt.ownedLast(rt.iterRev(rt.iterFrom(pile(4, 7), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 })), rt.drop); + const skipped: Guard.Guard | undefined = rt.ownedLast(rt.iterSkip(rt.iterFrom(pile(7, 9), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), 1, rt.drop), rt.drop); + const _568: rt.u32 | undefined = option_map$1raha9y(last2, (g7: Guard.Guard): rt.u32 => { + const _010: rt.u32 = Guard.id(g7); + g7[Symbol.dispose](); + return _010; + }); + const _570: rt.u32 | undefined = option_map$1raha9y(back, (g8: Guard.Guard): rt.u32 => { + const _011: rt.u32 = Guard.id(g8); + g8[Symbol.dispose](); + return _011; + }); + const _572: rt.u32 | undefined = option_map$1raha9y(skipped, (g9: Guard.Guard): rt.u32 => { + const _012: rt.u32 = Guard.id(g9); + g9[Symbol.dispose](); + return _012; + }); + const args44: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_568, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_570, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_572, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["last ", args44[0], " ", args44[1], " ", args44[2]])); + const _581: rt.Iter = rt.iterRev(rt.iterFrom(pile(1, 6), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 })); + _775 = false; + const captured6 = c; + const _593: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_581, rt.closure((g10: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g10, Guard.id(captured6)] as [Guard.Guard, rt.u32]; + }, (): void => { + captured6[Symbol.dispose](); + })), undefined as Guard.Guard | undefined, (_2: Guard.Guard | undefined, _312: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { + const _014: Guard.Guard | undefined = _312[0]; + rt.drop(_2); + return _014; + }, true), (g12: Guard.Guard): rt.u32 => { + const _015: rt.u32 = Guard.id(g12); + g12[Symbol.dispose](); + return _015; + }); + const _595: rt.u32 = Guard.id(d); + const _598: rt.u32 = Guard.id(e); + const args46: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_593, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_595, f), (f: rt.Formatter) => rt.u32Display(_598, f)]; + Log.note(log, rt.fmtFormat(["rev ", args46[0], " ", args46[1], " ", args46[2]])); + } else if (_23 === 16) { + const held2: Pile.Pile = pile(1, 6); + const part = option_map$1raha9y(rt.iterNth(rt.iterRev(rt.iterFrom(held2, Pile.next$iter_Iterator, undefined, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, rt.drop), (g3: Guard.Guard): rt.u32 => { const _05: rt.u32 = Guard.id(g3); g3[Symbol.dispose](); return _05; }); - const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part3, f, rt.u32Debug)]; - Log.note(log, rt.fmtFormat(["ends ", args20[0]])); - const _304: rt.Iter = flat; - _344 = false; - const captured4 = d; - const n6: rt.usize = rt.ownedCount(rt.iterMap(_304, rt.closure((g4: Guard.Guard): rt.u32 => { - const _06: rt.u32 = rt.u32Add(Guard.id(g4), Guard.id(captured4)); + const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["nth ", args48[0]])); + _775 = false; + const captured3 = c; + const n10: rt.u32 = rt.iterFold(rt.iterMap(rt.iterFrom(held2, Pile.next$iter_Iterator, undefined, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.closure((g4: Guard.Guard): rt.u32 => { + const _06: rt.u32 = rt.u32Sub(rt.u32Add(Guard.id(g4), Guard.id(captured3)), Guard.id(captured3)); g4[Symbol.dispose](); return _06; + }, (): void => { + captured3[Symbol.dispose](); + })), 0, (n14: rt.u32, k2: rt.u32): rt.u32 => { + return rt.u32Add(n14, k2); + }, true); + const _635: rt.usize = held2.held.length; + const args50: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n10, f), (f: rt.Formatter) => rt.usizeDisplay(_635, f)]; + Log.note(log, rt.fmtFormat(["borrowed ", args50[0], " ", args50[1]])); + const _645: Pile.Pile = pile(6, 8); + const _648: Guard.Guard[] = guards(8, 10); + const m6: rt.usize = rt.ownedCount(rt.iterChain(rt.iterFrom(_645, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), rt.iterSlice(_648, rt.drop)), rt.drop); + const _657: rt.u32 = Guard.id(d); + const _660: rt.u32 = Guard.id(e); + const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(m6, f), (f: rt.Formatter) => rt.u32Display(_657, f), (f: rt.Formatter) => rt.u32Display(_660, f)]; + Log.note(log, rt.fmtFormat(["chain ", args52[0], " ", args52[1], " ", args52[2]])); + const _671: [Guard.Guard, Guard.Guard] = [guard(30), guard(31)]; + const k: Guard.Guard = _671[0]; + const l: Guard.Guard = _671[1]; + const _680: Pile.Pile = pile(1, 4); + const _683: Guard.Guard[] = guards(4, 6); + const _679: rt.Iter = rt.iterChain(rt.iterFrom(_680, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), rt.iterSlice(_683, rt.drop)); + const captured4 = k; + const n11: rt.u32 = rt.iterFold(_679, 0, rt.closure((n15: rt.u32, g5: Guard.Guard): rt.u32 => { + const _08: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Add(n15, Guard.id(g5)), Guard.id(captured4)), Guard.id(captured4)); + g5[Symbol.dispose](); + return _08; }, (): void => { captured4[Symbol.dispose](); - }))); - const _312: rt.u32 = Guard.id(e); - const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n6, f), (f: rt.Formatter) => rt.u32Display(_312, f)]; - Log.note(log, rt.fmtFormat(["flat ", args22[0], " ", args22[1]])); + }), true, true); + const _688: rt.Iter = rt.iterChain(rt.iterSlice(guards(1, 3), rt.drop), rt.iterFrom(pile(3, 6), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 })); + const captured5 = l; + const r3: rt.u32 = rt.iterRfold(_688, 0, rt.closure((n16: rt.u32, g6: Guard.Guard): rt.u32 => { + const _09: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Add(n16, Guard.id(g6)), Guard.id(captured5)), Guard.id(captured5)); + g6[Symbol.dispose](); + return _09; + }, (): void => { + captured5[Symbol.dispose](); + }), true, true); + const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n11, f), (f: rt.Formatter) => rt.u32Display(r3, f)]; + Log.note(log, rt.fmtFormat(["lent ", args54[0], " ", args54[1]])); + held2[Symbol.dispose](); + } else { + const a: Guard.Guard = guard(20); + const _714: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + const captured = id; + const captured2 = a; + rt.iterTryRfold(_714, 0, rt.closure((n13: rt.u32, g2: Guard.Guard): rt.u32 | undefined => { + if (!(Guard.id(g2) !== rt.u32Add(captured, 3))) { + const _145: rt.u32 = Guard.id(g2); + const _172: rt.u32 = Guard.id(captured2); + const _202: string = rt.resultUnwrap(rt.stringFromUtf8(Log.text(log)), rt.fmtFromUtf8ErrorDebug); + const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_145, f), (f: rt.Formatter) => rt.u32Display(_172, f), (f: rt.Formatter) => rt.fmtPad(f, _202)]; + rt.panicFmt(["try_rfold of g", args56[0], " with g", args56[1], " after\n", args56[2]]); + } else { + const _04: rt.u32 | undefined = rt.u32Add(n13, Guard.id(g2)); + g2[Symbol.dispose](); + return _04; + } + }, (): void => { + captured2[Symbol.dispose](); + }), true, true); + rt.drop(_714); } - if (_343) { + if (_773) { e[Symbol.dispose](); } - _343 = false; - if (_344) { + _773 = false; + if (_774) { d[Symbol.dispose](); } - _344 = false; + _774 = false; + if (_775) { + c[Symbol.dispose](); + } + _775 = false; } /** `last` and `min` of `Option`s, by what drops: a `None` item apart from no items. */ diff --git a/ts/fixtures/task/src/drops.rs b/ts/fixtures/task/src/drops.rs index 8022505eb..645ea69f3 100644 --- a/ts/fixtures/task/src/drops.rs +++ b/ts/fixtures/task/src/drops.rs @@ -725,8 +725,8 @@ pub fn folded(log: &Log, id: u32, arg: u8) { folds::folded(log, id, arg); } -/// Run scenario `arg % 9` of what folds back to front, and through what wraps a closure -/// beside another. +/// Run scenario `arg % 18` of what folds back to front, through what wraps a closure beside +/// another, and through a crate's iterator with folds of its own. The last panics in a fold. pub fn rfolded(log: &Log, id: u32, arg: u8) { folds::rfolded(log, id, arg); } diff --git a/ts/fixtures/task/src/drops/folds.rs b/ts/fixtures/task/src/drops/folds.rs index d863f6d4b..1aad78296 100644 --- a/ts/fixtures/task/src/drops/folds.rs +++ b/ts/fixtures/task/src/drops/folds.rs @@ -405,13 +405,19 @@ pub(super) fn folded(log: &Log, id: u32, arg: u8) { } } -/// Run scenario `arg % 9` of what folds back to front and through what wraps a closure -/// beside another, as `folded` does. +/// Run scenario `arg % 18` of what folds back to front and through what wraps a closure +/// beside another, as `folded` does, of `rfold` and `try_rfold` themselves, and of a +/// crate's iterator with folds of its own. The last panics in a `try_rfold`, with what +/// dropped before. pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { let guard = |n: u32| Guard::new(id + n, log.clone()); let guards = |from: u32, to: u32| (from..to).map(guard).collect::>(); let (c, d, e) = (guard(10), guard(11), guard(12)); - match arg % 9 { + let pile = |from: u32, to: u32| Pile { + held: guards(from, to), + log: log.clone(), + }; + match arg % 18 { 0 => { let n: u32 = guards(1, 5) .into_iter() @@ -536,7 +542,7 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { .count(); log.note(format!("fuse {n} {m} {}", e.id())); } - _ => { + 8 => { // What is left between the front and back iterators, folded. let mut flat = guards(1, 4) .into_iter() @@ -550,6 +556,218 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { let n = flat.map(move |g| g.id() + d.id()).count(); log.note(format!("flat {n} {}", e.id())); } + 9 => { + // `rfold` through a closure that owns a guard, of an accumulator that drops. + let kept = guards(1, 6) + .into_iter() + .map(move |g| { + log.note(format!("map {} {}", g.id(), c.id())); + g + }) + .rfold(Some(guard(20)), move |kept, g| { + log.note(format!("rfold {} {}", g.id(), d.id())); + if g.id() % 2 == 1 { Some(g) } else { kept } + }); + // Of an iterator that drops nothing, by a closure that does. + let n = [1u32, 2, 3].iter().rfold(0, move |n, &k| n * 10 + k + e.id() - e.id()); + log.note(format!("rfold {:?} {n}", kept.map(|g| g.id()))); + } + 10 => { + // `try_rfold` breaks by `None`, dropping its closure as it returns, before what the + // iterator still holds, which drops with it. + let mut held = guards(1, 6).into_iter(); + let sum = held.try_rfold(0, move |n, g| { + log.note(format!("try {} {}", g.id(), c.id())); + (g.id() != id + 3).then(|| n + g.id() - id) + }); + log.note(format!("tried {sum:?} {}", held.len())); + let rest = held.try_rfold(0, move |n, g| Some(n + g.id() + d.id() - d.id())); + log.note(format!("rest {rest:?} {}", e.id())); + } + 11 => { + // By `Err`, through a `map` whose closure it borrows, which drops with the map. + let mut mapped = guards(1, 6).into_iter().map(move |g| { + log.note(format!("map {} {}", g.id(), c.id())); + g + }); + let r: Result = mapped.try_rfold(0, move |n, g| { + if g.id() == id + 2 { + Err(g) + } else { + Ok(n + g.id() + d.id() - d.id()) + } + }); + log.note(format!("tried {:?}", r.map_err(|g| g.id()))); + drop(mapped); + log.note(format!("dropped {}", e.id())); + } + 12 => { + use std::ops::ControlFlow; + // By `Break`, through a chain, which drops each half it ends as it goes. + let mut chained = guards(1, 3).into_iter().chain(guards(3, 6)).rev(); + let r = chained.try_rfold(0, move |n, g| match g.id() == id + 4 { + true => ControlFlow::Break(g), + false => ControlFlow::Continue(n + g.id() + c.id() - c.id()), + }); + let broke = match r { + ControlFlow::Break(g) => Some(g.id()), + ControlFlow::Continue(_) => None, + }; + log.note(format!("broke {broke:?}")); + let n = chained.try_rfold(0, |n, g| ControlFlow::<(), u32>::Continue(n + g.id() - id)); + log.note(format!("rest {n:?} {} {}", d.id(), e.id())); + } + 13 => { + // Of nothing: each closure drops before the iterator, or as `try_rfold` returns. + let none = guards(1, 1).into_iter().rfold(guard(20), move |acc, _| { + log.note(format!("never {}", c.id())); + acc + }); + let mut empty = guards(1, 1).into_iter().map(move |g| g.id() + d.id()); + let tried = empty.try_rfold(0u32, move |n, k| { + log.note(format!("never {}", e.id())); + n.checked_add(k) + }); + log.note(format!("empty {} {tried:?}", none.id())); + } + 14 => { + // A crate's own `fold` and `count`, which std's `map` and `for_each` call, drop + // what they hold, and the closure std gives the fold, where their bodies do. + let n = pile(1, 5) + .map(move |g| { + log.note(format!("map {} {}", g.id(), c.id())); + g.id() - id + }) + .fold(0, |n, k| n * 10 + k); + log.note(format!("fold {n}")); + pile(5, 8).for_each(move |g| log.note(format!("each {} {}", g.id(), d.id()))); + let m = pile(1, 4).map(move |g| g.id() + e.id()).count(); + log.note(format!("count {m} {}", pile(4, 6).count())); + } + 15 => { + // Its own `last`, `rfold` through `rev`, and `nth` through `skip`. + let last = pile(1, 4).last(); + let back = pile(4, 7).rev().last(); + let skipped = pile(7, 9).skip(1).last(); + log.note(format!( + "last {:?} {:?} {:?}", + last.map(|g| g.id()), + back.map(|g| g.id()), + skipped.map(|g| g.id()) + )); + let kept = pile(1, 6) + .rev() + .map(move |g| (g, c.id())) + .fold(None, |_, (g, _)| Some(g)); + log.note(format!("rev {:?} {} {}", kept.map(|g| g.id()), d.id(), e.id())); + } + 16 => { + // Its own `nth_back` through `rev`, `count` through `chain`, and its `fold`, not + // called through `&mut`. + let mut held = pile(1, 6); + log.note(format!("nth {:?}", held.by_ref().rev().nth(1).map(|g| g.id()))); + let n = (&mut held).map(move |g| g.id() + c.id() - c.id()).fold(0, |n, k| n + k); + log.note(format!("borrowed {n} {}", held.held.len())); + let m = pile(6, 8).chain(guards(8, 10)).count(); + log.note(format!("chain {m} {} {}", d.id(), e.id())); + // Its folds through a chain, which lends them its closure: theirs drop the loan. + let (k, l) = (guard(30), guard(31)); + let n = pile(1, 4) + .chain(guards(4, 6)) + .fold(0, move |n, g| n + g.id() + k.id() - k.id()); + let r = guards(1, 3) + .into_iter() + .chain(pile(3, 6)) + .rfold(0, move |n, g| n + g.id() + l.id() - l.id()); + log.note(format!("lent {n} {r}")); + } + _ => { + let a = guard(20); + guards(1, 6).into_iter().try_rfold(0, move |n, g| { + assert!( + g.id() != id + 3, + "try_rfold of g{} with g{} after\n{}", + g.id(), + a.id(), + String::from_utf8(log.text()).unwrap() + ); + Some(n + g.id()) + }); + } + } +} + +/// Guards popped from the back of a `Vec`, with its own `nth`, `nth_back`, folds, `count`, +/// and `last`, each of which notes it was called. Its folds stop short of the last guard +/// and drop their closure before they note they folded, and the rest drop with it. +struct Pile { + held: Vec, + log: Log, +} + +impl Iterator for Pile { + type Item = Guard; + + fn next(&mut self) -> Option { + self.held.pop() + } + + fn size_hint(&self) -> (usize, Option) { + (self.held.len(), Some(self.held.len())) + } + + fn nth(&mut self, n: usize) -> Option { + self.log.note(format!("pile nth {n}")); + for _ in 0..n { + drop(self.held.pop()?); + } + self.held.pop() + } + + fn fold B>(mut self, init: B, mut f: F) -> B { + self.log.note("pile fold".into()); + let mut acc = init; + while self.held.len() > 1 { + acc = f(acc, self.held.pop().unwrap()); + } + drop(f); + self.log.note("pile folded".into()); + acc + } + + fn count(self) -> usize { + self.log.note(format!("pile count {}", self.held.len())); + self.held.len() + } + + fn last(mut self) -> Option { + self.log.note("pile last".into()); + (!self.held.is_empty()).then(|| self.held.remove(0)) + } +} + +impl DoubleEndedIterator for Pile { + fn next_back(&mut self) -> Option { + (!self.held.is_empty()).then(|| self.held.remove(0)) + } + + fn nth_back(&mut self, n: usize) -> Option { + self.log.note(format!("pile nth_back {n}")); + for _ in 0..n { + drop(self.next_back()?); + } + self.next_back() + } + + fn rfold B>(mut self, init: B, mut f: F) -> B { + self.log.note("pile rfold".into()); + let mut acc = init; + while self.held.len() > 1 { + acc = f(acc, self.held.remove(0)); + } + drop(f); + self.log.note("pile rfolded".into()); + acc } } diff --git a/ts/runtime/rt/iter.ts b/ts/runtime/rt/iter.ts index 8cc62c037..bff8ac9d6 100644 --- a/ts/runtime/rt/iter.ts +++ b/ts/runtime/rt/iter.ts @@ -26,7 +26,7 @@ import { ByteSlice, ByteVec, byteVecExtendFromSlice, byteVecPush, byteVecReserve import { AtIndex, BTreeIter, HashIter, type Ordering } from "./collections.ts"; import { type Hasher, hash8 } from "./hash.ts"; import { charStep, intToBig, type Limbs, lt as wideLt, type Step } from "./int.ts"; -import { drop as dispose, dropRange } from "./task.ts"; +import { closure, drop as dispose, dropRange } from "./task.ts"; /** What `next` returns once an iterator is exhausted, which no item is. */ export const DONE: unique symbol = /* @__PURE__ */ Symbol("DONE"); @@ -568,12 +568,29 @@ export function iterSuccessors(first: T | undefined | None, succ: (item: T) = } /** - * An `impl Iterator` of the translated crate, which `next` calls the `next` of, and `drop` - * drops. `hint`, `back`, and `len` call its own `size_hint`, `next_back`, and `len`, where - * it has them. + * The methods of std's iterator traits an iterator of the translated crate has of its own, + * beside `next`, each a function of its source: `iterFrom` calls each where std's + * adaptors and consumers do. `fold`, `rfold`, `count`, and `last` take it by value. */ -export function iterFrom(source: S, next: (source: S) => T | Done, drop?: Drop, hint?: (source: S) => SizeHint, back?: (source: S) => T | Done, len?: (source: S) => number): Iter { - return new FromNext(source, next, drop, hint, back, len); +export interface Own { + readonly hint?: (source: S) => SizeHint; + readonly back?: (source: S) => T | Done; + readonly len?: (source: S) => number; + readonly nth?: (source: S, n: number) => T | Done; + readonly nthBack?: (source: S, n: number) => T | Done; + /** Of one accumulator type in Rust, which only moves the one it is given, as any it is called with. */ + readonly fold?: (source: S, acc: never, f: never) => unknown; + readonly rfold?: (source: S, acc: never, f: never) => unknown; + readonly count?: (source: S) => number; + readonly last?: (source: S) => T | Done; +} + +/** + * An `impl Iterator` of the translated crate, which `next` calls the `next` of, `drop` + * drops, and `own` reads by the methods it has of its own. + */ +export function iterFrom(source: S, next: (source: S) => T | Done, drop?: Drop, own?: Own): Iter { + return new FromNext(source, next, drop, own); } /** An iterator borrowed by `&mut`, which std's adaptors take as one: its items, but never it to drop. */ @@ -1041,6 +1058,39 @@ export function iterFold(it: Iter, init: A, f: (acc: A, item: T) => A, return it.fold(init, f, owns ? () => dispose(f) : undefined); } +/** `DoubleEndedIterator::rfold`, from the back, as `iterFold`. */ +export function iterRfold(it: Iter, init: A, f: (acc: A, item: T) => A, drops = false, owns = false): A { + if (!drops) { + const folded = it.folded(true); + let acc = init; + for (let item = folded.nextBack(); item !== DONE; item = folded.nextBack()) acc = f(acc, item); + if (owns) dispose(f); + return acc; + } + return it.rfold(init, f, owns ? () => dispose(f) : undefined); +} + +/** + * `DoubleEndedIterator::try_rfold`, from the back as `try_rfold` steps it, until `f` + * breaks: by an `Option`'s `None`, `none` where that is `rt.None`, if `option`, and else by + * an `rt.Result`'s `Err`, as a `Result` or a `ControlFlow` breaks. It returns what broke, or + * the accumulator as the type continues with it. If it `owns` `f`, `f` drops as it returns. + */ +export function iterTryRfold(it: Iter, init: A, f: (acc: A, item: T) => R, option = false, owns = false, none?: None): R { + const folded = it.folded(); + let acc = init; + for (let item = folded.nextBack(); item !== DONE; item = folded.nextBack()) { + const step = f(acc, item); + if (option ? step === none : !(step as Result).ok) { + if (owns) dispose(f); + return step; + } + acc = option ? (step as unknown as A) : (step as { value: A }).value; + } + if (owns) dispose(f); + return (option ? acc : Ok(acc)) as R; +} + /** `Iterator::for_each`, which drops `f` if it `owns` it, as `iterFold` does. */ export function iterForEach(it: Iter, f: (item: T) => void, drops = false, owns = false): void { if (!drops) { @@ -1448,6 +1498,7 @@ export function ownedLast(it: Iter, drop?: Drop, none?: None): T | unde /** `count`, dropping each item by `drop`, and then `it`, as std's of its kind does. */ function count(it: Iter, drop: Drop | undefined): number { + if (it instanceof FromNext && it.own?.count !== undefined) return it.taken(it.own.count); if (it instanceof EnumerateIter) return count(it.inner, items(drop)); if (it instanceof ChainIter) { // std's: each iterator's own `count`, the first's first. @@ -1504,6 +1555,7 @@ function count(it: Iter, drop: Drop | undefined): number { * does. By `fold`, each item drops as the next replaces it. */ function last(it: Iter, drop: Drop | undefined): T | Done { + if (it instanceof FromNext && it.own?.last !== undefined) return it.taken(it.own.last); // std's of a box: what it holds, by its own. if (it instanceof Boxed) return last(it.inner, drop); if ((it instanceof SliceIter && drop !== undefined) || (it instanceof BTreeIter && it.back)) { @@ -1977,25 +2029,21 @@ class OptionIter extends Iter implements Disposable { } /** - * An iterator whose `next` is a function of its source, which `drop` drops, as are its - * `size_hint`, `next_back`, and `len` where it has them. + * An iterator whose `next` is a function of its source, which `drop` drops, and which `own` + * reads by the methods it has of its own. */ class FromNext extends Iter implements Disposable { private readonly source: S; private readonly step: (source: S) => T | Done; private drop: Drop | undefined; - private readonly hint: ((source: S) => SizeHint) | undefined; - private readonly back: ((source: S) => T | Done) | undefined; - private readonly exact: ((source: S) => number) | undefined; + readonly own: Own | undefined; - constructor(source: S, step: (source: S) => T | Done, drop?: Drop, hint?: (source: S) => SizeHint, back?: (source: S) => T | Done, exact?: (source: S) => number) { + constructor(source: S, step: (source: S) => T | Done, drop?: Drop, own?: Own) { super(); this.source = source; this.step = step; this.drop = drop; - this.hint = hint; - this.back = back; - this.exact = exact; + this.own = own; } next(): T | Done { @@ -2004,21 +2052,61 @@ class FromNext extends Iter implements Disposable { /** Only an iterator with its own `next_back` is read from the back. */ override nextBack(): T | Done { - return (this.back as (source: S) => T | Done)(this.source); + return (this.own?.back as (source: S) => T | Done)(this.source); + } + + /** Its own, which drops what it skips itself. */ + override nth(n: number, drop?: Drop): T | Done { + const nth = this.own?.nth; + return nth === undefined ? super.nth(n, drop) : nth(this.source, n); + } + + override nthBack(n: number, drop?: Drop): T | Done { + const nthBack = this.own?.nthBack; + return nthBack === undefined ? super.nthBack(n, drop) : nthBack(this.source, n); } override sizeHint(): SizeHint { - return this.hint === undefined ? super.sizeHint() : this.hint(this.source); + const hint = this.own?.hint; + return hint === undefined ? super.sizeHint() : hint(this.source); } /** Its own, or std's, of its size hint. */ override len(): number { - return this.exact === undefined ? hintLen(this) : this.exact(this.source); + const len = this.own?.len; + return len === undefined ? hintLen(this) : len(this.source); + } + + override fold(acc: A, f: (acc: A, item: T) => A, release?: () => void): A { + const fold = this.own?.fold; + return fold === undefined ? super.fold(acc, f, release) : this.folds(fold, acc, f, release); + } + + override rfold(acc: A, f: (acc: A, item: T) => A, release?: () => void): A { + const rfold = this.own?.rfold; + return rfold === undefined ? super.rfold(acc, f, release) : this.folds(rfold, acc, f, release); + } + + /** + * Its own `fold` or `rfold`, which takes it by value: given `f` as a closure that drops + * what it owns by `release`, as the crate's drops the closure std gives it, and nothing + * without it, as a loan of `f` does. + */ + private folds(fold: (source: S, acc: never, f: never) => unknown, acc: A, f: (acc: A, item: T) => A, release: (() => void) | undefined): A { + this.drop = undefined; + const g = (acc: A, item: T) => f(acc, item); + return (fold as (source: S, acc: A, f: (acc: A, item: T) => A) => A)(this.source, acc, release === undefined ? g : closure(g, release)); + } + + /** Its own `count` or `last`, which takes it by value. */ + taken(f: (source: S) => R): R { + this.drop = undefined; + return f(this.source); } /** Its source cloned by `h.v`, as the crate's own `Clone` of it. */ override clone(h?: Clones): Iter { - return new FromNext(cloned(this.source, h?.v), this.step, this.drop, this.hint, this.back, this.exact); + return new FromNext(cloned(this.source, h?.v), this.step, this.drop, this.own); } [Symbol.dispose](): void { @@ -2127,6 +2215,7 @@ class Dyn extends Forward { } } + /** * An iterator borrowed by `&mut`, which forwards only what std's `impl Iterator for &mut * I` does, its folds included, as std's specializes them for a sized `I`, and which diff --git a/ts/src/census.rs b/ts/src/census.rs index 5d32ef700..44b38836e 100644 --- a/ts/src/census.rs +++ b/ts/src/census.rs @@ -162,6 +162,7 @@ const VERBATIM: &[&str] = &[ "Ord", "Pending", "Pointer", + "Poll", "Ready", "Reborrow", "Result", diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index 06834e2cb..912424284 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -74,17 +74,33 @@ fn own_next<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>) -> Option /// The methods of std's iterator traits, by trait, that an iterator of the crate may have /// of its own: `rt.iterFrom` calls each where std's adaptors do. -const OWN: [(&str, &str); 4] = [ +const OWN: [(&str, &str); 10] = [ ("Iterator", "next"), ("Iterator", "size_hint"), + ("Iterator", "nth"), + ("Iterator", "fold"), + ("Iterator", "count"), + ("Iterator", "last"), ("DoubleEndedIterator", "next_back"), + ("DoubleEndedIterator", "nth_back"), + ("DoubleEndedIterator", "rfold"), ("ExactSizeIterator", "len"), ]; +/// The methods in `OWN` that take the iterator by value, which std's consumers call of +/// one they own, but not through a `&mut`, which reads it by `try_fold`. +const BY_VALUE: [(&str, &str); 4] = [ + ("Iterator", "fold"), + ("DoubleEndedIterator", "rfold"), + ("Iterator", "count"), + ("Iterator", "last"), +]; + /// Refuse an `impl Iterator` of the crate, whose `next` is `next_fn`, that std's adaptors /// would read other than through the methods in `OWN`: one whose `Iterator` or -/// `DoubleEndedIterator` impl overrides another, such as `fold` or `nth_back`, which they -/// call in its place. +/// `DoubleEndedIterator` impl overrides another, such as `find`, which they call in its +/// place, or whose own `fold` or `rfold` tells its accumulator or closure apart from the +/// ones `fold_args` translates it for. pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { let tcx = t.tcx; let Some(imp) = tcx.impl_of_assoc(next_fn) else { @@ -105,18 +121,211 @@ pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { }; for item in tcx.associated_items(other).in_definition_order() { let name = item.name(); - if item.is_fn() && !OWN.contains(&(tr.as_str(), name.as_str())) { + if !item.is_fn() { + continue; + } + if !OWN.contains(&(tr.as_str(), name.as_str())) { t.err( tcx.def_span(item.def_id), format!("overriding `{tr}::{name}`, which std's adaptors call in place of `next` or beside it"), ); + } else if matches!(name.as_str(), "fold" | "rfold") + && let Some((span, what)) = erases(tcx, item.def_id) + { + t.err( + span, + format!("overriding `{tr}::{name}` with {what}, which is not supported yet"), + ); + } + } + } +} + +/// Where the crate's own `fold` or `rfold`, `def_id`, or a closure in it, tells its +/// accumulator `B` or closure `F` apart from the others it is generic over, and how: by an +/// `Option` or a `Poll` of `B`, whose `None` or `Pending` is the one of whichever `B` it is +/// translated for; a call generic over either, but `F`'s and std's iterators', which take +/// any unless the crate's own type holds one; a constant generic over either, such as its +/// size; or a drop of `B`, which drops as the one it is translated for does. +fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { + use rustc_middle::mir::visit::Visitor; + use rustc_middle::mir::{self, ConstOperand, Location, TerminatorKind}; + + struct Erases<'a, 'tcx> { + tcx: TyCtxt<'tcx>, + mir: &'a mir::Body<'tcx>, + /// The indices of `B` and `F`. + params: [u32; 2], + closures: Vec, + found: Option<(Span, &'static str)>, + } + impl<'tcx> Erases<'_, 'tcx> { + /// Whether `arg` is over one of `params`, a closure through what it captures, as its + /// own body is checked in its place, or only under a type of the crate if `crate_only`. + fn over(&mut self, arg: ty::GenericArg<'tcx>, params: &[u32], crate_only: bool) -> bool { + let mut walk = arg.walk(); + let mut over = false; + while let Some(a) = walk.next() { + let Some(t) = a.as_type() else { + continue; + }; + match *t.kind() { + ty::Closure(closure, args) => { + self.closures.push(closure); + walk.skip_current_subtree(); + over |= self.over(args.as_closure().tupled_upvars_ty().into(), params, crate_only); + } + ty::Adt(adt, args) if crate_only && !library::is_std(self.tcx, adt.did()) => { + walk.skip_current_subtree(); + over |= args.iter().any(|a| self.over(a, params, false)); + } + ty::Param(p) if !crate_only && params.contains(&p.index) => over = true, + _ => {} + } + } + over + } + + /// Whether a drop of `ty` drops a `B`, or runs the crate's code over `B` or `F`. + fn drops(&mut self, ty: Ty<'tcx>) -> bool { + let params = self.params; + self.over(ty.into(), ¶ms[..1], false) || self.over(ty.into(), ¶ms, true) + } + + /// Whether a call of `def_id` for `args` runs the crate's code over `B` or `F`, or code + /// that can tell them apart: anything but `F`'s calls and std's iterators', which take + /// any `B` and `F`. + fn tells(&mut self, def_id: DefId, args: ty::GenericArgsRef<'tcx>) -> bool { + let tcx = self.tcx; + let any = tcx.trait_of_assoc(def_id).is_some_and(|tr| { + tcx.is_fn_trait(tr) + || [core_trait(tcx, "Iterator"), core_trait(tcx, "DoubleEndedIterator")].contains(&Some(tr)) + }); + let params = self.params; + args.iter().any(|a| self.over(a, ¶ms, any)) + } + + fn find(&mut self, span: Span, what: &'static str) { + self.found.get_or_insert((span, what)); + } + } + impl<'tcx> Visitor<'tcx> for Erases<'_, 'tcx> { + fn visit_terminator(&mut self, term: &mir::Terminator<'tcx>, loc: Location) { + let span = term.source_info.span; + match &term.kind { + TerminatorKind::Call { func, args, .. } => { + if let Some((callee, callee_args)) = func.const_fn_def() { + if self.tcx.is_diagnostic_item(rustc_span::sym::mem_drop, callee) { + if self.drops(callee_args.type_at(0)) { + self.find( + span, + "a drop of its accumulator, or of the crate's type over it or its closure", + ); + } + } else if self.tells(callee, callee_args) { + self.find(span, "a call generic over its accumulator or closure"); + } + } + for arg in args { + self.visit_operand(&arg.node, loc); + } + return; + } + TerminatorKind::Drop { place, .. } => { + let ty = place.ty(self.mir, self.tcx).ty; + if self.drops(ty) { + self.find( + span, + "a drop of its accumulator, or of the crate's type over it or its closure", + ); + } + } + _ => {} + } + self.super_terminator(term, loc); + } + + fn visit_const_operand(&mut self, c: &ConstOperand<'tcx>, loc: Location) { + let args = match c.const_ { + mir::Const::Unevaluated(uv, _) => uv.args, + _ => ty::List::empty(), + }; + let params = self.params; + if self.over(c.const_.ty().into(), ¶ms, false) || args.iter().any(|a| self.over(a, ¶ms, false)) { + self.find( + self.mir.source_info(loc).span, + "a constant generic over its accumulator or closure", + ); + } + } + } + + let generics = tcx.generics_of(def_id); + let mut params = generics + .own_params + .iter() + .filter(|p| matches!(p.kind, ty::GenericParamDefKind::Type { .. })) + .map(|p| p.index); + let params = [params.next()?, params.next()?]; + let mut bodies = vec![def_id]; + let mut seen = Vec::new(); + while let Some(def_id) = bodies.pop() { + if seen.contains(&def_id) { + continue; + } + seen.push(def_id); + let mir = tcx.optimized_mir(def_id); + let mut erases = Erases { + tcx, + mir, + params, + closures: Vec::new(), + found: None, + }; + for local in &mir.local_decls { + let wraps = local.ty.walk().filter_map(|arg| arg.as_type()).any(|t| match t.kind() { + ty::Adt(adt, args) => { + matches!(Std::of(tcx, adt.did()), Some(Std::Option | Std::Poll)) + && matches!(args.type_at(0).kind(), ty::Param(p) if p.index == params[0]) + } + _ => false, + }); + if wraps { + return Some((local.source_info.span, "its accumulator in an `Option` or a `Poll`")); } + erases.over(local.ty.into(), &[], false); } + erases.visit_body(mir); + if erases.found.is_some() { + return erases.found; + } + bodies.extend(erases.closures); } + None +} + +/// The generic arguments the crate's own `fold` or `rfold` of `item`s is translated for, +/// which a body `erases` doesn't refuse can't tell apart from any others: the accumulator, +/// as an `Option`, and the closure, as a `Box acc>`, whose JS +/// value is the function `rt.iterFrom` gives it and which drops what std's closure owns as +/// it drops. +fn fold_args<'tcx>(tcx: TyCtxt<'tcx>, item: Ty<'tcx>) -> Option<[Ty<'tcx>; 2]> { + let lang = tcx.lang_items(); + let acc = Ty::new_option(tcx, tcx.types.u32); + let inputs = Ty::new_tup(tcx, &[acc, item]); + let call = ty::ExistentialTraitRef::new(tcx, lang.fn_mut_trait()?, [inputs]); + let output = ty::ExistentialProjection::new(tcx, lang.fn_once_output()?, [inputs], acc.into()); + let preds = tcx.mk_poly_existential_predicates(&[ + ty::Binder::dummy(ty::ExistentialPredicate::Trait(call)), + ty::Binder::dummy(ty::ExistentialPredicate::Projection(output)), + ]); + let f = Ty::new_box(tcx, Ty::new_dynamic(tcx, preds, tcx.lifetimes.re_erased)); + Some([acc, f]) } /// The crate's own `tr::name` of an iterator of type `ty`, through any references, if `ty` -/// is one of the crate's own that overrides it or has it as a required method. +/// is one of the crate's own that overrides it or has it as a required method: its +/// instance for `fold_args` if it is a `fold` or `rfold`. fn own_method<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>, tr: &str, name: &str) -> Option> { let tcx = b.t.tcx; let ty = ty.peel_refs(); @@ -132,10 +341,78 @@ fn own_method<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>, tr: &str, name: &str) .filter_by_name_unhygienic(rustc_span::Symbol::intern(name)) .next()? .def_id; - let instance = Instance::try_resolve(tcx, b.t.typing_env_pub(), method, tcx.mk_args(&[ty.into()])).ok()??; + let mut args = vec![ty::GenericArg::from(ty)]; + if matches!(name, "fold" | "rfold") { + args.extend(fold_args(tcx, b.t.iter_item(ty)?)?.map(ty::GenericArg::from)); + } + let instance = Instance::try_resolve(tcx, b.t.typing_env_pub(), method, tcx.mk_args(&args)).ok()??; (instance.def_id() != method).then_some(instance) } +/// Whether `ty` holds, by value rather than through a reference, an iterator of the crate with a +/// method in `BY_VALUE` of its own, which std's consumers call where they take it. +fn folds_own<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>) -> bool { + let mut walk = ty.walk(); + while let Some(arg) = walk.next() { + let Some(t) = arg.as_type() else { + continue; + }; + if t.is_ref() { + walk.skip_current_subtree(); + } else if BY_VALUE.iter().any(|&(tr, name)| own_method(b, t, tr, name).is_some()) { + return true; + } + } + false +} + +/// The `rt.Own` of the crate's iterator of type `ty`: each method of `OWN` but `next` that +/// it has of its own, as a function of its source, and those in `BY_VALUE` only if it is +/// `owned`. `undefined` if it has none. +fn own_methods<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, owned: bool, span: Span) -> Expr { + let none = b.t.iter_item(ty.peel_refs()).and_then(|item| b.t.none_arg(item)); + let mut props = Vec::new(); + for (tr, name) in &OWN[1..] { + if !owned && BY_VALUE.contains(&(tr, name)) { + continue; + } + let Some(instance) = own_method(b, ty, tr, name) else { + continue; + }; + let sym = Expr::Sym(b.t.instance(instance)); + // Each that returns an `Option` of an item, as the protocol returns it: an item or + // `rt.DONE`. + let method = match *name { + "next_back" | "nth" | "nth_back" | "last" => { + let n = (*name != "next_back" && *name != "last").then_some("n"); + let args = [Expr::ident("it")].into_iter().chain(n.map(Expr::ident)).collect(); + let option = [sym.call(args)].into_iter().chain(none.clone()).collect(); + let it = Param { + name: "it".into(), + ty: Some(b.t.ty(ty.peel_refs(), span)), + }; + // `n` is typed by its place in `rt.Own`. + let params = [it].into_iter().chain(n.map(|n| Param { + name: n.into(), + ty: None, + })); + Expr::Lambda(params.collect(), Box::new(Expr::rt("iterFromOption", option))) + } + _ => sym, + }; + let key = match *name { + "size_hint" => "hint".into(), + "next_back" => "back".into(), + other => super::camel(other), + }; + props.push((Key::Name(key), method)); + } + match props.is_empty() { + true => Expr::undefined(), + false => Expr::Object(props), + } +} + /// `iter.next_back()` of the crate's own iterator of type `ty`, as the protocol returns it: /// an item or `rt.DONE`. fn own_back<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, iter: Expr) -> Option { @@ -265,38 +542,13 @@ fn peeled_into_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, value: Expr, not_bound(b, ty, span); return Some(match own_next(b, ty) { Some(instance) => { - let sym = b.t.instance(instance); - let param_ty = b.t.ty(ty.peel_refs(), span); - let it = "it".to_string(); - let next = Expr::Sym(sym).call(vec![Expr::ident(&it)]); - // Each of its own methods `rt.iterFrom` calls, as a function of the source. - let of = |body: Option| match body { - Some(body) => { - let param = Param { - name: it.clone(), - ty: Some(param_ty.clone()), - }; - Expr::Lambda(vec![param], Box::new(body)) - } - None => Expr::undefined(), - }; - let call = |b: &mut Body<'_, '_, 'tcx>, tr: &str, name: &str| { - let instance = own_method(b, ty, tr, name)?; - Some(Expr::Sym(b.t.instance(instance)).call(vec![Expr::ident(&it)])) - }; + let next = Expr::Sym(b.t.instance(instance)); let drop = match owned && b.t.drops(ty) { true => b.t.dropper(ty, span), false => Expr::undefined(), }; - let own = [ - call(b, "Iterator", "size_hint"), - own_back(b, ty, Expr::ident(&it)), - call(b, "ExactSizeIterator", "len"), - ]; - Expr::rt( - "iterFrom", - tail(vec![value, of(Some(next))], [vec![drop], own.map(of).to_vec()].concat()), - ) + let own = own_methods(b, ty, owned, span); + Expr::rt("iterFrom", tail(vec![value, next], vec![drop, own])) } // One borrowed by `&mut`, which std's adaptors may drop once it ends, but which // is its owner's to drop, and which a consumer reads on through the borrow @@ -707,11 +959,21 @@ pub fn call<'tcx>( } } // Each owns a closure it is given by value, which drops as its fold ends. - "for_each" | "fold" => { + "for_each" | "fold" | "rfold" => { let drops = iter_drops(b, self_ty, span); let owns = flag(b.t.drops(targ(gargs.types().count() - 1)?)); method(&camel, tail(rest, vec![drops, owns])) } + // `try_rfold::`, which drops its closure as it returns, but not the + // iterator, which it borrows. + "try_rfold" => { + let (option, none) = try_flow(b, targ(3)?)?; + let owns = flag(b.t.drops(targ(2)?)); + method( + &camel, + tail(rest, [flag(option), owns].into_iter().chain(none).collect()), + ) + } // std's `Sum` and `Product` are of the type or a reference to it: another is the crate's. "sum" | "product" if item.peel_refs() != targ(1)? => None, // `Duration`'s carries its nanoseconds and panics as std's does, not as `+` would. @@ -1587,6 +1849,23 @@ pub(super) fn text_items<'tcx>(t: &Translator<'_, 'tcx>, item: Ty<'tcx>) -> Opti } } +/// How a `try_` fold's closure returning an `r` breaks: by `None`, and the `rt.None` that is +/// where it is, if it is an `Option`, or a `ControlFlow` held as one, and else by `Err`, if +/// it is a `Result`, or a `ControlFlow` held as one. +fn try_flow<'tcx>(b: &Body<'_, '_, 'tcx>, r: Ty<'tcx>) -> Option<(bool, Option)> { + let ty::Adt(_, args) = r.kind() else { + return None; + }; + match b.t.std_of(r)? { + Std::Option => Some((true, b.t.none_arg(args.type_at(0)))), + Std::ControlFlow if library::Flow::of(b.t.tcx, args) == library::Flow::Option => { + Some((true, b.t.none_arg(args.type_at(1)))) + } + Std::Result | Std::ControlFlow => Some((false, None)), + _ => None, + } +} + /// Whether an iterator of type `ty` that a runtime function takes by value drops what it /// holds, which its `rt.Iter` drops as std's does: `true`, or `undefined` for one that /// drops nothing. @@ -1613,11 +1892,13 @@ pub(super) fn iter_take<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, folds: b } } -/// Whether an iterator of type `ty` drops, refusing one it can't drop: the crate's own -/// drops through `rt.iterFrom`. +/// Whether a runtime function takes an iterator of type `ty` by value as std's consumers +/// do, by its `fold` or its kind's own `count` and `last`, rather than as `folded` steps +/// it: if it drops, refusing one it can't drop, as the crate's own drops through +/// `rt.iterFrom`, or holds one of the crate's own that `folds_own`. fn drops_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, span: Span) -> bool { if !b.t.drops(ty) { - return false; + return folds_own(b, ty); } if own_next(b, ty).is_none() { b.t.dropper(ty, span); diff --git a/ts/src/lower/library.rs b/ts/src/lower/library.rs index 92e7462da..22e045f64 100644 --- a/ts/src/lower/library.rs +++ b/ts/src/lower/library.rs @@ -958,7 +958,8 @@ fn releases(owner: &str, name: &str) -> bool { | "eq_by" | "cmp_by" | "partial_cmp_by" - ) | ("Entry", "or_insert_with" | "or_insert_with_key" | "and_modify") + ) | ("DoubleEndedIterator", "rfold" | "try_rfold") + | ("Entry", "or_insert_with" | "or_insert_with_key" | "and_modify") ) } @@ -1002,7 +1003,7 @@ fn takes_none(owner: &str, name: &str) -> bool { "get" | "get_mut" | "set" | "get_or_init" | "get_or_try_init" | "take" | "into_inner" ) | ("Arc" | "Rc", "into_inner") - | ("DoubleEndedIterator", "next_back" | "nth_back" | "rfind") + | ("DoubleEndedIterator", "next_back" | "nth_back" | "rfind" | "try_rfold") | ("dyn Any" | "dyn Error", "downcast_ref" | "downcast_mut") | ("ptr", "as_ref" | "as_mut") | ("from_fn", "from_fn") diff --git a/ts/tests/task.ts b/ts/tests/task.ts index 941565ed5..dbb2b09de 100644 --- a/ts/tests/task.ts +++ b/ts/tests/task.ts @@ -431,7 +431,7 @@ export const cases: Uint8Array[] = [ ...Array.from({ length: 6 }, (_, arg) => script(["cells", arg])), // Each scenario of adaptors' closures that drop, folded either way. ...Array.from({ length: 42 }, (_, arg) => script(["folded", arg])), - ...Array.from({ length: 9 }, (_, arg) => script(["rfolded", arg])), + ...Array.from({ length: 18 }, (_, arg) => script(["rfolded", arg])), // Where std drops values inside its iterators and formatting. ...[...Array.from({ length: 10 }, (_, arg) => arg), 19, 29].map((arg) => script(["inside", arg])), // Where std drops a closure given to a consumer or an entry.