From 43215c7d673c0cad5b64e5be5a99cf39da16e0b9 Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Thu, 9 Jul 2026 11:16:31 -0400 Subject: [PATCH] The inter-staff gap band becomes a height model; fix a non-conforming metric Two items the inter-staff solve deferred turned out to be one thing -- and it was not the "metric-vs-solver tension" I filed it as. The catalog was right; the engraver was non-conforming. req:qmc:vertical has always defined the realized inter-staff gap as the separation "between the adjacent CONTENT EXTENTS the band separates". vertical_raw measured the separation between the two bands' glyph `members`, because until primitive band ownership (efaebb9) a band listed no strokes or curves to own. A staff's outermost ink is usually not a glyph. On two_staff_close_content the solve cleared the declared 2.0 gap exactly, while the glyph-ink gap was 5.06 -- so the axis reported |5.06-2|/2 = 1.53, saturated to 1.0, and fired a Standard-tier floor warning on a correct layout. The metric was charging the solver for the ledger and slur ink it had made room for. Axis now reads 2.7e-7; the warning is gone. Two design calls worth naming: - The geometry is read back from the BAKED output, not from the solve's own staff_ext. Reading back solver intent would make the axis circular and blind to exactly the bug class that bit twice this week; now a shift the bake fails to apply to some primitive class surfaces as a real deviation. CastLayout gained stroke_system/curve_system for it -- a stroke carries no spring slot, so system_of_slot cannot answer for it. - The solve now targets the preferred_height of the InterStaffGap band to_constrained emitted for that staff pair, not VerticalBand::inter_staff_gap's default. That is what makes the band a height model rather than a constant: solve and metric agree by construction, not by both calling one constructor. NO version move. Formula, contributing units, anchor, and normalization are unchanged -- only a wrong measurement was. This is the P12-I11 precedent (engrave-side resolution), not P12-I12 (which redefined spacing_distortion's unit and did move the catalog). The catalog gains a clarification of what "content extent" means, since before band ownership that reading was arguably unimplementable, which is why the defect survived. Its stale rationale (still claiming the vertical spring solve is deferred) is refreshed, and the axis's inter-system half is recorded as a genuine trade-off against page_fill_efficiency rather than a defect, so it is not re-filed as a bug. Measurement-only: no layout change, ENGRAVER_VERSION stays 11, zero golden churn. Mutation-verified: reverting vertical_raw to glyph-only measurement scores 1 and fails the new assertion. Gate green, QMC PDF rebuilds clean. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/epiphany-engrave/DECISIONS.md | 83 ++++++++++++++--- crates/epiphany-engrave/src/casting.rs | 74 ++++++++++++--- crates/epiphany-engrave/src/lib.rs | 30 ++++-- crates/epiphany-engrave/src/quality.rs | 123 ++++++++++++++----------- spec/PASS12_RATIFICATION_LOG.md | 40 ++++++++ spec/quality_metric_catalog.pdf | Bin 142223 -> 145158 bytes spec/quality_metric_catalog.tex | 34 ++++++- 7 files changed, 292 insertions(+), 92 deletions(-) diff --git a/crates/epiphany-engrave/DECISIONS.md b/crates/epiphany-engrave/DECISIONS.md index f06b757..fe3f9ba 100644 --- a/crates/epiphany-engrave/DECISIONS.md +++ b/crates/epiphany-engrave/DECISIONS.md @@ -772,15 +772,13 @@ a real band. **Known gaps (reviewed, not bugs today).** -- `vertical_density_penalty` **saturates at 1.0** on the two-staff fixture. The - solve targets *content* extents; the metric scores the realized gap against the - band model's *preferred* height (2 staff spaces). The separation the colliding - ledgers and slur require dwarfs that, so the axis pins and its floor diagnostic - fires. This is the same metric-vs-solver tension as `casting_off_quality` under - justification and inter-system density under vertical justification: a catalog - refinement scoring only the EXCESS beyond the content-required minimum is the - deferred follow-up. Asserted, not silently tolerated, in - `inter_staff_solve_separates_colliding_staves`. +- ~~`vertical_density_penalty` **saturates at 1.0** on the two-staff fixture.~~ + **RESOLVED** (see "The gap band is a height model" below). It was not the + metric-vs-solver tension I first filed it as, and needed no catalog refinement: + the engraver was simply **non-conforming**. The catalog always defined the + realized gap over the *content extents* the band separates; the implementation + measured the band's glyph `members`, because until primitive band ownership was + ratified a band listed no strokes or curves to own. - **Staff-less content takes no staff shift** — margin-band glyphs, and a volta bracket whose repeat spans several staves. It stays put while the staves below it descend, which is right for content that sits above the top staff (the top @@ -791,10 +789,10 @@ a real band. above. What remains undecided is genuinely staff-less content placed *between* two staves: it holds still while the lower staff descends away from it. That wants a height model for the inter-staff gap band, not an attribution rule. -- The preferred gap is read from `VerticalBand::inter_staff_gap(VerticalBandId(0))` - rather than from the region's *declared* inter-staff band. Harmless while both - come from the same constructor; it would silently diverge from the metric the - day per-region gaps become customizable. +- ~~The preferred gap is read from `VerticalBand::inter_staff_gap(VerticalBandId(0))` + rather than from the region's *declared* inter-staff band.~~ **RESOLVED**: the + solve now reads the `InterStaffGap` band `to_constrained` emitted for that + staff pair, the same band the metric scores against. The 3+-staff cascade was the last of these to be closed; see below. **The solve.** Per system, per staff, the real content y-extent is collected @@ -842,3 +840,62 @@ the staff-line-gap assertions fail — while `two_staff_close_content` still passes, which is exactly why the three-staff fixture was needed. The fixture also pins curve attribution against a THREE-band choice (the slur must still find the bottom staff, not merely the nearer of two) and carries its own render golden. + +## The gap band is a height model (Push 3 residue, 2026-07-09) + +Two items deferred by the inter-staff solve — a saturated +`vertical_density_penalty` and a preferred gap read from a constructor rather +than the region's declared band — turned out to be one thing, and neither was +the "metric-vs-solver tension" I filed them as. + +**The solve reads the declared band.** Per system, per adjacent staff pair, the +gap it targets is the `preferred_height` of the `InterStaffGap` band +`to_constrained` emitted for that pair (`inter_staff_gap_id(region, g)`, gap `g` +separating the region's staves `g-1` and `g`), not `VerticalBand::inter_staff_gap`'s +default. That is what makes the band a *height model* rather than a constant: a +region declaring a wider gap gets one, and the metric — which scores against the +same declared band — agrees with the solve by construction rather than because +both call the same constructor. Every staff of a region carries content in every +system of that region (its staff lines are per-staff strokes, split into each +system), so the staves present in a system are the region's full staff order and +the window index is the gap index. + +**The metric was non-conforming, and the catalog was right.** `req:qmc:vertical` +has always defined the realized gap as the separation "between the adjacent +**content extents** the band separates". `vertical_raw` measured the separation +between the two bands' glyph `members` — because until +`req:layoutir:primitive-band-ownership` landed, a band listed no strokes or curves +to own. A staff's outermost ink is usually not a glyph: on +`two_staff_close_content` the solve cleared the declared 2.0 gap exactly (content +gap 2.0), while the glyph-ink gap was **5.06**, giving `|5.06 - 2|/2 = 1.53`, +clamped to a saturated **1.0** — and a Standard-tier floor warning on a layout +that was correct. The metric was charging the solver for the ledger and slur ink +it had made room for. + +`vertical_raw` now measures each staff band's full content — glyphs, strokes, and +curves, each attributed by its declared `vertical_band` — and the axis reads +`2.7e-7` on that fixture. Two consequences worth stating: + +- **No catalog version move.** The formula, contributing units, anchor, and + normalization are unchanged; only a wrong measurement was. This is the P12-I11 + precedent (engrave-side resolution), not P12-I12 (a definition defect). The + catalog gains a *clarification* of what "content extent" means, plus a + rationale refresh — the v0.1 rationale still claimed the vertical spring solve + was deferred. +- **The geometry is read back from the BAKED output**, not from the solve's own + `staff_ext`. Reading back the solver's intent would make the axis circular and + blind to exactly the bug class that bit twice: a shift the bake fails to apply + to some primitive class now surfaces as a real deviation. `CastLayout` gained + `stroke_system` / `curve_system` for this (a stroke carries no spring slot, so + `system_of_slot` cannot answer for it). + +**Still a real trade-off, not a defect:** the axis's *inter-system* half. Vertical +justification deliberately stretches inter-system gaps past preferred to fill a +non-final page, trading this axis against `page_fill_efficiency`. Both are +reported; neither is wrong. Recorded in the catalog rationale so it is not +re-filed as a bug. + +**Still open:** staff-less content placed *between* two staves would hold still +while the lower staff descends. No primitive can name an `InterStaffGap` band +today (`band_of` yields a staff band or the region's margin band), so this is +unreachable rather than latent — building the machinery now would be speculative. diff --git a/crates/epiphany-engrave/src/casting.rs b/crates/epiphany-engrave/src/casting.rs index bd2c1e5..79621ae 100644 --- a/crates/epiphany-engrave/src/casting.rs +++ b/crates/epiphany-engrave/src/casting.rs @@ -73,12 +73,13 @@ use std::collections::{BTreeMap, BTreeSet}; use epiphany_core::{StaffId, TypedObjectId}; use epiphany_layout_ir::{ - continuation_instance_key, is_barline_glyph, is_rigid_width_stroke, synthesized_layout_id, - BreakClass, BreakKind, ConstrainedLayoutIR, Curve, DecisionSource, EngravingDecision, - EngravingDecisionKind, EngravingOverrideId, GlyphObject, GlyphObjectId, LayoutConstraint, - LayoutObjectId, Margins, Point, Provenance, Rect, ResolvedGlyph, ResolvedMeasure, ResolvedPage, - ResolvedStaff, ResolvedSystem, Size2D, SpringSlotId, StaffSpace, Stroke, SynthesisInstanceKey, - SynthesisKind, SynthesisRegistryId, VerticalBand, VerticalBandId, VerticalBandKind, + continuation_instance_key, inter_staff_gap_id, is_barline_glyph, is_rigid_width_stroke, + synthesized_layout_id, BreakClass, BreakKind, ConstrainedLayoutIR, Curve, DecisionSource, + EngravingDecision, EngravingDecisionKind, EngravingOverrideId, GlyphObject, GlyphObjectId, + LayoutConstraint, LayoutObjectId, Margins, Point, Provenance, Rect, ResolvedGlyph, + ResolvedMeasure, ResolvedPage, ResolvedStaff, ResolvedSystem, Size2D, SpringSlotId, StaffSpace, + Stroke, SynthesisInstanceKey, SynthesisKind, SynthesisRegistryId, VerticalBand, VerticalBandId, + VerticalBandKind, }; use crate::owning_glyph; @@ -192,6 +193,13 @@ pub(crate) struct CastLayout { /// ranges over (a slot absent here was claimed by no region and its glyphs /// belong to no per-system aggregate). pub system_of_slot: BTreeMap, + /// The system each baked stroke landed in, parallel to `strokes` (including + /// the appended continuation segments). A stroke carries no spring slot, so + /// `system_of_slot` cannot answer for it; the casting pass records what it + /// already knew. `None`: claimed by no region. + pub stroke_system: Vec>, + /// The system each baked curve landed in, parallel to `curves`. + pub curve_system: Vec>, /// The region each system slices, indexed by global system index (the /// per-region grouping the casting-off quality metrics aggregate by). pub region_of_system: Vec, @@ -763,14 +771,39 @@ pub(crate) fn cast_off( // Solve each system's inter-staff gaps: order the staves top-to-bottom by // their reference y (staff line, else content mid), keep that order fixed, - // and shift each staff down until its gap to the one above meets the band - // model's preferred inter-staff gap. `staff_shift[(system, staff)]` is the + // and shift each staff down until its gap to the one above meets the gap + // band's own preferred height. `staff_shift[(system, staff)]` is the // downward shift (subtracted from y); the top staff's is 0. - let preferred_gap = VerticalBand::inter_staff_gap(VerticalBandId(0)) + // + // The gap the solve targets is the one the REGION DECLARED, read from the + // `InterStaffGap` band `to_constrained` emitted for that pair, not from the + // band constructor's default. That is what makes the band a height model + // rather than a constant: a region that declares a wider gap gets one, and + // `vertical_density_penalty` — which scores the realized gap against this + // same declared band — agrees with the solve by construction rather than by + // both happening to call the same constructor. + // + // Gap `g` separates the region's staves `g-1` and `g` (see `to_constrained`). + // Every staff of a region carries content in every system of that region — + // its staff lines are per-staff strokes, split into each system — so the + // staves present here are the region's full staff order and the window index + // is the gap index. A band that somehow does not exist falls back to the + // constructor's default rather than silently skipping the pair. + let default_gap = VerticalBand::inter_staff_gap(VerticalBandId(0)) .preferred_height .0; let mut staff_shift: BTreeMap<(usize, StaffId), f32> = BTreeMap::new(); - for s in 0..systems.len() { + for (s, plan) in systems.iter().enumerate() { + let region_layout_id = input.regions[plan.region].provenance.stable_id; + let preferred_gap = |gap_index: usize| -> f32 { + let id = inter_staff_gap_id(region_layout_id, gap_index); + input + .vertical_bands + .iter() + .find(|band| band.id == id) + .map(|band| band.preferred_height.0) + .unwrap_or(default_gap) + }; let mut staves: Vec<(StaffId, (f32, f32))> = staff_ext .iter() .filter(|((sys, _), _)| *sys == s) @@ -787,13 +820,13 @@ pub(crate) fn cast_off( key(b.0, b.1).total_cmp(&key(a.0, a.1)).then(a.0.cmp(&b.0)) }); let mut shift = 0.0_f32; - for w in staves.windows(2) { + for (g, w) in staves.windows(2).enumerate() { let (upper, (upper_lo, _)) = w[0]; let (lower, (_, lower_hi)) = w[1]; staff_shift.insert((s, upper), shift); // Realized gap after the upper's shift: (upper_lo - shift) − lower_hi. let gap = (upper_lo - shift) - lower_hi; - shift += (preferred_gap - gap).max(0.0); + shift += (preferred_gap(g + 1) - gap).max(0.0); staff_shift.insert((s, lower), shift); } if staves.len() == 1 { @@ -967,6 +1000,11 @@ pub(crate) fn cast_off( let mut staff_marks: BTreeMap<(usize, StaffId), StaffAgg> = BTreeMap::new(); let mut strokes: Vec = Vec::with_capacity(spaced_strokes.len()); let mut continuations: Vec = Vec::new(); + // The system each baked stroke landed in, parallel to `strokes` (a quality + // metric measures a system's realized per-staff content extents, and a + // stroke carries no spring slot to look one up with). + let mut stroke_system: Vec> = Vec::with_capacity(spaced_strokes.len()); + let mut continuation_system: Vec> = Vec::new(); for (si, ((source, spaced), fate)) in input .strokes .iter() @@ -990,6 +1028,7 @@ pub(crate) fn cast_off( mark_staff(&mut staff_marks, *s, staff, &stroke); } strokes.push(stroke); + stroke_system.push(*sys); } StrokeFate::Split(segments) => { for (k, (s, from, to)) in segments.iter().enumerate() { @@ -1022,14 +1061,17 @@ pub(crate) fn cast_off( } if k == 0 { strokes.push(stroke); + stroke_system.push(Some(*s)); } else { continuations.push(stroke); + continuation_system.push(Some(*s)); } } } } } strokes.extend(continuations); + stroke_system.extend(continuation_system); // Curves: a curve that fits in one system is translated whole by that // system's placement (or left in the spaced frame if no region claimed it). @@ -1040,6 +1082,8 @@ pub(crate) fn cast_off( // split stroke's are. let mut curves: Vec = Vec::with_capacity(spaced_curves.len()); let mut curve_continuations: Vec = Vec::new(); + let mut curve_system: Vec> = Vec::with_capacity(spaced_curves.len()); + let mut curve_continuation_system: Vec> = Vec::new(); for (ci, (curve, fate)) in spaced_curves.iter().zip(&curve_fates).enumerate() { let curve_staff = curve_staff_of[ci]; // A slur has no intra-slot structure, so its control points map straight @@ -1060,6 +1104,7 @@ pub(crate) fn cast_off( p3, ..curve.clone() }); + curve_system.push(*system); } CurveFate::Split(segments) => { for (k, (s, cp)) in segments.iter().enumerate() { @@ -1089,14 +1134,17 @@ pub(crate) fn cast_off( }; if k == 0 { curves.push(segment); + curve_system.push(Some(*s)); } else { curve_continuations.push(segment); + curve_continuation_system.push(Some(*s)); } } } } } curves.extend(curve_continuations); + curve_system.extend(curve_continuation_system); // ---- The resolved page tree --------------------------------------------- let resolved_systems: Vec = systems @@ -1160,6 +1208,8 @@ pub(crate) fn cast_off( system_start_slots, page_start_slots, system_of_slot, + stroke_system, + curve_system, region_of_system: systems.iter().map(|plan| plan.region).collect(), } } diff --git a/crates/epiphany-engrave/src/lib.rs b/crates/epiphany-engrave/src/lib.rs index 06bbbd0..30b947f 100644 --- a/crates/epiphany-engrave/src/lib.rs +++ b/crates/epiphany-engrave/src/lib.rs @@ -2362,15 +2362,27 @@ mod tests { report.metric_vector.collision_penalty.0, 0.0, "the separated staves collide nowhere" ); - // The solve targets CONTENT extents, while `vertical_density_penalty` - // measures the realized gap against the band model's *preferred* height - // (2 staff spaces). The separation this fixture requires is far larger, - // so the deviation-from-preferred axis saturates at 1.0 and its floor - // diagnostic fires. Scoring only the EXCESS beyond the content-required - // minimum is the deferred catalog refinement (see DECISIONS.md). - assert_eq!( - report.metric_vector.vertical_density_penalty.0, 1.0, - "the required separation saturates the deviation-from-preferred axis" + // A correctly separated system scores ~0 on the deviation-from-preferred + // axis: the solve expands each gap until the staves' CONTENT clears the + // declared `InterStaffGap` band's preferred height, and the metric reads + // that same declared band against the same content. It used to saturate + // at 1.0 here -- the metric measured the gap between the staves' *glyph* + // ink while the solve targeted their full content, so the ledger and slur + // ink the solve had correctly accounted for was rescored as crowding, and + // a Standard-tier floor warning fired on a correct layout. + let density = report.metric_vector.vertical_density_penalty.0; + assert!( + density < 1e-4, + "a correctly separated system deviates from its declared gap by ~0: {density}" + ); + assert!( + !report.warnings.iter().any(|w| matches!( + w.kind, + epiphany_layout_ir::SolverWarningKind::QualityFloorApproached { + metric: epiphany_layout_ir::QualityMetricKind::VerticalDensity + } + )), + "and earns no vertical-density floor warning" ); // A no-pressure single-staff score has no inter-staff pair, so it is // untouched — its goldens stay byte-stable (see the render-svg suite). diff --git a/crates/epiphany-engrave/src/quality.rs b/crates/epiphany-engrave/src/quality.rs index a1e8dcb..289a965 100644 --- a/crates/epiphany-engrave/src/quality.rs +++ b/crates/epiphany-engrave/src/quality.rs @@ -64,9 +64,8 @@ use epiphany_layout_ir::quality::{ anchors, normalize, MetricThresholds, QUALITY_FLOOR_FRACTION, QUALITY_METRIC_KINDS, }; use epiphany_layout_ir::{ - inter_staff_gap_id, ConstrainedLayoutIR, Curve, GlyphObject, GlyphObjectId, - QualityMetricVector, SolverWarning, SolverWarningKind, SpringSlotId, VerticalBand, - VerticalBandId, VerticalBandKind, + inter_staff_gap_id, ConstrainedLayoutIR, Curve, GlyphObjectId, QualityMetricVector, + SolverWarning, SolverWarningKind, SpringSlotId, VerticalBand, VerticalBandId, VerticalBandKind, }; use crate::casting::{CastLayout, PageGeometry}; @@ -330,17 +329,61 @@ fn vertical_raw(input: &ConstrainedLayoutIR, cast: &CastLayout, census: &SystemC let mut per_unit: Vec = Vec::new(); // --- InterStaffGap bands declared by the constrained input ------------- - let index_of: BTreeMap = input - .glyphs - .iter() - .enumerate() - .map(|(index, glyph)| (GlyphObject::id(glyph), index)) - .collect(); + // The realized gap between two staves is measured over their FULL content — + // every glyph, stroke, and curve the band owns — not over the band's glyph + // `members` alone. A staff's ink is mostly not glyphs: ledger lines, stems, + // and slurs routinely reach further from the staff than any notehead, and + // the inter-staff solve separates staves until their *content* clears the + // declared gap. Measuring glyphs only scored a correctly separated system + // against a gap it never targeted, reporting the ledger and slur ink the + // solve had already accounted for as crowding. + // + // Ownership comes from each primitive's declared `vertical_band` + // (`req:layoutir:primitive-band-ownership`); the geometry is read back from + // the BAKED output, so a shift the bake failed to apply to some primitive + // class surfaces here as a real deviation rather than hiding behind the + // solver's own intent. let system_of_glyph = |index: usize| -> Option { cast.system_of_slot .get(&input.glyphs[index].horizontal_slot) .copied() }; + let mut content: BTreeMap<(usize, VerticalBandId), (f64, f64)> = BTreeMap::new(); + { + let mut add = |system: usize, band: VerticalBandId, lo: f64, hi: f64| { + let entry = content + .entry((system, band)) + .or_insert((f64::INFINITY, f64::NEG_INFINITY)); + entry.0 = entry.0.min(lo); + entry.1 = entry.1.max(hi); + }; + for (index, glyph) in input.glyphs.iter().enumerate() { + if let Some(system) = system_of_glyph(index) { + let ink = ink_box(cast, input, index); + add(system, glyph.vertical_band, ink[1], ink[3]); + } + } + for (index, stroke) in cast.strokes.iter().enumerate() { + let Some(system) = cast.stroke_system[index] else { + continue; + }; + let half = f64::from(stroke.thickness.0.max(0.0)) * 0.5; + let lo = f64::from(stroke.from.y.0.min(stroke.to.y.0)) - half; + let hi = f64::from(stroke.from.y.0.max(stroke.to.y.0)) + half; + add(system, stroke.vertical_band, lo, hi); + } + for (index, curve) in cast.curves.iter().enumerate() { + let Some(system) = cast.curve_system[index] else { + continue; + }; + let half = f64::from(curve.thickness.0.max(0.0)) * 0.5; + for point in curve.control_points() { + let y = f64::from(point.y.0); + add(system, curve.vertical_band, y - half, y + half); + } + } + } + for (region_index, region) in input.regions.iter().enumerate() { // The region's laid-out staff bands, top staff first, ordered within // the region's first system (systems translate rigidly, so within- @@ -350,28 +393,17 @@ fn vertical_raw(input: &ConstrainedLayoutIR, cast: &CastLayout, census: &SystemC continue; }; let region_glyphs: BTreeSet = region.glyphs.iter().copied().collect(); - let mut staves: Vec<(f64, Vec)> = Vec::new(); - for band in &input.vertical_bands { - if !matches!(band.kind, VerticalBandKind::Staff(_)) { - continue; - } - if !band.members.iter().any(|id| region_glyphs.contains(id)) { - continue; - } - let members: Vec = band - .members - .iter() - .filter_map(|id| index_of.get(id).copied()) - .collect(); - let top_in_first = members - .iter() - .filter(|&&index| system_of_glyph(index) == Some(first_system)) - .map(|&index| ink_box(cast, input, index)[3]) - .fold(f64::NEG_INFINITY, f64::max); - if top_in_first.is_finite() { - staves.push((top_in_first, members)); - } - } + let mut staves: Vec<(f64, VerticalBandId)> = input + .vertical_bands + .iter() + .filter(|band| matches!(band.kind, VerticalBandKind::Staff(_))) + .filter(|band| band.members.iter().any(|id| region_glyphs.contains(id))) + .filter_map(|band| { + content + .get(&(first_system, band.id)) + .map(|&(_, top)| (top, band.id)) + }) + .collect(); // Top staff first. staves.sort_by(|a, b| b.0.total_cmp(&a.0)); @@ -387,33 +419,18 @@ fn vertical_raw(input: &ConstrainedLayoutIR, cast: &CastLayout, census: &SystemC if preferred <= 0.0 || staves.len() <= gap { continue; } - let upper = &staves[gap - 1].1; - let lower = &staves[gap].1; + let (upper, lower) = (staves[gap - 1].1, staves[gap].1); // Realized iff the adjacent content shares a system; measure the // separation there (rigid system translation makes every common // system agree). - let common: BTreeSet = upper - .iter() - .filter_map(|&index| system_of_glyph(index)) - .filter(|system| { - lower - .iter() - .any(|&index| system_of_glyph(index) == Some(*system)) - }) - .collect(); - let Some(&system) = common.iter().next() else { + let common = (0..census.region.len()).find(|&system| { + content.contains_key(&(system, upper)) && content.contains_key(&(system, lower)) + }); + let Some(system) = common else { continue; }; - let upper_bottom = upper - .iter() - .filter(|&&index| system_of_glyph(index) == Some(system)) - .map(|&index| ink_box(cast, input, index)[1]) - .fold(f64::INFINITY, f64::min); - let lower_top = lower - .iter() - .filter(|&&index| system_of_glyph(index) == Some(system)) - .map(|&index| ink_box(cast, input, index)[3]) - .fold(f64::NEG_INFINITY, f64::max); + let upper_bottom = content[&(system, upper)].0; + let lower_top = content[&(system, lower)].1; let realized = (upper_bottom - lower_top).max(0.0); per_unit.push((realized - preferred).abs() / preferred); } diff --git a/spec/PASS12_RATIFICATION_LOG.md b/spec/PASS12_RATIFICATION_LOG.md index 4c9acbb..f7f4c19 100644 --- a/spec/PASS12_RATIFICATION_LOG.md +++ b/spec/PASS12_RATIFICATION_LOG.md @@ -280,3 +280,43 @@ inter-staff gap band — the missing piece behind both staff-less content placed extents while the metric scores the realized gap against the band's *preferred* height. Both are named in `epiphany-engrave/DECISIONS.md`; neither is a Pass-13 ambiguity. + +## Push-3 tranche (2026-07-09) — the inter-staff gap band as a height model + +Residue of the Standard-tier inter-staff solve, closed. **No spec requirement +changes and no version moves**: the Quality Metric Catalog was right and the +engraver was non-conforming. Delivered alongside `efaebb9`/`ced4b72` (primitive +band ownership), which is what made the fix expressible. + +`req:qmc:vertical` has always defined the realized inter-staff gap as the +separation "between the adjacent **content extents** the band separates". +`engrave::quality::vertical_raw` measured the separation between the two bands' +glyph `members` — because until `req:layoutir:primitive-band-ownership` landed, a +band listed no strokes or curves to own. A staff's outermost ink is usually not a +glyph. On `two_staff_close_content` the solve cleared the declared 2.0 gap exactly +while the glyph-ink gap was 5.06, so the axis reported `|5.06 − 2|/2 = 1.53` → +saturated **1.0**, and a Standard-tier `QualityFloorApproached` warning fired on a +correct layout. Per §Conformance ("a solver that reports a `QualityMetricVector` +computed by any function other than the ones defined here is non-conforming"), +that was an implementation defect, not a definition defect. + +| Item | Disposition | Spec locus | Consumer | +|---|---|---|---| +| `vertical_density_penalty` measured over glyph members | **fix (conformance), no catalog change** — `vertical_raw` now measures each staff band's full content (glyphs, strokes, curves), attributed by declared `vertical_band`, read back from the BAKED output rather than the solve's own extents (so a shift the bake drops surfaces as a real deviation instead of hiding behind solver intent). Axis on the pressure fixture: 1.0 → 2.7e-7; the floor warning is gone. Formula, contributing units, anchor, normalization all unchanged | quality_metric_catalog §`vertical_density_penalty` (`req:qmc:vertical`) — **clarification only** | `epiphany-engrave` (`quality.rs::vertical_raw`, `casting.rs::CastLayout::{stroke_system,curve_system}`) | +| "Content extent" was ambiguous | **clarify (editorial)** — `req:qmc:vertical` now spells out that content extent means every primitive the band owns, each attributed by its declared `vertical_band`, and not the band's glyph `members`. Before primitive band ownership this reading was arguably unimplementable, which is why the defect survived. The stale rationale (claiming the vertical spring solve is deferred) is refreshed, and the inter-system half of the axis is recorded as a genuine trade-off against `page_fill_efficiency`, not a defect | quality_metric_catalog §`vertical_density_penalty` rationale | — | +| Solve read the gap from a constructor | **fix** — the inter-staff solve now targets the `preferred_height` of the `InterStaffGap` band `to_constrained` emitted for that staff pair, not `VerticalBand::inter_staff_gap`'s default. The band is now a height model: a region declaring a wider gap gets one, and the solve and the metric agree by construction rather than by both calling the same constructor | — (behavioural, within `req:layoutir:vertical-bands`) | `epiphany-engrave` (`casting.rs`) | + +**Version movements.** None. Quality Metric Catalog stays **0.2.0** (formula, +units, anchor, normalization unchanged — a clarification and a rationale refresh +are not a definition change; contrast P12-I12, which redefined +`spacing_distortion`'s unit and did move the version). Core spec unchanged. +Operation Catalog 0.7.0, Binary Format 0.6.0 unchanged. **No layout change and no +render-golden churn** — this is measurement-only, as the ENGRAVER_VERSION staying +at 11 records. + +**Deferred (documented, not open candidates).** Staff-less content placed +*between* two staves would hold still while the lower staff descends away from +it. No primitive can name an `InterStaffGap` band today (`band_of` yields a staff +band or the region's margin band), so this is unreachable rather than latent; +building the machinery now would be speculative. Named in +`epiphany-engrave/DECISIONS.md`. diff --git a/spec/quality_metric_catalog.pdf b/spec/quality_metric_catalog.pdf index f771f93b503758898c930847b270281d6b1f251d..512b5938b130cda4b5433b45733184a544d5fcb8 100644 GIT binary patch delta 49748 zcmY(JQ*B=e+su{-7 z6ykt6Z^;BmhEOcO->IO;&V`6dXTdE+Wq&3(x}B@S4S_ws@9LBu3H+FSJC0#_pRh~N zzBRI4EnO0?KkuA8UqldyGg=73M<0l}n+CygC=qjsfI#4EyZ8*|DZ%WcB6NAWY3LzQ zd@q8KfNG{JuD8VPF+6^6Q@f<$o4L^hF5hQv&ji@w;He08&g?gVKfd73TohL`!t%Tm z71ksSML9F70=NYp5dpxFTt+g`in^rRX#~20+YfBVEbberU+?_FZfTJ^aVE9E6c-Wy z8Ue~M2IylCzxpIu$ug!f9WSxox&|@PSYj*+o?4SQ@52eV{6!E;7IIeujuYyWKgTnY z29<&Y3D91XNywcO5^+ax>}nHM@XEhlt`WdY(E?32|9UZ@*Nt}VsvPWXcDF}Ok%!mF z4w+&REO0rG=(+L{n81=3w6!NvDgs+2b?MlC2I{wQtaO%yZIYpm)Y#||WvPVZ;ZYa) z-{A6Nc4L8i5#pdNusVqAcmE)Z{ix*8rR?OL!Z*k`-wPOFBme9b(~!*_FeuGag`p_Y z%K_*4M2GIv0{r7%M-BR6TI~MWc+FaohnD6KOu17Js9da!UxnA&s=e-$@Q*Uq!r6wD z1Ho~?wO`30<4{f-_BLF7S?H9X# zmkeHv1GL~zBpqb9S|Q&g}kUV*CQ`pWl^6qSy`k~-LJsH7_DU(w*9wG)-BgN!v7 z%17p6(~+1Sg_wadorS6OE>Mh8B@fiwKsGpA%?rvx+`K3p&4y}3(}1@{_%@%;t`8$9 zsbIyMuvjxq8dgVfIe~erKw0cjbv0Ujweyj=yJVu}p$F!|0#hD}6Ot8tPvq;sWW1%n zELLLUTua~%d(EUr4mq^b^yO)bO+@RHb(Lj(6qF<&*k1x7E@s=RWvrWBUgILmPeTNrZAZYoZT5vBVH7_oAw?C}yAF&~sHVy`(`lg7t% zio^iXiSuE+44NVf$2zl847NRU${eQnfI2PMTD=6Fsai9xuIX8gy zQhp1R+42|W2|T9lbl8p0JU#DhR6Av5ZG|xOuO!jf>ekOP$)Lp4Ln)Vm*z%C1!3GOR&!BxS!J8BYMt0 zNNB)&{QYp&TXa#1V+gd-B8a97k=kQv!1a{(-}rD~fcxo2Y#nKpW@p$K_f<qTHHE`BwtD=Tl+S3=^~W{f=;Su$;In?y5E1>=9GR=z@eBU zfauoW$-eDVNR3gYtxj4Zduc=7{@P+x^W%OBGjQ%l*j8F9Nte&*Ur^mIcK3f*MZP0%%o!Fso9=@K5k6h0StP4~OUtbDk*X#5x=c3#M* z#Ok0H<-J{%&emJg&Y>I?X3g8`{0E~uU zD1d8um!=DUISSPZQU1iU7t)r3Kq4^JM=-RQzPjB(ovCHGpo`W6PriXW38N-Mm0105 z%P=3iFIg5C#&5cPndX8pKeH?EJXlUZ?R-L-M`yku#!M$9yA(U!6Q{8~OF2H&Uag#cn_J6xtA>8di(pLzTB(1HufP(Y?89{IOjp|GV&u)ZmFcd_2sw zb6${=;$+&KhKMV`(I-~IcSLS`#OR-C?|e>UQs4+h@=yQyh`|KL$MMAD!J4DK{d7(z zEN$t8M;q8MXNb@`{fm9 z3>I(M1?3wM^=`xd$w}CNs{rfqAvs1Blp~4V+NEg{X1Li;#=MoGd%ZGtoMv2Aqq6ha zds3^IDcLy1lT{{~xJ+O2b-ZNMoVaQ4?3Op5({BHIsq4-Aety4m`D-^L8?M9j)jVxL zsS3pMq{&DNNmsZ;0UWY73&E1ieDL8sEGK+fA%du<-6+tYaQBUGgk zp!-9$rc5a;b6NgYfcA;2HXpu-rS2$xQs3kNu-Hd7G_+Xi92Hr99Atz7I?` zKmwrJ5}wg;_p%ctC#Dd)URb^#oN}EC2@#Of&t(4`NuWJ|Spq;pvwH?WS@2<@S$#1|I7YY=q|K8Q-Ak-#JTn6HIa^*@9>ewEa@znf`X$I|h;wP?w5sXq^5EZdSQd>F zIEfdslAq7asik+eSvn3WJj5M0?LgY*_f_`X$U3KfZz$RF%IahJ;=-`RF6LQ{{tJjn z&$1JWkOCoi3$&Us`7F6l08bL%1tW zx+h(owx)HmD%VZbaLm^gFK8#(F-zKDh%{LYDG$d}J@orBm-2?IV|JbgC=9)6n%U=( z$#40H{4vg-r|JEJ()fYy-!^v&-CXvILMVUGi2@O3nEc7E#RdXp7uqBxqIoYCLW7h* zRGTD(XOPdg-W!-cfOZ1H1WX|PcaMC|r_O2&EKAuuHdGx4%@)Anp((q zJPSB8!mzZ19hTaDo|Z+r!#(sT59Jw=f3aUWb9xpmLy$;!X{%Q8b+@g{!Y?2!SYTB$ zKD-aRL3|%$HJ7R*>C>F68fv3?;orZAYP1IJWkIH-V+-|msqOTx9g52K+Xg8yuq*C` z;?%S#0XnAYXXqd1ftv3aDhd?lNHUa(94}Q~6gs#wrio2z+^^BVnDXFQR9ZKaa~jv2 zjyCWq0e?>E(e_NS*6dY|_iOVli)R#ITnScZtXwv3lC7C0sz`;!T2-h&OK1RDk_UD6 zsbZwLL7%wvfN6V9kqv4%hL8l3^K*pafyopHa+YbC@KCNM&_DeJyhbA@#LezYk%0>B z%Txif?3myRrC*#snjLY;RseKD79VK*@~8^Rx1*y@!nBj9U8SfZrx5gztL#qw*@xF% zE;rCSCHkiMiiploGk|Ck_s}C^Z8~ks>Pk!!%Ro@!g#o3#z^Z7_yx>UHL9OTh*TBu$ z*{!wM^L=<5m}K%8Szhvk2`RX&?YO#C&(kJ*T-6ERsdyw||68S+F0&qZ%=iE&MH;t& z5#MI~xidF36@}{gYL@kyxjPq*{~R%3kDvHR+>Z6!5jW2v78Je}&?3RJQjngWp%-Dl z)x`}?$IX{3zlr@r7|r*3g5<7R@qFxgv$j6Ce{D$!RILH_64;9h!23DDzpn>!&m&=& ztjT?ABUP#hxpM~En5p(50r>(qAzZ%A!Lq@p>j-dErpYA$&bsX_1+vL&#a!gf9pevM3T?)BbsOh+V6(e{}` z?Yn_8zMJEvjAx__=?ePn>@;81ChX}c#)CmaC;c1j_uMDq!5ZFv>b$%G}7S`XopuDz_`L3t{l z@q)+@=Y*9r63ftNUiubXigVW_@66+OSK257znT*}1xCfSmQxl48O#GK*-1iO^<+E5 z6?zrhb<*Dz6wCRx|GMasVKW#i!1)fH32n?P14ohm%xFcPcGr3w67Ds;$zj0oiNtdl?9Rj|{-jfGOq zMtge}ztni-#gC;zOsvphRii8>TAl1%c#mMs@}YC}z`fbV?1e%f_kv_OzASJ)8Z`^l z_5;(+uw@Q#MN0M74?=A}&KP6UBnx(fyX~x*e%lH!(l`$jT<_G^Sw=8+6XLc2<cYLvO7iUh=YUPNcj%_vznaRO`#bc@P zCy>)<0PVD=BHdcwxFwQ5QXl^q4}CCrPq0#vF-$jnE?mo|(CWKBQW%ylQM3M8doSN7 ziHQZvPA?vm!W49><#=z4#0t{~wydjjfa&b23pr0Dp*)Vx|CVujVn|dUN>t=G2WLoOU zsx#iiR))Bt$Gh&prZ(%tUT>x8>-mdco9Bc6Xkl2aPjUeR`K|PoVp#+MSdixSj7%7< zo>WaCLmxQA$zN`1`J@gAn#>4_biSOHkV^4w5kmSZKjWN`L&g66Vux5h5xyT|N)g@t z$xdLISwofP+m1RA2f98o;s};l^8rmy`SCgIfxj63kQwwiEMTVx!3M3SP~W1)q&ZbQ zcIm++<-%-4rCA0FnNWlS%%@;lIxcjWp4-af@gc3j+WG;Zd(1Q;zeFg<+=OOVTqgVz{BImt)Vm*|W<7tPfLL5@t+kn0UPpSKoZev|hhl zctVkuKWXt;Zw`0Ah_gh@`g#=+OAjcl4y zP|H6sMJQx_&N`#~73`APiY%~Q^!ghJx(&@bwTmY zfJ&xMSRa+WRvO?)RnRJ%&Qgc zk_HfSOwIwz`rxtYP*No3z0d{^6w#^j2n*;9te1~zIud}<1BLo?;*(7A(K4Ki6nKi8 zhv@+)+tp7Chd2zAAQ|))dof$1lDFT=vRoLD<{nmLbZV^D&}rWe_dX427Z`J)sU?r$ zXUTGi#9$)5l?vopEY(~)wW<`9pS>#5+yOS4*}_04SrP1Wo<9yO3X&6Jx_zCJ4ikuh zbk!G&%{3>HGf99?HRE}Jy-LC!A?K1hmI*-^tPDeI!ad*yAZ#8edzP)80(*on9S;fy zhzBulZ>-H+keqJ`{yisiZExN5uHdb$cF;=6w(ihv`H5BJXC<|%+@{;oU5{YdIN^Tc z&k1ZAQ!gq;M|4#4W>wfW?Q9G67(mB5X#lWI|7msoZK2oC&5!RDNo82b-bSV-<^u#M;BNJ>i7P5aUqS7Eq1)X&}#UEosGYC z{vAaq{7N4txky3zA5vJQ)_Ixra}aZ!6r@0=1oS&p%5%-XYEU`{>ucsAPMbq)6QldM z3NHGVkYb%}rRLlk)hS5txVFFLSXK>-&|J8rpsG2mMEJ#E^G5V5!eGB<7_-R5ykguo zo40HTm(D>IbO^_J(Sw>v(mT!hTl!x1dtTQQc@?{MrCdSUBg$YJl5CW2uwr?S9w zWt;X91!|7t0|}HD^%T6ej7z|5gB|B|LQ17cerN(7P-N%K$MdC05deXzz+2N@a@(mlC_uFMR-0EFzg$!&%8a-f!=ad zp|g{iDl$8$fjRDeFg%!f>u&qq5g>g|6&Z9j+M_k%tA;zVri9Q8Cl6m zjz@qJ5Wu2nTl;kf@G;M0YDj8$2fVR_5gQDOCVS$wy*e?=FDyn@7+Tsn)&pBI`%`({8;_tO^ecTYIK7=b ztO>g8(YZB_>U$=PyDP}f3%urL)0 zAfFLJX*zv6}}C>O3l9U6bx~Zy9(i@aC54`rV*o4_nXG+?~~aA{yiM#Eez&4 z57%DmD{N-#;FqnbS?YC>M$w`XWzxAOn3woNW}!344I#F9k^xx^iCj$1%Vm%ia0U27 zYbklV1~O`?-}M~qw~dc!5C2>?vlne@+CK0IMCVMaRzr*nu)?vp?ap5QlEN2NJ3sGg zo=-hVV;EM*LQ&jGRlEdob>q

&ZSZ|o%ud~L{GU#|ynJXT)$7$inUD;mz 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 HL}C6PJi19Q delta 46885 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⁢j+YsG9tAUjDo0N|Yn;K1V@XuSz?KH9BANV@5iY&2bxzZGkXbz}IlS zU|+wSnXi)EULr+4PA`jMfGA>KGrS?Bjn!iP;T1Gp{$r6WcJ$~jtT9542vg=B3pkmU zPKh-RZcXPZ=URN!#$!DbDQj+BYmRYJ5-oXqb6QJLVCtMsua(g(nv_V#(D$2aYs$xF z64aFC0%F;PG)P;figFo6$Lwx3#Eyl8Ky8{*n=&OmO-*f7>3+LsU7L^b7%$mXx=b)|GB~?V( z2ol)4z8y!38*tU(1 zI<}pT%_r&DwrwXJ+qP}n{&LP4|HXUt-|oFfjZv$r)~YerTyviDwSKJ@@6c=$dE?Yv zBj`7%JADhm&mQS{`YharISWpvdVo(9<#fUDeG;0lk2o$Nc?0&FC@>gFAy&RCj$|ZZ z#yb(bNT1Wd=#LU^A^Eon^TVI)jyxV2t5DvXm#rePgTSJo5Vh5$Bd}Q$*JaAKji#}M z`Dc_VY?r`H17P;VrY(t%k5>NB@%-<)@A1;()VzJCO4xX9xZk6Y7t?<%SlY%@j4M6L z$>sYa42nu11o;y-qxXUWkS5*$vhH^s)$*Tj0`P~tlOJm^^NIQh+$UGfn>KA%pfT2s z$T#IZGQiNJ6fv@2zvAYcPqiqP4XfM}neI~dGEgNCE?k}`MNVx6A`g1j`Q``Sq->?> zI_W@Ms1c9w?9Km{pnnO@&w?9Ug9s?Yh4G>+k~Ck?r@!%`?d9%e&>m8)$S5TiDH!Mg zj28r+;AMKeB;o679^;Q~?cWi{7%8CwJd9Ke6V}GLm$xkJ04DoV4R?bDvtw z0Z@e`r=F~j`6igDZIp*3QNjqYiI_i?k#Q;jRviP@kPmc%2wNB+LzR>_;6PcJ*7VE0 zC}0xJ3;I!gzTx>4*X@wQEyo{kmE_PszQlNDXp`R&H|A*gJ@bvgS?5UE=wjf0s}^3T zc<|C93<}W{F}qB$p!$oKT$E_tKRZNzo+N(wf%rMw*g2LGzu-Z~D%Of03JQfZ%)sIMpVkD!QbB?v$nSfTw!)k(su{51n|aCf ztE$9cb%KN&k!OS6%PSU0E4akqgdHi!Z*~l?9Fo&ANa4DYz^RA+%uC-st1Ukb(ykL0 zK7T#^QKs*#77qK?*^~QpYhPz|;mp*KV&=H&we0qeQ?iYOzms4XJWZo(l5|^v0VI** zv9QDD^CDcE;2-J8uE>3 zTHC#Gqvh(r=cctM^6nEo78I6Zvj5>3DstrOK`WG8A0_i*Z=o@_t(-yC-2Z70>7BOL zT3z^-Fcy9zL~_FF?)0u0t3f?Z1C*5GnD-UFXlyOTIFrLi1G|)IwJdTkiAnxeB}VzR z2BBrS426=tYMNJ9KfY22zcNhKvI<3f?m*zLv!mN>v@Sy9U_oIcJ3+Xr=4Y1mJ^yMx22_%WgVXv z#$~n`f<+HZHNK^Fm&|0)g=paLA2h^o&q`o6FnZ%?Vaej#GW3fC-nBQ z1`(dg;P+&f)OM?rH)0>gG|zW&qemRoUk6~geP`pp=cF%XThiN+C5cReoJ z4A(&D{AVCsY3(PPcpVy&l1{Q`e#H_)-Vg0!i+fTVGG!5GXOqN2(0gMG|JGW*#o4#P z!>q#bs}$u!UDMNyy}K@nCm$b@ZFVK^M0MU%Rhn>xd=FkspOF$Ws(~HWwn)jtyW)2hZkPNv}zdg90}=ch2!}9cN}!pvD|&` zE+LBi>P(*a1!;n?VL=~=wjA@Z6QjPuii$~X&UzOLcSuX!JESt}8xX(#cYkt+Ca$B2A@WjP6`Q~Yu*coc%^77Mb;0s#C zh>3b(^|7(|`sVNi4+K=zQ_hPUn{N>4El;z@VNDe~z!8pVhP09DC}Ks!oeSBaBWrfj@!&9w;)hF37X& zUAr1W6A)QkU1Qc)p>3L`x(D`FgSx8oPtsCAY&RS7KorHYkF@=xZ^5V!M{4!It4txq7&~_|3}dDODwVr*Y?{J(X4|d zqVUq+HR+o`D$nZV!rp|(+X}qG-5%t(Zi1wB1A;TgxX`FyB*~guBbE$Hcl`_sH*gL9 zGo;!H{qH!5mu`GwWU{h1gHTlhs>M_NO};kv3&W2}@_fh{%35>7PTv(ib;2^7fLclI zdxCWP%6Cz+xy?Xr`i*UR)4Y<+i z@C|sgmKBePt-*@BE6-nv-^_*^Xh);8K_q(RbZn)-dQRNv^Bxw7uM*Dez=u?Kt4blq zR=vQx#Pj z!HulcwivHBUp?Jnk>i<(YYoh2HFh@WQSX6&RdB!fGx9yBvG69_);yB0fuLWDkNrs~ z*ElAHHQZn_O(29fOK9&%Zu*Pl)8jK@pEq~s{N#b(l=!Mm5Q6q9sK*=%-pZc1=55B!3n^CYjc9`A&f9TeORztq48t?+EtOPPX>M)xa37m13c$AfoeG{q_(7xwQ7gU+Yft-MrAjL~%j&AIak1QC z1L=s$Jze2xycAV10DL7nf9O;|sA0TC39gcHYRb6xrI%|FZA;YWup zZBn4>O0EVM3ng6*6W+cmb17HB> z$?D#KFF<0lx(}cpSna1@DNW8-KNw6A>Z!)8eZuGhdll)@)^s+Qs=CgJ>uRZ&pHs3s zz)N1~5J*IW3Qy#Jt6xsD8bF3gQ(j4(Bn{hy7k9On?RQy^=t@-0V+JyO^@`Huyc|W@ zj+ILL`nLg78qROL^!&URwT|a>E7*Q%8(=wgz?c6*B=-gdTy}!sOFe_%344er5(Z0z zv`!o-p<$-7r|*ZnQ9TsPDz#j59P`z#-dqyt`Mh4!Nj}pX^0YS=#p;so+nNMXj1;XN z&MMP}Ngt7rN6+5A3aYZ>)vcFnWb&*OP0^}@n5xslM{heLhR*e!I)gLpAnTWltjKZL z3-Wfiz3cL4zN+e-Z$Cuz<90P;a&0J}6RnySn4FsC5Y2Tf6q$-b zBt0`1|DDWZqO)Br&Y|l zc-9ak4lER!uuO|EtrN~&&L~$vJD+7s#XK72C}AJH3lIBe6NgEOCU%RDqpDY}XnBw* zO`;*nu0Vx*0OeHXv1p!TOZgi&Qg*=IojjgOt(0m1^xk=m!zM2MG}7|LXR-TKYZ=Eq zRn95_STJ96TkyHQZWfg)O0*e^aLOjtl9OJSqLX zD!yg`by48w@_VRcPnj(-Rd^;LW>xYc*Yw!XgVw}7jLAgWPPiM6ulKB-j|N4k(*Bh= z8a(u&M1>d2&wL)fvaW^dcR9995j6a0-82^WZG_Lgj4$HPXt#OBiUk~a&5IfXCnq;I zWuP=W%(wC;W#r-=IpCY$8hXQ|Yy!ixt~z{qe7tWwec%$n=>)I#i;)WN$WBm=9rGMs z`eWNAxUU3OMJfiid|gg28ndqNQ&1Ap=D6{RYr~CYRKNi$G2cNd`$-#^y>xJS0YQjb z2T7|)v-}5d2pRg_6z^cr9d`zm!r^&{0eG-YjPeOmJxF5@@IjKQ#j=jiC7v0(DG7;y zR=|nNVUrZC;>CWPxI+0d10{6ldK0V05$_4Ybzc zET}e}g9s%YA;wo`&#cMf(>1LGp)i8+*W-rnj~x!|>ik5YYr(#JXzqdPw2AI}I3b#R zj}s$%teKmGjaUH1z~%%+UviOP%RfCs7=Oo(<)UH|Ha;lZEtoU>Sq1xy`voT&N*SS= zJ6}u*g;n4-&3H$gF%l+AJL42vW@7n4=5Iia6Ld6dlGxai?rkU3{bG&5rMQi$_kO^2Wf!M>Snms z-`+HfzKYuLrHpWjW@Ry=zB%yr#a;&IF$gwka=##cM8@jb=IF=pt)&=TLcDtrwcm>X zk-fb$42fPBX{eqOV?HOt213fU5}*ZV@?d#!qg&<(IV)D0;7?2v6i+~IOz#Bd+;v*F z(mT!fp?q>f63Rl5vC7n|u|BoXbO*c(@+T3co|YZ+ar-<*@d@%~8Y@^+uQwpFM>O>} z2xWdP!NqgzT*6U1M^s0XmEzc^VJR1nGHoQDf4jaxOMV3mHR%X20YemY{BE8PLT9L+ zVrWJ(&;J!SS;nDYiM`rdH{re_d2+|!2b8UDac?49 zVP8D2YZ_OS2YJK4j3Ae-fc2LY+5=WIIO)k#SyQ|JB=IxIu=#W01WJmgnPAB!#8taH zQ>vuVuj5Qe-kB7%p))59&h7o$J7QrT&I~2!_+;3Dxjg<~zAgC!AO|vY{GWL}o!F88 z&{Kl0e8RYj%BYi|%}E0id`n71wF376-2{}1Oi4^oo1MDmhFM z$r%>@u&=Q!p=0gRVbeQ|4nG3A#mgS!H%{hZcMqIt_*Y?ic)D~p$Icvemln>(zP*5% z7|(TpgVw0fJ3dumrdnun=vQWvN}$_1joW$qkijhJJYLM5@*@gSUcP;NwiU%1fzLfK zEuh)Psflpfznn~)Lz43Ty!etne8A7vjYB&;GGMfYRTXbll3Jjh%4{tK72FKev8TZe z1s?V{RYV@<@8$0d+Z$i4p!*AabR=@lNZpK(m6CZDg{K~lqY;V}lqbBpyUe@T9Y&H2 z4cUfhq)@l{00is<9sd_Ec^d#*a!v3zkzn#-)p5Nfd0L#x`qMm4HB<3lKoJQh1u<1J zIN0GLmeJetGS=GjUxxP1Z_QfxW$p2S!#Y8t{n-QQpJcz2X{GWTXJ^q1Ez_mu8Zt%X zi!KD`OHYeFSny9`CyTGe9Cu`qmKr*;bR&9tsbfH+v7{#U>#gyzwcaiAZ=L~lAi}#au?Ec#IH|`Y zN?>+Dot$Xd%h^^b*~nmJb=T(nJh0(6Ws+^eu;u2&Mz?JliPZ~etTw4qSlRO$83HLV zS%G%9T63$p?B$1j{$I3_=fF7X*b2XgG~#YcMgHD?brSL+w2B2;b-*M4Kh!t2e{gHz z7eiq+<7g57g$BSKH$`x&U!~y|PmA{jT?wC_t4STa`4Q=;^CO&%F>Zf5y@0m+J@Is` z(Yl8&xMAGCn=y!K zFt{bTE2U1WI@2%&#Y;Oa(m?0CEM76b%uY0hQX)aCB=v+MND;DCR8PiD52Hl*tI zIR~%cBcdreAKU$yw=ADU!yw$6P;E(aPje4)Pwlb6YZlA!P3`Fq*##o#mQSxMs4!HZ z_(go|BeqcBTtA5*;V3{Q*5%74{%uj#CI*V20;!sYqv?B%JN53OWVw&D&w=<`X&|=QeYUxm= z-MskflZHENTW;orATIE4x0E@{u0B|s*hGb=Tcnw_AG^841hF;4CIT@~V*20$>*;== zbHAnc(?X5Y3ngRbX1_GB<;<7-EwK>%9FzH^%ut8VQ!yAEE^ZIWl+tI~)*;oNZ+U{< z-z&UE8eG!ob_hDeS@gqy=Y)$IY%+fhisJ6ZTY;2;MtEgjfB>k{-7)ntM-jSJsA!fn z*ZfX`TIDYsMl|1 zU{1Tt!?@4^t$XinVy)U(rL3s{E4hkcLIcMQnw8RbaT!Ga{5~*Dyrs;V3J*S&nVHQE zBLuz74G%T0FuGZOY!QkWEp8TfJA!o6VRs!OSffT{wE#@{{pi}Ij*wa3?wpvaXvy;Q zJ734=%6IPSp0sL`EKVdeiZiE_Ukn>?%U<_Tqp_+zy|`SLZf3zAuCZiXO%)L;55JKbwZ zbzvKclz{9@Bfk&^^d+`j7cX#OGs3jfAXxVksh}0Kl#4vtN=>3wv?kg|U5aEO7r*YO z9(^LHq!p?wi$tzk(_fkHIG65YH~QlWO@d=<=XQzTZI&w2KRPR%&xwu^EQItxH|0RR zVsZ25jf5O34rz&~gFV7DB|5&v$3;PBCjc`}W7IJWl(I-_AB1E z1E&{YP@FD@%~xJw4+3CuL`saVc_&Sx)fp5rZ%{Vmo{-ZJs%F2`s8U0-xR}l7V)?Dg;<#Oc5D=(K|ISy~B$u5f^aZf&P z?sep<)Y~@P3JPSR(0LpuCLvO=@c2#dYlzskUr9E*Qo~>o~3)Y$q)>QKS5%VfZXHVlV4#hcSz0ch-7$khRU6216-EM zWaC}_JqD3jB4JaFktSD11;lb{&`;a*5gBNxf|j4f?ZT{hCTU?*C{}I zPR{Wp46h;oCMNHILa%r15z&;8#*Czle2UaCBB99?=v20q_}`BJQPBUGT-3=@F#s$G zM}%lt_$JdBKq3HqV=l|{zlQ+K-}=qu$y{*&+;5B?YGVLgTsj46Wpuqx7hh`xKHM7b zD5gvAJcz)hCL(Jy{$6?heYi4IA>*$SD9Qccsc(F`zwoggV^V_WwDzADq2b)na^K;vXyIqt=t;uM^)Spr7kBHxK8CY7i3p4QBD0ji< z*Cst@F^3;StZAG7Nn-f;i7C;5LRnh2Ue#V%kTE#&D^O?^0F&PUy2y$yRQ|QVF1A!o zhz;%OuA7=rrMGKiu1MzT>S~E-keO~9gI~Baxcecq`BE@?h2+X=P5r-!Y()Kk5pjzL zU_rt@g+L=tHzmab5&&Sl>2Lo%6p!>sk!+UuO$}6EZ**H$UEC;KO5xoQlogJE`s&0P z5JrNzBexA25!JA#Y`8^EoD6~GW0n3D+<~1TSW>H!R)baW!zZ(sj@w2mA+z~oA79vs zCz7Z`(zWap__(7XnHv& zgtN_ei|nL{e;kFUiHLsHwMowL^}7N?LV9Ct(|MEBLvK^xYJ;(EC# zE4|m`)cdFB3f1(6a4L(#=TQxj|=Baf#;#;Eic$-9!8PDw0L3ZSgO%4nI}jrE}TaDp`tJi20LX7Sq_N{#Zk_ysC> ze`X|!`~IGgB0R-}8Ok4xslzqU1B5)8YWIeQlOt{5p7GO^iy9Maw#f^BUd&uDJvmG} z_|=M+juN;tHZQQ{s;9bFAVqx0CuhzOn)}I{D<0bM)voizYHsoj)9e!SH>rUkx*590 zC}L&?s!2n8GdJu_lRM1WQ^WlP<>oz!f3@s3P;jovf_3`U+|zws?VNck=M5Y;F(5Fj z>{y}c+k`O&azy)c==UXlcyx=>Wc_BrI3%GKVW|@ksyZlfO;K`1B#vt-h^yyX%>w6B z6g;g;ZF!HRc-fWTB7BC}AAtfo1op?~cXS~8f~+ke>ZF-A`&{Tc;zTkOi|5$ntR6K4 zk^XX`yvP$YKKFevK&H5wgF!nRt7~7c4$2g+`6)g2bx`Bp9NoivPR)u422|$;I zK~~U`S~cTt-Hg!-30?dSZSnmAWS=kx#QR32oN%*Euly{dquh2M zVR-48`u89#$&!P|!6~^o{2rtYSLY{t4S%7;?`;0%bbjxr*3-;cxXV^+SxrJ8i+FVaNL=GxH8sHufoCuu-gb+=#tx$B^D&VS40aFN#V;l0nhpRZm*kI|37`n*xxEHNguj+Xat&eHvmH zUmE*vOpqFJ?O6dsKh6$P+<1Oc_m@N$I6V41#9YSCijk~t?-@_F4ohDlAxGJUd=t-; z`_lj@0M`F}^sLFS>EDUa#qk~qNmzNtZ78367kkxsxq`FB{q=ed$)4*=5NSN!k#>;ZrQ55W50;z9`u$_>iO z`M-@UP*7780ONn2LoziQC?|mVf9siOpi%J2LWuy1WJO|7c5)UXMj~57OITiB24#0U z69#!hOC=|3200=oMs@~q3kOFhA}$t||B3l9as8hM+Nfovw8#DLgTJeHtEjDrbMcL7 zK@441Kwf~s4$(}GoDh^LhKJZ7ZhB+9y36X9!%tkEfKIT4+CO7jp4E*FbR**Gx;4V; zD$qd_r@~B89aIg49dvki%i(`nq|kMG0&{6Pw?{{X%~kFCWQl9%{sEB@A!sAc?0Pz`k4=jRgTH^;jETXotS%v|B2A{kV}C7cwYB$U5B5=Ki}%xNGF zE41T@)=tNX8JGYWy9X4c2H@!{QHPr9YghsVk()@LI4{399R0YH=5!d%=~M=>i?Lc1 zB&SLd>D{I1q4NMB(xHDzIezE3G=s-D;e299+qD)b2<~g=BDOPdQu^^2ub@d2J5||B zVY>x`B$AW2Gb9)UP*UR>f`V%_BeFw7G?#T81_&E87qV0_0;PYNDwx5e{q!S#1dkE( zi}@=WL8iWwYaa&NygwbJ++G9PDH&rz7g*+H&>@8Hb|h$M0E?Lc4nDbUdXD$*6lfMF z_tp!yZ46hPgA6^0YY1WQ372$&)(4>Y$LT}~<0h_cuh0WO5WrmjOv9FWYp0&ieWZ{| zyi3Vl>PN2D3kkkX#9w!W=C@gJw4WacZxoABE97wNL=A2 zW&R<4oh7G@A#THnS56DDR;Y&wjaFTQ`V)fmsyDZ9oWp!-^y3!92QT@%e{grZP=8lG zGf}4bo|koXm8>TbZut+k#TQ-TU`gzuGKW?OD!ZJpJVwy2rt2%&g?1lzHJSHrg)G}O za>jbMj(G!!a+caoFhD!&z7b}oky%ZCx5Ds>nI(btQRP341WxSncY6jU{V%ld7@9hi zhUz^x1&})<+>S)eG%F2?H*q8D6vr@2|2EX;JW=Y1epft3$yh;ZU9@#j$*BrGR~9WS zpj*?UV`lWz+?k-#n`m_v3_D-LF^4%?`J7ai;0KUdOjXPeLR7RaKCc9#)G})5WYyhN z{!zT_m1IMl3}S%U>fzBx7HHFzN}E*P2qF-bWF&BWtdl28Wc9PiP%Sq2Oy4S~wo%f)WH=B@@BefIi>at%DGj=8{Le;q8 zXFfW1<*>P!I1TgvmXsUv^3c&MOU%U}X!^)uNAGiq(kM%&pKEwiCJxI@urMX=p{PA_ z@}Oe#elq_)K5kjWm$hm$npq2QwCvK95o z@429b)zS%^9i4THD;Nfur#971wOgb`do!_Q^N}+ToD1gl4gu+yVBxc*xLY@<;^+hu}3Z&uOy5lSuBtl zO|DNuUPK8`g5*;C0Vi57?&`%L67sb<)WF_Q;Q+v8)B=Z)dJze88wIW?8t%$A0-$z!ru9jZ+Wsia$!OOd#wkenG`P&;=v>bl2VJG2cm>0lFS1 z$<*0GT<#1Wv`d?>9Y}C9-S4tiaryjs4rF?gBjA&zxoIt3LL8*h%&PP;zH4V>=vbCn zvGznb5t>)T*=Uhq&h@J)Kld*gn zLt5B)dNFL5IRtV?-6_l4Vz8Y#r+Gwm=$^|sUx2Nr6I_lo0i8WnqEyBfj{$o1jfLcg zPfM^%t;0#K4gwYHv}*xw^<+eCCI|sZuATIUduw-=H|ImoYx|~N_8Tk$XF3+5_(o)50t%#5ea3u!HUMW3U~df7wD*9S#u_yLKPoZ(bkGOB$scKj1V zDlcnwuMTZ#KsnQ40jJx&mt3vjg8iu}HPIw|07>o`h_PrQ!aceB`HV9B_CE z%>k}U>{JnrD!4m1ld#aU8B`4ziCy8+t_Fkh$QBJtE*Vh=`)VL}MAsi5i%PYlsgYnv38@dRQDn%v6w~pRoi3AzZiysI!&- zNZulOLM?(y*$>_48P8@n{)`;H4T%GNFm#LjFp&#LP7YQV!DRG=kdNtGzW~8f2yTR> zphbAa*iE@Ad}#3#-tT@cM-J{$P!@s$-m5+kNSQ%k9^G*S7C6kPhb<}R7iJgn`=VR; zYWSUUk3h_`+t~ToIZgM5I|EFY2+ntrDm`>LJcOE#|919I0{O&VP{Ue0iz<4=e@x# z&`);=61I2ESpnqS+3h#}1oiin5p(rPI^dNX#BgCphyU1#Ib$j8PalHF)eKu5+;s6{ zEL+2jIpLGOjb5L;w_gh}lvD34!33y-3_4T~!X>`lqeufAWB05(?n_;FKiBpzFDCAw z>XM@aLHpf+oZo?rZ6&f`~njMNo{5&ox~B*&&hxTP|`6Ujh<$ouH1o59ED- z!T*s^2Rc*}9-8EkVTgX*e0;ndq-Y!FqoZ6$|F0?6^i0#kvD)PYL1fNdV8HV#q0@Er zrctAqePA1ZKr35F=0b~$73~RkiPJ1|GA3k?U-R&9@yF^5yK1h`XtDt&J-l-}OSfOMwelilcd=rEq`4+QjXBl@#=1+Hm9|qf&_wSnT;03F4Ayd7m5m&zR5)E<+&VE2 zuCH?9{^=-Kc_#3dXrN#+-wondM$v{Jd&2sXn?y2Ao-5NoNIyCLL1IkOY+B3?O-shG(TZ$Wm_SJM0w)VLfSQAgt0s@KKTvYK4~ zO6SGHg`dzrftd$07dLu)khfhutQ?)F+CL5K5in%wZFRoApINLGhMb|AQ&im@tj@GqNQ}zxERtSeC0Ri^ zv#$!h4mbGU%&=da-)QnBT~KD5F0Q~DRS_&GN4p1j{A;{XzbW8QM0j`}DnGhk$jU=I%K z-d*+^@g(;3rsbKf$cu1k5sxSC;f&6lql~UB4(2D4Tv7$s578WLZyc!sz06zgMe{T7 zAEw3GH7}E#+9%@>=N`<1+3FCfA5I`yMmw&lxH~>}$8YKKf%u!{1WjUmAB?86QdcR9 zv%jNbCm5E-uDN6 zJ6nhX`1ap}Q%Jl%?7X-XRyz7c8HK2LtWvVkbwo)X`bwKAfGm7rnKp;S} zvT{RDER{E>foJs=&b48M5L`<1#rX#+FWHt%3`g~4+TPj8<>g{3iI{h5V(v^Ys)=K# zT5L4_R|kLoN*~>wcm>TZ#jBTndh?_unT5~1bd{-?6D5kEPI2Ij0oF5VH%P}ChI=_} zCor;xa9g9g2s#D0#H_M6U2jZ2*Ss$5AK;WiS!vk&fW8P;it`o3Fk40w>>66y-$G^k zw>aa(vJ*qyA2?8RmMydlCmW)TlzK_Q2Wz)FFSYNQ1c?*}7F^U*qj$G??X=aSQZLmG zn!3sLw?*0sV-6}lG+oI8qiqrKkkV^X8cN%mXf+W4Q+D`wpV!xeV3KA2PYF!0M+&Uv zaU2Z+;B%O>AA?uzQC}CYpvdAW`Ew`C=Yz3Jn@qQo<3b)z@>0{>!oI188hu%~#e7p$V)(~5&Ua7|B}!i4$(^YyxPLodKw(WPPWo$bDp z)|Q3zZrTM(k=;+3jwo>*r1TwfXsTNN>pj~@+7X}ewb(;OpW5+@iC8w%?hll2E6nx; zTHKHlQ6C-L_n3kVD*KvGt3xK7g4tc%oGTCyh(Md_IgI_NG<<>&aqJWf!X|o7jJRn^|gtnqNE<;I6CKY3m&%7_DubO}J3dJT4>d zpqBl0n&+3ePglBN6k9)H!j7jwSoo{bD%ss;Jbx40a0Ty0ss+L@k*=wo%MJJg_2z@# z`r80+NalzLR78OA(_m^w0OOT>y6lV#oxQ8n)U0XFA~AaKHfQ_e3y^?Su=rmv8I+wR zd7T*)OPJln$bi{^jgi@eiG_>P*pSii+ai?Nl+BRKn1#vEh=ZT^|L;UHI}0cgEGvVW z784N*5wp&JpbuOi=l{jB*cK!d(0-!@?zlpcK#Im`h?*oAgE0Nf1N{jLEy?_od>jTf zWdQy#qdo@s1J_YQus8&{jEtMx0cqP{W*#xUIkS;O|P=ijnigj#_v(6egYM-A#cq-QzQg8y(fK;MjMGy5K1 zCuP;D{!Gbt&!W|kazeBYw=ERLtvCd5l|K_ zvSW*28P(IkwkUppRO0w%hSk~*R<1C*haZcEoI@x2YK+OHvS{ueRY^O4?(^Pd12ROz zrh!nBFoI7~v(Vk%S=$f6r=ZAKfdoz6U9;|lgiyPc8 zdqRS4X4-E1W>~d79PRMO72V)7doY4tSx!LHw(5G&+Ds=Lx_T&&J?7=06p#}eX^&t% z{H+!lX%~ezZ0MR(t_Riahr9t7#*Qg(q}erXmdKlnOy8XwfMJ)c;Yti$caX*ny?O_} zJ&MDQpT0Zwn|`$;-X0oWi)FU+r@c?f_-WSD4YT|PW^)MY8JW-kfq#&@VxagLK6?+& zE42EWt#fDX;!{sg+Ygf!4%j*kcV+