From 47e8e508c85c3f3c5286d9061c58295a7bb380aa Mon Sep 17 00:00:00 2001 From: Jake Jackson Date: Wed, 30 Sep 2026 19:39:32 +1000 Subject: [PATCH 1/3] Draw an ancestor's text decorations over its descendants instead of letting them inherit or undo them Under the standard cssMode an underline, overline or line-through propagates to the element's descendants in the flow, as a set of its own kept by Mpdf\Css\TextDecorations: - each is drawn in the colour and at the size of the element that set it; - text-decoration: none on a descendant removes only its own decoration, so a link set to none inside an underlined paragraph is still underlined; - a descendant's own decoration is added to its ancestors'; - floats, positioned blocks and inline blocks start without their ancestors' decorations, and tables still do; - an element whose color is transparent adds no decoration of its own. A child block no longer takes its parent's vertical-align. Under the legacy cssMode text-decoration and vertical-align are inherited as in mPDF v7. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG-GRAVITYPDF.md | 8 + src/Css/CssMerger.php | 7 +- src/Css/TextDecorations.php | 99 ++++ src/Mpdf.php | 6 +- src/Tag/BlockTag.php | 6 +- src/Tag/InlineTag.php | 2 + tests/Mpdf/TextDecorationPropagationTest.php | 448 ++++++++++++++++++ tests/Mpdf/TextRecordingMpdf.php | 31 ++ ...DecorationsAmendmentLegacySnapshotTest.php | 21 + .../DecorationsAmendmentSnapshot.php | 91 ++++ ...corationsAmendmentStandardSnapshotTest.php | 21 + .../DecorationsPropagateSnapshotTest.php | 93 ++++ .../decorations-amendment-legacy.pdf | Bin 0 -> 82108 bytes .../decorations-amendment-standard.pdf | Bin 0 -> 82425 bytes .../data/snapshots/decorations-propagate.pdf | Bin 0 -> 34930 bytes 15 files changed, 825 insertions(+), 8 deletions(-) create mode 100644 src/Css/TextDecorations.php create mode 100644 tests/Mpdf/TextDecorationPropagationTest.php create mode 100644 tests/Snapshots/DecorationsAmendmentLegacySnapshotTest.php create mode 100644 tests/Snapshots/DecorationsAmendmentSnapshot.php create mode 100644 tests/Snapshots/DecorationsAmendmentStandardSnapshotTest.php create mode 100644 tests/Snapshots/DecorationsPropagateSnapshotTest.php create mode 100644 tests/data/snapshots/decorations-amendment-legacy.pdf create mode 100644 tests/data/snapshots/decorations-amendment-standard.pdf create mode 100644 tests/data/snapshots/decorations-propagate.pdf diff --git a/CHANGELOG-GRAVITYPDF.md b/CHANGELOG-GRAVITYPDF.md index 76528bf61..48e69505f 100644 --- a/CHANGELOG-GRAVITYPDF.md +++ b/CHANGELOG-GRAVITYPDF.md @@ -67,6 +67,12 @@ Read this section before upgrading from upstream mPDF. Each entry says what chan * The built-in default style no longer gives a table `line-height: 1.2`, `hyphens: manual` and `font-kerning: auto`, which a browser's does not, so a table inherits them. A table in a block with no `line-height` of its own now takes `normal`, and its rows are drawn as far apart as a paragraph's lines, at `normalLineheight`, instead of at 1.2. To keep the old spacing, add `table { line-height: 1.2; }` to the stylesheet. * A `th` in a table in a right-aligned block is aligned right, since it inherits an alignment. * Set `'cssMode' => \Mpdf\CssMode::LEGACY` to keep tables starting from the document's defaults. +* **Text decorations propagate to descendants instead of being inherited**, as in a browser. A link styled `a { text-decoration: none }` inside an underlined paragraph now has the paragraph's underline drawn under it. Set `'cssMode' => \Mpdf\CssMode::LEGACY` to keep the old output, or move the `text-decoration` from the paragraph to the parts of it you want decorated. [#544] [#654] + * An underline, overline or line-through is drawn over the text of every descendant in the flow, in the colour and at the size of the element that set it. A child block used to redraw it in its own colour and size, and lost an overline. + * `text-decoration: none` on a descendant removes only a decoration of its own. A descendant's own decoration is added to its ancestors': `line-through` inside an underlined block is drawn with both lines. + * An element whose `color` is `transparent` adds no decoration of its own, since it would be drawn in that colour. + * Floats, positioned blocks and inline blocks no longer take the decorations of the element they are in. Tables never did. + * A child block no longer takes its parent's `vertical-align`, which is not inherited. New features ------------ @@ -857,6 +863,7 @@ These changes do not change output. [#539]: https://github.com/GravityPDF/mpdf/issues/539 [#540]: https://github.com/GravityPDF/mpdf/issues/540 [#546]: https://github.com/GravityPDF/mpdf/issues/546 +[#544]: https://github.com/GravityPDF/mpdf/issues/544 [#548]: https://github.com/GravityPDF/mpdf/issues/548 [#549]: https://github.com/GravityPDF/mpdf/pull/549 [#552]: https://github.com/GravityPDF/mpdf/issues/552 @@ -926,3 +933,4 @@ These changes do not change output. [#655]: https://github.com/GravityPDF/mpdf/pull/655 [#543]: https://github.com/GravityPDF/mpdf/issues/543 [#656]: https://github.com/GravityPDF/mpdf/pull/656 +[#654]: https://github.com/GravityPDF/mpdf/pull/654 diff --git a/src/Css/CssMerger.php b/src/Css/CssMerger.php index 980fbc64c..54fb666f8 100644 --- a/src/Css/CssMerger.php +++ b/src/Css/CssMerger.php @@ -869,11 +869,8 @@ protected function mergeInheritedBlockProperties($inherit, $tag) unset($saved['textshadow']); $converted = $this->inlinePropertyConverter->convert($saved); } else { - // Text decorations and vertical-align are not inherited, but child blocks still take them (#544) - $converted = InheritedProperties::of( - $this->inlinePropertyConverter->convert($saved), - array_merge(InheritedProperties::TEXT, ['TEXT-DECORATION', 'VERTICAL-ALIGN']) - ); + // Text decorations propagate as a set of their own (TextDecorations), and vertical-align is not inherited + $converted = InheritedProperties::of($this->inlinePropertyConverter->convert($saved), InheritedProperties::TEXT); } $this->cssProperties = array_merge($this->cssProperties, $converted); // mPDF 5.7.1 } diff --git a/src/Css/TextDecorations.php b/src/Css/TextDecorations.php new file mode 100644 index 000000000..bb3ba3aaa --- /dev/null +++ b/src/Css/TextDecorations.php @@ -0,0 +1,99 @@ + 'u-decoration', + TextVars::FD_LINETHROUGH => 's-decoration', + TextVars::FD_OVERLINE => 'o-decoration', + ]; + + /** + * Under CssMode::STANDARD, starts an element's text with the decorations of the element it is in, or with none when + * the element is floated, positioned out of the flow or an inline block. Call it before Mpdf::setCSS() adds the + * element's own. + * + * @param Mpdf $mpdf + * @param array $properties The element's merged CSS + * @param array|null $parent The text state of the element it is in, as Mpdf::saveInlineProperties() saves it, or + * null when that is the current text state + */ + public static function enter(Mpdf $mpdf, array $properties, $parent = null) + { + if ($mpdf->cssMode === CssMode::LEGACY) { + return; + } + + $propagate = self::propagateInto($properties); + if ($propagate && $parent === null) { + return; + } + + foreach (self::PARAMETERS as $bit => $parameter) { + if ($propagate && isset($parent['textvar'], $parent['textparam'][$parameter]) && ($parent['textvar'] & $bit)) { + $mpdf->textvar |= $bit; + $mpdf->textparam[$parameter] = $parent['textparam'][$parameter]; + } else { + $mpdf->textvar &= ~$bit; + unset($mpdf->textparam[$parameter]); + } + } + } + + /** + * Whether the decorations an element sets are seen. Under CssMode::STANDARD a decoration is drawn in the colour of + * the element that sets it, so an element whose color is transparent draws its own unseen, and the decorations it + * is in stay drawn over its text. + * + * @param Mpdf $mpdf + * @param array $properties The element's merged CSS + * + * @return bool + */ + public static function seen(Mpdf $mpdf, array $properties) + { + return $mpdf->cssMode === CssMode::LEGACY + || !isset($properties['COLOR']) + || strtolower(trim($properties['COLOR'])) !== 'transparent'; + } + + /** + * @param array $properties An element's merged CSS + * + * @return bool Whether the element takes the decorations of the element it is in + */ + private static function propagateInto(array $properties) + { + $float = isset($properties['FLOAT']) ? strtolower($properties['FLOAT']) : ''; + $position = isset($properties['POSITION']) ? strtolower($properties['POSITION']) : ''; + $display = isset($properties['DISPLAY']) ? strtolower($properties['DISPLAY']) : ''; + + return !in_array($float, ['left', 'right'], true) + && !in_array($position, ['absolute', 'fixed'], true) + && !in_array($display, ['inline-block', 'inline-table'], true); + } +} diff --git a/src/Mpdf.php b/src/Mpdf.php index ff694e2b4..0bc7a701c 100644 --- a/src/Mpdf.php +++ b/src/Mpdf.php @@ -10,6 +10,7 @@ use Mpdf\Css\InheritedProperties; use Mpdf\Css\RelativeFontValues; use Mpdf\Color\IccProfile; +use Mpdf\Css\TextDecorations; use Mpdf\Css\TextVars; use Mpdf\Fonts\Color\ColorFormats; use Mpdf\Fonts\FontRegistry; @@ -20057,7 +20058,7 @@ function setCSS($arrayaux, $type = '', $tag = '') }//end of foreach // mPDF 5.7.3 inline text-decoration parameters // Needs to be set at the end - after vertical-align = super/sub, so that textparam['text-baseline'] is set - if (isset($arrayaux['TEXT-DECORATION'])) { + if (isset($arrayaux['TEXT-DECORATION']) && TextDecorations::seen($this, $arrayaux)) { $v = $arrayaux['TEXT-DECORATION']; // none underline line-through (strikeout) // Does not support: blink if (stristr($v, 'LINE-THROUGH')) { $this->textvar = ($this->textvar | TextVars::FD_LINETHROUGH); @@ -20095,7 +20096,8 @@ function setCSS($arrayaux, $type = '', $tag = '') $this->textparam['o-decoration']['fontsize'] = $this->FontSize; $this->textparam['o-decoration']['color'] = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG } - if (stristr($v, 'NONE')) { + // Under standard the element has no decoration of its own, and those it is in still propagate to it + if ($this->cssMode === CssMode::LEGACY && stristr($v, 'NONE')) { $this->textvar = ($this->textvar & ~TextVars::FD_UNDERLINE); $this->textvar = ($this->textvar & ~TextVars::FD_LINETHROUGH); $this->textvar = ($this->textvar & ~TextVars::FD_OVERLINE); diff --git a/src/Tag/BlockTag.php b/src/Tag/BlockTag.php index ea7a3b25b..e3e4cb97f 100644 --- a/src/Tag/BlockTag.php +++ b/src/Tag/BlockTag.php @@ -9,6 +9,7 @@ use Mpdf\Conversion\DecToOther; use Mpdf\Conversion\DecToRoman; use Mpdf\Css\InheritedProperties; +use Mpdf\Css\TextDecorations; use Mpdf\CssMode; use Mpdf\Mpdf; use Mpdf\Shaper\OtlData; @@ -142,6 +143,7 @@ public function open($attr, &$ahtml, &$ihtml) $this->mpdf->InlineProperties['BLOCKINTABLE'] = $this->mpdf->saveInlineProperties(); $properties = $this->cssManager->MergeCSS('', $tag, $attr); + TextDecorations::enter($this->mpdf, $properties); if (!empty($properties)) { $this->mpdf->setCSS($properties, 'INLINE'); } @@ -544,10 +546,12 @@ public function open($attr, &$ahtml, &$ihtml) } } + // The text state it inherits, the parent block's or the inline elements' it is opened in + $inherited = InheritedProperties::blockTextState($this->mpdf->blk, $this->mpdf->blklvl - 1); + TextDecorations::enter($this->mpdf, $properties, $inherited !== null ? $inherited : []); $this->mpdf->setCSS($properties, 'BLOCK', $tag); //name(id/class/style) found in the CSS array! if ($this->mpdf->cssMode !== CssMode::LEGACY) { // A link around the block covers its text - $inherited = InheritedProperties::blockTextState($this->mpdf->blk, $this->mpdf->blklvl - 1); $this->mpdf->HREF = isset($inherited['HREF']) ? $inherited['HREF'] : ''; } $currblk['InlineProperties'] = $this->mpdf->saveInlineProperties(); diff --git a/src/Tag/InlineTag.php b/src/Tag/InlineTag.php index c599f1c6d..a678d34c9 100644 --- a/src/Tag/InlineTag.php +++ b/src/Tag/InlineTag.php @@ -2,6 +2,7 @@ namespace Mpdf\Tag; +use Mpdf\Css\TextDecorations; use Mpdf\Mpdf; use Mpdf\Utils\UtfString; @@ -53,6 +54,7 @@ public function open($attr, &$ahtml, &$ihtml) } // *ANNOTATIONS* $properties = $this->cssManager->MergeCSS('INLINE', $tag, $attr); + TextDecorations::enter($this->mpdf, $properties); if (!empty($properties)) { $this->mpdf->setCSS($properties, 'INLINE'); } diff --git a/tests/Mpdf/TextDecorationPropagationTest.php b/tests/Mpdf/TextDecorationPropagationTest.php new file mode 100644 index 000000000..a1f5c797d --- /dev/null +++ b/tests/Mpdf/TextDecorationPropagationTest.php @@ -0,0 +1,448 @@ + ['block', '

qq

'], + 'block to inline element' => ['inline', '
zz qq
'], + 'inline element to inline element' => ['inline', '

zz yy qq

'], + 'list to item' => ['block', ''], + 'list item to child block' => ['block', ''], + 'body to block' => ['block', '

qq

'], + 'header block to child block' => ['block', '

qq

body

'], + 'footer block to child block' => ['block', '

qq

body

'], + 'kept block to child block' => ['block', '{FILLER}

zz

qq

'], + 'block to child block after a forced page break' => ['block', '

zz

qq

'], + 'positioned block to child block' => ['block', '

qq

'], + 'cell to child block' => ['inline', '
qq
'], + 'cell to inline element' => ['inline', '
zz qq
'], + ]; + + /** + * Each decoration the ancestor sets reaches the descendant's text. Under standard it is drawn as the ancestor draws + * it; under legacy a child block draws it in its own colour and size, and loses an overline + * + * @dataProvider decorationsInContexts + * + * @param string $mode + * @param string $context + * @param string $decoration + */ + public function testTheAncestorsDecorationIsDrawnOverTheDescendant($mode, $context, $decoration) + { + $drawn = $this->decorationsOfQq($mode, $context, 'color: #f00; text-decoration: ' . $decoration, 'color: #00f; font-size: 16pt'); + + if ($mode === CssMode::STANDARD || self::CONTEXTS[$context][0] === 'inline') { + $expected = [$decoration => [self::RED, self::ANCESTOR_SIZE]]; + } else { + $expected = $decoration === 'overline' ? [] : [$decoration => [self::BLUE, self::DESCENDANT_SIZE]]; + } + + $this->assertSame($expected, $drawn); + } + + /** + * text-decoration: none on the descendant leaves the ancestor's decoration drawn over it under standard, and + * removes it under legacy + * + * @dataProvider decorationsInContexts + * + * @param string $mode + * @param string $context + * @param string $decoration + */ + public function testNoneOnTheDescendantRemovesOnlyItsOwn($mode, $context, $decoration) + { + $drawn = $this->decorationsOfQq($mode, $context, 'color: #f00; text-decoration: ' . $decoration, 'text-decoration: none'); + + $this->assertSame($mode === CssMode::STANDARD ? [$decoration => [self::RED, self::ANCESTOR_SIZE]] : [], $drawn); + } + + /** + * The descendant's own decoration is drawn with the ancestor's under standard, each in the colour of the element + * that set it. Under legacy a child block's own decoration replaces the one it inherits + * + * @dataProvider contextsInModes + * + * @param string $mode + * @param string $context + */ + public function testTwoDecorationsStack($mode, $context) + { + $drawn = $this->decorationsOfQq($mode, $context, 'color: #f00; text-decoration: underline', 'color: #00f; text-decoration: line-through'); + + $expected = [ + 'underline' => [self::RED, self::ANCESTOR_SIZE], + 'line-through' => [self::BLUE, self::ANCESTOR_SIZE], + ]; + if ($mode === CssMode::LEGACY && self::CONTEXTS[$context][0] === 'block') { + unset($expected['underline']); + } + + $this->assertSame($expected, $drawn); + } + + /** + * Where the descendant sets the same decoration as its ancestor, its own is drawn: mPDF draws one line of each kind + * + * @dataProvider contextsInModes + * + * @param string $mode + * @param string $context + */ + public function testTheDescendantsOwnDecorationOfTheSameKindIsDrawn($mode, $context) + { + $drawn = $this->decorationsOfQq($mode, $context, 'color: #f00; text-decoration: underline', 'color: #00f; text-decoration: underline'); + + $this->assertSame(['underline' => [self::BLUE, self::ANCESTOR_SIZE]], $drawn); + } + + /** + * A descendant with no decoration anywhere around it is drawn with none + * + * @dataProvider contextsInModes + * + * @param string $mode + * @param string $context + */ + public function testNoDecorationIsDrawnWhereNoneIsSet($mode, $context) + { + $this->assertSame([], $this->decorationsOfQq($mode, $context, 'color: #f00', 'color: #00f')); + } + + /** + * Every decoration in every context, under both modes + * + * @return array[] + */ + public function decorationsInContexts() + { + $data = []; + foreach ($this->contextsInModes() as $name => $case) { + foreach (['underline', 'line-through', 'overline'] as $decoration) { + $data[$name . ': ' . $decoration] = [$case[0], $case[1], $decoration]; + } + } + + return $data; + } + + /** + * Every context, under both modes + * + * @return array[] + */ + public function contextsInModes() + { + $data = []; + foreach ([CssMode::STANDARD, CssMode::LEGACY] as $mode) { + foreach (array_keys(self::CONTEXTS) as $context) { + $data[$mode . ': ' . $context] = [$mode, $context]; + } + } + + return $data; + } + + /** + * The decorations drawn over qq, which is inside the underlined element in each document, but out of its flow or + * in a table + * + * @dataProvider nearMisses + * + * @param string $html + * @param array $standard What is drawn over qq under standard + * @param array $legacy What is drawn over qq under legacy + */ + public function testDecorationsDoNotPropagateOutOfTheFlow($html, array $standard, array $legacy) + { + foreach ([CssMode::STANDARD => $standard, CssMode::LEGACY => $legacy] as $mode => $expected) { + $this->assertSame($expected, $this->drawnDecorations($html, $mode)['qq'], $mode); + } + } + + /** + * Floats, positioned blocks, inline blocks and tables inside an underlined element, each with a case that sets a + * decoration of its own and one in the flow beside it + * + * @return array[] + */ + public function nearMisses() + { + $underline = ['underline' => [self::RED, self::ANCESTOR_SIZE]]; + $ownUnderline = ['underline' => [self::BLUE, self::ANCESTOR_SIZE]]; + $ancestor = 'color: #f00; text-decoration: underline'; + + return [ + 'a float' => ['
qq
zz
', [], $ownUnderline], + 'a right float' => ['
qq
zz
', [], $ownUnderline], + 'a block inside a float' => ['

qq

zz
', [], $ownUnderline], + 'a float with its own underline' => ['
qq
zz
', $ownUnderline, $ownUnderline], + 'a block beside a float' => ['
zz

qq

', $underline, $underline], + 'a positioned block inside an underlined body' => ['
qq
', [], []], + 'a positioned block inside an underlined block' => ['
qq
', [], $ownUnderline], + 'a relatively positioned block' => ['
qq
', $underline, $underline], + 'an inline block' => ['

zz qq

', [], $underline], + 'an inline block with its own underline' => ['

zz qq

', $ownUnderline, $ownUnderline], + 'the text after an inline block' => ['

zz qq

', $underline, $underline], + 'a block set to display as an inline block' => ['
qq
', [], $ownUnderline], + 'a float in a cell' => ['
zz
qq
', [], $underline], + 'an inline block in a cell' => ['
zz qq
', [], $underline], + 'a table' => ['
qq
', [], []], + 'a table nested in a cell' => ['
zz
qq
', [], []], + 'a cell with its own underline' => ['
qq
', $ownUnderline, $ownUnderline], + ]; + } + + /** + * A link set to no decoration inside an underlined paragraph still has the paragraph's underline drawn under it, + * as in a browser. A link on its own has its underline in its own colour + */ + public function testALinkWithNoDecorationKeepsTheParagraphsUnderline() + { + $html = '' + . '

zz qq

' + . '

yy xx

'; + + $standard = $this->drawnDecorations($html, CssMode::STANDARD); + $this->assertSame(['underline' => [self::RED, self::ANCESTOR_SIZE]], $standard['qq']); + $this->assertSame(['underline' => [self::BLUE, self::ANCESTOR_SIZE]], $standard['xx']); + + $legacy = $this->drawnDecorations($html, CssMode::LEGACY); + $this->assertSame([], $legacy['qq']); + $this->assertSame(['underline' => [self::BLUE, self::ANCESTOR_SIZE]], $legacy['xx']); + } + + /** + * Under standard an element whose colour is transparent draws its own decoration unseen, so none is added for it, + * and the decorations of the elements it is in are drawn over its text in their colour. Under legacy the element's + * own decoration is drawn in the colour its text had before + * + * @dataProvider transparentElements + * + * @param string $html + * @param array $standard What is drawn over qq under standard + * @param array $legacy What is drawn over qq under legacy + */ + public function testATransparentElementsOwnDecorationIsNotSeen($html, array $standard, array $legacy) + { + foreach ([CssMode::STANDARD => $standard, CssMode::LEGACY => $legacy] as $mode => $expected) { + $this->assertSame($expected, $this->drawnDecorations($html, $mode)['qq'], $mode); + } + } + + /** + * An inline element and a block, each transparent, setting a decoration of their own or none + * + * @return array[] + */ + public function transparentElements() + { + $struck = ['line-through' => [self::RED, self::ANCESTOR_SIZE]]; + $underlined = ['underline' => [self::RED, self::ANCESTOR_SIZE]]; + // Legacy reads transparent as no colour, and the block keeps the black it was reset to + $blackUnderline = ['underline' => [self::BLACK, self::ANCESTOR_SIZE]]; + + return [ + 'an inline element with its own underline' => [ + '

zz qq

', + $struck, + $underlined + $struck, + ], + 'an inline element under an underline' => [ + '

zz qq

', + $underlined, + $underlined, + ], + 'a block with its own underline' => [ + '

qq

', + $struck, + $blackUnderline, + ], + 'a block under an underline' => [ + '

qq

', + $underlined, + $blackUnderline, + ], + ]; + } + + /** + * The decoration's thickness and position come from the font of the element that set it, and the text after a + * descendant set to none is still decorated + */ + public function testThePropagatedDecorationKeepsTheAncestorsFont() + { + $html = '

qq

zz yy

'; + + $standard = $this->drawnDecorations($html, CssMode::STANDARD); + $this->assertSame(['underline' => [self::BLACK, 7.06]], $standard['qq']); + $this->assertSame(['underline' => [self::BLACK, 7.06]], $standard['yy']); + + $legacy = $this->drawnDecorations($html, CssMode::LEGACY); + $this->assertSame([], $legacy['qq']); + $this->assertSame(['underline' => [self::BLACK, 7.06]], $legacy['yy']); + } + + /** + * A block's vertical-align does not reach its child blocks under standard, as vertical-align is not inherited. The + * block's own text is still raised, and an inline element inside it still raises its text + */ + public function testAChildBlockTakesNoVerticalAlign() + { + $html = '
zz

qq

yy xx

'; + + foreach ([CssMode::STANDARD => 0, CssMode::LEGACY => TextVars::FA_SUPERSCRIPT] as $mode => $raised) { + $textVars = $this->keyedByText($mpdf = $this->drawDocument($html, ['cssMode' => $mode]), $mpdf->drawnTextVars); + + $this->assertSame(TextVars::FA_SUPERSCRIPT, $textVars['zz'] & TextVars::FA_SUPERSCRIPT, $mode); + $this->assertSame($raised, $textVars['qq'] & TextVars::FA_SUPERSCRIPT, $mode); + $this->assertSame(TextVars::FA_SUPERSCRIPT, $textVars['xx'] & TextVars::FA_SUPERSCRIPT, $mode); + } + } + + /** + * enter() replaces the decorations of the text state with those that are on in the parent's, and leaves the rest of + * the state alone. An element out of the flow starts with none + */ + public function testEnterStartsFromTheParentsDecorations() + { + $underline = ['color' => self::RED, 'fontkey' => 'ptsans', 'fontsize' => 3.88, 'baseline' => 0]; + $overline = ['color' => self::BLUE, 'fontkey' => 'ptsans', 'fontsize' => 3.88, 'baseline' => 0]; + $parent = [ + 'textvar' => TextVars::FD_UNDERLINE | TextVars::FA_SUPERSCRIPT, + 'textparam' => ['u-decoration' => $underline, 'o-decoration' => $overline, 'text-baseline' => 1], + ]; + + $mpdf = new Mpdf(['mode' => 'c']); + $mpdf->textvar = TextVars::FD_LINETHROUGH | TextVars::FC_SMALLCAPS; + $mpdf->textparam = ['s-decoration' => $overline, 'hyphens' => 1]; + + TextDecorations::enter($mpdf, [], $parent); + + $this->assertSame(TextVars::FD_UNDERLINE | TextVars::FC_SMALLCAPS, $mpdf->textvar); + $this->assertSame(['hyphens' => 1, 'u-decoration' => $underline], $mpdf->textparam); + + TextDecorations::enter($mpdf, ['FLOAT' => 'Left'], $parent); + + $this->assertSame(TextVars::FC_SMALLCAPS, $mpdf->textvar); + $this->assertSame(['hyphens' => 1], $mpdf->textparam); + } + + /** + * With no parent state given, the current one is the parent's: an element in the flow keeps its decorations and one + * out of it starts with none + */ + public function testEnterWithoutAParentStateStartsFromTheCurrentOne() + { + $mpdf = new Mpdf(['mode' => 'c']); + $mpdf->textvar = TextVars::FD_LINETHROUGH | TextVars::FC_SMALLCAPS; + $mpdf->textparam = ['s-decoration' => ['color' => self::RED], 'hyphens' => 1]; + + TextDecorations::enter($mpdf, ['DISPLAY' => 'inline']); + + $this->assertSame(TextVars::FD_LINETHROUGH | TextVars::FC_SMALLCAPS, $mpdf->textvar); + $this->assertSame(['s-decoration' => ['color' => self::RED], 'hyphens' => 1], $mpdf->textparam); + + TextDecorations::enter($mpdf, ['DISPLAY' => 'inline-block']); + + $this->assertSame(TextVars::FC_SMALLCAPS, $mpdf->textvar); + $this->assertSame(['hyphens' => 1], $mpdf->textparam); + } + + /** + * Under legacy enter() leaves the text state as it is + */ + public function testEnterLeavesTheStateAloneUnderLegacy() + { + $mpdf = new Mpdf(['mode' => 'c', 'cssMode' => CssMode::LEGACY]); + $mpdf->textvar = TextVars::FD_LINETHROUGH; + $mpdf->textparam = ['s-decoration' => ['color' => self::RED]]; + + TextDecorations::enter($mpdf, ['FLOAT' => 'left'], ['textvar' => 0, 'textparam' => []]); + + $this->assertSame(TextVars::FD_LINETHROUGH, $mpdf->textvar); + $this->assertSame(['s-decoration' => ['color' => self::RED]], $mpdf->textparam); + } + + /** + * The decorations drawn over qq in a context + * + * @param string $mode + * @param string $context + * @param string $ancestor The ancestor's declarations + * @param string $descendant The descendant's declarations + * + * @return array[] + */ + private function decorationsOfQq($mode, $context, $ancestor, $descendant) + { + $html = strtr(self::CONTEXTS[$context][1], [ + '{A}' => $ancestor, + '{D}' => $descendant, + // Too little of the first page is left for the kept block, which is laid out again on the second + '{FILLER}' => str_repeat('

filler

', 44), + ]); + + $decorations = $this->drawnDecorations($html, $mode); + $this->assertArrayHasKey('qq', $decorations); + + return $decorations['qq']; + } + + /** + * The decorations drawn over each piece of text in a document, in core-font mode + * + * @param string $html + * @param string $mode + * + * @return array[] For each piece of text, trimmed, each decoration drawn over it: [colour operator, font size in + * millimetres to two places] + */ + private function drawnDecorations($html, $mode) + { + $mpdf = $this->drawDocument($html, ['cssMode' => $mode]); + $mpdf->Close(); + + return $this->keyedByText($mpdf, array_map(function (array $decorations) { + return array_map(function (array $decoration) { + return [$decoration['color'], round($decoration['fontsize'], 2)]; + }, $decorations); + }, $mpdf->drawnDecorations)); + } +} diff --git a/tests/Mpdf/TextRecordingMpdf.php b/tests/Mpdf/TextRecordingMpdf.php index 9ccb70827..5b7712b65 100644 --- a/tests/Mpdf/TextRecordingMpdf.php +++ b/tests/Mpdf/TextRecordingMpdf.php @@ -53,6 +53,12 @@ class TextRecordingMpdf extends UnwindCountingMpdf /** The TextVars bits each of those lines was drawn with, in the same order. */ public $drawnTextVars = []; + /** + * The text decorations each of those lines was drawn with, in the same order: for each of underline, line-through + * and overline drawn, the colour operator, font, font size and baseline shift of the element that set it + */ + public $drawnDecorations = []; + /** Whether to record $bufferedStates, which costs a copy of the text state for each piece of text. */ public $recordBufferedStates = false; @@ -110,6 +116,7 @@ function Cell($w, $h = 0, $txt = '', $border = 0, $ln = 0, $align = '', $fill = $this->drawnFontStyles[] = $this->FontStyle; $this->drawnShadows[] = $this->textshadow; $this->drawnTextVars[] = $textvar; + $this->drawnDecorations[] = $this->decorationsDrawn($textvar); } return parent::Cell($w, $h, $txt, $border, $ln, $align, $fill, $link, $currentx, $lcpaddingL, $lcpaddingR, $valign, $spanfill, $exactWidth, $OTLdata, $textvar, $lineBox); @@ -129,6 +136,30 @@ private function whereDrawing() return $this->writingHTMLfooter ? 'footer' : ($this->writingHTMLheader ? 'header' : ''); } + /** + * The text decorations Cell() draws with the TextVars bits given, as it reads them from the text parameters + * + * @param int $textvar + * + * @return array[] Keyed by the decoration's name + */ + private function decorationsDrawn($textvar) + { + $decorations = []; + $names = [ + Css\TextVars::FD_UNDERLINE => 'underline', + Css\TextVars::FD_LINETHROUGH => 'line-through', + Css\TextVars::FD_OVERLINE => 'overline', + ]; + foreach (Css\TextDecorations::PARAMETERS as $bit => $parameter) { + if ($textvar & $bit) { + $decorations[$names[$bit]] = $this->textparam[$parameter]; + } + } + + return $decorations; + } + /** * @param int $i Which recorded Cell() call, from 0 * diff --git a/tests/Snapshots/DecorationsAmendmentLegacySnapshotTest.php b/tests/Snapshots/DecorationsAmendmentLegacySnapshotTest.php new file mode 100644 index 000000000..512dce956 --- /dev/null +++ b/tests/Snapshots/DecorationsAmendmentLegacySnapshotTest.php @@ -0,0 +1,21 @@ +cascade(); + } + + /** + * The amendment, each part under a caption saying what the standard and the legacy cascade draw + */ + public function generatePdf() + { + ob_start(); + ?> + + +

Amendment No. 3 to the Supply Agreement

+

Written with cssMode set to cascade(); ?>.

+ +

Clause 4.2 [ref 4.2-b]

+

The heading is overlined and the code in it sets text-decoration: none. Standard: the heading's line runs over the code too. Legacy: it stops at the code.

+ +

The withdrawn clause is struck through in red. Its link and its italic note set text-decoration: none. Standard: both are struck through with the clause's red line. Legacy: neither is struck through.

+
+

The Supplier shall deliver within fourteen days as set out in the delivery schedule.

+

Withdrawn by agreement of both parties.

+
+ +

Clause 4.3 [new]

+

The inserted clause is underlined in green. Standard: its paragraphs and list items are underlined in the clause's green, the link too, and the floated margin note and the fees table are not. Legacy: the paragraphs and items are underlined, the link is not, and the margin note is.

+
+
Margin note: this clause replaces 4.2 from 1 October.
+

The Supplier shall deliver within ten working days of each order, as set out in the revised schedule.

+
    +
  • Orders placed before noon count from that day
  • +
  • Public holidays are not working days
  • +
+ + + + +
DeliveryFee
Standardincluded
Express45.00
+
+ mpdf = $this->createMpdf(['cssMode' => $this->cascade()]); + + $this->mpdf->WriteHTML($html); + } + +} diff --git a/tests/Snapshots/DecorationsAmendmentStandardSnapshotTest.php b/tests/Snapshots/DecorationsAmendmentStandardSnapshotTest.php new file mode 100644 index 000000000..42bdfa8f8 --- /dev/null +++ b/tests/Snapshots/DecorationsAmendmentStandardSnapshotTest.php @@ -0,0 +1,21 @@ + + + +

Text decorations propagate

+ +

underline on a red div. The paragraph inside is blue and 16pt, and has the div's thin red underline.

+
+

A large blue paragraph in an underlined div

+
+ +

A link set to text-decoration: none in an underlined red paragraph. The link is blue, with the paragraph's red underline under it.

+

Read the terms of service before you sign

+ +

text-decoration: none on a paragraph in an underlined div. The paragraph is still underlined.

+
+

A paragraph set to none in an underlined div

+
+ +

underline on a red div and line-through on a blue paragraph in it. The paragraph has a red underline and a blue line through it.

+
+

Underlined by the div, struck through by itself

+
+ +

overline on a list. Each item has a line over it.

+
    +
  • First item
  • +
  • Second item
  • +
+ +

A float in an underlined div. The text beside the float is underlined; the float's text, in the grey box, is not.

+
+
Floated text, not underlined
+ Text in the flow, underlined +
+
+ +

An inline block in an underlined paragraph. The words around it are underlined; the inline block's are not.

+

Before the inline block inside the inline block after it

+ +

A table in an underlined div. The cells are not underlined.

+
+
First cellSecond cell
+
+ +

vertical-align: super on a div. The paragraph inside it sits on the baseline, not raised.

+
+

A paragraph on the baseline

+
+ mpdf = $this->createMpdf(); + + $this->mpdf->WriteHTML($html); + } + +} diff --git a/tests/data/snapshots/decorations-amendment-legacy.pdf b/tests/data/snapshots/decorations-amendment-legacy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..80136f2af0a0f5845b102dc72d7328a9d58df8a6 GIT binary patch literal 82108 zcmeFZcOcg9_b^Ta*-A-@TauM|FFTP~~F@7L=Z=Q`(H=Q`K9&g+~Pz5GQnR!%kqKK-Ym=5~BIj00w) zZ;sE;&#vrZYXoDL*E2D~2jBKa){ZbvP^*Z~E^B0HrYCIU4AbNQ1xOww8y7bRj2pqp z#?8Z_jnA%ZZ)UY!&Bnn2nqaDJEU~|>pz{ml{wGCI?-sY+;jGrI2Gxqj9yArs! z*Ryu8g^)0Cfw7B#l8Z*y%nXba#f4#lf-rpc3)a>)jt($Q7!m>nLt(zPL4}BowIe{? z0fvBz1O@SptPLRoq1zooWsIy%98F<79Go1W-oeq{NY4r%W(OKL!Qk9zHZD#y42eXu zaiftis~;s?Xh0VVW(n%J*w84zh~G|&fS&TW1x8^c7E z@i{TPHvw&+nGnZk7gyqhnK*p!!vRya$Jf*bv>JY|!@%K!aiTDNw&6f{a$+$2@ojGc z1O1fkVW0zoiw()e0Yh_xW;`gEvLOt{h;;$W3d;z~8q09!*AWYbbqUJ`iw*q3!N(C? zL*J&L6%0!W>nfHl__M@v0e2U$Ot9=hxzTQ4CYZ80pa@XCOT(Y&{izNPL$e_P**{1? zaDjPeLm(kmBX~FftA8f}g z5=)p8)D0toKpf2>k%Yl^O|c zP7EuSK9=?_LI0o21t&KfHy6(iZxjo=NRBi<7 zVW1VX5Ppce!FS1l+CV)a>DiVd2nHl^&fuFBBVSN!djP``w6g*2c|i+n%#{&lIVpjf z?Gf}qJ3~zU?!x*RM+OXryO_a1>#G3LUabFwBP7+^3s(lai;#5KEyN=vNO@ZvgI~>4t=2 zS4jSMh=@K0CWIX%HrufOiiTZI>=lt8N(PA5zn*XuHv*^}&K-_#b7z+)+oJuez(ETN z;tV9#_82Zfy!tEN|4Z?KL>0{eY!WsujKD(QdzI79UWY=W*w8$`%F2&j%xnig2Y@Lw zi(W0%c+2j6gY(O-T}VP_dn*ucQCuGKtS3a7zqEE6+ams zsNZ)xI2>ZokMF%~+7&1`7aN>wSD@5(gnX~k(Z`rZdO)H4WEueu+F(K3;*aHQi&@an zZeawt`<)^GVw3#uED$6&Hyer@xwD*qw?N?kwFQFYL9_92K^FL~aj;wRw_^G~u|R$% zNE56|BVYvnAG11;XapMqwW}U?tqy3}L#kj~RX|q7pSB}tUx(J(&vwYR%Gi}4>;Gsy z>~2EalC&*zdSHh)#VDfPtqM|Rkm}vutRQ23TUl*yCVz#&u642(^KIMY2X5y8+}(CR zw#jW<1ghJ`VyDg8KCliT>jP+#pLNJTu=|m~?niR$+ILo%^<%Q5V1I1Azl;c09dty2 zXoj|GeMoy@@Y<$-yB~Di`E?W9rRuM_3(dhl;pw0Gv~84ZO6%aMf>4INgXgBI9J!RdLg(u4DW0}dPoLn07tJlwkyF8fEEAUhM{*fvFbB?huz zjWCBs=&ZFp6FVmzFgK9-Wwk2_;AHv>Iy>7U9LcqJTilBnoP!f693%ob0iXjuKou(a zTZMz!7k?S-kF>)9K-8|b%igyBP85KdqYL7tL5MHt7(cc%wF%yirDvFo$= z6Jhw^@CiOr7?8XDkvv?0nxAliion21`1lF{S1w?}IDPkXfP*MLIW6yJN_8*UrQ7M94~iWbvtu`Df%I# ze@Vse`uHKi+n%*uPup+xdpvA^<+1uZov~viBEc^woa>hp>i^)>@we&`f%wy@0SUal zT-?x_cP9cW+J-pwJa19Kq! zw{-p(aFCcQ?4dIko=xx_Nl7kC8quBL}%YBzcND3jR{kHuDokbwq1#)Hl zuz?|uC3HrC1i%{DH?UpX3|v8W-L}UNvugjXEbqaNlam{W1Mp1)A2^T)fGF?1CMWZz2`d*R#0Gn1a1{12MRn(f>h@B0$>q< zxHy3^1$>_zpdLKy;lecEzBRxHClf9%U@7m`!`Tp+`kmgpx7*M`^W6df2Qc7!Z*Y>_ z3w`?*G~XS4r+ydNo!+~*JJ4aqz}otkqJsca!u8$6mj^-s9hA&~K)}G{+hDHudb)lH z4kRl7o0R*Gpdf&0gn&afI zijcd4vU~eoP<9J;1mSz{ZMoQm{#{VO`HT$-Sh6E12%rGbd!X;!eixMQ_1lv1z4z|z zHtq&L3Cga(z_yM206sWfa`EgQgnxOU^E-Ke2bB}( zKQzR(pTI&E5_EpPim@d2cu95%_&cz>$Z~;g?EA(p3Z7KiV)Q+DCi*`>^(UYREF^GF zabR)$4iFe+7|%T9Z-$PyJTOIZd|+~LbHHH;G?I-IC{=Lu-6;URVd$ATSl^f<;V;Ej zFdk4378hbqyWOJiuyzafwAqF8TbrE%XuRDvJKcWZ1P5+X;1S;2W~b-}K6~2yGW;Lg z{5IAvo&Gr1ZYM6_o903PgwIaVkFoZ&*#-R@&U@PIg8r?|AL#mxhkN+EJJxp|asqb@ z4+`@?Lz;((H{{1KHhGx zJ^cQq2pr6I`Lw6e_p}%VsU;7Cc;GNz}S_p z>N{eBi)75KEnw`5Mh1>B&F{~OAOjgVV-Vk;$pE_q4%ddUUy_9}g0nU!EBFFRfgRjl zCE&jqJB0lsG`=3m~otiX>7|l-&MeG<9^eb>L-ZH*(gq zvb8i~GqAB@cQ7zDGQ4VO!~_C?e#8nv(M124j@{z};1nku38H9r?R^w*gd%?-gY*9+ z8Jxe80mXJX;Im7c8G^_uDDq1Y2BNn_Y_39~UVj_r^@Bg?Ujd6cJBlkg>N$eQF=1IS zaW?i=dY1U?26_-!kqhAaM`sWO@-uVAK*SdQ4;g{N&^Q1bJqIJG224AMSi5k6<)V?f zp6XR4BYQJr5aVTNWbI%CLYPFY4Qvd}tW99-lAy@Z%+ZBa0v`m6IT!$$)U$SkKmcOF zwgFRwBGqhEtj$0VBjAmIiuT|IHTh}Mf5A&c@*-3Mp~v-)(F2{7TpS#YtR$_CZD5?x zjDUDL2o8jzy_v0}jXj9`*)G1Q2K)|ybTtsx20T8R;An$_!NJ2I1UM|9L6{E`7(>t* zk{kG>xe#a=9Lb6KAb?d1)nnR&D4*?LIG9{u?1EmHj!1CD1A~Jd6C4^*T$m0hI2Z*1 zygEF<=YaxHP+&9^6zl_@(4#;{Xxl}Dy%G(4%WyC<9O?_OK!R8v9?%BOjfSD&;LHI| z=9pjLYeR8@6Aplf1|vc+p@(=V1SjZ&0Pr9<0Be8-^b27PVGn(f(8B>>cOd}60c=9(MC5FtT1@Q`h{fowMLY#4fc25}8j#{pd1aOT& zZ*vhEAL1r7KHw6x3M4No+lWhEl-09^abniS9@)SM%g@n+a0Cj-^p5_6dP`cH0b!N5 zw=qyMa)cS1SsU8##5=lc`fiYeH zv5Q7b`0R3!a)ZR2QAI=v+$&wR1uD!6iqYf%c)|>gi~$^g`z1Xq5X6b;#`=9lfIdH3 zV8T2BDxe4FHZIV50Kt|9Mj+@C1b^~FnpF_SF9!Z$!Y6;J-|3}q{Jl9B)SQC@Er$64 zchJ_bTMsTVWPZoa;Ho_oT#DfZ24@HtGi#&o?6S47g#chazi%>_MYJ;)|C&({IH)gX z$^Ew4f2_&vHM-5rztTS-HdW77!pO|T)Df&19()-4<()fld;@pTN*Bh2#s|%3Ias;b|8{BLwFh>|G7aRp{WsLMNN{$0uOFHUV zni*WMHnB7Ua}PFGpj}j9+-PtqYv$kpghb8E5QMivssyTa0qvj=TX{We8wYR+bPZTb zAYvB!11l4JxWFGm5Cqn4lPzXuX#_BYB4+n0NX)AEWf5>7Ko>JhN3iokq&ON~G=iiB zS~@#R!#QrMc~lh-3(Ko@CT>!}*pS}MP?_1+k~OmK=GcaAa==)k!wgk#PpbE~+$AS)`zd`3~A-Z@P<9oAvC*c6xm{^bZ0LO~lW9=LG-$1LuLPK+(;> zCCvju8Gf3GM)yNn$}0U^JWIWNlX&~s?z&>zNnSLn(l($XH#$PPl;)KH5{2!+-G8TB&Kr9si_!FXeiJ;>e0V7x@Gd(p;@3| zDSxYJMr-*dhcF}Qd)N(Q4l3Y2k$TeW9H%a`K-FMW3F)O!hCF|{hP&H&^&#YnXBba~wsF;77iNjj9Wsf3P^z$9@0p z89(R45{v_MhJ=f3BF1)S-CgJ9xT594FOZI4d#LCvzT}V{WBpbo?nRt3hZ>-{Ku#+y~vziHOKIFd1q?62wfwpy3x5ca_(ZmYS5 zNAUil*dktQ#PhlWH{L0)$VhCB_~ow>7IR_2!L&Z`wp51LK67)$w1m^*zS_?d+AGS# zg;=?cGi253W=3anXW@Bt9bD+Rz~30H)BI#1ZExoP!UrNw-pLd&{T=Bw@q^Q!Qk;7Db;z$~jxmrnb*f_XIB1 z3?#H*9d!04=e+!!JnCN1BN=x0cM@u&ckZ&V(YS6bN2Ukl%x{d`&q{Qk`OM_Pes(RY zvF?7mY}aR_*hnK{r;zd_mQGT4hRv2I9-|vC&TrJa3EA|FU7i*ZKO>MgH$XKtcHZv6 z1JT1=sQ!*F*x_|~aq?TP!iJ|$CSi}{zVPuv z5XJD=-F4(`o`p%1&JpXrjp(xjJu%Un*QO?e5^oeo?X#KkM$;gUBLZGEc^zeXZ2}7k z7Lqa3x;ntFWfLCP9pX$*eUg%b`WWTSVqWultI_5d%4jFq5A2u6Ub=+p#BU)t)}A0a z!De-G?y{YpSMiltgGlO9KJ(n>q2;>FYjJX9q1)8Kgp zPz&42ua)baxHiG~P`k)(sOQU*C+`GPeTIx;oz@e)J+cQ%>lsn6=TO#5{ww$K-> z-sx^eD__5nF&-g@HM6fuKJd(qQm;5tMjFAv12qHv8hv!Z+A5kw=I`I!&B)wXU&xd5TxB|FGI%mBC}+&hHCRwI zlwx42fKYSpnuZLzO*Z#lYw(K5uv)peN4sb6n)x>1UdT!}11`uCgWJ)T1Wk%9h zQc-ekGdb_mxk*09s?pJ`)`n9X5m`nx8P&_UE|+!3!5Ud<)y{MB^K+z(bpBXY-fr5@L#5BMIvs!Z zJd*g#ow%a&*AkAkB~+(TdIVF|@0Zn8yiF;tUMDA8Lce&T?m3m=>^{D1OCo}p<5QKw zejWR4OML2eM!#KuPnn2l&3dHGaiSQ_u3c(SyE?b9`dC_xxTSac{2D_FYO?BS#c&4@|XY6>t z(98G-DX=gi{R&(y@@y5`g5$&MqxS1L4mr1!B|2(uw|U|46TQAS*QNedJuT^Zkf=P? zoM}(1Q zxi1)ZTKDS|*{^+*KGom1wmJ1-X2zpv$fx;TLZSPL@)TS~m-udUlZ@`Y&w8}h4-TUk zPZA!fC2H?;=!b=dblusiQG4*%vz2ObdQ6~OY%6g6acFC^xw(afx#~N7x0>74o4Wlq z<&FnE;+m4WwTm{5&s8hvA4r@3DE&ZcS}jY6nETR`$gZz%_mxvmITT)g#^&+>rB1=e z!Q*n}X^4qG?f7_wg-BbwKe4Rz=;d<^0tA=)!Tr8y> zr}V)N8%-q`Q(zM1$6Mo@C#$eM8RaOeR9EgsP*wf#7F!BS$iNcurzP%2f&zId+OOua z2VRs3QdCu2&KDnic)j0dtw-O#N)P7^L%7Jpal9#~uy1@fGLGw9U9ifIToXO8oQXS8 zb!txUTz*0F0fq^jY$@{x)1QJ3%xv7R&Jj)Y)kbyUNBhb+Mynj$&=+)_uAa#w4;^0^ znZEl~dW4BnThz(ol0;}__rBo}{cAHx)2~TCNGY_Z@TDY^RS17@nuOh$!gVrSC|sH> z*D{=aFx_+c1>LeK>HKLs>gz0-w>6`bwt6hS@-%$vm~^%uz8SMvTU#?D>p9)X#_2#NBn&tsblf81&iw|=TOqvE2=<8F)`{SGy?8bXv8HplGjZBa_g^p+zH*F;) zSLU<~xFca`|-UGo!Zd zWVrk~`B%?xbjGvhi``pJ>~QNrakg;=8}!c!$%UPly0&P#L;;t)j%i??K**RZ#UpryHQo0VNO zK~TvaU*fv4`o56BWA@8Z=84761r1D$j3G4)EtMv66;Vt4RuAN+o|%+j*-N$;Xz9W3 zs*0WaMyH||$>2W6(J^pok;-+6gCc3a7i;Rm*b(D6f827D;L}*~vNS1cX+A3g?Vasj z1g+0h%9f92zU(fZ9aFHo_g+0fmysnU#g9id#O{m07f*kjc)Lu`&;&(uV*jg$pI1zW zrV<%Qn5m8`u1CF>8p?cGqh7XT`lxyHL38HpK)PTE7QX65qn@Kq4HStRt3fl<kw?q1d+kCM!{_U`+D8S8Kfz&RZM7bH27gSd#Z=Sw6&N;Wb=qLB|ED zQ1%`EG_Yp%xZ~V<^@?w|RqaPF$`&d1Kn9Kn!qeFFOE;*-%~77r!aBk%)b6%H_iq_?C(c|A zGRc<)L*+DMiQ_(T`{|!=k-57(RV-kfa6X2e_0ua2YfYzb@<+~`v6@YjFJ~boIPbB# zGMcDUdUay;4Ik;l761CgteTH@b|rT6qm<74)Iqg_bBmO&v4Y}>OnR-Wq#UiO{H0za ztsBj4njP!==xyK|Rzoj(VpJ-ZB>BVNX3bX9L}zIit&3ABTJ6A(aD!6SSx2Qf*ort!c;3dmewzyOlJR zD5Kyvc_XoG_1L%Z+IL*%m^Kg2JahUG_$5lRr^z6d&kgO*=kIk@l5pC`=c9F#sDp`? zzNex25&`a*-;(%o25r}F7lMcG^LZ>qaqRm2J)%M8qX?7St+}e<`#Hiq)*=EfRp3V#En@G;s+m}XOQw~oH-@vz33`p1+ZuJ~Z4JofY(sX`he$8X8W#Ov@MI%cLpZ;uJ z^tbEtX6I6f_`;o!4O=~qW9g0Y?zS4?)X+PccrN8=?b}as{m(iWiNeg^+@z?aMBo9sb+gzY_eZO)uX5z&PU(1#ob2I-f=K*+hWqXLi#=iA-YHoUC zt6G+0ZEXg|NjbAeADkrhk~7I&5J57S?C&7Rbbl1Np||cHDdO0qoY9ps9z3hreLQ`G zh~G$ND0F(`X~L$GM2qi}yL8PaU!AwIO54U`)oC;ic|pv9 z!+8Ai$3uSDj;mRv=E9z9Z=cq4zpqaNH{h{_z+{dLVhjf(&!WA{QrIMQQ8tjkGEf*N^O~T(M*DYur z%6&1>Tj9KF%ickhmP1`?H&l>kjV0i7Rhr_QR<_~bjZ|Z%zRBF<#w}Y`q)!fY2kge?sb9Ep45C{iY)~;Z6*^Ae`<=pCoj+1ylc;q@w$(` zCE)jfophk?})c?YmRmoD+_+7M(&er0BH1nzXqq8(`P7|yv z52{Vr4J>@R;T)b7=Yx8d^VG#uJ&Q%IRF0~Db$B8g88q4*m3t&?>AeL(Mj{V!GGfqs z@yjg=UDuU^-vsf@gPUNLBInrcBH8YhQp(@SSCvhFxNwo*dU4UND|B-`X<=e@byXzv zcG?NHtJKk)7DI0$9zAX}j?m7Y9CnE3Wf2q&2=ps+K$AD}Yq`8nItHhE@i^gf=6s9d zNtdB-Yw!>wS;8mG{mLJb+2UlH3*U)0p=664^2I}`s^N*ARvtkk#8EBCCw)y!*|$E! zG^3*mm3V^F+nAIGX{{^-E=?DympV-x<8}7XiScN{nO1a3HL|%r?0zbOtnm3}^_@j* zqvnHJNkxuSUvSe*MKp@(oUB}$L&ne3) z^gv_|Kcqd6h}ax-FdNdH=$jxSyj{9%qT$I^(O-)2oJxqMtu66}TjS%lb6JNzm%1 z#>g6B;aaaHNb+hOYuR+p=lNC@$ytqiG+xhi=52j$+qw@}KdAYvU8d5n`|@?xm$5+U zI>U;}1`CU5_6+S;i`rk@XFMLmKYw5^Ssu9$zFuPKhkv@fN}RfAl|W*aaGb<>lQF`` zF0{9^z1pFH4{crgDwELpxr()66lu-9cjV56!&juuAChFlae|upsS{6ev#OAJQb&Ew z{g7}zu+~jc@=(bFZg^UcSC^L#!{#NO`l8aDm8X=7Qf;rRv*d~37q?Cs6+gOJJkB0N zX%bo_W6pZ$;un{&;eFH@*h9HX>DZOiO8bvB!w52-9X+Dj7-Qn`RiY=U9$xio~Wa@rcdAl8p|He1W5l?xia)ZB=5c z&k-v;AyVy2aWx#Kwxd8>@!kw*L9Yr#aA>7{d!qijBqENr++f^+zGQbL&Bt=|8f1O;eqt)Xt$5i7cPfef>&J)vn)ydbM(ZUfyCV$+EneyrG83}e zSqqd7PUbA5vSeea$~!l(kK~f~6>?Wlj2j&5eZC)e!0T&4n(y@fOsP193M3=*os}5| zn9hevjkIU8K3|?loLAFchMhfn-t+YdInH)=RgbL=F4xBg61%>(W|h5l8QkxGf!eaL zl5;IWfiP=-*E-vPK-~m!=mkLe;@%Y{pPu5o{O)IF6YQ`Ut}&fr!QT=+Qi%}4#z(VBQ&m&U3|nFMNkhoTbW*?|)q-|mZu zvB@MVD)2CQ44!I_nz)?iaPQ>R%LOH`oZB>9GfG}sRLu)4cJxRJjpFtk>@+Pb@NCYr zO?lK{Gs$|*f|~bXDWGe7k98(F^xYQ!6N2-w~NSWtj<#| z?f$&8bssfNVvErc`)ek$E|&ZFmtX4gGd)gN?B!xYE0BBmKYC=7$W5)$S6O3E36qmu zBr2wKuoEjHJD+0Rw;oF0=Q3>WGtqZ>@Z?B;{o2{Mq2llf+zuCY#^vm-*ENBUN>`l} zH;pTX7g$ z>C$HQenI2i_aUwL?D5aoBcVEeb>b1>S<}>Uzr^hMncr&BQb?)JE9zs^*TruNDnv2kptolyN z&bUtZr)G;^rjZpHEg2mX$Sj&-gV#aDB(8}|o2|9|CJ*G2nolHF3bL=h9$!drKJO83 z6J`@@b9;uf|NeFF>y_&xYp1@gW$51VWZxp&L~houpC_Cpk|5;3JxRE1QO53_cDlHt}eDm9}(}>77o(9!?iN;bn?E@LVPXz$i{>I`x{fFu2`Y=YlDQ2m#joW zswmAhg-*YGVzqB0G{cIlM>pN-&*0q?HC zPB5N-@X{x&)Kc+7d7ZdU_2#^UuPbr!+w>fiSnFlg54P@QVtKL;`jcLYnwCCzN&oJU zQr@!*#lDPrQ@2ka@ag#`Qt2CS&IfxKFngzm_+s_Pkc=tVJIN;H59Mja{8aR`EX?96 zb^bDGct`1QtK8U?vD`|7^^*!GLvvf+1W&ztTuV?4kHEZqK@~`i3jl33Ct2 zGr1dbuN6I?T(8G-qI()c)Q@v-JSZZ`2*;OS85@p&C6ih{a9M`3hfo(Ml53eQfM>g?ExM-{s)@x{o?qV}#NsVFU1R<1 z`O)J9&t9H3kclDlSK{ZkU5RZN^_&^948CPDYq?68T);bMpsp_aCoZF z`&@$d@>iy(C|vKUlnFf45_O_|-i<#K$nfe$s5(nUrS$27&x`y*-5;A)n7xp$DuUIx z1Z6C&C#%cFwN{yYRnx!J7WeYMl)u6hFgN3MS$;iE!Ls$x1XF+wi+uWk`%7Dcfy3Md zS)VJ@d_oIN*E#)6kx}?wIrt&TV-F+NggBcI5v#zD^^G!x6ZChyVL58eQb3#{@U*h$ zn6+H=GtEz(#2G1DLLsL4aU0G$5j@$4N$_7vzBjj+*n0Jjt&yoWsz{)xwPr%&%#-2O z=j-C+TCMVR4(2h;Nv%G~-k$Iit?Nw)J%7rBC*@*>#%oi}qa4-Kgg!FMSi5!6X61~% zRZ$zqZhZq62_oWmPzb`go_OfZl@gKLIBprQGB2C8-ZLSd)nagn`T8Vv{-eu>&lZ8G zNSVy7BW@Zi)MqkY=FhrGZ!XJO4r0|etdu-bqYpGoO+T;M;Hda{q`xAixyqpXZtL+G zV&nvq0RCf{$2cVS-CW}>w)BUdvpg^n&}?hGjWaSpJEObn^y3g zWDj&)Y8bT46=t;(_h za;Hc?ru40vEAzw4ueDpZgTK})e$L?hB)?QGod2i>cIxq+TU-OTTI+ouYaz(K)LRNh z;d^ksbLi%Xz?G|Sx&L-5qD;KY`9NsRtrp{(F{b-!6*;m8@9W9=Q~R?nn0!MJkC93{X>2!X9`TPtxyJt*}Dy|u0-0uk7?BsJ}bwi+ng3M zRE%#D^W?62(Ls8#_o)@Q?Vbtu?TMq$6A5xfpQmuOe`R$TtKV;8KECxN?Z+wcBLyJ1 zfg~nQ_%w}yhT*D=L-X5j&!rA`Qsht#@y94h4V2M^QcKLZdrnB@@v8E^PHhXONIbpue2JvX zunQZP=3CT*zQUC!&c3pWuP>fl(uk=uP^dMbx78di$P23<i6^zY!4dYLffH*Jc^C z$+NE$fpnd(x6U{*US{ig#(MAV29xY(j@oCpJwr2w*-lMb99(}rWIH<5!Iy9HwM+4? zYe!-$^{bAY!}8g)rh=Vq#yZkj5s7yNGCsc@Qm_1IGio0naW}Rkb@i$Wjns6eyzX?a zaw(3^W0t%JAGPl?t_8f;j!~X(jS|r2A<|eTY+gu+Z&x{!A+MHOt@uS+AnVw1tt{WC|I@4lXrXE}0K*N->)YqOOD^UFLQl?^_s0>c%j)qFd*=nNC)Bb^)> z3b6>ayEpg`RrCFVN<0wB|{^~+r!Tj0Vt&5_Jex<<%Gosx^ zDocDSucAMiMlRe=?ReA2Iqx}p3|Z5eZ)BIy`Y8IS;Zl)ie~IVn(8OB5X9G)qlI6Z* zMgg)m92$!+4|i*H9jop{H<;$!n_Qn_c*}rP$Ctlh4ayXRy3wjYNe~vF;hePgRS3Eq+w;pv;^pVBGRX%JG&9l9Q*>ds%K| zoJmG|Q5qJ1v}WZP_og;|{-8qtoWt0u;6!01rm+GFkzs=2lNL!ShaIU~?>p$jqdq+K z58Ou=z?v_bXld^MkJOK_xWd;R$`T_aq>nl-p{Wcd`swe z^d%R}beMohwcGl3)YQ=xV*_uWuZ+BG2cr%59lhK@c=l|7$Gt2YHp20RXF0dE_EiUQ z@3&@P%;7B~yp|fRp8C3ae|284XaNy7luYXINfNrZJB0iwR&&+_VU181GminU>X+cm&dT{x+#B zVcx#UGT(bv$XAr`COe^bb*uCCc$^;B)5D1v=l9!FRgzDfvVYM>e6uFI!xh_}mD)Ot zD4^h6l^Z6|~53NBqKO2&cN25db&6|$T!*wy;_U5jt8c&E<72y$WXU{w~4vspa zr!8ij85b3s5KHjjRg8N&{@o`HdRN8^Cm(Xo-V3`I8x_mPqj5>HvGK}1CahSP3BBRy zqqDLS(sfZeXAMn^M#iw{D6ha3;fmSbfo$5i!dUW(#vQ|x?^+G)Q}h(r9K{-5bswrP zT=bo^YYncHA?48=QPTI4E(^QrVrkcO&o>ujej(8eXwB%brV*~G;HEkm6W-Xc@VK!1 zu`#p^UxXrks}S)OR5v3cqrzgTSs54}G6Z*g&L!1rSGLo5SAHzG!)Pq~NL%vfxO3Wy z%obkMN;y|0U%8(hqeg_+bj!YZTi1F!5$hC3v*#S^6Nu2VJ^t4i)0s7Psm+1?fGJK*VG_lYkwVo>8o zkX3!F`Kr|D+x8MfwZQZ+YlPJEnEtEDbwzqU2Q z+DOo~b!uTP5hv;F=7^}24hgNN%d?_Iiv26nua`BP>}kE?Jo6qq_6g}sNjAwcWGUat zxjr0B<1*(bKVE%#UYODBCVjKg{7L%9OfFFocOv7s1vPkEB|<{aHp|aDB3%L_47`WO z$UMhQ8F@a*B?Qw45Dm+#*~6kHJ$qqOkB9B{yF6u+cRd$4d4GsyD(JLZZTKoIo56oF zbBcNDkzr>O%uJ0U8-8=Li<)uj=IIZ5ecyz#1$26G2=e_RtdRQJu=F5`e6es=={0Fh z#_rcl7kf^MqO1tRP<~;uMBIXX;=KjsYCXq=P^c^9iOkls^i)l^CZ4@-TZJ2bJbm6w zn?s#~J=3qFN6)bF3%u=wlxkKi+cQBC)y|t4s$!BEkM5|DZ_M(VbW`N=ug#s;?1rLeRrHtk%*o^+UKEPeEp3tLS`4vr4yf77|pvg z5)kGxRoBa_cvNO&IpR%swsN3!phwxzE<%$XYA5bq5(~k* zD;7dW=f5UJCtQEi*{*<{5|vwwu;iuWJ#+a)PXghgvp)OlU{arO{H5$73E%lk>=(I( z>QHO*59`7fRD8;QOJx#X7O*(eDfuN)X0_T^a)USg`e@a?%o0VJe-{EV+87 zP%e#JAY>7ncGWjRaPCuO*=i+DTalV)y3@Y#gTY_F$hlTLW1tuC4^Q*Dr1;LUO(47Y zoj}0FitM^?XSj5NXU`7WGcdXHh8G=_wr4n&8FHZFGK?M@i?rp|fvTX*$mMb$-Sx1;p9mb>Gj4@?JG&i}?n|m- zxo7(DvZRvinad2-hsnySN)8Ae)V<+=mwW(yr7}COpm{6*{MZ(9zvpWE!KAJILUV7s z{t&|ZTV~WR$tC|L>4jC;#`2$MzJO#55XSv;>I;;=^HXH^ZwXJop!Z+ozU*N6O9Bj( z{PTwd7)*K&NZa`}0R|3Y&fz>rkkSECP(Z2%3S`A&5@0|%^nNJ>xW{}ziU(AWX%A97 zFu&m4t=|)1ppH8UFd(bsmjoE_a+vJ|7?9Kgz4!+Wcm`f<3=&~Lh&&vO3`XaMl2ky# z3p5%UB+Nj`oIK#g$K2q>640A>P$2OI`bC3;o9#rJ?W7s#&B7pC4P?`R3lzvyfwF2K zAaH;l2H4&V81PCX6eveRK%ifcp#t9HgSkdQW#>`9^f?=xWjnD6$lGhnut`M*emK?9j(g>&D8q%I*7&Myer(~G-dy-)+Z=BorD4BwkO!OS7q^uFuG4+ENS&=x#IPzC&V)Q7< z4z|DRm44Qn&82pZ1>T_3{&vwN`{~=-Z;js?xo9*EiDzcw+)R$wxhHHbY?UT1EjSf^ z&xh$9JW_#2d;VP@9y1FgHKmPvZ9lGSNkB$!vZ{$cXCUdNfYA@kCoJbb_D|{TZ+>Pw z#SzP5QL6E6p#d+voTDUJ(F93HvJA7wN^n!@=(?RVj}pLcW``jpo^p*XR&>-8kOgw% z45ef|sBE4z^BwIUaIsZ+_H2Ce!G$F{avrSN==b-S9XmWbl*?O)k9(%7b{ZZ#Pj+3D z@d-}CXI|}Rdar70bt@L6%4XsBpT2BDIr0g|Xm%BJ>vQyL7FwU<-|t~YTcIB|yYFyP zJWK$O9EaJ-9-Gon$oIhQ$6{>~H(=L85b=IvqZWOqBd`x0J(1^XS|1-DE0{~tH*7~y za@oH{q;4fNZ3)}l4a?o&x*F-l<>#XZU$LgrYUEID>Ty2pt{+C0nsR&*Z&Az7j<3hJ zIJFaNj)qULFXYfkPd)&v=n;urUg$o(`FgFYwX*@rkcGC7*1tDM0 z=}3Y@`iT40E;ONi;sMz}pyav?d4 zFlzP!HXi-$6Y-=phkM13P;#DOj5{EH_IgHh9mjDluEl)`{Et6}yXWwfmRUv}yLyt> zH8RWd#w0y9lpKQ%CC6Z~^RSPVC5J3j*j_7tee7n|-8O}LXuJ{8hyyfnqz6U_i5UiM zMR7#4Svcc#4ckMHcm}g==zU2~FKs6{!jWtP!ZvH$Q#)-JF9zDM(W@+q7aaS9DxBrt znA>MnNzi>28#e)Wi(yQ`RVVJ*AyJ=JTXK?!gJ%eQ;Sy}_emn6 zu+IJWLMppRdT5hC^kZAt*nVWO8ta#@_0lx26)m{=pS@hNU-*0{F)`zr^U>PRmzv{s z+-jei720vnPggsOw6%(pB)q?(yBcKdjM%8}INNe}=+Y_oX(UlGVFC>c+Y%FHq5^N( z;3)iR+r#V&62dRyDUfSrLmu*sUqX`=_L$M^ zn%dA)_ro||ZnPwQ^Jo^77VLg!=M3lhu=y4~Y1dz{d;oRs+2t1wop0_IUCZQn?J_^C zX%o-CGBQ&dMrKpuKHvN54tr_3Q;7Y2H`)usSRDJbrb7?{%$=azpsh#oEw9gpO zA%pXswkl?xw zTBX#w2?pxAra39}ERgU{Ck;pW8ce{C^{ZUI*~$=lT_p}>^EO1pLu7n>B`Q0aGGNuY z)q7m7(aOAVDJPx6+_yJ(EokYr6TyP}TX$0SLBTo!(${i!0;rdX)C>u+f^`(sI4M}3 za9WShd8CuDa~!P%L0;)TAOWl>a%N#vr2|z z(loUua~FsGZZJsq6+C{oAmaL3HAd4r|ImHkYmb^?btheE zTj!p%Tw>38K@?9hM^X^ndad~w6(Oa%tB0z8dCci9t#>iZ{K-9jE3-w9$HSD`R{AZv z1v^|6db3u~2L{rd8aRL8By-vMGs?!XM5Fx`$*~m`C$6>Xjy-5s zKAW;+daUt!7Ijwn?OAo{Mn@j^5qnBOKLJ|Y*rIKi0(%EYc)jC`+|5THQ`>oxxh27Y*Lu;bgesiAaerGSr zel8+vwR^$CBDFX?yq1LR<0;hG+dDSb`5hUXG>Y|_N5qK{teSgt4d!d&m-Y;nu zN{+v!uaG$!j(vz5D~N;}C+^y7+Nz=CtPN~K*M=|emp-es)^l;C1$jnE*Dm!=wYjX~ z3dC^)USDWGy4v2N$30Y%$FOz%%W#$Q;OPbd)PtN;%f*L8vFXLmlGa^hzSMfx6w}o3yeJ(e&VRXs|K3Rsf9-(EoRg*Bo9{glkyJF&p9rDF^KE!!Y zBY1hee~x0H)#-`5f3gH3LgjXE-24@j*ppB1#c;(Kz;L}ONcLe3!oSgDljz&8dSKP+J zviD_P3AJ<4Xo5+iW?tav6#jr2QD}PFbde;f;Vd4l9l4bJVwVx39H%D+TjL33zV#c6 ze!Wl@Zak6)4C5I<^J-J|B=^5mHNW;GZ78Vf;^e|dn*s`Lkm7Crgo>Ng?SGN?j?tAw z?V@gMcI>31j%{|*v2EM7JGRxaZQJbFPRF)=R{Hz)x%=CDpF8$BL(aeo2NMo?udKgDvWl^}NqC%bLM3cgvJaWb8)~1-(c8Y4uSxXcyNj9ltqX^ARp#v9T0_^!42+TFHFV^d&DP)9^*le-D(!^f@r{OunK2oe;OJ7`c~7?K zHoc~5vpcP&2XH6VRpwcEzHav|zQ0TTv2cC7>`PnNXmX8}e_B35ACI4Lo`aPJh9Ylm zQKM&iMRJ-AT2i6J!T*krP1G!-`|aUpzAUSa?Jd$}Yr#m7q*xML9jXS8ewDJO%7Us(Nvov(35%6H0j(oqM{sZVfZDYPsvM z!)lF)kpgkY5(m&n65yZEp?4>UmYrNw4@C|Kw0p*l?9W0z9=hXAMo*+zE6cZ+BjdM_ zf;;WE^=hP~u;^n$979oCVl=S(C!l*p^f(SE&eHrRcjR8%MoVj=Y;(T|!q2=QfoS7%WXS39+b!al@Hv&=Db7{BX;| zt+QdVHsKtQbc0$Q`>Sjl#?Q0SuP!}@%9_htQmru}YV!fpDElOI}%Y z-<}m>4B%kOc5@3wA#cv2tyx34anD3T(ybK;EScpbHrWt7Ql%dR=$)Nq|8PGzP;83c za?Fp*(+tnOTOnomvqE_e8~?o$w;Rr0Pd^bEfvu$j?}D)JVauo9XY-0J%HhnQ7Kgb` zQ1Vz*X`_JN=eeN_!iXr3J<$VR{OgL#nfYdu#{=(WGWa8{Wv@ z?*Sfoh{0RLB59r6j))%|aq~NdyPd|tzxGLnaq=>^&~{^&)C`>Pgajcb>>ECQh zTMua`W6K`cOMHMv)2gwaOl?M=2DP5dXw?(LCSPnU>$Yg|aUU%x1oJ(!uqNTJ0C0VF z1vW~vImjWt7uw9};HCK5r%Zp>b}l9$(TJO@T#K{Uhvv-6$M+Q|z?Wz* z)~~&Zw58OaF9m$7F*d!&piL`HF^nrs_+Hk(d0(BmI$$V{m^;3X`&PpiZhF2_AfR{p zv*vmn1-n9J_S*OI&3C{?Iq6!3;ISkSqZEJ|Q@;6&!v+Qk=}xr*zRWM3gBFm*c8H8g1QcbwArNvR=N&G z`JmH+j#B8sc@}YQs60spugxEgX^Dptj3K%ok@QZ_P*hRlaMuUp?i(c~?%%w&7QN_D{VdQcFf zbxLe{!#2B$+^^w@ULy9Ilcnnudrsr+{jirtZ)ZD~jD~W?e%0r4%r5Km4Qyil3U{ zqJkk$-c$=Cr_D16+AwgvOS92tSz|)o?ITd(>$(Z0>twI4TkouQWt=nkvhYVQKHN?u zxk8>F0r6e}WIw;R8nyB|tJ{~6jMcsK{giu^$)l&{HAVB*Cd_9OhGoz*CRk2(4kZXh(}Njx^_b}A7@KRp%&_?T zQBhx1qfwbkmpkLd2HXf2-{MN++QwDsy7ZSbiA+z{Zy{GwLm>pfoBp!YHw=4D!Ro^i zL+6w~MF*`ZB~c}gif*H8ld0gnX&UeDX`Qwd93vFscdw#qW!|yyrOP5UWR};_n&zb0 zN+`XwW2IogmU~;xW%iH?#fxNvfL@YC3pDbBwz&mF!tn)W-1fJB~ceP(;^c1H|wPci{rJvU- zI~e`xAVrKv9D-}2>w??p@U1}GG1p#RVy!YOK~L9L&i8JxEbpKIJFwrbBoDK^1xfcv z`=tRZ`urH>7K?T)eSYlWYYbqF5Q8GAhx@m5{b*k>J-;3H9Yng?ZIjH_u!}PL zcALU3X&Zg)!)EBFWD_4j1LsSd-=@d*fQHV56#>u^JsClvVjk)jI`dJlRFJw%Jo$jUP z>+4a!&uL_@22%^rqprcrCqn321;U#JtXf8+87@|;*Aqnw+U0ES ztgDXCH5}pEsxR}2M@5iZDT7Jr5xWuIatw&HD_thC>>ctNMN)V?MC_Dyzr*}rAnaFa z__;)W{oeEyy6z+Lh~7;q2qxie(+3amW$WN{oLeH2%$nW{Ex7`}MudWFwD22^#c(_X&|%Cg-)Iz*Wb5RAF{-(pg z*cM-vx!WV^A=qjcOGT6WikcgRCeTs0F9nh1g>m_zC|C$3SFev?=G-0}JysLX5PW$# z7^N_j?r}=?jC$nj$pQDMPu_6I&W+Ed^CD>BI0Lo^2T7FO9;RPNhUe1N!Q1E~y4;(e zA817MX0X`h^&r`of7BRM5)XH9)+C9kY4X0~UAFH2L9oA4eAUD}t}aZ+SMR9Xza4xy zDPaP9vRcumv~KCe35x=?$2yoGoZwStR@!8#JX377kLTs^5t*a1Ld5jf38_!pYAdB@+6 z#p)QrPX6R;y_ddZFOd4!H|SsiEqzyBL>_dWIPhnEW5QO8<2=^b*~c}O>Zdh z*SkKim(TsM!RZg1RZg0xP9szh`|e*4_*4(}scR;!khRyROMr&osO$`N(T|_q1 z7-a3Bj|C{vJgED|qBvpfXIbfNrC6Z1kK*wa&TW-QJd1h)`FN1qsW&f(+E?W1TLh^$!gs_iyH7n^icfKMOLcGKneVE$6st-LwP`?ifc? zBZd#TN2_pq-$vXqyPw~Bj@*b;X=~?ol(s8-oZY$ioJ1^&Xsfh?U+`aeUJPu=xcQvT zPLi*iq)vX%a&dRN$DXGuTO8F6_V7C5nrfPJ@wdzZ3A375K_!Y8Z zK5LcLug7%7SQui($@J=07E@9Jc`NrnfP0zDS0MwDa~r)n&S6KCSG`RW(n}iODSQZA*TAY-~K zRW@&o9JgXVTOOEcO;=Hz9OYOI5tSyoAwQ=g>;XEKQ66Us0b~WLA}9eCT1$2L>j;nw zXt|lM4bRxE@X^#Sc&LJ6d}GCKO}uQy>r}>itWLOZPM20e9DBYR@Hd94HXyB>y!(-| zzeX&Z6jhX$cXQAf>|e*($cOiwIT}`s8`R)hS5!ILD!)ogmz2bYFHx6i8dhUd!$Wwb zyR_;xR@Q4*7SGHpVVBoV=*N_u7&>^lNjU|Uv&|oup7`>+NQbxJ&JROb6}E8x83Ni= zrp1yc3WrZJ&r3Hhoy9pWhd7i8EMc(}C@m5G@Cl-Dq3PspedP;Q8NEk4h0gZfB44aqd*P{No-UPS31mO~Y(Es;JjTrn*L^9;n+C$Pt6l(efo+cV+fi%I8vw2ZUdX0Q8|QZ373J||of}e=)b`Y^NWA;n1cLIkEQyZwrgYQf#5* zNaQ?EbdNIF&4a*T8R!jb8nEw_Oz-3D+$e`g7U%&hW}WYyU!y`*qg0gQVz5dNKex;A zS3_G99HVSS@f%lmRpB1N3LjHPw$}dALsPVKHF~Z*p#ok$U2;vqs|u{G_FK-HLpu(`eTx{c8RUVq!Z?eG2TMu-o4{WE0uReHRnCu zZiv$eN8ABvDlyenwysK<`kD0`j>OqqdT+(@-gG0r_9Ceq@uJ9CmrxHDyl|$%i6S(- zHR|1K+H}a?gZn$=5Jb%I{;!?$Ar=5lqh2hq&QYp$UoD_*GOdRYO&3#iAh$4{E3YVV=) z_3C1&7a}eVK+`CYhMg3a;8YlK*0eoV?M+Xd2dkqiNjP(%L*S9RAWY^Ppi- zRSx3$2LPI8zQru>3xK96o#PGHK$y4tq-n(RioDA|}(CBTW3#7 zl25KM%T_vqs>(XQD>oHm4R=44oduno*0gfZVzKeKAp8HifLo`Y8ZMZ*xkFwA&@`I% z51KvuTrTTSY@aku(-5!1#LmX44Q+>`%HTX)j z^LrK7PP=}^D@nSWHl@AkZl2?+H=)>bcaHSPg|fuTw$92TrDZ9HbJkZGgN4$C*;>j_ zrsH(v0m=|;6?lC)6-Na%wOmoooI3~*>we=UK zfoC7x1Hd#eYp{CS42vc(pD<0xVt?quI_KgI0(qb$ZB~*6 zW%48~1dq9%cVn5z)sQ8v#jjEgaD^+60do8G`m{kK!=wy2#fDOu0^4<`WPwnmL7!yQ zFmU;~3ud+qCpA8u2J2tH7r@tkzn3SLaHBVPD#J86)kwf%aeLn=P82n}rOZYtD1K1e z+AU~xO|aWfytvp0|J=)8U;lZumSwMm5U#cIxY#UyKGWN&+%w6=sCmPUt)*1r z@rHGhWU)>KObTmq-O|9b?{r7`q_$kwI>CL;vUcZ8dqAO9a@1C;V{(_Xd+xqSMP_nW zcHq=1538=F6k6+(qM0a0OmMa`n>edWleOi&QD@&8W_WiTmZ>W4RkAY=l4slz#cES8 zc*jlj>&d%H)@;`*O+A(V>3F`S+($cFp{8J{`iW9FmCX#MluZER<8Su+FNqx?P9469 z!Rqi3Eo-s{<`JRsACW4Rb{iX7;S%uZ8Rdj++PCh}&0Bmn7ay;Q)ocFtEY;susX04x zluc5J(;|4}+B;z3lUB^Be6V2Z%HYsJr%LM&k1Zj*$}Q`CFRS6e8Wpkijnc#x=9i7? zdh`Rq3+-{BG__Qq6)AnqSZ9@uWH&92DJdlzj8i7amP&!}68g0hMg@tR#lPwUNz$E^ zD=P>!ARPKZP#s&qJF#X&UKx~E0^=bXg?RdDS~9L+e?LHGNJk0pv1B+pp@PE|)`9=2 zl)ShKmmX{ltKTDz#&YLAC}z-5F{)?-YHVJnBw*PoBuCo4prOZ$Laq$Jw*fFsg;I?* zvp&{%ELpfEi!Yw8GfQ=8*rq?T0fO$h1f)#O>#7SuS2lkF^**q+< z;%=`F9*uP&@30v{GY(o&uXI+0iKE=0qeDVhRK?ny-WD2_ZX2#SJ$u3slu0#F+ZfFu z8S< z%?(%_n6)C|H4(9aN@q`6cEgTUJ&&lnRlFi6dZCZt7mi0cCxne6*ENldK4BV4p#D*1 z_NSWrd;mco+Ur%Y28w124mCO?{mYPbyxzD zD%u9Rpkc4RYkl-eoN1Z`bs)Jpm2KL-n#sW@d(WI5qqaXD+P~z8x)T3Zmtvu=Z8=KG zakPj3O^8G{5o)Y8fU89c1yQ4FV!s#dvsu#``!gS$8rwV~qJ+94T`orFD+Y#Pf}|A1 z%;@rfy`J26Gv`)Ttte57po0)qH*;q(<(`BuSjMOYyUCKtu#CG2uSfRM&ff0jlM|B(3VK@J-$T>WGLp4GvPr=|S(*wOV_mnE+Zj!=EFpfOv?6dK zpl=n~w(fGy#>!&U)RcY`sxA57NVU?ECYzBnbrD7%nTmV6i;Fpb?@TWRmy?%wXn?UH6j!$vch)XX&x}isE1^06 z+FMw%?O5VZGd#C%5iW0Uu(vH>rOpaKY3jo3%}D=&()?bQq8g@Kkj?}FpfqA2aB&5D zB>cXpk93irC=Db4r4jos7aE>evOEBIMlJZ(mQoWVrwH^lewltwEp z4%T-dB9iYDrD0XV9An*IHMgZYiY<~S^%=CUQi=m=wl&5BtDG51`!k88=6N8;sHtLG zL&Kpg)kW>)>$0dZe_Lil&yQYTs|a$Xr$3TkvocDI*Vv;T-+H0u#KI4!++zH_b8fzy zu`GQ29C&XHX*|hXb;h)$@jGLz)7_LsNoJAt0J>AzF$HkmOuSEck9kl=X={(HL9~Ah zdSjNIbm>V1nM4I8r;1LXRXJ1e%C0ylNY>k58TRn~o7DM)gP0 zc-99Vx_UexpTx)s$1aQbgll})Q|#>3?i}*$ob)l=)6v}T zF;%y&UzQP@-nR02LQijqJRZPAJ$6PifohAC*6>7}t+2nHUme<- z4Iy6_(@45Ivb%vnn=_<0P-bFPDHZ3$!ySxi~Mf8uD-{xqOCD=I*c{j(mLUJ0Bzs%o=%pU_)3^2aouc ziri&X@>B|jfmlv)bBdBHatHfiOB;D1u>!UdN%Y9A{waam1d^)K6v5GGBrRBqJVRxu z)T3FAUt%M8z=qHD^k&acj5HCFk>mxu`T5ORinXz*55z)m!@IpmX7;EQw>QZ!f}+4{ zFal!U8$c9YfxAX8;%=a#+O;XG9=-`4up@q3>8^~>&*Tj;mO62XM>IwaF_JcMId_SS z+o7x-$@zDr>H{Q49ir;yIuusKVrLTaac}tv=yBXD65{v7BNf~IR}3@##D*YiWMd>d ze*KS__N&dEGgf|vYfJoQnmUZm5lzgjF%ef}O=NdT)>cGf)tn`4V&-Tf9rF3GKF!5hl;~p_}C^F+TUWdm!JoD2a<6`{{@?*tFXxB8ta72asAw-E; z<5X2qaQOA(2ez~gmyl%4R53%ZNEt@9rw)P44u!wKdrbqAaH`>Mi{%1+J%+-q9q~n<;Y+y(qGzQG3k?(tB8=oS6~#x|p;!I@ zw0$7+sxG91H1U8q^E>!f9No(u#U|z0E5J1nStgorr>MOSI{4G%&TWp+AESR|d zH)IW=pB@q|eN=zj^*SS^2;0*nf|!`Pcsa zD^UaRseHEiAC)oyz~t}l|3uXMLn#AbS^k4khK(K|f%so3WdM!*Zz^Tj0D72DD1`wa zm;g-kX9buxKm8Xh0G}w!r=k*|9{VI_7y&Ny&%^?7VzU6GHf#We3oF0{#RgEdd}>`j zm!HZQ7J%1|1>k=BG{1e;$qvZ>shRn^53u}SDrEqQna{ES5z{~F_=IRa%YD`dV1^h0 zRL^H(0Zc3ZT(W=aXFhc?pZosi0jOjE+n@Xq)2D9c^D_WI#P$i(0G6NW(@^*q)cIGX z33=0C4UA$b`Rn0g|Xs#}A;yzsYYt&lWS_0{U$EFUbTr>c9H{+yAEb z`IPT`roXbBf42G=m(T6L`~O+~voU}xhXHVs*a6uX0FJ@W#0&@u13;n9@Okn9Cy@a_ zBx(FT1cwpe>jCruz&(A2=(9B7j4}c= zS}cG_0o*5m1gHgYd;odpXH9^${~4dp^?#Q>3j;3TfAr<^gTFgIOMk}aGtQr~qrXx6 zj4YrXKn4Jj^=T>k`}ZH+`xg-qfRXwScl3XDaWJv6{Xe#o|6hrK82_OU`Zv)JzyS20 zML^ub0`!cZGNFIB_#DCitq@@K|EeA6?|AsnA@~27jru!!{-<&Kzr#lT%TWFQLParu z>U#d29EbxjDAF(kbX))`iWwjTV`2ncod4g+f%E}16kt>(1PHVKYdH{L!1xb0#(%*F zG63Xn|4lg%|CR@WxblzMuL;P@xt1ftWMzKsAA+tS6Vr&B4`2@qWL6d)T-c`78So8d z>t|**FWA;Tkl07M!PsZE26#uNL!29-gIvocWSr}%6RgXM2b`OMw5;m|v~079mCh9> z>xafot?QO9t*e?h>nGlb?n`<25BWtjx8(zw54p)5<|T_AM^+c^o58&IC6hD{1yx=r z9(?L%4Gjw~%T?Y@HOp@Qx7eotgL-^F`m-t!fPnt!Ji&@1e7X8B9)bQH68KL%6QHr> zVEnHG@ISFAz~IO9uUORCCl)pT{`lz#`XiLE?pdJyW9|!)&>9u8@b_gfO$WUcEOc<= zUs&|a$(l?U)MzN`nORAE21@|vMG951HL31aQ7CpKq z4<=m?GCd|-HYXnNzXc!*&`e4GkX1GpR(ycQ6DJ5rCDi}1x;!&X zSW|vAvB?IkI0fBhy3uciJ8gD5pmVznQ#o?Kjs?r5ZMh*#=_u+lU_)RO0e#5wsq!hB zx-L@iYn6+$P!*z@=WPtRm`;bC8ZFyz#1TcSs9)*Yk z5&4KVMl-;!z8;3XUg=`jA%Pf-kmT{uv0nof>xb(}{e z4CMTQ9LnZ7r1#wTp=1hQ836dH*&E7u0hVi8QxT2{@=~vz{}9F@@sN=dCgx^ZPaZr! zINLNu=nz(npKnL99@g}>=X-N>vh)xAux1HKjE9hee&XU}Q;g^kwOl-r_{bTkk}s9K zyLi=o9>sVo{xU>d?uqH-(}r1?bdCH)!^rZ16CfDX1ef0g)20+-NTD>Q;Pgsk5SSnf zh>JmZ(N+0=E^g-$u9vy8at397&5iM0*fz*s)N@1|Crj;xqnE3X0lg*wQx^g10$CO! z!Ruqp6~IUVJ@Qjw{je5n6(4#$VEhG~&NNN7j;|G?f@!OVUe*tJ8Qp4R%EKu>7#BPY z&8-55(!{@;Sb|QdRt#sVLXWG3KnuRUY(kkwD~Vobi^fT3>}CXd=8_`Z?T{RUfW4RP zWh=Gt1hA~0!XRb{dx z8vSC(rtgH2YmF@$9?{jIbpo+Am_{C9z$o&{SwZ}duezu?k7r1|C{kPya5x3H*mx@} zxzl;u2L-46W?Y^Ui9AkDW_kTw1=C#lZO$>a7kK)vOKfZ!uZ0%u+GJGZWm^A!Yog4%`uK8^$vjeu|yeNV0j z7JRzV!S!c^U%bFzBKXkU5~7tZj#3XV7`%0f5AIv=(+*MD{%(H5df9gd_Kv#>8Y&5N_SRHiN4leEfg#lf|QYCX|-#Lb<)e?w*DhG7qm zjl$y^2neXZzF1-?6q(d!nC`hmf{TAABI^0hNw-}!3l7=iKAFkD!wHkb;M!|}GI-8} z=lOKTW5Ae+&v|`C2GOtYS=`rnZF1kxeA%&dK7nx_ zih6Wet!0tPHT9)bGVr2bj<_~zTJa;7A@4dSV9d$Hk#!iIU=AiQM_LvO$$An~#Kpvu z%gLlSpuvREeIi(7rxG*l2;-9EJr@4@snR@bY-frtKug%4NF z#XMb)3PQ1)aZCkPD@Oi|*_wymTAfLiX~rKk%mp#XSL8Z^CVfX2>t1@=Z{EZ_M|TB% zzYUIrU$rHD%)%!hBTh{4@gDR>?4Avd`m|c{-JK7^@)JlOqUl13^!ivM+^;JjA)t&V zEb<>?{YZD^$y>< zLk&VAUK%C9CmEr_HH_m741S0sH0ceE?F`z{KP=+7jmKw?>RbR7+501UHKzeti#Yq# zd~18}*Ax+KN0H%!X^Q8Ii$xNOgp!S82>!b;Mb;-Ss7f{~QE^a(blR8H6Uj2(Gya5{+23&CD( zpiahNlw-Pq01+mt^Z}PyFIQcb&bG!v@p|%8v0@J8fxRrmOY-mNOOt)T^o8Wd1M%qF zQ&ffI;o?bCoWLfq3g%7w+v&rx&(||sFR)?SGH<&pZ$}mHa!N`pSbWn>wnp2#*M4>c zjwkPL8U|SnjX4gS2tE{4W-9j! z$&@PPZpPZnwcvtf_6|DIFNZ~`B<<^~5;E_o_}0_NuhS7&ZY@uQMBW`-!-!1AmTgUWTOvVs5Olusvr#p3{A({+N z`mPG!HSxv6fEhoIAZ-Sbq&UQ6qZeDrWU2=DP=z4TZr+gc(UFxW)Ah8XaNz zYN=7UD1LdzG9@u|_cI$#ORV+~uWIWdL!rQc*c?Bx^|I0$dw4PIH^$&ehsl}aJS93B z(K$9Y<}PbEz2U<3UR}2QjNm}s1it&ls#?_YZ(6Ur`GUQgI`OcBF$&sL(sl&~AMb%< zw;L+qZ(Jsww^u`S<7*}LK24|L7hNB@r&^Y_W54!%B`Wgtk%sLd>y+rM-+cL%In?B~ z)%wRtJNsjBPd}xV{9*gW#dhiH?M2NyTrZ*Tvb9I=S54TEp6lJx5$_|VE#=3AtBYwl2_AS4Jm1c^~HHQy-+91RralRM}E`);x)mRmk{CJr8 zUVHM>ZsB~L&N>{Qm724*pWd~vcx!b?xf6qnxbv#xzH4#H%$ zc7>xXC8wi2TUI7sZd-UY(rIvez!?)w5>{OpjL9~EJ1uV0^LP{GAWfK?<9!&f*Wj#A zWrHWZ{?&8)=~WlCvnP-DlHjclEaj11+uIfeB8P2L>6>dcsWm;17F9j1hw*Hj(4=)P z^hjtIE~g?Bvst48G{@a`zL!}Y#vsCQ4qaDE)H^*xmF+HlIFZYJy&3yegE_b1O2pIZ zqKOY%;=2Iff?p<0_Jrra37n#)q<~sY@F2D1wxopGXg=J|y(Xl$f~Gu!JLiZ#WJUyO^qKhiLq{05e;%PlP`+Gp zrib4EuBdF5L!yS+TOgWTCHt+MW4wM|KSBB&>1WV}Kl|aFw zC?`6SWCm!_MPD!N`%cC+31B6_5T zOk@aD-w3dPN)_ARZ$I^(^7kOfF7~;p{K@gAlIaTxy>;+p%mQdAriyBiAJX1j;-ALq z%N8rOSjxGBvWguihB2d5wgfZ-R7l~TJq6HHPEejH-so}7I2A28yYFGO;B1a`D$$cv zRJdSuM_PpG=N*v|IA2UJUE@}$fVjJXe@J0;V$4?*ad=7<>=n&Ak0qDsJn?U~%|ZE2 zIlXBry(bMmSU6oks)qddc9nkS&*yu!(Y2dCs!E4M#)V=&2}QusW_JGqZcC!1TniOR?Ka!uY6%PIEAar^GDeB^_GYiiMJC_JdE2JX z2W=-x(d^kRwP)rKmi(7>(7cO7{B++B5DVzELw`q_vNKl{OTTL9uPoXF3*6eEZtbk1 zjr68Sm-#j()SB#|W7>AlYb~>z$`W!D(V6Ld7bBxgM|EqHUu>7YTp(Q#6`HT~3Ef5g9l#&E?rnNNu|z!=)- z>9yx=)h?b0v_4QBzm2Z0LP%4&Hesuzb7`G&-=3wr-RwiX2qZ}txw#6vH9Gh?p4RPz z>!8VJU>pdt$i3h%Bn$g$XJ|V8?CNi5t+6_p8<~fQ>DoKT>eTPczwSlc$Y0D*%UY%J z8Q0QcG18lcq|^DZ?_HfKbaB5+SJP*1vRK~>Kc?&KWIHx^%N{Dk;F&p(sS)5WX7almd34|TD(J@ZZ^%E@U8gy8)sHXx8r^V6bhWVd-BtUHK2=xcpsM2{ zj|c3&3brf2zk;H1efJISS063TSom7+f6>o#B-hJ1bfI68U#kiQ?D!k?H`RcyZWQ9F zQmR04H1Kh}KtU?G%>sK%dC~NjXAI@I>9?(5h)&$C8>*hI&eVjRB$dKkLGQXRw!vQESOA(=`}HZWw@kzgKz{3hEd-OtQnKyK?CyyxaYXdVf=mnS+yY z_jJ&jZK0ER)X%t36hm_iKSToE?>Xxip@wzPAl^<*a%}&oPB?`nKu|>P$Z>0@*?S^_e0v7jUn2X_%hR@yqD`pi zwTQf)eSnPbZPUuO|Vba7BvS;_10{Bk`cY$@(;ds2-u6nL0kvV2eHyq>Y^Sx-51 zxj(qL0hLli&sbZkP^3O#!_;p;a(Le7Ff;E1A~A;J`cAo6gTh4ZR_}SAetpeR_d7$x zy}a&}!^1h+NGp0gEwH%nU;-~lLX-{bkk=ia_XVzyh9C8o#h=%KKWicL>2RfKmH2Mn zcMQLtU2kV10|x~iai(hcG3gyH(&{>1f2@&KYXXN~VNO~l9E5Dgh<)X>IdDBF~- z6mn$e67DX7fQvm{5HmVwceuq4DXYt|r}lEf-AwVcN1b=>LG@&6pHCHPl8jn&OAEdC z*t!XH z;>kiq$qaaf_;049dEr=@QTco8J;oX2U6A3!zD-FU&qeXOU&<%k@Sy9I(^V;KE>G7j zH_D2cZ+5%K{r#kZnah|R8_&l_vsLPgA}TNsc+c0r1tGg$uR(aECY#J&ZBRKjNxKIFwb}tk2%1 zCZ1Xe57g_9zQljHb&rE#A9I16&}Ua|zEi)3s4Xs@{G1@pIj7?M+4q>8WIo{Ngh+WB zKgo^6pgoC@*UsoN6M>e- z_MoPrs`wq9Ti$+;nQ1VHWel@-C9+J%XOKf@Y$Y@84a$BQ?QuYAP z-E`@dS?NX-LEY>o6)C;LQ^z;2A=*^2MfoAdo`NnGw~ zAA90@IU-)#55?u>Re}>|_+nP2&wHiDDqECOCV1XM!opUhnjIFpMFV?;4@o2M5A|ei zAg_oQF6UtJ`0wyP&CR~~PrVn^(Siq$T$6nC$;M%*2vTA>s0U*T%6 zT3S{l?j61_Ti#rU?Kb`8E0VQm&+cRnjJK;)z)=sley;@WvT@bBqtU$Fm(#(Cw<~^h z@6JHzZY5SNErciEeATJFZ=U0~?UqaL- z6eifN@P84)AqyM|HcJ*vqv$7&K%)uHnBC>7&~3ax^+Aj`OfdA53pEzFm0r397b=pB z{YF(VPmTwP%7Wogg?WT`kHP)&$5Z}W>6>OXdsB#-hPe#&sz5KttBWJK8}Kniy~!7s z$QQ+!iv@Ell}&%OsF<^kF7HwLI+ZGsy3FU+2QQ|$*~mh@5vF@OE${0YagkK7fxY7)ez)HIV)d*hmnN;&IJ(c9bU zq3eE4k5Zlf&YxAKf^B?z&eKz;Qk=fa3Xt-P(pRBU<8<&bMLvv!% z>{8AQ>1c2h{gHO5g!pC7g{VSc39?z@`3grE%j9?5go~W9`oJMHjxhFtyM%TpY%n>W zQ0tjw zKB|bbwRt+5v4Etvs%+Mc*M|m?tWE5R3%UkPM=J*_`5S^?UeM7S!*`&r+JUH!HyPem z4&z7re9hjo8XpFzv(u`X(wE{CB)v}9!7+-rxf3`v$jNz1t&_28?${i*@a}StP!)j| zSZaapz0bhDI$z5L4F0@F$wDD_;wJXq@oL^|se>(IHe+U_+ExTuU~3}y@*pgJ5$hjQpsF_bM^ zJk>CqOPy-KSg*k$KCgBdD=ZWbU3RO2K8Dk&(3CMN-M;LE6U?6gl!e0mk_e;qjyUJff@FcK`-vnits=$Q=x?muM-#%9Uaxh;M*zTm3t_ zKmdY3E4^GX5-*B38J;M*U5v_z(zJ#p)jbkQe~o?%i3DCj&CJe>^pV$*g;or$z@kcW zVOnuou7`M&pv#KHZR_Um?Ri+97D(tRD) zkDdqGO%ffdXh!0ZA6l~biW0!ii%Qg#1G@Mbr!J2^eqYbS28!lH_cnVj^P|9hJ+yI9 zQhela!s)$La3uKO0$3M%cx|O|>QJh%txo+{bP23ZaW0w9%Of?i@%=7L4fu9Z9>ZDh zMaF;rxKBp;Iw$676H~<+q>0ceg9AIv#jXOVugTN^d9bX$Cg2>3H#^d)*x(Y{>NIjC zSQk*^b5MYp!RBQr(N4V`Y{H^V0qeaW(c5u-4Ij)Q0j^0+(#o~N4X(J!&bs)6$3>)a ztwf^V6GB^`F)OO@w@{%$QPRe2elZhSXVP^`wpH=5LeVFPxlA~gSy_4ZY59aQIOg4T zFoq58Y5H7MhJCCs`*G(1T_&n0p|A$_Hp0!~6zagB*RL3oK{>;f{c2&7`(N9ZnWywq z=XM3+H3oSdm5+qe>nK74Y|7Y zpL9X|^}%wCd>waFwVWBTX#$mjOn{=evk{byGnF`-4#>=W*pQegAllaT$Jl`QmJJ!u zF@A;PLO{lolXn57&!x)kLWu{F4l!VjZN6L6hK^e{s7Ve8Gm#sNLJnNlh2t5M`L6*H zfvj0le`943BRk-_rXD~*Dx}vj=x1M2Q~+7l=jvv1`kElXG^@T3tUnok`3JejRanh3 zY#q)U=+F~MNudkbf($pNfl-jlaNaR}dY2oj90w@{$3DzTsC#M*Sqgo?I#l*_U>Rjx z7&1-oc~2FFa4AJVSTx16Fu0?N+606{u(6Sr7bX`)B^Crg!(3!v~H)7 z91L-c^nW0jP?@Fp`|L)x3L&=9&=M%0@bze!oGgv+A%Ef~!Jm%BjL}uz(hH8ITH%`2 z4j9)`ot@lN^X#0d$E?=XTTMzqWQxsPldi(0_7|i3Bc@1+Q$OAPOeJvUAN&SUhBos% zMoZTiw)C7o72dE(;TjHsbW#`cf3WwK!HorLnx>)5RE9D$Gcz-@U1lgVGc%T%nVFfH zT?Uz%nO$bKjN^NEH@a_6Z_M;e%&*;F%G60kq)vVrQk;07d?JntAlVI+j$>>SmEpxS zlE>*PCVs21btS7`q=2O?ZrDsnK^FV}L>m2pk+=9O%Xk!Gh!81~mKknQA43&EL#Q7N zc@pAFjr6UXnUal61t5u+#Kp|6TT5z6X>nRkg0lZ`BmKGp?`}(wA0;~>D~Xp=4kGGl zEq!E8<`RdJ$*hHyk%mH$e7hfIVl|{(Pirn_I6lX#(glMT5?A&|~_QIy$2u%izgR|1{acUJ}#qd8WCYc4nFu-A7{xuKL?b8`7adv5w2GK@TxJo>Duvn75ppp~EQ^;mQFag> z@{+TCW-ihdeA@UwL(wvFfEgqlL{yMtLu8^@*%>GFJVDyG$o&L|2NgkGaS9eTzDB*I z_;9QjXfk#_rXUYvMNjIm@wasDFo{08=q?m)i|C)CR_HQ zo9}OLL1(`-x>}xcWTs{Qu4>Y>?5hJ2fCF!yY3CI%IJ&<%r7H*!eeiV}=nj-+$su5Z zjmwd%g!#tHrsmCu;A6(xJ>U`HhLjp{RQ6krM3AgPMr#4wBAm_zJ@z7dPuhdrQ@ob-EMYdS__>6$Bqf-3e9X z=U0D|4+QGe6E?dOZgITG+J*G5aXiU@rrimSuiXjfvoszhc0sN%k4}^*eyW|MRu>7k zooi(60c~&HH?g+q2gH%Lo!aC;B%5^OY7=E&uW?ci+w`REIc9)di|kmfMf$B19e>@6cem{K&MbsKz^(+7CROSduw0BHjQ1J%oIz~ z_(H;j7D_uBAsvr!Sg4Z}iYqCU9gn<;@N{{i_bfU{i9?9S`u!K~C}Ju?dOYZl0_Ze3 zQ85q#m_iLz5CVwe<@ts?3YLvYe-*H8a{nZ|AggK5n)JT%Z|?P9~-6Ko{J7 z16Jf~@jOF+MzE>?6&5G>udq2Nwb-={M4EM8CXzkuj<$biKrLHIVt+X!tb-0WY8AS} z7J1wpSguqr*#0Atg#E=iVd8I@4Ls*4$V?Aq``u3-elBm_<}8srn#LmV^BD}W{*j{o zR1j~{KFu9l@bxsVFI_zoig_BSSsWBw>QCLAZYJLq>_ossw+&>b_KdN=Nzc0x?=U4o zNV2j&U_T95XL{(!)5ewtVT~I!gj%RIH%cA-U@u|p5ERyx&d%(eF{k@b04koN*2%pTJilmb$uvd>JMoqjEb0AmH*YH5e@RtN+Bm zrQ;MeU$y=Qh~WCMNS^2ce{fT=KSQfBdd$n_c>2rgdvZn7&_)O{{+7YM@TJ1ya)Sg! zJ-F*1x%;rPWtIr_@4r>l?u3f7Yc-qmpX{oe#~mx0mR`bK?b|n$j+e}tTP1dF9PCX* z5Np@OGD1v|V#q%x-9@i?8vls;Gdg-wM~(Z@#=td=9o@z$tsC5)y&HsP2bq|akY|HZ zYPp-(zxFkvx6|1hkx_!Vho&GrLe|yjIA~8aLb~r!>6n41>Krw<8&s7qDL$bL(!E*i zc4id-d*Ze?ANF0ncXxP@*SQcf#N!cYU1)Sn6P0c3l-gM`kL|JKv`Bwkb2cwdmnAS~ zX7GAnV!71dE%dql@z!I3eNNP=jSrU@d;57{5WNBUS}_LrDT2W3xv=7LV{T3G+PerK zE3UHGiD3kPn!S*jiBmB0VkOfKKDq*nN%c##q+j+L89u8DSpLDGyByWcPpk`^bAMvA za+#WFws**wXl8bJdz3p5y*PWYjUpP%uxhorLN>9SB4u0CZ}8~R<~62Uy6yWxK~|Ts z9XvE~VqkkrOqW=Ft>nf4UR!qL39ryw$=qprK+ZxItM2}L`ywOC6km!X5>>t0s=_t% zSw7EoAm`C?tfC?Gkk{u~+i7vCvc#&^)hv@HQR7%qaocN!H7W$Hnzw+W->v3|$wk0e ziELSY@zc1tqg`!PD~7Y_ow0OF8Afs%SX6-KZs@JNONAO8%+H)%OE!=N=A*-173E** zo)&%V8-7S*-OV>W9M5QqrZQ_UFH;R~FFMmnz>CVrw=GAruQrVfsD@+emasZ27;9Ky9jHAhb>OM{r%Q)nXSlL|nnCUjeL&XZ?@{H8g6*)5H z#$sxy#?LU%DJ-2&(q~GYPuVoUK~Ffu3w=k;3f2S_W4noM^sY{?hHa?olmTI=k(%+N zY(;FFGg9pz2QQ{xCcr*dsfKNQ6giuN(%rqh$}G{c6XwLjyps%>!wGy{A^r~Pnc0H7 z>_Nw{MT?q6g+uM|mt(_azb$5>anQd~FS1<2wlhSFQ6T!@wzFB0?|Y@sh{wvr#XH($ zC%p$V*YN~-6?4LIL5|3fqrTa~@hD+VFCgP!@Qh?a7d*u3CS8j`Q{=Vdb`-*mr&*-< zaBp)a=!Q2Zffa`3Z*{)#Xlq{O5KJv8;# z{4>hi>9R+amwcNQ+1VP{UB^sQkUdWl3wMqeVzysYhsDk&*uJUVKnBNl{sGPwe6@G4 zdb{kAQRq@S<9h^~2D?DfaOhsIy+bzxNWkw;v4I zPymFfAZ$0i&-OdQcEBCsp#uNcFa8;CnE{2}eH_4NX*aN|8+D;XUgO|%tv$hUusz}J zb2^!KDtUtf{*z-m`2dpV-0w<9%68A@!f*HM^;QQ^J)7%PL%O}!wKL77o-kX>r|$T< zbQ;U6?s%*{=v16}(ZeC2tGqqED8J`-;VdPNppcruzxnJWpL(FJp?*`h^Z7`XIAL@? zYL%U57{~qa*f$(` zZ(aq9k5NENZTHHqRR}1#1k>36kJtB4qlVfkJ%mzFkd0n=X0( zk0BG5n;NQwr&_f%tCeWBcXd;ak7Ue>Pl17DIkV5{MI66JXcnji-LJp0VQ(n%H7*pN z)D-I4aWqM9vH*cWfCAm9z!>1r-tqKC;}nGqV;rzO4v1wt5Jmt7B;5G`p1=WI(miML zQ@)u**>n`!U^}f?2NS21r?LoKcw#;I2UgPZE)@C@@rj2AGSc$j;(Fys^v}OQG9Y}P zK&E)iyGxz3H8$|HqA=xhe*bIW(pqV^D4gO2D98wI!ZzC0uU_ky)2Dw)*Mc z#FnKB5qB(ja%?$@F3ql@ECpx;HAW?ywzekXo6okk7Gh5u^#sw>mtRt9csxCt(~{1y zm0zl|rK@I&U;N=a_jjpiAhs$2ppsNY`;@Gvtb8e>1~M1n*x;=RXW?PiPzB-95W-vU zTzmhGOlEvoO6Dn{m}RJeY*%@eQ<+^*2SpxTrNP{ws3|Prcl?2a;@yo#!wwUHh0u48 ziO`AAa3DD|5-l4;*2Dva6JFf6meGy5=tz@tWYG< z^nOzCS1ByFxO+loYsoy;s03Dm1ZgShhTJ4!sRjb60%OW5_+n$pf?QV8IMSAzWR!Qw zKn5&XK%Qd(1I10!9~j-@Hf&~lhHyM-NX1(avZrkf!c79v%d>6e4hH}Gt7Do60>$No z`#Ulps#6iED?K6QE9|+-(%c1_u=}W+c+Z!3OoF*Wy6{J`%}$`?Ce`VY$Yu0x{N)3g z5_JW^c#+otU=y^+snovQiS`sto;&1K5>Gq9o?tE@ zfl+#`l{7!k%p62Xwn!Jj0*<95(cy= zZizH4flwNZ3I@a_k>HSPYq%Fs+X^U)0|$pQhjUn^NG@ulbFkw(-y31ozwMJ1GJ-9|Xu-PVWCnu=zjL zl>C?2E;&0}yZ@Rq=?hBvO1J+D+r{!91t9+%^WQN7|88Rc(`?tjo8P~(U0;aGKOwGv za034Z9}s?-hyMBY7u&_o_?7Th|H4|nhBAFo3t#;&s^wo07MA}ArTz1p{NEFoHL*2w zHve)7vHyP*VPX28Kv@0{(klO4;s0G)<)8KN-&Nwj70mwy2g)1Rm=H3^DT;~<3DJm} zSQ@CgsC>~X|5kke1zLsmi?gC*;rar=zKV&7k?r5XD*sgY{KMMw|0sNz|Kaob$7D=w zoeAl_kgl(;tciiKg{>JO<5yeC*}&SuNXXXA+T@>o6=xG0wSRzeU)SU;oSeSKsaqI- z73n`}osdDr+2d;nm4EJx z|F9AMe}&Kg0-o}pe&qjM;q%Xh_}BZ+#Ky?V{y$<>Sh<)P|3%?5=?&wpy4ZdF#j1Fj zOEaB@Iy+75ive0N)zm6Jdym!HB`AAvr9|!48S`l#6%| z@}EJhs$7Juh9s!8WQK~_m1U@?$vL(^v%Dza=r5jnp5A*H_S3nZvYb9&U8lOk7==fJ zmxux_$18Q(-MBdjg5vqj;jp#N-WVxJf+Kf49S6tqoZAjCmir&L&D~gEGPTsB7&Jn@ z?;3oRmvkTs%=JOV2iemDBGQ=NDe$@B&z>hhDxBJVt z0I5dBr@H^=RaB-sl+HHzHAia`#{$srsvRL;3YqbgPeNU;#m`qBrCR z4!w(!K@QVi-VLbHU6EQl9NeNL1VlvN(Hi8bL8@nvt%w*x`FEW^Cgx09a#Q`X+)bF~ zT1{yjduYzErb#~|l`sfI^!(d-n;;ekv*4qrmO=?{#82#wqYrrBY(>2QR1E=>-u(~u zrEU0sKw-RgJi)pBb0l7822UWIzv~XmWBS1G+;BFbc7puHsGIw}J>;q5{}(`|3bSx2 z;@&QX&cN6HQ6ML}hIzcgB%o$c!iLSj+T@zM5> zP)Z*OuVlGCeG-pHOusT8@rXIJ^ve0@%jo?YKM|Zyf4~pAJ0NEkN+Q9^Ki3vL<}K_b zUN&qbGoR8&y3J{fF+iz}1mGc`01qy@6jtDT5F%V~fcuiXG0nn!BP8lqr#%j%jvZId z`togy1}@xHhy<}OJd!$}61T3=r8ZLE-VF?L#fTU+p$wg9iP*Pnl1A zb%cW*CR+aev^Clf0>)4Jdk3jr=mUzKQ%|bj;Z|ax6P)HC*N~y`67`l87~EgTiuKKZ zA2dQt&x-4P_>{xHWISoRCw$hD>53% zj%a5M)rNIl2pJjq*Wrue5@I3iRp^aW6J^U5Kgfn7kWmOD3Pct7`8*syjbAo1*Hhs* zrS#nK0ga`CPH{=sXlu84RR)*`dL6)rV!tY{o3SjFhOYbf;?lhC-$1V8Ivc8%+zfD1 zfZJ~Jt*+UDli5M11BH!Q-5tCh*Y(vc7a7WV^7d|IpP?99h)&r+b~x)SmUl3VOVm^#PNhNGh}1vSP~;rRH1Ms(*i(!R!qj5xT>w+6;8?rhZhx8ckftt+N*wV z!&`)}b|I{wt%}3PGpiw+ftM(0U0n2hbvWl(2EyR7!sv9QGW|&&pYVdcM9CyAKby;1 z({k%xW()^gH|OVJq8)GRkLeewp@mSt``b!0BqwxWYsW2>%J_{2ZfQ1CdER~I>$OHg zcK8t0JQKZ?z|F~iFSG9l7XblF*ziHvZFx~^&ep3oo~Sa^$tl^j8+ZhmZgC-RQy(8Y zy{D{l6w^`(P9ra%MaN7>K84JL!EN|Yj7&@F)5JzpF|8GRiRSo&)=d(LUl7QT#1J*2Buw#$*G|Sm11DgS z)Zt+wEHxzcb&i(D>AUk@jM21#41}yI8rlZ*(kbp+oF5eNxQjWl=RkMZAg&OWQ4LNa zlc_a&YBpBx_uNbl{?8Yfy|!=|n478abfYX7VOZ?c{73~Df@1}uU0-dlqU{ZFFf1eG z;)(OLq;FJPCFA0#HcTs&CM(L#t1Fb~8e3-h5 z#|^hDY}`u#8>`)pkKR5e6TBieaA0YuOVM`0yhx`%i_45--x9KTeTEAIo^kfLnEKgy zIFKUkw%zJWtoIN2polMmC>ObIUKZA|O{l7S2guo;BD$dXc?sF-TD zxyc!c#k~wrky(5L=*bDghq0}4gs~g-wwrhut{2az^0SZXtM4NMqbfbm-+G^q6>elO zC^x+QwXp&#^X=JI^2B)AK{h_NHVoQ4;@Q2vl}fd5r3mB<0x?`aoJVTlKy;gQ<4V0> z%skd8^mkG}t|hz^<{~@V!FsUIhhdd$qR1xv-3#Rhow`z>)e7-5*Q~V)b52BQ`h!JG zxANdnZN3M4Ic*1_Lui#aOgg5=+|PmHL_-^B>^GHY{JyVu5BxRR$PKgvLg%PZ6ZmTR zwxA8#QRTd{(jV%-0RyTf4&U33PL{w0wmrWskG{q-c9e+t)F*Ev`DX345aQ`knTH`K zgvnQ8M5FnA9_VGrYJ^%2T!IA0c+ZSNJ^Skb+jRnvZeI__BAc9$2|%#u6Q@y;nS1;T zHar76L4vnB@7-Ky}>{+a|a;0d#(B|ZnqB}-09}eG~U2g$9+Ite|ex=gODu3 z%hO0f#~yY-w%8MlUJb5c5S?UzAXV`Nc5wEAMiM==za%v??0MYwg5SUTPyYy-2Wpw> z$J^pTL53hp{PMUu)mt3R!zaPny6S!IxxQSkrp>8^)Yk{$E@YyIDD5Z=pK2L1(D|`^ z1YNW?8BQz>&yrafUH%Knr?g)Mbnf@~_c{6A^!=U#Vfynuoj*gJ-%?NJ+M4LIWv-ZI zMdq(rZL!mb6;MmU=UL~Q=AGy7=iv{_aHkKC658K%E_60^eA@FfD#;hUe=8EHnO8I~ zc35^pQBxpYE72@j@@mCS6>k4_-PPToZ;0G3-Yi}(-ZpWEKUW+rCzFcE>vK3>TcZQ~J5IBao1Ct>abJ0Rd^=RBUXKu}kN3>e18x^* zm#9A8I@Y?2Knp228S(5oQ;uKUVPpJbx*CNSyGgqA2T`>lIAv>VZpmEF#&{LFqXvW; zye1yQ4%aPJRxIju)`v$LMQw`VdzPJ!qd*YcB2g})r-Gn>V`p5S#K@oFAvh(Nz&@Ve zj5)_~hv-&rD-~hvO%bSlFZaK^j>;I}n8>wWyk1}BbAt0Gz+ARXo+%Bq!)L(YCI>3v z63fGn6a-NEPPj?YuV6L^Q6oil7kqn1o$Z*A&*+}<9RrufE8a!gG1w&CA7 z`h6y@usQV)3oD#80XTX2_TN$2cv8@HbreqZ!Ckds?_-4;H?ZPIr=?m+T}q$#qg#Vr z&fZd5o)3b_-Iq&agTmgULnw1XLBC7P&xP zNy-=g2xXq;a=WxXyR@zR(%9Xf4f$xiUN3FF9!?)HsAt{LzQ0%eeA*b~3j}74Ri@~0 zK;k6g+VOYZgs(iSKW25ur9{}&I9$l^EY)c>AUn^%bQ}_*D7aDVGNOb)!#EKe&Qzf= z-kj7a#mZ{w!Lwk?rF{5m)oN+l7Inw90oBV#G04yAf;g)bKkLU5d5G->HtRY4uJnL~ z0YPs|0V2j;pADcu&YT$3bcB0*~qJ8UrZm8?tJw42D418qM?QPF2eQC7gk zG#?B`3oN@+A^f-CDpn5k2#K=_3U7rUp;@JsRTCHzCIYq=#?A$HpnQb5VRFkgc;Uy|b zh8AxOS}{B6DiehUj8@1v{ zI1<(s&mNYR*x7cIZeLB$eY4y)x3AZ{^gon7&QdvX%%;DJqVqKd!EL+SV32R4_F&v- zBnN0?u)AZnJ?hhjARwE~u5_~~mp2VVsDNA+jckp(8x~#q@okP2te+QAL>%G!+BkF7 znPcu>hTQoUMy?Hm5ybNqQN*!=H^dM39sb?T*4oEAJCQ6sq>hST4%`rbFNs@O*22_E zBP&ryYFe7fAm^M4F1Sgg5IFQPY?ptJ{EoM8983e}J}Z2bhoe>dSzZC|ML>sZR%QyD z&Wm8nh=Q*LlCbZM(7G`t#Vt2@8o zyv}VmpTTw->n8Boxy{%6_lC)$TYJj;aW%cu)4@efMP*WMOMJ%Wbw{&D_W8S5kS#@9 zA}dqn!!!EAWNpj>MRiM)7-SZ3P z*2OW*c<0Jx=Co!6V);EseY?{UU%NNSkLJ_$NW^_$QtxUq?;aXACHvv>bU>K(8S9%N z5VT!WkEB-WfIcKi-bM*9=g_P`9$ zO>k1s0J;uC&Q-ffkyUUvkD?3mOw5I6tRi&FSF*_x6ghCot3+1rp(>8Bb`(i5vr?$q zo8yylMJHjM__|IEEv&2`x8V+XVZjkj!vOSmQcR-=`%dSp0I|cicOTEFJWvE!SbI~$ z-=)3kvApBllbL12OWr2;CLOOG-UQZiM=5M|YNk`6ZL38rRJn_Xw!lGPkDTii`sql= zR{-LY(`SURPzoXZ^FG8)@E; zC-5wzp$-=su(KsVZ{-BR^3yoRC-YQtJx~bf3(WGC_8mRs<}?8NpzDFM>$4lz_k(_$ z=X(@N0e?8bxWwrTBs6pct3`H4wnVO?@Ju5SttIiK(-CxBc)qrY!-2?FBWVyp&i-B+ z%dSB`%~w{P;ic%eUyyMOlHs*Cz<-!^AndnoZvo~KK3rfz#o}BZ<-fG4Y5G@12XSiG zk(EmeVZbzo!jqpsVUOJ6wi)kP%@*%+7jfSx%K}C#Fg!@y8jN7djUy&OVbAo<-`ll* zqg|4JyqEc!QqzGAwKmSnyc$81z}W}V!XT71zx;9m^I-nWn;q%#beU`jT54AFOkLogNEn}}ppeBP(_Rx4Bt{}b8Co7CsYQ*V%hlP1{ve{vHc(kSWIq72Kh{FH* zz=8D0``|R%c6>l;o6FnSQt5@oq2gO*c(Yg0`*sYs{ur$3h4gWmDoyW&c`FC{tPelt zIx<`(QI|_$a29=m-iz4sP``^vB8{?dMCIZ$$n`WfgnL{EEW@$y;3y6m!kE}#A}F|G z=r3(J7Eo4QQ|UOaA9?IkFtw!a!KfYBeBN461)fX@d)Vjcc^gEZQMbJW_EVr)kj~jW(q|YR0>`tjLoSku!iov9grXJedphN=!_n`lh*_4zLyU9q8u-; zEorY`_^M>G$Bhz|CM!g_VxpjwH?8yt{mk;#;))(~SWjppof~}kz6IZ6M{b%^s*P_2 zdmhqTtT{WzD&t+d%W;(ZH|dk`Y0tv_ya2pd#ZRr%Z~HRW7(=K^_SrJ8!PaCO9c>YjHqCo@Pw8H|Qgm^ia8P z%Z_swSn0UgAwIC``m&Ekr+-oQau+lg?A5~m!njUlLoM(P6D*YA7TIozxH}%d@c!wj z;dxll;|qBJr6Im@Ng$Q76BW_{E&tKigcFASAShWP<3-Ig)v_8|E@P_^C;LfWgtU}XynN%g5O}!VS(we z6Ogn5yPakCd%Bf)=MG^55nbYmn;R$-<_3P7`bOcG_(`w-vA$i09QrPIbgk8;sYh0u zYL}|MJ1IDbzlhjGiEGkcNZ2y}-3|`onUqHK`5BrFI#`&O=b~@0Tw(8&9j~S5dGYd< zo98Mh;((}(eo~RHcMG!o*~dfP$Ib0s{mKV;=ml;^<6%<&2D868=GuoM-J~%&yJRj< zKTDcw-kcVWytg-f*uaeZb{5@6AM# zv9;RsgAHi)Q%@;)XY#p)DBqh-K+Ds(GfaF8-h309*%QYY4YY~9qjp*3W)Meo0QK5o z56uHj>RGZEU$}c@bP(Tv1*PDg*e-_cx*kzGVe=QFjJ&Go3S2(Fw80=-`k2z8;i%8I zW@!08N{Z`6#ib_9G707`OggSbW}??Clulz;W1}e60f> z0xS@H=h{r}zd%8hk4Gj2?i7KQa3E6V*8SFob|Ev z87pd)$q*0A(MJASz*(qjOT2>rBjS-U)}=mVgQao%5w}|rqBTmSuajUbA3I(V7UDps z&8QSnG!uqFx$J7!JntYEsV$Z~l6yC3makL~?dSfL4ma0K?L)2Z8HN6X`dDxLt9@_+ z3!MK}=qi_Z<$5^Lm@v{_m2&2M#YXtIb0S6WLEFSg)B?6bD?5X>#}IQi>iM!{j_PK) z377}P-Fa3qk`&ZN%ZxiAz7!$>Y7Ri`UKGt6lsZc?HdHzPFVX3a&A1z9PdtSu2uQwQ z`5;hf$c)=>)#$>MW}@OzQSyAoB6P?^F6PmY*Vu;!Z9?GMf{UQ!Pa)^VtkEL9`AzQT ziGus*4^pJzb_ZQA_}$-!hE9kPusG$c_q^9kI>bd1>*2NsT%are$hot)VYDaqs;m&( z&aDLq(2$09adzl3g5+-8K76j|MFUF@r*k*RK7Z`pDqS81;5@IYvxFCa!tG$V4!j|! z+&y)eeeYlxz?CFOV<7|&8_WY=B6eQn@(cS9=!B&hUj!=9eBYezMpfpQ z-_jKothjALjZ*gH1QA`Ce4eNUB^GgAD(KB*{#z)JV0PX;`vXI2^4cEIzar$2N~Mw4qP{=7~cpjWcBq= z8q25ODQ$PikRp5&sP0nf!;$shciZY>_vi^<7gxStETQ7pSwW+-qHzr(WPqF}fn18b zos$7mZ)H-i8wqdRt~G#owzPLfT%ha>_gR29+77(CFsJ$vegCD)(c|rqm+Ot2eQ8?H z-@T&`kU!5F)JqjL}HeuN<)wb5gZbZB8Z+2|H_#nTY zcV2XoxJg{Z#ON?P-*ZFo2+id;VoKzAE+q;4IF^dvfb+7`XJu$ZEFHZ%zPihDS08>^ z&g7kBV5ogoMjIMi%Y)G&IKHk1iK(6VjN~JiK>ZrKt8Q}k z{E(p5w(V)JzBtO%Hr{^Vi`3(CdMR@AYI(z#KODZ~@^nUGy?h~)A#B!(6G-0v%4S0S zndxSmIXqY{GlO$0yp$w>>0Dp2xjAi_Y5Xlol0kU%DPsmlZGq~3oJDb#zv7KlYS3_U zL;a*c?d5uYlK#1KA2=b)`}ORShrW$oriXVogyi*!fIdz1uo3#C4OFs$@>ZyxoG9?m zi!3s~O|ksBL!fY1`_5`igcf={tMWT+!j*wV49cKq8MUZ106 zF}~ZWxVF(qoyBFJ*S~*n+;OA#9i~uLt6<^F*?`z}%h01B#g}M>e6)ME##b&^_Sc|i{D_ZJy3h!utSkfu48iDy;A*#T%Nlt;ZbWkV|oOFY`zOkkEM2A zw)xDlZs4A4b%Wh|fb3Bu8*yS^#fU*hhTQ*>iKQwVT>n-Hm8t5+fEYGy zPm|g91uboDoTJFiY1{I@xYryEy}#-9mj3|Le$;p|Bs->`+PVIgi1>znp zKR6-?;GB>859gsgrLABZ1=7=HpLoOUx~=z>P5eo1AoKas1O-R2*0~tf$VDYFGbe?@ zsHUcD!R1qERtUq@FnP2Hsap+Dxd-PI-r|vx)fwMJ{D@5bR(E%GtB*mTr~GgqYpa{? zVYd$uct3T&c$7UqD6#W6etYU29-22p$ZmC2PuitjX*|98BbLlJc#K9* zK4|UM1gHqAB6+FOjuKkg6fb~b#XqdnCd{aQO=6y|(8v?6XS>IxPjCZVVWj?~P1qix zl3Gu_SR2g78r{h`f3(qMsZ)!>T!Cx^cr@gdvNbA9~^ywLa>Tf|w}@-vuL<;ll2!x4k}&62E7j!m&!D zJO#}Jp^QRfc8BGt3_Q0x+?xJNbI78T?v2R9@;aSm*BPXm>xakii@DgIV`722|@WMiKpcsNDO~A*$ zIe_`6=4blG>m%|TVmaUEWH`^-)TexXvb29U=$;6(=S()f4a=E3f^--vn`@y0vG!ie zkOu3hWlU@i8qZKwHmN+5LPLp${Cs0XI}`$~zLw^1`CL>TZxs(hW{=wub#ncQVg`eH z_3ApWz&|p9q|(?@G^eE9#`dea@imm{O*F$luB7eBIue9yU1VA08|542;BwKKCh=Q? z55q?>vrrnwk+XSuG7k{Bu#Y#EKg6_bFVm(+4vtEEZfs?>mEv=~nJQ0~9k2S(FRR%W z;na|#_P4aU^E@Z}ID6PReYT>B1VFb2m11xbu-LJFN~}I^#yAFW!|wmZR;Z7?PP!$~ z-KT10-S%4V)9P^*a6uzm5|p)t>dJRQ$;AUsXrFLN713piVzc!4$TPnkXu`CiCnZF2 z>fcrToE%rH#$E|A;_nSJI#8hZrS}tV;eT2&nw}-U>Nn*T^OgF*@zxtqF~?8ExYqU0 zJSqosn;YeA9zyGTinoD@D|FOs!Hx&eVbDj({+uGJS;Xb1p5arNcYSna`?>p~Sh2=s zuexwmTba7;kLD}%F^TflnlC%#NIByQo+!gR=0+hHV4zAJMRz2);ls3!qTv${mpmMX zi(Mcql~2Na#DCOzIBqXu+(zx6kHBZEc+v$L}1e z2HcF@7)G)0+4y4LhvfT2Cymh0Z1mkq=$tPY)QsX< zU~4zx1x$=lXJstSvCm8|FZ+=(Bav0^XG(ZI*v?=uhQ zQ4vN-(#KkZ*A3wxj5C;k9%nT9-ASzTST!2;92Fe(C#neEB8r4ahQ-21&cnlBfN<;IU}yB$7brscQaa^I4KSowQ@8H&+| zOL`fuPy6L01kMIaCBl)*%eNF?tacsSqii<%^AE%D^xKWJ7eXX1$$G~9uu~BxuKrHT zK7Rt6kK}rE?~)4k5Y3B@W076emF@;zo4lMlA>dd18TUq!MR}g&=i$4vw=r-h@X9xm zJE8)5Y^!Frq=!QT=GiqVx&P-IG$ySYHo_$mWrmcziF>qb}yI#-UdW7aU=%?c9g8N~S z{6(L;g$W{T#C&dHqyydo^Ye{-Ta@&|cK~nS{IcKC9FsCJoD;RF1o3{f0)Z?aFA(~# zleUt7)&UJO?JzUOq7)yk({e5ENLiWBD==L=!m){pC?!Z~hAs{-?ji~CIax(kEKv~8 zo(}Cb{WHJSEV!FDhvm#0kK`}V_hV;cZwB`UGcMM0F;P!pr15!#07ev)sT{6;Tg|7p zXSZgV9Dv*}wQ$>8z%rn~&ee$pDhH~E0%V)V-wynx-m8Ofu5_pivIhcxFeMY*^;f)J zDb%|^tspe__W+gJT?3w|78u-X1RtfyHV3U)6V=Dh&(2b^P}V4~%$VbctQhD(@lqC$ zUTja}f_+L7?vid>57aFp0pJ!FP^wF1%O8W+FRB*r*?EUD1k08kgN|Upgm!8J#N}$R zFBQwB9WKDp7!mSp1052=jhG)_~FE+XMF?JU1M(V82T)pl)*DgDXHXZfPQO z1WO0~kspO;9+Auc!b`IdG_*pMaaUHhvfcvInqi~A+i}o{hQWodVk#;Lqpt+=9X$4G z%VQf#WsTzQcbwuhW5+3%ALxwFBo`c7c2Q_f2_+E&;aksUE>?Uy z>3L6N!Q+xN&GMn zRM_kx{q=~;A8^FZZ}7UTK-+8fcfl(~;O60Ru_yhZbyH1Xe%WcS|7rTIZC`X}m*q;p zzN_Q-V&oFO)o#nna@{+nw`LS(Lz79!N1d1Rt%lR55fhf`@;uaVK>hw1zHqRwHt0tC z3_tZCDv~v$*#XikDjkC~(9kwkq_s57F18Ue`-Z7rs}rkq#T_lvIJDzWA4`Z+fDzeh zo!hm9!^GAXe=`-XyqXmk9r_$oWQ};29ggJoYPww8UTv%9^z>MZZ@0A#0LO>xWuJkyukV5X&eC#1!D$sWTt+*v5E38>X;MVCH=;LRu;`!` zj12G$)L{eo+TSTi%bPPLB7Rs+^)q_GXFq1tM7%(?pqkibu=5`T*FkJhn;vG?k{{A) z%CTlY;N?_rX1xePS|HYZ%_Z_&DwY*QtbW!`i)e#X!>t*bdo657Q`d;i_=~IN-C{t= zRnCMyl{dACPxOM>P&HjpZ;4TNfzSN?xxr`2lQ*SavH$SbhcQHDfyqDCRisjJSHa&k zNcvbv!wte0N##Qb0`S)i(Nd_^fWtT7&f%=Bw0%2XRasnX^y0w4F|0RRfH3V_uf3wE zVYGXxyAq4a{`^KQR|T+Jd2jhS5YWy|BLqjl?=e5m$-dI$l0?{^|G z+UT~Cn%3#2ZG%r6V?$%PgApa=g@Ur~S>=1a+1%kjBOB;G9p``IG&2yAl=Az4 z^6u*NtSuAMELS`tPzLanJPtY|i5fQB3GXMK^d1iKl2SNl8RYxG|Ewr_&tt6#%V!p10hY^F@7QF?`B4cD%G92}T$YqZ=B_Lf4*$5IS-SHfgE3-O^6H1 z#x|n+*-93EKGwy@rJz$H17)q0!XmORVqkD>2 zr@*<_%pYn3%PXwT;*OeI`$wHIZ9#=+?;p{p1wsiCw(aR?PyJvAz{o!lvMDpLxH4R?#&rCmV>|oAGAcH${gj`GaQvIck#JhN_-dW5y;nYYi7CyPmgkx@^tcz%Lkq7h>hdZna?6)$R37OOhxG-|k zORgmkDUQ}G4(+!vZrmcWjtKc-HE!tK%mTZ<^6tBsj0S%J!d7P4mah4GKqiR#^!o&1 zp<$E$LVpFMDUt6FPiQdR>X{migjA0L!+ros6=}Lf%+{GfFJ4p)WLv5Hp+bE>WZjq= zB-yB`@U2C#UZmxSQHVM2uwW2Eu>f>W-U``=Sdv5x(qOkdMP$!hMRPl_U;bezRjblOyBT?e4H<;)E zA)2tgeTfM!fu-y zKi+3jX*|;u%h*PRirZH(eV>2JO~cfIVR(D zqTY7)NcTneW4z)3`r+iz&D=LU4rgEz8EOimS~w51YC^3L%Q%0}5%Vx#)7kOePN~JT z1dL>a{^o~~&*-p+cb&ybeiYR^!~M7-(?Y|LQrzS(=u!nyees06jDluW2PR5Nar)=L z1Xvq&;4E=TsxZ6Aabh~h);Ay6dfZ8~IyB7WYdHgkU}RWr!{vKR`YHx+jr%P_)j@kS z@Fwb(hJ^kcsKVlF?W&qWw+a7vpuOB{ zQu^Z{p%RN|cXl?NTPS%?FZN4@uo z<0c67^*?iutDe+)e6N|hgnN)TUF|^rimLW`C6`65_qbRozsg(;`wh1Oxi$22B}>(d z%r|oD$nh1T(t*tq2cwr{mM?P=We{=XTtCXK+KpGwi;y$p(^%T}u+)1zRd-=dV&YT0 znjYbl2_%kHZbgVnbrDKu;x(!aizwwUMW5sV(|yLl_ANCymH;Y|(>qQ~oxoa|n+OYi ziW>l4DLQ#W#97oX0-(sk`MX!b85*^A8G#ZN%CK%>OG3oD-B<7jVZIFxPz_72aE@x9i8Z zSNRGDxLspHc^Jq;uC=+APP^jv3k`BN&p@`xrIoG-9{u_WoO7^>0zPfc$)lkdZ17I5 z706FeDQ)TsRocK;w1nq1KB$#R9Ri4;)a4WqNpM7IRY*^r8?D-k?CkbggpmWkEQBoo zs5UD+!VM$Rn4M1`yU~Z7oJ%+fNyBr8@9_mLaj%kjtpL^Btc1;p;gvMU~We!!J~W+(;p99@bj9&=5Q?^iO(F&qWw(#bNImQ)<;|=1C~12> zNziTcReurbj6$lbhvJ9B8z!F(^s)?kw z&*w{*uPLcZm{`&@t6sWL?I9Yb+Tb7uSBvDANEcx-3mW`V`s{iM1Au-n0a|>O@KSKID)c7#ylGd;+dpwQg^EE}2%x+ICRf-vC0FD7T}3q^AkOhs&M zUaCZiN#aChf}SuyU;Rd)*rPy6twAnDQ$Zz;1Z`eP30+lL{CB*?RtH*WQ=`|}DNY?mD_X;`Vv>NB+y#gW2VTLLpsB(UWsfL11@-aUBq?jD zXsN5EkSHsoPLOBgMHz|%F2c+kkc|*x$N@X!5{b^a0{%B>Khxjws0+XlFV6J%6s^%V8zA;)wl)#&U3# zsa9pkAEB_4pn7N|+nN?#EupF`E-(D%%O&j$IjD zwQ9TaUskH@r{dD`gLJWZI$J*DP;AcEPQ%Jq`3E7NM>=6kwWNGaDip-Fv{Jp&5!Hqz z^luGP;cqLm@LlE%8pJ)3%MRE_VD6#O_T43fKq;<35dj}-EGlNtDk!nw$Wp7w=iN9t z7c4N>Ij}ky52^=EnZP6&vkE`)Rf%^b{TZ~8C-(_XLi$q^6s8RVGeGk3Ew(U+R^2t0XzmrRR*MkTf4ig*C+Bm&hg^gC6GQIDL{7pznOTL04ELT=h}`F1Vim_S0j5#Db^Er5;* zGUFKW6*&*I>U@aXCMQbsDY?$x&ya~E$^InqN3ECyY?{1$WU^=Wy%;4#X>(@r5W=Ag zBmp~GTe0mA14>`InwT?)`-DG=R}&+7Ap>GSB$4gJJs?7Uz+r4{1V08vM21(xRBsZi zWK)P(pc|AC2TePm5a99W?8bnVEBb0DFna29y>RS1*N<@8|@u_Qq-zwiG-vn2n-(WF#lyv^x@c;8VLz}-e*L31WKqa=BgDZ^~%s+M6M*7wc?;Zp8gqlo$ z0WbgVeDEjg@2@idrZ@k8?R@ZG_wx@2gm?Fcf2Z35S)l)NKwx2}{|^U*f8kbvsM9~_ zw(LN*?0-wQeJ7m)DXQ-@Rv>hd8AzUG`wP+v1cL$*rte`Oa}@}0eaEr_35}Y-B8>l_ z+X5k@tgH-#tU%Z*8<2F$3arQqgqyN4a1gSwvjB;)z}tJ>cUCJ9w#or4!^X}ARLujC zqx3BQSOY1z?<8ARAbXYV9YqRklLH8`WMu|2N`VUdclzyrOSgTe(7qFEfk*Jy8fYiL z1at%V>oGe}6c6kdBO4I3%KXmnWhZ2RC)fhx?_}M-$^h#!1AQ!*fyclEy#2Ke2ytb5 zr`!VBuPngF%xv#%1KWM)!UEUtNdRW)50eRCXaCUF|2vQH|Cme|+v!`I0AT)0PU`=k zCKLb3LgjxOiTc-+`?pE||HNeCzntg)3$qD^clU_@ghpip&LSEnpyLDsGw|GHV4&v! zo`3&Dqq4r6OZ@LRP0#?@r0-@D?_Lw^?=058SxvlORQ?xM6Yp$P;H(3hO|SrMCx8TK z9zvjf%3pm3;!Xj;z(0&zfI;A}z9;Rk`SEwl1E&9DHSu5iM*MFC|9h*6zXsy(d1qh* zqNM*Ps|k7*mcL_BfmRb*sG>{G%Bpu^EA-)8AFh4Ai$DOB+W4Xb%6FgiR*t>S?%F%f z45w#iXO-Xfybg=8z4`_U_C zXgWqSBiqb;J&#ZRc=CEqllO{rvZiQp7hp4bM(OvF;I=KRKHhe2X~`{+mk9Seml)r` zl;pW9xJKY$gmLz7Q-nHRVdu-&yo65;212*k)amo*RfNPp3X#aiPQwqNYthcd(ZW)4Uh@$3%HMbn;nUKA`7QV&%^y0m71HqJ3i|B^HO}$NOltLrJ3UesS#BT|2c@y z0%ldpE8$iECr2uRUW6EvC`@r^4yW=XUE`;m)SK*%*NwTG-?b`@I!L&BseBMfai5bE zTK5HQJ<=?{Jl@xlL<0(bWrO;nfkU<5_w^B*yn$A1ZDpJFO(U@BwAlJjc>Cd^HuQMN zz>4;Q*WZ6kt3~&2P;smMEuBr!s<(puz0h^KmYx>9zYoO_krfol(1fUC>$gi&n1A^5 z7bvsO{elJ4X3GWJEB+bD4W1%LbykW8sxAv^ZfKDyG6~bUMjR~LtH0X9@mD2E z&uN{k`udj7t+V1}))BY6Y8}WS-~v2id}o5LW#R;@b>>N6Mo8}yVr{V%KvTW160FS*ZVBRMvL)x^TJN*;&3rC06~QW=T?M zb%_76eGoT9ffBI;!8)EqPo}a^(I`z>kE3~MyEDv-@@%&Is_dSD(BE}EAOrq1ZLtOb zbuhXmI=V|o$mQLT>k1&QtGo%NMf*a8=osWN2}|N%u;tKMM&bB9yKzYhuiHrMHF?eMcVRg>yZl6f^FK_S&sgo;?Hf;trst{0Tk70a4fVm#?#UM$Y7z)K2g5Kshn4325bPRu&fcTU_s4DUT6*Gi?5^o_a^sn@A0(4 zY3}hvt|!_m~b2%*Ff8t5F=e zLE#XIeSQr;oR{Z*l}6U2U0t^m$8_nSkD?PO!gxW>6jmji$s#xALrJPkTtv&~jXB@% z@7T@IO8K^5I7Cm2(?LQEjb9+USj0BoNq3h;+EweX&o%A#;Y?uNH?nbr)%|x3KX~v5 z$b`a_x=%g(^{jOfq-wRWP0bq`&bff}>s=f8^Pc8%RYFy-NH9VbIl4d!Wzg0^+fk7M zr2=g(^br%$FzSN!G%Sv-mDWgr@#eMjx;HUXY{pnmeiN?hhJsrXj}$?+unVkpuS{Fu z+|-Q&c=`6Fz>9$O_QiK8Gg5U4NqVGMuj%i*^X+({>=5p zRttprwmyW=+HV_G(V1Lt_;N4>Bat)h@E%TAH_CVTTDeO(u!97!b%Z|*7J6%u6v z+M)*SQbP(uz1XF#_>TLwy=rNdetx5DIl6$mD~}YrdIJWbKt z?>H*9mT&MrW!A_a6CawuReQ~wekm8M^h`4Ewmo9STXeb~O1Z&FSZOx}-SL}S=Uda; z;NQ@pfTHIBM4<%C;)IANxj2vTXV(LQH?0&$7}QNU+#n2-8&cN#=f&=DGUe0p$k+!X z*}#qt+@%VB5-Nf%q?RLsboMgtI~L{gQHS)77*y^jly5`QQFz@MtpB_YpD4^oGA;>8 zs&yD+vb9~S-%bpt*7(xioTzerDD3^brTGZE?LD@uI>F^l!K8T)&+Y_XF23Tu)#a_` z^?Om=nrIkz=;M$i!Nhl%rXZdeL+z&fECyQpW6-NW6wk*=Hr`@H8`TzHk8k^Q~Tmi05v%1@pUEz2Kk1gJl3xFo;= za+~%=juxXAx3Z>Ibdk zrEu_wxmL3`7|nf$$03lSYPncr@H>G9BZv0X>t#58-dQ*7@M0m9j8@ytpwBRCz+q$L zqlcrRTQ7A|VBKd85bUmRW-H$ykqc3L)T;=vcyF^yt_Gg2yIyo!-I%!(t@ApCp7avQ|dr8&lBLx=LV{UAE|``U{$IH9li+1#oV+F*r*^K2G&;`!!` z&l_temTpL^i06x%i1-O|==LWrLQJ}=-*!ingEc8ga)U|JYAijMKT5@129%ZdX(0$+ zL%k?I(s!VwR^93dIR=TDnIg0MAzyE*UD?f^M2=4zCvlFGjY$Yk2eT-Z2*9jxH) zINf}mf>*>3!y+dTx{bwwG8^Veu|u2yxa?_EM%i|HplRTUa$aom$uy?Hg_^NWMVOOXD7%%wh zP$_noD_;f04;`jt(}UR1FBqzLRBAN(f^^^*RD?O|#~S)zRN1?>fdzRku2}Ms?iy@* z#Ox$ZwT;`|@S%dnb^WZ&ROa}0@3;G!(iivZi4Ldrdnl@jsmz$1r(M*Snx3Zwk~Qf{ zD~~8ICctA6`|rULw5I#&y($Is(1SEEN$ZG}{DQgae3OadaF(xLG*s2doDkuA9>Pn2wL5?%^ZfJ{Dce`N>OL_cQA*L4w(Nq*QAg zux*8~@4ON*OxY7;y~R~pFU{7Mnrs7KRY!t(IE@e++OCVHZ#E7+k8)5Bg0IP*BK#4o z8tK%k?OyB0oSFpwh$S{L30gVzZC+Q_E7@gSMHP=Sw}1v*?w!E>}-|<0D57HU2Ok<&u zzkdR|p-u{g(<=VpAwi{8wjwd0>)f-t&j>@u)OE7L;D;i}*F68V=e1rCI#?F*@hRL5 zw_X;v#z?Z4X?U&=8?4Gb=9L%Md7#67nEKpK*ctbT4mbWD`+W%yum_2BC0yFxqEb64 zL8EU73|pMeM4jGHw|YN7b#J!~!#Utrm(O=ZWry#b^tX!1KHXbA4C&(1{Lpbx*o|T_ zfGM)6xSzdAcS@Kr@sXv4%=~1atSUh1l9k12j4BJgx_FD36Tc5JDA?US(zI8#`Ly=t zqZ7C+N%aP)uK%lm$~WgBgl@mWd5jM2Te-;73c&hN?DNQ%{ zhN>wm#&{YW!W-uDYElZ0S|qZC&rxB2rIVbYyS(Em z)kH=4SoMOc3Ov60^2tQ-sXMI%euvdt_1E0(Z@->q)~sbpp>=LMQv|hlD4?8qJVYbc zu6uOT60h{#9nXDdM{wHAh-xyt_ZR1%?s6y2G}`aSAHRweCv?6BoMs%xIM8m^#(IyKTQ^lAfjzW>ej5DB+mQKs`2f8Mz{O5QYpf%?`Vvm zi$mcTmWrRCUREKd9p>DY((WEUui1!KsO z-3ecYaKtFGf9vA=IY2#2CITxOt_ww5`a#>{O)T!vV3uOUFujfslN8YnDO=< zl$T~*GI%S`F({!D?hYDO^JkFIDU!V(_g*iK$SnLkzgM}7y=tfvqpoCvUO+Jh`pfy~p0(|B(m^_Kd~_aw^B(nPkf z;Uj*zHKP!7DEQGXSkXcAyi{uI^3&)ZQFgrJ7Ed?amJ0XPh zYkH!qp}m|(IBqd;Z08Y#7jyN=-*#tikS0>RNGvr4#dBwSRRDe}0OyqQ<=Vs$DV%h< z$baU<5?88WwJ1A6!6_)>LhS-)6EwYVVkZ2h;mi@e1#Cjz!hAt6TD4EBh&nq+cGAqm zRE{!LAyU0$XZtVXJ@JA)G5e~)>5}pLP~NcN_)U77U28$sFBr7!dU5benz#vA z%NBDHrEMZ~qgBT}1PNg&jMJAxPjfNF2Nf7^IgjY)d^{-j&#fZLMtQ~={CG03SQtiD zb9=42^*e#2oBWkBu1y}DqjCIWBN5ju4zlWN-($}&BLjBFl)D?WYR0o`)R|mFv1qvbW zOye6f>!(_O>`5VPLvSTMKb-Zk=rI)Wy#XrWgVY!xm8#kb|3|g5_x!BCFZTA)~Gq9sKH#(oE{^f#jwtJ zk;HHqC2HLbY<3UL1g}%vMIARw2m<@M4LuXfTj@P@`L`glt>=O+L+`C~@0Oht3nYly zw=awD=%_2)jw=8Z`Z)_EL$w=xY5Y=cuP@FS5AE*WYHaq0I~a2s#-sSEi5UpdRdCz! zw$xz#g(fR1UYm8{4;#b_-?gFAJMqQJPha#qb7XGa!JE_lj`l`}mQ2>TscFmHa(y!_ z=mYvW+cXW2l6quKP3sEgjZ_=bYGH4eRvZjpLvm??UCX*2eZ8Y9vc9Rn8SwhbjiyJ= z=-+616h3=-wqgeW8Hz1fe$KQo=f)5ldwgo?Zau6l5~%8(^CwB1j$I^wNfRIR zJ|5NHW-w!~AI)*}EWC~PWw9+h#1in^Kw80VbtKUHd6*#@Z*?j&z69#5vl2ntk43!H<$x+>LtqKgIAxf`Sjpb3M&IMEu77I#j5N7~s@ZtfNee#CV7$h= zSpQwhJViTEA5VMyxVgc_RHRbNSXTe4=`+>^N11p=J-4CrYVjp;Ke#Lp!SowdKRSUP zj}ZjH5(_oYXpQ)s#~?Tlgox)ZDMsi7?*qH@XByojUlDd)0uK)Li3dK~Yg6R*q`TSKmJ23P7EjmuieG7qN@G`~eZ`t5$1-#!%#!;M zw&;`0=PUwmt-lGY{mTw(K$jyuxtM6Vk}#)OuoCUUXDHb+&& zT1U3nF!ZJ4+kG*@vMsdDnsp_ETc&gJ}Zc9vX4|;6vtr3T)Y;KL>9bM zE%V9ZyBRG``+g3{|9Ho0NU~;v6*Wyu)vL8^o~Tkc@(K87&`%K^$j7n@%eyOOs7yBw zK+t5f$vB?7p~q?L)i=Y;5Ch#ud!yd0{a(djWm(&~V7s^Qfaf!LAee=JsAgk>ziofc zi_$Q7Y_bPge@~3Ot+i-L8JWo>3W0|i=HQ2RhOI&5i2LpF*;m0d18*V?+|7)}Z$1}m zi`N-XRTM2x)rOEHPAi?S;NhnJ#OAZZQSyIflw^@w1YyIrlu@-V?(L7n+4 zdsO#$PUxTAysg$a6?300ZrULAZu_A}1Xd27+{_=IxxPmFdVJ~f7#xM(P_E$_%Zm(d zeunVfS0A!KhMG8#xB991s?)DXN~6YT>Hi4$as3Y zzi=mRqv?WcNX`Nm`u+*}d~prZe82_%yM8Q&Y>LUIr?&;`^HrtG7PZFBDcHlKWYU(& z(SyxG7xP#ILeb5kxSAjeh<`d3w9q+Sw#LOqEVcvXZHwn#p=_jgt1h5J2TedI5vf(h zb1TZ*)!y^Dj69gSzb-Ama%Lr;sJll82BEdwVnxMP{N*O{trWXZKX7kz&PGF*)ElMn z9E}9cp=$-f191>U-HEg)xCYOU{sR+2pulHH*u>HT1ZWFesO#?`(j~Zy9?p9wYYcm$ z)iV0he0K{AUMMamifbS2%%%ep_>d8Qkr*%RHbVs{$C7^J4Y7(W8K<4eH3*ClZO=35 zFdBSauiE+KSPL&-gdc)TPArDdGZ~3ae0!!-M=mX+xvtpfR>=%N8Wkdp5gESRs<`^iz~90T?v0!o$Gn3 zN|vmmtNLqVUtifmpy9k!*|JNr!Z=}mB3p3_yFZ z-nKoNpB)C><32uv`SHKMN|3FqLL>MF@k&#!3nQ~hmtfL_g7(0KHb~(jl*{xC*jWx< zpnx}8wN<)_EDUDKS(3dX#Oh$(%qjkSvf-`&gy7aXBl@hHaQ~{8vBv+o!2j&|r0_`9 zZ%qW<31;@RQi9s>NyLZuqbjJD>Xf;HU&f@PfJLt~x%M6UQemm!!#%c}KvTdRY@!A) zv8Ft88!z~_J9IcX&S~Vw2oI+b2adLr~0HkXMTT03Rr|eU> zI?P9mAMqZ*fA}KAsGBly_tK3*&2U`B|j$NiYU;$}P0**CWmTCgY^Z9kmF7 z)THp!Cw{{z?R`%*?F^8kkQ3P;I8Q&B=AV7ePdg; z7ibqK7bXR@(aOA|E(Xo#*?%Z zwU2QBtoJn?|1g5-mp2)dH`An9dAK}=R$2XrydL~=X*p(|f_h<8ng9zc=nt?D8k)gw zA4}_<$WT9P{aWHDPr064`V5NGnpE#Zj-59;xwJ{H=Bi{Nn)U5B>s^z0Y5a+>T4fttCw?9T%EbEg4Y0l{@nh}g6qMfHL^Yeq?P z@WPJOyk=Glf#j)mP7n%lvE(=$(XeB})<*s}Rq(F*jdM`Sxj(M4}$ zQs!FeM9y2We2t0o>pwIiDb41mFwEtWNS-xxWYeS>^5sxzbrpzJ&^ECyt9L`KT`pO` zMpIQ(_Al3{X2&zuBtqODG~-C@2{O+bW1j!`thTw_Ln4T6)I4idDqoWxj&6}V0Q2%8 z3#OJ7jPg9ixBCshW*TX0&LQs2bq5-E1l%xvg|%2u8U-7IuFN`eY_TYhG!@d(C@cK= zEaa{O%~obvw&krnuw+xM#NU<0a9opKiG69UKH()IN8(Oe{lOQuFA%_pwTzb@xz{o2*Ena{$;R#VVhfEIH~rTG-NERcM5e$!l0c%;i!6g> z=5nXHR|3hCnY7{Zk+Z3_)V2!goJB2yh_~;4blB!DGFHEc>l$)RH`l{NkUN;97xaZ# z1{4SC?zSOmBp<1j%F78@JGi-`=G7fkOlwDd_IHxA#~@Ga^Hv995IbKuj+KeW zt?(;)GbbJxRb+ZYMe^W80(3zgqq3W+#j;-={H%4V>a?Vd51fc>?Q6l@OMKeJ zvTU=N4Y$~{GCxLLs~cCkXmW1Yt{49Sl}VDaS$=|!U7N$9H4&~M)Vh&dVPKr0UjB-8 za#DHuJbvL&Q=M zWw$>1QojNC)BzWHj&h$@))KsC$_-S{G_)>7tc^Vjn_7@opKXTM*ro!t)`ba^jD9op zc_cyOq{UA8&)x>@@!#kIZGUTJs%sg?FB{Mb;+hJND~CCG6M2f0&B8WZ({=%S^; ziWCdrB=?dSUGAJegdMW4mD;J~s3+Gi%f+y0mw3>>$et_G?pMby?ub{*)KF3;#@ zX{rrZ^qF{6EN|2o_H*(bKiMzCpJeTVLx1P4PWf@HWWun(kGw41-!++^4hK4xr<^&r zy|%5|{eP3d>ZJTO4#}hbn*O@F zvPNqq3)sdszA>r^IuiN$qMj;~1o>-*Za`Ya=87kX6?auDm=W(+!}dy!x)!&%Au~AA z@OH56@wa%q$wvg^cpm&x<>DGvc9T14l~@1Vg`LjMh9Q(P>)Mh<>0_Kx*4n|_;?K8^5`{Nl$& zN(U$d%E$nrr*N;yB>XC)#f{ zw5-TTD%QvMs96#wm6r@z{N{2z5WBAwFx*K;)jWM9F}B;2P}zpFin7n5Ok-be?}H&j#MEuO+?LvYziqv*BTRi#ag6{o!!Ob* zaFm=yvnwX!^zFbR`B7SofTZS`OYlqSpkgNXc+OfV#PV>w8?c=vu9X~S77ga0 zZO+|zcI9r~nzDh#&M&E{5m>`z%vGPjF1B#?8CB;~E%@ob_lXqpdOz<)%=)4d)96ht z$@L@+PbgnXgi^&_#iOS}9$DGG8*8tTEopMG1%-NR{qTMWadNvc{3*{JBK zXi6Za!qAx|{AfD~OjS86HOC$Sb4?@wZl>2v5h|6Qw2{4$x|Cj=f^KY#Ru68{kYC-} z=>q|D3zRgfol~u3=!pG*ssL2jRWykI&Ym4IAs_m4;uy#F7KVS*r^1}PvhIoDUcbu~ zVv^FbthDMVRTZ#fM)&Sdq=qE>u~?OA+lh-nIr!RFJ=D~4=%mWMMmb5TS@Tw{f|{YLOA3y)5Mje(&#mS77-dQg#uhy*Mwmy&M_7Bkb86cT zUzw+xA4}SMJUM=q{<8Z9`|;Fao|MY>jjSWI;GD7vzXDZn`^`)h!a%O-1E$QWHy%JiWoVTmq=jAQa>&;n9E$(4T zmx6;V7GwN2MyDzYgR!r+eJ~mE^4UIQ`U?G0>k9{W_%ncq15HQP>j38KXhxgIelwdLz8B? zicD!GO{l52k|0+@qS%H(x`rcus!ePSPm;>i=Z-vB&KXn{StUt+Eo{ z1v{t8GkLADF|8OOr7EOir3KN-$y*W|7635yYAyi{BtaEi8}9T)O4>+5N#AP)*k%h5 z_36N8GbVLhA#`=>=`RxKtO1g+t8+nl@JDVgi%aS?=MSo?DZALPZAxvH^ z6RWL^-Yv*bs1-_KCF6 zHhRcSS00aI9k}=ti$UpEibe9`(sa_EjyMRQ_r0942B9dQflqM3l@KO9g zB5uZj8u3RsVfByRBtGO=3Xy@>4E;P&y6N_1kYaa^1IVIP$f$}qAC_F_R`5Aq_TIE9ftA*RHOW2||i^)lilgg{W9P(aYYplQjzBYWU#CRFsl zymq_@zExt~_jH&BykbZ}c_IJ1=Ag2dbdng(^TCDewUU;Xj0ObRs|&?>|_hbRtZIjQ@i80##=JQnLZYX73_D zg?E}Iov@38sG@_u!#mX!hE7xws1f_uw*Mp`d1wCqqk}MXz#bYo8UpMH$zR_ORLPbwc2K)t;^C;_JsdXe$mN(16cDLzV99=B7E;ZA)T7K2BEd1rR6{F7=X!o zuOX%HYU2pZsH`*hN0rUO$x(rP3XV4!pR-l^j?=eP3 z4xq;Ij~Ej@P<{AkjP>902Nc8r)qQ`IW2OhH{r-$Gas1mpfbI={<^ZU9Wcjlk6DuQ7 zrTF*unAjMAO3FWDEF6F4iiwSt_0QvFV&h=@Gk;9%Oh5(Y-`iv6U}yTXJ!TFLjz9Oy zLeBtHV*b4@3q1?lpLt=SXMGnHy)XYUzAW?{Kvm=)F$Si0Lipdxv9dC={@G_%;HmrP zdBw`c090N6QJ0McsLK2^#`&R=Z|5W{`@1Ui?{(Sf+5hdlVyEZ$&&TFqrw>%K z*}=SDmK4q00PpjXPQk{;fsh&4yLVZxxV5njP(k|7CqjgpT+G1T>l*>l(8dOA226%b u09N3H&}TI;w3Wc4w!}^ArY1p`M&^~a`#{W literal 0 HcmV?d00001 diff --git a/tests/data/snapshots/decorations-amendment-standard.pdf b/tests/data/snapshots/decorations-amendment-standard.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6f64483ca154e913897993856d071e7754fdaae9 GIT binary patch literal 82425 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≻G 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 H%ZmIjnq)L_ literal 0 HcmV?d00001 diff --git a/tests/data/snapshots/decorations-propagate.pdf b/tests/data/snapshots/decorations-propagate.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3504d908ece4a63fee4099a45e67856a563709a3 GIT binary patch literal 34930 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

…`, is underlined too, as is the text after it up to the element's end tag. * Floats, positioned blocks and inline blocks no longer take the decorations of the element they are in. Tables never did. * A child block no longer takes its parent's `vertical-align`, which is not inherited. diff --git a/src/Css/TextDecorations.php b/src/Css/TextDecorations.php index bb3ba3aaa..d520739dc 100644 --- a/src/Css/TextDecorations.php +++ b/src/Css/TextDecorations.php @@ -66,19 +66,16 @@ public static function enter(Mpdf $mpdf, array $properties, $parent = null) /** * Whether the decorations an element sets are seen. Under CssMode::STANDARD a decoration is drawn in the colour of - * the element that sets it, so an element whose color is transparent draws its own unseen, and the decorations it - * is in stay drawn over its text. + * the element that sets it, so an element whose color is transparent, set or inherited, draws its own unseen, and + * the decorations it is in stay drawn over its text. Call it once Mpdf::setCSS() has applied the element's color. * * @param Mpdf $mpdf - * @param array $properties The element's merged CSS * * @return bool */ - public static function seen(Mpdf $mpdf, array $properties) + public static function seen(Mpdf $mpdf) { - return $mpdf->cssMode === CssMode::LEGACY - || !isset($properties['COLOR']) - || strtolower(trim($properties['COLOR'])) !== 'transparent'; + return $mpdf->cssMode === CssMode::LEGACY || empty($mpdf->textparam['transparent']); } /** diff --git a/src/Mpdf.php b/src/Mpdf.php index 0bc7a701c..8dada2cc7 100644 --- a/src/Mpdf.php +++ b/src/Mpdf.php @@ -20058,7 +20058,7 @@ function setCSS($arrayaux, $type = '', $tag = '') }//end of foreach // mPDF 5.7.3 inline text-decoration parameters // Needs to be set at the end - after vertical-align = super/sub, so that textparam['text-baseline'] is set - if (isset($arrayaux['TEXT-DECORATION']) && TextDecorations::seen($this, $arrayaux)) { + if (isset($arrayaux['TEXT-DECORATION']) && TextDecorations::seen($this)) { $v = $arrayaux['TEXT-DECORATION']; // none underline line-through (strikeout) // Does not support: blink if (stristr($v, 'LINE-THROUGH')) { $this->textvar = ($this->textvar | TextVars::FD_LINETHROUGH); diff --git a/tests/Mpdf/TextDecorationPropagationTest.php b/tests/Mpdf/TextDecorationPropagationTest.php index a1f5c797d..24566c83b 100644 --- a/tests/Mpdf/TextDecorationPropagationTest.php +++ b/tests/Mpdf/TextDecorationPropagationTest.php @@ -248,6 +248,25 @@ public function testALinkWithNoDecorationKeepsTheParagraphsUnderline() $this->assertSame(['underline' => [self::BLUE, self::ANCESTOR_SIZE]], $legacy['xx']); } + /** + * A block inside an underlined inline element takes its underline under standard, as it takes the element's other + * text properties (#541), and the text after the block is underlined again. Under legacy the block starts from an + * empty text state, so neither is underlined + */ + public function testABlockInsideAnInlineElementTakesItsDecorations() + { + $html = '
zz
qq
yy
xx
'; + + $standard = $this->drawnDecorations($html, CssMode::STANDARD); + $this->assertSame(['underline' => [self::RED, self::ANCESTOR_SIZE]], $standard['qq']); + $this->assertSame(['underline' => [self::RED, self::ANCESTOR_SIZE]], $standard['yy']); + $this->assertSame([], $standard['xx']); + + $legacy = $this->drawnDecorations($html, CssMode::LEGACY); + $this->assertSame([], $legacy['qq']); + $this->assertSame([], $legacy['yy']); + } + /** * Under standard an element whose colour is transparent draws its own decoration unseen, so none is added for it, * and the decorations of the elements it is in are drawn over its text in their colour. Under legacy the element's @@ -299,6 +318,16 @@ public function transparentElements() $underlined, $blackUnderline, ], + 'an inline element inside a transparent one' => [ + '

zz qq

', + $struck, + $underlined + $struck, + ], + 'a block inside a transparent one' => [ + '

qq

', + $struck, + $blackUnderline, + ], ]; } From ff8a9907ce3ffb78a45bb28eb3ce8ea0db662d23 Mon Sep 17 00:00:00 2001 From: gravitypdf-bot Date: Tue, 6 Oct 2026 10:41:18 +1100 Subject: [PATCH 3/3] Keep the decoration snapshots' tables at line-height 1.2, and colour the fees table as its clause Since #656 a table inherits the block it is in, so the decoration documents' tables took line-height: normal and the amendment's fees table the inserted clause's green. The documents set line-height: 1.2 on their tables, as the others do, and the standard amendment fixture is refreshed for the green. Co-Authored-By: Claude Opus 5.5 --- .../DecorationsAmendmentSnapshot.php | 1 + .../DecorationsPropagateSnapshotTest.php | 1 + .../decorations-amendment-standard.pdf | Bin 82425 -> 82425 bytes 3 files changed, 2 insertions(+) diff --git a/tests/Snapshots/DecorationsAmendmentSnapshot.php b/tests/Snapshots/DecorationsAmendmentSnapshot.php index c3f45baae..38fd48f73 100644 --- a/tests/Snapshots/DecorationsAmendmentSnapshot.php +++ b/tests/Snapshots/DecorationsAmendmentSnapshot.php @@ -36,6 +36,7 @@ public function generatePdf() ob_start(); ?>

B17mzqs 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 Date: Mon, 5 Oct 2026 09:56:49 +1100 Subject: [PATCH 2/3] Carry decorations into a block opened inside an inline element, and leave a decoration unseen in inherited transparent A block inside an underlined span now starts from the span's text state, which #653 sets aside, so it and the text after it are underlined. TextDecorations::seen() reads #651's transparent flag, so a descendant that inherits color: transparent adds no decoration of its own either. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG-GRAVITYPDF.md | 3 +- src/Css/TextDecorations.php | 11 +++----- src/Mpdf.php | 2 +- tests/Mpdf/TextDecorationPropagationTest.php | 29 ++++++++++++++++++++ 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/CHANGELOG-GRAVITYPDF.md b/CHANGELOG-GRAVITYPDF.md index 48e69505f..bbfff2e9f 100644 --- a/CHANGELOG-GRAVITYPDF.md +++ b/CHANGELOG-GRAVITYPDF.md @@ -70,7 +70,8 @@ Read this section before upgrading from upstream mPDF. Each entry says what chan * **Text decorations propagate to descendants instead of being inherited**, as in a browser. A link styled `a { text-decoration: none }` inside an underlined paragraph now has the paragraph's underline drawn under it. Set `'cssMode' => \Mpdf\CssMode::LEGACY` to keep the old output, or move the `text-decoration` from the paragraph to the parts of it you want decorated. [#544] [#654] * An underline, overline or line-through is drawn over the text of every descendant in the flow, in the colour and at the size of the element that set it. A child block used to redraw it in its own colour and size, and lost an overline. * `text-decoration: none` on a descendant removes only a decoration of its own. A descendant's own decoration is added to its ancestors': `line-through` inside an underlined block is drawn with both lines. - * An element whose `color` is `transparent` adds no decoration of its own, since it would be drawn in that colour. + * An element whose `color` is `transparent`, set or inherited, adds no decoration of its own, since it would be drawn in that colour. + * A block inside an underlined inline element, as in `…