From adfefbf7e04611ec1c3d8caf704c6a0baea649ff Mon Sep 17 00:00:00 2001 From: Serhii Bykov Date: Fri, 7 Aug 2026 18:17:24 +0200 Subject: [PATCH 1/3] refactor(keycaps): simplify modifier ordering comparator --- .../Domain/Keyboard/KeyboardModifierKey.swift | 9 ++++ .../Keyboard/KeyboardModifierKeyKind.swift | 8 +++ .../Keyboard/KeycapEventCoordinator.swift | 12 ++++- .../Keyboard/KeycapItemFactory.swift | 3 +- .../KeyboardModifierKeyKindTests.swift | 7 +++ .../Keycaps/KeycapEventCoordinatorTests.swift | 49 ++++++++++++++++--- .../Keycaps/KeycapItemFactoryTests.swift | 14 ++++++ .../EventTransformerKeystrokeTests.swift | 3 -- 8 files changed, 92 insertions(+), 13 deletions(-) diff --git a/Apps/Keyty/Sources/Keyty/Domain/Keyboard/KeyboardModifierKey.swift b/Apps/Keyty/Sources/Keyty/Domain/Keyboard/KeyboardModifierKey.swift index 4cf5df1..2993444 100644 --- a/Apps/Keyty/Sources/Keyty/Domain/Keyboard/KeyboardModifierKey.swift +++ b/Apps/Keyty/Sources/Keyty/Domain/Keyboard/KeyboardModifierKey.swift @@ -24,6 +24,15 @@ extension KeyboardModifierKey { enum Location: CaseIterable, Hashable { case left case right + + var canonicalDisplayOrderIndex: Int { + switch self { + case .left: + return 0 + case .right: + return 1 + } + } } } diff --git a/Apps/Keyty/Sources/Keyty/Domain/Keyboard/KeyboardModifierKeyKind.swift b/Apps/Keyty/Sources/Keyty/Domain/Keyboard/KeyboardModifierKeyKind.swift index 1f59285..2b63b72 100644 --- a/Apps/Keyty/Sources/Keyty/Domain/Keyboard/KeyboardModifierKeyKind.swift +++ b/Apps/Keyty/Sources/Keyty/Domain/Keyboard/KeyboardModifierKeyKind.swift @@ -16,6 +16,10 @@ extension KeyboardModifierKey { case option case control + /// Modifier order guidance from Apple style guide: + /// https://support.apple.com/guide/applestyleguide/k-apsgf9067ae8/1.0/web/1.0 + static let canonicalDisplayOrder: [Self] = [.control, .option, .shift, .command] + var glyph: String { switch self { case .command: return UnicodeToken.command.string @@ -65,5 +69,9 @@ extension KeyboardModifierKey { case (.control, .right): return .controlRight } } + + var canonicalDisplayOrderIndex: Int { + Self.canonicalDisplayOrder.firstIndex(of: self) ?? Self.canonicalDisplayOrder.endIndex + } } } diff --git a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeycapEventCoordinator.swift b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeycapEventCoordinator.swift index 457d9ba..c7ec10a 100644 --- a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeycapEventCoordinator.swift +++ b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeycapEventCoordinator.swift @@ -282,7 +282,17 @@ private extension KeycapEventCoordinator { } private func ordered(items: [Item]) -> [Item] { - let modifiers = items.filter { $0.identity.isModifier } + let modifiers = items + .filter { $0.identity.isModifier } + .sorted { + ( + $0.identity.modifierKind?.canonicalDisplayOrderIndex ?? Int.max, + $0.identity.modifierLocation?.canonicalDisplayOrderIndex ?? Int.max + ) < ( + $1.identity.modifierKind?.canonicalDisplayOrderIndex ?? Int.max, + $1.identity.modifierLocation?.canonicalDisplayOrderIndex ?? Int.max + ) + } let others = items.filter { !$0.identity.isModifier } return modifiers + others } diff --git a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeycapItemFactory.swift b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeycapItemFactory.swift index c43d1b9..ebb4ce1 100644 --- a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeycapItemFactory.swift +++ b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeycapItemFactory.swift @@ -30,7 +30,6 @@ enum KeycapPreviewSample { /// `KeycapIdentity`, so per-key-type theming applies uniformly across every branch. enum KeycapItemFactory { private static let mouseIconHeight: CGFloat = 44 - private static let orderedModifiers: [KeyboardModifierKey.Kind] = [.command, .shift, .option, .control] private static let orderedModifierLocations: [KeyboardModifierKey.Location] = [.left, .right] static func keycapItems(for keystroke: StandardKeyEvent, palette: KeycapThemePalette) -> [KeycapItem] { @@ -156,7 +155,7 @@ enum KeycapItemFactory { let currentModifierKeys = KeyboardModifierKey.keys(in: currentFlags) let releasedModifierKeys = KeyboardModifierKey.keys(in: releasedFlags) - for modifier in Self.orderedModifiers { + for modifier in KeyboardModifierKey.Kind.canonicalDisplayOrder { let modifierKeys = Self.orderedModifierKeys( for: modifier, currentModifierKeys: currentModifierKeys, diff --git a/Apps/Keyty/Tests/KeytyTests/Domain/Keyboard/KeyboardModifierKeyKindTests.swift b/Apps/Keyty/Tests/KeytyTests/Domain/Keyboard/KeyboardModifierKeyKindTests.swift index 90a8aa6..d163fdc 100644 --- a/Apps/Keyty/Tests/KeytyTests/Domain/Keyboard/KeyboardModifierKeyKindTests.swift +++ b/Apps/Keyty/Tests/KeytyTests/Domain/Keyboard/KeyboardModifierKeyKindTests.swift @@ -11,6 +11,13 @@ import XCTest @testable import Keyty final class KeyboardModifierKeyKindTests: XCTestCase { + func testCanonicalDisplayOrderMatchesAppleMenuOrder() { + XCTAssertEqual( + KeyboardModifierKey.Kind.canonicalDisplayOrder, + [.control, .option, .shift, .command] + ) + } + func testFlagMapsKindToAggregateModifierFlag() { XCTAssertEqual(KeyboardModifierKey.Kind.command.flag, .command) XCTAssertEqual(KeyboardModifierKey.Kind.shift.flag, .shift) diff --git a/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeycapEventCoordinatorTests.swift b/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeycapEventCoordinatorTests.swift index 2ff8965..c820667 100644 --- a/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeycapEventCoordinatorTests.swift +++ b/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeycapEventCoordinatorTests.swift @@ -87,7 +87,42 @@ final class KeycapEventCoordinatorTests: XCTestCase { XCTAssertEqual(appendedGroups.count, 1) XCTAssertEqual(updatedGroups.count, 1) - XCTAssertEqual(updatedGroups[0].map(\.identity), [.modifier(.leftCommand), .modifier(.leftShift)]) + XCTAssertEqual(updatedGroups[0].map(\.identity), [.modifier(.leftShift), .modifier(.leftCommand)]) + } + + func testFlagsChangedReordersModifiersIntoCanonicalDisplayOrder() { + let coordinator = KeycapEventCoordinator() + var updatedGroups: [[TestItem]] = [] + + coordinator.handleFlagsChanged( + currentTrackedFlags: [.command], + releasedTrackedFlags: [], + buildItems: { _, _ in + [TestItem(identity: .modifier(.leftCommand))] + }, + appendGroup: { _ in TestGroupView() }, + updateGroup: { _, items in + updatedGroups.append(items) + } + ) + + coordinator.handleFlagsChanged( + currentTrackedFlags: [.command, .shift], + releasedTrackedFlags: [], + buildItems: { _, _ in + [ + TestItem(identity: .modifier(.leftCommand)), + TestItem(identity: .modifier(.leftShift)), + ] + }, + appendGroup: { _ in TestGroupView() }, + updateGroup: { _, items in + updatedGroups.append(items) + } + ) + + XCTAssertEqual(updatedGroups.count, 1) + XCTAssertEqual(updatedGroups[0].map(\.identity), [.modifier(.leftShift), .modifier(.leftCommand)]) } func testTrackedKeyUpdateDoesNotAppendLaterModifierToExistingKeyGroup() { @@ -315,10 +350,10 @@ final class KeycapEventCoordinatorTests: XCTestCase { ) XCTAssertEqual(appendedGroups.count, 2) - XCTAssertEqual(appendedGroups[0].map(\.identity), [.modifier(.leftCommand), .modifier(.leftShift)]) - XCTAssertEqual(updatedGroups[0].map(\.identity), [.modifier(.leftCommand), .modifier(.leftShift), .keyCode(29)]) - XCTAssertEqual(updatedGroups[1].map(\.identity), [.modifier(.leftCommand), .modifier(.leftShift), .keyCode(29)]) - XCTAssertEqual(appendedGroups[1].map(\.identity), [.modifier(.leftCommand), .modifier(.leftShift), .keyCode(18)]) + XCTAssertEqual(appendedGroups[0].map(\.identity), [.modifier(.leftShift), .modifier(.leftCommand)]) + XCTAssertEqual(updatedGroups[0].map(\.identity), [.modifier(.leftShift), .modifier(.leftCommand), .keyCode(29)]) + XCTAssertEqual(updatedGroups[1].map(\.identity), [.modifier(.leftShift), .modifier(.leftCommand), .keyCode(29)]) + XCTAssertEqual(appendedGroups[1].map(\.identity), [.modifier(.leftShift), .modifier(.leftCommand), .keyCode(18)]) } func testStandaloneItemAbsorbsExistingModifierGroup() { @@ -353,9 +388,9 @@ final class KeycapEventCoordinatorTests: XCTestCase { ) XCTAssertEqual(appendedGroups.count, 1) - XCTAssertEqual(appendedGroups[0].map(\.identity), [.modifier(.leftCommand), .modifier(.leftShift)]) + XCTAssertEqual(appendedGroups[0].map(\.identity), [.modifier(.leftShift), .modifier(.leftCommand)]) XCTAssertEqual(updatedGroups.count, 1) - XCTAssertEqual(updatedGroups[0].map(\.identity), [.modifier(.leftCommand), .modifier(.leftShift), .mouse(.leftButton)]) + XCTAssertEqual(updatedGroups[0].map(\.identity), [.modifier(.leftShift), .modifier(.leftCommand), .mouse(.leftButton)]) } func testMouseButtonReleaseUpdatesExistingChordGroup() { diff --git a/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeycapItemFactoryTests.swift b/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeycapItemFactoryTests.swift index 968b96a..7b416d2 100644 --- a/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeycapItemFactoryTests.swift +++ b/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/KeycapItemFactoryTests.swift @@ -51,6 +51,20 @@ final class KeycapItemFactoryTests: XCTestCase { XCTAssertEqual(items.map(\.layoutHints.alignment), [.right, .left]) } + func testModifierItemsFollowCanonicalDisplayOrder() { + let items = KeycapItemFactory.modifierItems( + currentFlags: [.command, .option, .shift], + releasedFlags: [], + palette: Self.makePalette() + ) + + XCTAssertEqual(items.map(\.identity), [ + .modifier(.leftOption), + .modifier(.leftShift), + .modifier(.leftCommand), + ]) + } + func testModifierItemsUseInwardAlignmentForNonCommandModifierKeys() { let items = KeycapItemFactory.modifierItems( currentFlags: NSEvent.ModifierFlags.shift.addingRawMasks( diff --git a/Apps/Keyty/Tests/KeytyTests/Services/EventPipeline/EventTransformerKeystrokeTests.swift b/Apps/Keyty/Tests/KeytyTests/Services/EventPipeline/EventTransformerKeystrokeTests.swift index 40902a0..0a7782d 100644 --- a/Apps/Keyty/Tests/KeytyTests/Services/EventPipeline/EventTransformerKeystrokeTests.swift +++ b/Apps/Keyty/Tests/KeytyTests/Services/EventPipeline/EventTransformerKeystrokeTests.swift @@ -6,9 +6,6 @@ // SPDX-License-Identifier: BSD-3-Clause // -// NOTE: These tests assume a US-English layout and may break under other locales. -// The correct modifier ordering is Control-Option-Shift-Command (as shown in Apple menus). - import Carbon import XCTest @testable import Keyty From 1d455019cd1ed1064a24c759ca808f7ec35ee146 Mon Sep 17 00:00:00 2001 From: Serhii Bykov Date: Fri, 7 Aug 2026 18:30:00 +0200 Subject: [PATCH 2/3] refactor(tests): simplify keystroke transformer fixture --- .../EventTransformerKeystrokeTests.swift | 192 +++++++++--------- 1 file changed, 95 insertions(+), 97 deletions(-) diff --git a/Apps/Keyty/Tests/KeytyTests/Services/EventPipeline/EventTransformerKeystrokeTests.swift b/Apps/Keyty/Tests/KeytyTests/Services/EventPipeline/EventTransformerKeystrokeTests.swift index 0a7782d..2cf3f02 100644 --- a/Apps/Keyty/Tests/KeytyTests/Services/EventPipeline/EventTransformerKeystrokeTests.swift +++ b/Apps/Keyty/Tests/KeytyTests/Services/EventPipeline/EventTransformerKeystrokeTests.swift @@ -11,130 +11,129 @@ import XCTest @testable import Keyty final class EventTransformerKeystrokeTests: XCTestCase { - var keystroke: StandardKeyEvent! - var keyboardLayout: TISInputSource! + var transformer: EventTransformer! func transform(_ event: StandardKeyEvent) -> String { - EventTransformer(keyboardLayout: self.keyboardLayout).transform(.keystroke(event)) + self.transformer.transform(.keystroke(event)) } override func setUpWithError() throws { try super.setUpWithError() - self.keyboardLayout = try TestKeyboardLayouts.requireUSEnglish() + self.transformer = EventTransformer(keyboardLayout: try TestKeyboardLayouts.requireUSEnglish()) } } // MARK: - Numbers extension EventTransformerKeystrokeTests { - func test_KCKeystroke_convertsCtrlNumberToNumber() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.control, characters: "7", charactersIgnoringModifiers: "7") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.control + "7") + func test_convertsCtrlNumberToNumber() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.control, characters: "7", charactersIgnoringModifiers: "7") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.control + "7") } - func test_KCKeystroke_convertsShiftNumberToShiftNumber() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.shift, characters: "&", charactersIgnoringModifiers: "&") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.shift + "7") + func test_convertsShiftNumberToShiftNumber() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.shift, characters: "&", charactersIgnoringModifiers: "&") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.shift + "7") } - func test_KCKeystroke_convertsCtrlShiftNumberToNumber() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.controlShift, characters: "7", charactersIgnoringModifiers: "&") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.shift + "7") + func test_convertsCtrlShiftNumberToNumber() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.controlShift, characters: "7", charactersIgnoringModifiers: "&") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.shift + "7") } - func test_KCKeystroke_convertsCmdNumberToNumber() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.command, characters: "7", charactersIgnoringModifiers: "7") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.command + "7") + func test_convertsCmdNumberToNumber() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.command, characters: "7", charactersIgnoringModifiers: "7") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.command + "7") } - func test_KCKeystroke_convertsCmdShiftNumberToNumber() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.commandShift, characters: "7", charactersIgnoringModifiers: "&") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.shift + KeyboardGlyphCatalog.command + "7") + func test_convertsCmdShiftNumberToNumber() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.commandShift, characters: "7", charactersIgnoringModifiers: "&") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.shift + KeyboardGlyphCatalog.command + "7") } - func test_KCKeystroke_convertsCmdOptNumberToNumber() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.commandOption, characters: "¶", charactersIgnoringModifiers: "7") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.command + "7") + func test_convertsCmdOptNumberToNumber() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.commandOption, characters: "¶", charactersIgnoringModifiers: "7") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.command + "7") } - func test_KCKeystroke_convertsShiftOptionNumberToNumber() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.optionShift, characters: "»", charactersIgnoringModifiers: "7") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + "7") + func test_convertsShiftOptionNumberToNumber() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.optionShift, characters: "»", charactersIgnoringModifiers: "7") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + "7") } - func test_KCKeystroke_convertsCmdOptShiftNumberToShiftedNumber() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.commandOptionShift, characters: "‡", charactersIgnoringModifiers: "&") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + KeyboardGlyphCatalog.command + "7") + func test_convertsCmdOptShiftNumberToShiftedNumber() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.commandOptionShift, characters: "‡", charactersIgnoringModifiers: "&") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + KeyboardGlyphCatalog.command + "7") } } // MARK: - Letters extension EventTransformerKeystrokeTests { - func test_KCKeystroke_convertsCtrlLetterToUppercaseLetter() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.control, characters: "^A", charactersIgnoringModifiers: "a") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.control + "A") + func test_convertsCtrlLetterToUppercaseLetter() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.control, characters: "^A", charactersIgnoringModifiers: "a") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.control + "A") } - func test_KCKeystroke_convertsCtrlShiftLetterToLetter() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.controlShift, characters: "^A", charactersIgnoringModifiers: "a") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.shift + "A") + func test_convertsCtrlShiftLetterToLetter() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.controlShift, characters: "^A", charactersIgnoringModifiers: "a") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.shift + "A") } - func test_KCKeystroke_convertsCtrlShiftCmdLetterToLetter() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.controlCommandShift, characters: "^A", charactersIgnoringModifiers: "A") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.shift + KeyboardGlyphCatalog.command + "A") + func test_convertsCtrlShiftCmdLetterToLetter() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.controlCommandShift, characters: "^A", charactersIgnoringModifiers: "A") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.shift + KeyboardGlyphCatalog.command + "A") } - func test_KCKeystroke_convertsCtrlOptLetterToUppercaseLetter() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.controlOption, characters: "^A", charactersIgnoringModifiers: "a") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.option + "A") + func test_convertsCtrlOptLetterToUppercaseLetter() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.controlOption, characters: "^A", charactersIgnoringModifiers: "a") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.option + "A") } - func test_KCKeystroke_convertsCtrlOptShiftLetterToLetter() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.controlOptionShift, characters: "^A", charactersIgnoringModifiers: "A") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + "A") + func test_convertsCtrlOptShiftLetterToLetter() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.a.rawValue, modifiers: TestModifierFlags.controlOptionShift, characters: "^A", charactersIgnoringModifiers: "A") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.control + KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + "A") } - func test_KCKeystroke_displaysOptLetterByDefault() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.u.rawValue, modifiers: TestModifierFlags.option, characters: "", charactersIgnoringModifiers: "u") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.option + "U") + func test_displaysOptLetterByDefault() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.u.rawValue, modifiers: TestModifierFlags.option, characters: "", charactersIgnoringModifiers: "u") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.option + "U") } } // MARK: - Function Row extension EventTransformerKeystrokeTests { - func test_KCKeystroke_convertsFnF1ToBrightnessDecrease() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.brightnessDown.rawValue, modifiers: TestModifierFlags.function, characters: "", charactersIgnoringModifiers: "") - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.brightnessDown.string) + func test_convertsFnF1ToBrightnessDecrease() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.brightnessDown.rawValue, modifiers: TestModifierFlags.function, characters: "", charactersIgnoringModifiers: "") + XCTAssertEqual(self.transform(keystroke), UnicodeToken.brightnessDown.string) } - func test_KCKeystroke_convertsFnF2ToBrightnessIncrease() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.brightnessUp.rawValue, modifiers: TestModifierFlags.function, characters: "", charactersIgnoringModifiers: "") - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.brightnessUp.string) + func test_convertsFnF2ToBrightnessIncrease() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.brightnessUp.rawValue, modifiers: TestModifierFlags.function, characters: "", charactersIgnoringModifiers: "") + XCTAssertEqual(self.transform(keystroke), UnicodeToken.brightnessUp.string) } - func test_KCKeystroke_convertsFnF3ToMissionControl() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.missionControl.rawValue, modifiers: TestModifierFlags.function, characters: "", charactersIgnoringModifiers: "") - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.missionControl.string) + func test_convertsFnF3ToMissionControl() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.missionControl.rawValue, modifiers: TestModifierFlags.function, characters: "", charactersIgnoringModifiers: "") + XCTAssertEqual(self.transform(keystroke), UnicodeToken.missionControl.string) } - func test_KCKeystroke_convertsFnF4ToLauncher() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.launchpad.rawValue, modifiers: TestModifierFlags.function, characters: "", charactersIgnoringModifiers: "") - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.launchpad.string) + func test_convertsFnF4ToLauncher() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.launchpad.rawValue, modifiers: TestModifierFlags.function, characters: "", charactersIgnoringModifiers: "") + XCTAssertEqual(self.transform(keystroke), UnicodeToken.launchpad.string) } } // MARK: - JIS layout extension EventTransformerKeystrokeTests { - func test_KCKeystroke_convertsEisuKey() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.eisu.rawValue, modifiers: [], characters: "", charactersIgnoringModifiers: "") - XCTAssertEqual(self.transform(self.keystroke), KeyboardSpecialKey.eisu.displayText) + func test_convertsEisuKey() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.eisu.rawValue, modifiers: [], characters: "", charactersIgnoringModifiers: "") + XCTAssertEqual(self.transform(keystroke), KeyboardSpecialKey.eisu.displayText) } - func test_KCKeystroke_convertsKanaKey() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.kana.rawValue, modifiers: [], characters: "", charactersIgnoringModifiers: "") - XCTAssertEqual(self.transform(self.keystroke), KeyboardSpecialKey.kana.displayText) + func test_convertsKanaKey() { + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.kana.rawValue, modifiers: [], characters: "", charactersIgnoringModifiers: "") + XCTAssertEqual(self.transform(keystroke), KeyboardSpecialKey.kana.displayText) } } @@ -142,8 +141,8 @@ extension EventTransformerKeystrokeTests { extension EventTransformerKeystrokeTests { func test_optionShiftNumberDisplaysExplicitModifiers() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.optionShift, characters: "»", charactersIgnoringModifiers: "7") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + "7") + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.digit7.rawValue, modifiers: TestModifierFlags.optionShift, characters: "»", charactersIgnoringModifiers: "7") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + "7") } } @@ -151,50 +150,50 @@ extension EventTransformerKeystrokeTests { extension EventTransformerKeystrokeTests { func test_tabKey() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.tab.rawValue, modifiers: TestModifierFlags.none, characters: "\t", charactersIgnoringModifiers: "\t") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.tab) + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.tab.rawValue, modifiers: TestModifierFlags.none, characters: "\t", charactersIgnoringModifiers: "\t") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.tab) } func test_returnAndKeypadEnterUseDifferentSymbols() { - self.keystroke = TestKeystrokes.make( + let returnKey = TestKeystrokes.make( keyCode: KeyboardKeyCode.returnKey.rawValue, modifiers: TestModifierFlags.none, characters: "\r", charactersIgnoringModifiers: "\r" ) - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.returnKey.string) + XCTAssertEqual(self.transform(returnKey), UnicodeToken.returnKey.string) - self.keystroke = TestKeystrokes.make( + let keypadEnter = TestKeystrokes.make( keyCode: KeyboardKeyCode.keypadEnter.rawValue, modifiers: TestModifierFlags.none, characters: "\r", charactersIgnoringModifiers: "\r" ) - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.keypadEnter.string) + XCTAssertEqual(self.transform(keypadEnter), UnicodeToken.keypadEnter.string) } func test_deleteAndForwardDeleteUseDifferentSymbols() { - self.keystroke = TestKeystrokes.make( + let deleteKey = TestKeystrokes.make( keyCode: KeyboardKeyCode.delete.rawValue, modifiers: TestModifierFlags.none, characters: UnicodeToken.delete.string, charactersIgnoringModifiers: UnicodeToken.delete.string ) - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.delete.string) + XCTAssertEqual(self.transform(deleteKey), UnicodeToken.delete.string) - self.keystroke = TestKeystrokes.make( + let forwardDelete = TestKeystrokes.make( keyCode: KeyboardKeyCode.forwardDelete.rawValue, modifiers: TestModifierFlags.none, characters: UnicodeToken.forwardDelete.string, charactersIgnoringModifiers: UnicodeToken.forwardDelete.string ) - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.forwardDelete.string) + XCTAssertEqual(self.transform(forwardDelete), UnicodeToken.forwardDelete.string) } func test_shiftTab() { let ch = TestKeyboardCharacters.backTab - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.tab.rawValue, modifiers: TestModifierFlags.shift, characters: ch, charactersIgnoringModifiers: ch) - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.backTab) + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.tab.rawValue, modifiers: TestModifierFlags.shift, characters: ch, charactersIgnoringModifiers: ch) + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.backTab) } func test_arrowKeysUseFilledTriangleSymbols() { @@ -206,31 +205,31 @@ extension EventTransformerKeystrokeTests { ] for (keyCode, expected) in cases { - self.keystroke = TestKeystrokes.make( + let keystroke = TestKeystrokes.make( keyCode: keyCode.rawValue, modifiers: TestModifierFlags.none, characters: expected, charactersIgnoringModifiers: expected ) - XCTAssertEqual(self.transform(self.keystroke), expected) + XCTAssertEqual(self.transform(keystroke), expected) } } func test_insertFunctionKeyDisplaysInsertForHelpKeyCode() { let ch = TestKeyboardCharacters.functionKeyCharacter(NSInsertFunctionKey) - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.help.rawValue, modifiers: [], characters: ch, charactersIgnoringModifiers: ch) - XCTAssertEqual(self.transform(self.keystroke), KeyboardSpecialKey.insert.displayText) + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.help.rawValue, modifiers: [], characters: ch, charactersIgnoringModifiers: ch) + XCTAssertEqual(self.transform(keystroke), KeyboardSpecialKey.insert.displayText) } func test_helpFunctionKeyDisplaysHelpForHelpKeyCode() { let ch = TestKeyboardCharacters.functionKeyCharacter(NSHelpFunctionKey) - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.help.rawValue, modifiers: [], characters: ch, charactersIgnoringModifiers: ch) - XCTAssertEqual(self.transform(self.keystroke), UnicodeToken.questionMark.string + UnicodeToken.enclosingCircle.string) + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.help.rawValue, modifiers: [], characters: ch, charactersIgnoringModifiers: ch) + XCTAssertEqual(self.transform(keystroke), UnicodeToken.questionMark.string + UnicodeToken.enclosingCircle.string) } func test_helpKeyCodeWithoutSemanticCharactersDefaultsToInsert() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.help.rawValue, modifiers: [], characters: "", charactersIgnoringModifiers: "") - XCTAssertEqual(self.transform(self.keystroke), KeyboardSpecialKey.insert.displayText) + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.help.rawValue, modifiers: [], characters: "", charactersIgnoringModifiers: "") + XCTAssertEqual(self.transform(keystroke), KeyboardSpecialKey.insert.displayText) } } @@ -239,27 +238,27 @@ extension EventTransformerKeystrokeTests { extension EventTransformerKeystrokeTests { func test_optionShiftUp() { let ch = TestKeyboardCharacters.functionKeyCharacter(NSUpArrowFunctionKey) - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.upArrow.rawValue, modifiers: TestModifierFlags.functionOptionShiftNumericPad, characters: ch, charactersIgnoringModifiers: ch) + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.upArrow.rawValue, modifiers: TestModifierFlags.functionOptionShiftNumericPad, characters: ch, charactersIgnoringModifiers: ch) XCTAssertEqual( - self.transform(self.keystroke), + self.transform(keystroke), KeyboardGlyphCatalog.option + KeyboardGlyphCatalog.shift + UnicodeToken.upArrow.string ) } func test_optionUSpecialCase() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.u.rawValue, modifiers: TestModifierFlags.option, characters: "", charactersIgnoringModifiers: "u") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.option + "U") + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.u.rawValue, modifiers: TestModifierFlags.option, characters: "", charactersIgnoringModifiers: "u") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.option + "U") } func test_optionESpecialCase() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.e.rawValue, modifiers: TestModifierFlags.option, characters: "", charactersIgnoringModifiers: "e") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.option + "E") + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.e.rawValue, modifiers: TestModifierFlags.option, characters: "", charactersIgnoringModifiers: "e") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.option + "E") } func test_optionBacktickSpecialCase() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.grave.rawValue, modifiers: TestModifierFlags.option, characters: "", charactersIgnoringModifiers: "`") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.option + "`") + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.grave.rawValue, modifiers: TestModifierFlags.option, characters: "", charactersIgnoringModifiers: "`") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.option + "`") } } @@ -267,8 +266,7 @@ extension EventTransformerKeystrokeTests { extension EventTransformerKeystrokeTests { func test_commandßDisplaysCommandß() { - self.keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.minus.rawValue, modifiers: TestModifierFlags.command, characters: "ß", charactersIgnoringModifiers: "ß") - XCTAssertEqual(self.transform(self.keystroke), KeyboardGlyphCatalog.command + "ß") + let keystroke = TestKeystrokes.make(keyCode: KeyboardKeyCode.minus.rawValue, modifiers: TestModifierFlags.command, characters: "ß", charactersIgnoringModifiers: "ß") + XCTAssertEqual(self.transform(keystroke), KeyboardGlyphCatalog.command + "ß") } - } From 2109bf868b0faf0218a2a5aa6309217c529bf523 Mon Sep 17 00:00:00 2001 From: Serhii Bykov Date: Fri, 7 Aug 2026 18:36:55 +0200 Subject: [PATCH 3/3] test(keycaps): update modifier ordering snapshot --- ...ps.apple-black-command-shift-k-keycaps.png | Bin 39077 -> 38997 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/__Snapshots__/KeyboardVisualizerGroupViewSnapshotTests/testRendersAppleBlackCommandShiftKKeycaps.apple-black-command-shift-k-keycaps.png b/Apps/Keyty/Tests/KeytyTests/Features/Visualizers/Keyboard/Keycaps/__Snapshots__/KeyboardVisualizerGroupViewSnapshotTests/testRendersAppleBlackCommandShiftKKeycaps.apple-black-command-shift-k-keycaps.png index f0c28d5818cd6eb44e0ad1dc365961413642de7c..874fd7016b8cf7e6490f0cd0a1f0282748bf5ad2 100644 GIT binary patch literal 38997 zcmbTe2Ut_t0ySzGWt0KN3PX#EfQXR6kq$uz0RaI8X;LD^LN5VPZQG8E;QGtYyTQMA%z3B5*LH-p$)DSB9nv)L!}q#_=?x2uZ70F?&)a_5 zF1c-&APD%twoCo{+IahkZ99M5-?435tk<@m{u#y+d<*_O1|PvY|M=eVe8;~+?6~-R z=fAGEeGvq0d%;=_LS|@O-AyY z6BmBH6MO8@bBW8pWEdOm+xhU3&ZE1J+%B0M)_M7POUpy_504LOc}dzgTh;D5s+k-# zl0SLmL<(e!`)J*VRKKW=E+v$0jIO)pRB;#3Yny8|>o8mNV%MuTD0irwY`AJr7L|>jd1{|q*<-28Ux>f{{SXB$>rUu#1=I>=c5 z3>~XW)9tVRj;oz~B*Gwup>rrhsp`hK0ctShShxz zW!x1jmLlFHnhp|2B}R%zfBhavD@ex?=3jrd>#IhNz4ad0*G?}MZD`v2i}LT~?_TX_ z+FM?rd@10uU9VIDOJg*Aily<*^MGGr2Tt>HQC~Hj0`fnfC{%u@eKvRS_ljDE%OW9~cogYCyiBm*57dty_X}jUh{GKNG9TEd z^p7AS=1~99hw94D5*@Era%QsvE(K)c$~7$vN+3nOQl(F3%3gHYS^fc>1$><4} zM%B4ER_m=su1XCW`AC`6lE#KW+HTTf_PP ziu3oby|=`y8~;Ms@;|h^gIHwIJh(? zvxfYIc>Kla#`hd5Hkz}vHgukR?PtmVs8xqMx%OulL;5zJl+k^j;oyt*x63pwbQcK> zoK$a?0=g8pGRI4EM!T)=W>sv@$W2#(xaYhn2S3HzV9R0 zo@My%4E&GQ5e)T=mA!K^uaJwcUy?{PW0ta|6Wz9mxHia$Y}{nwof^k`kWKmaX>T1% zA%mwzDo0O=VE@Wm*$(Lz`B&Hc(Jr3K&!w(YvI@%>7CoQ1gM}&#pPXt^SEB#wcQDGs zDqPuK8)!e}RSoByxxYa5ZLD{ogs-+B^4D;k#S)w;NeQAj;1SC$YJX z@qltji@rsfeMZQgFf_CGMcLScvc8G5?JEXf3|s#_Y5geD?Ok-?cV*m>*S4&xi}n4K z(|&J*XFl1o?vEQNF%N5AB!vD26S0R6@Wlu>yx7N`y-bC+{?;2#Q4f8s5Tf%h7FgKu zPxkC)6;UmfM}n`-Kk#B%C}9hngnHK<2E%LLMQTGfUsV4s^;`8j2ycr=wJPizKfU$f zvrcC9Wfca1ax_vWDWA2yBl&Bij}-d@nnntuoNv~KzRP$j>HPQJ-CFV2n#SPNEqtE7 z)yUbk+veZwGwAl|3wH3b)ul{N_(*DSqSO5s<9|z6!tVL29faJHsQX?U+#W>wV)c;! z&0hTJoZP*p{uy+qpM5VkUSuVJy2m#1W}s5Ph({Eq`M>&mGY*0%3QI`2UiI9{m!!UT z_6#SHQ^*%5IBCu@;elx3J43xvg%zvlQ$9`Zzv%zRi2N~4l^iNw*G2mHD}P776*6-> z?3Y2eYH_LAJw_BAtlvB~qHKLG#_zvc+ab&DY^1EKgqYt^@!uIv;o-s$hU`1V1~ zslw*ZbuF&Rds(@4rPpC z?N>LGCe;g1s)<4~`;e>_dj^fz%$`D67MJ9T{5{#5Zy8+GX_KYI$b9>-IRslDi_ez_N2ol1T*q@bJ z>&seWRS&qwmy&X#Yy;A8{e`soH=U%0DBP*CoSr3ACigME=cgtP$r7?D9}uOT9nBST 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 z zA*^vI6~bWU4xAwZn$|T?v_Qk6*@#pdB`uymX^s43oD^XOU^dc2rE+UdTr6YGy#2kI zcXK%X&%0jl%9z?x8A1D9J*OX4R*wGb@hq2;XupVFjI<{hcgA*H)(@8RPYSNB{kEeB znafPLdF5tqghHWlD^gsGVM^Kb;FVLQZ{{!8$*!!A1Wd;>j8xhjAh$hN$=s=IEl(v_ zf7ayA1LzWM2UC&0JBf9lvq!6=S~iY|(nyXpM1*&IECYZQVdvf`L|1gOtjhh2E^pE#*SdIfbiZ7%L-6a;vd8?<&tE|3RU)uF4Pm<)m| z$VXk2^b}GQ^1aeE>5tbw{A9e3Alv0x0yu3T_HF%v*F2d`P<;h`#HhO;lpuh}R+K2h zBtXy}GGAn-{*AC*HsZoT<8u3JR6*lHqk($#P6!tG*3sI}kAA=yWdcF3{%rNV#Nr8p zV0qEBHR>K&L*e#3;&^jnONx0n>z!IA5(D7OIgrS9jZB?Z*1qS@!^Lpa4}uIXs@K7+ z8Z>^lLUupNWGqAhNCeffLR5uR!Gl^3^`(L_>g=7d4Z!d_4ju$x*g3<)xpRW3KuO;VSwV{7Or#Oy+9U%xa<0v@ zjPeN8fR911+z)wQg=LxuLHLh^l!^DiCi>4bK(u%-?_(}Jk==-A&nfQC1#C%CfTw`| z5I;RxX`VE6iuM34FhPh{U?z)gk<&Mcqs*kRwvpk6PNr{WZQ&lsX)>jM?08O-Sl=_r z(kHUhf)qY{b&^8GiKz-=DpP>$TZGXn8y{k#+{cvwi^DaZUHVj1^O$w#exl}REhp;y zNTO2^a;O8or;ncs15CK4yv~>pd}ENFyWXH!pox{}qu_o#h=&=^ovlf)9l!9gPm7NQQ zCVLl=dUvLqcGpaGC0~=DXl)(7Zi#(hl?@wD5s{&3(0Vh=3??VerA@v+dh@-aB^pWf z3y2(gX`i;*bqi<`kzJQ|S_c(y?{CLjJlVX~un>xu`Zi4|G!6SH`rS_1ug*V<7Lh+p z0HXSUava3TBcn@fxoB=AHYwkDvN+V4U*h0f5FXf;0nrWK4?~{&FjHr(!7=A#H-)mz znB$K-?%>+nAzN${i!7w20e^LuRH492@zgiyeAaB2v1`7TGqexFY(D0JDzC(AbF5LI zNUdBC;s>`F-9zyr<;RByGU~t3dY0mPgq&Z$kQ-6Rxr$(!=;^gt>uF7&VmH&85Oruf z)X?1A#KzYn9HEBBsm`|wT4lHWWm`9~0Xg-Ep z1g59|n|zA|S4Vf5!tYx-i>R9j{sRq5*y_{$gJ)FU=U|8lajao(AZ{FEz32S}xKxMY zqLBVtJIap^CpK3OZ(vx}In<=F;6=^;qNvI$noK#^RuM!JK4%2@MU&pBzDY$y-;awa zEc}{Wd07U<(Ng>R-sHC_{a8kGodr?}-VEr{$3jZJVAsC#lzvo{RyikV(J8^BCvu7t z#-jk6S-Fm*H#t;$q|}0m0rzqda@?qpKF$>(y1b~-ml!-l%Nk`RE)K8a7dJol)vQL@ z0B#|y#9;EVZ2ST&B>#6@`m&LpcJO|G&jfN(f?fggpY8Ihwc^FLn~M7ufw=GIcv59T2C55&wP4%R{X-)sfmG5ic6UZY&rRY|gua>~b z{I+6(T2)RO1dMAJUILN~0hNLYr<&2!VD1D!P?^qxO1SJ$dhW3J7p-Sk&wdNu>F)`a zO$SI&+kRKxH4h+vjYDFEVvgITOz3DFAHFc()}|<};r7sQQtoDREdm!%{_10&#{MprGQ#PiZ?FZ|)!U*yyIdc5~l1dACJj^6n1{#ePzm!LpBP(r`wa z!J7SKd}!*D3qKi-2%0vI+v>Hks<=IdUUv@fx9q5e$sQRyZV0dW)3@B9#Y9CLqF%^D ze;e#KSJ4J$4DKZIJjy2|}%~$3+1OPjNJZjbH z7QU3;dtxS@FUa^Yb2e_X%}Pv37v|k7?Q(i1AYm;JbX{S;UL4;DFn}C&aRp6x-f^Dx z0%=~*_~nPs?)**sXJ>dyOw2(%LrpC7Xr4ib4J&NIs)a1w^QB~$k}5?`6D{}SE@mov z0fBX*J$1F#R%fCgx0#GxnAiSRwI$t|f17^3kp3)H_Yk?# z2+R=)FH`{-iYVPw1(JA%N2Yewk(L?cbYZ~pDD?g-*va9*CK0v7r$LC+ohI1}CpNRG zdPN-X=fJ|MBHlk}iNCOmFq(Pm&m)Y7SNv&jO1HaumcZ$MrVU=~TdZ>joc|S6!m}Ho zfrIK~>q>-w;|JxIHVQ|dgw4)H!qP=-{P(?mb*7^A>-%(GklHaAcS>(IezUtF72gc_ zQ@{CCndy_}97Sg5 zjAL2r88hKa-rHn7;{fItmSuKfOEFii`7P`=?4;C9Iq}!c_RHz?_{}SRz1;;{h)(^Q zZn@<$*O4#<|BNVHl$@c!{ig;nV4C4TxUbe)vbI z?Cr9~ZocjP`)gn8?oeTo`(X&^hk!5>lX{?PCf1k&4|W~Iff zlBpzR7<81_c83Oj5-wt}5mghIZtZ;Xg!;S0gn{1ds~)4ndQYJ(x)q7M$rr{HCK>5T z-rZV&s1<$SU<%S}&tEdslU#c0`9)DrgL1-R}1F(&3y8{&1;7d7(PF`ir3&e2s`%eaE(h2NKSgR86Lwn@ z+#lmKTMtJCUZ|C4{i=A{7XCIaR>xUL$lhu5p?Hz+FTwAjx*8M&kgWo1D#Tp#sUb4a z^Cq`_uQ^+bv5b^XMF3tN8-tM2;T$g!riIRgFtrSH!k1T7hWgE+IO#-*;lAD%}V z42%cv(d68FYKbxh`g~kWnM!nXyp6_#aP@JMfP}K|1JdyZX0-?w%~lpdn9{GCuo@}) zC1HI^ultaYr8PEnr9Js~LT;R-x}su`KSG}>enVESCb#$gD(i(+KK-C54e8-KAryPh z$yzMvSczBmL9x(U%U_)RIC8GpuhrUiHO>z>cLE9T!$>tOJUO=~lvfG)R(U7L)CGXQ zi2J4%USG@eA3)D~{A}>~WYWZ$Q!z=xW+32BAj` z375aup?V(~v|2gAr#&o5LA-+8=3Tq@7@S@cUokQWYI{f?t;yeXuu?K$JWL1=PnM4g zY#X?#1Qx>o8R2yObc%VVRova4ky-U6h7E$y(MBEv*s?2CFGbuXq^nK!zExYC@Gu~k zYqsU_B&QE_Fq@Aut6HEJ`ls^!^ws1;me2t!KlSw=`dE_0LQ7-!WTO0Hc{uLHu7jGT)$cw-+_)fe|U4VlU& zYS3H-0#f$XHWgis-&L7+pnc-ZWJn`*AZp`#mes+Jnn}?B_sRCp3CPI5%0#BqLx?Ic zTexbqSUqJdB zGw~v$h!=9^OeF)&Z+ZTH86B{V`Pm-CfVDLou|IY*ukbK{sIOWEs>6Yyqfl$(RmlyJ z878+2v6+#jlN@-r2?$^RHx_w=P`L@Ce@c@S6l7z7TFY9qsN6yXh4apgg8fHVD_M;D=Rac1 zr%bJpLT9=z$xQc3gQ3$Zgg!E3PV--3<2Zxk`rs}j~L;1bg9Fo8mNDo zq)q0H`Q$tWAmV`VxKIl#yYcOjM?2+!EtFlU78VDM4Y<(CJJHf3-i@fwT`}2o_%t}s zsOpgDF_ox^3x=2NuY`$<`<&2aBs41uwxlO`+jPB9cVLXdsO^B7Qt&Oe*MNWsb&)uO zXnbYSU$rTj&elU*uhB_gdFfTAlTFH9u*-EQvDA1XI)pU6H`zC=xT$ua* zR^cNZV(%Pew8DQBm;xz@KDIe!u$iZ`HsGOu>ZAN$q+8rn8%wWOt8b3H%5C0k6M=DQ zQonJynYz(tR^L)}`yq_W(isO~+>bHGHELjL@azNl#W%eoXmmEBL%WX*+;OevVHVap z8Y4sIVHm5CDF$%QI)zy2v|Ns_B#7YU6aQIE`oyZ2_ywF`^rcU8dGdv8|%qcE8o)lI?0u=SLkKXD+Q`*he13S zC355aB5@9r=0D5@`T&l=ObnPW5uY18rO)lc;7CjNp{HJvxvuOF;&xfSuRqS&7VNr~ z1z2G@j9&08dCYpPbS(mgbPLiCEq}EqHurO9rO`s#ZQmg zXD}?{tUBIHDe^uEKeL)F`*xMuR-dE8ulCKCk=DVm4Uh$>DoO z=UR6GlOA07ZU|AW-{2k4^7_R@Y1#tGSys+P{itFIbXmzjgVsSKpd|efe96U0Y@j)T zB=M{|JRxM}eBpAv2=Gf=;d7VnDP94`U!rtOg&CbuYj5aGOf)JK9Qo3?71V^e*wxIv z|32-5iIjus>O-1GE+cj{ILdpO`>F(Ijrs_QjL}VpPEP5yDmVJpZJM!+U^7h$M9}x+ zn}mi_=8)It{@N*e%fFcJu=+=*-kWcyXvR;Pf5r2<KIgOM7iBiQ>cg?buj3AV4*{__yiS&1X7o^s}pgA=DtEw zkpZ9ft-V_yMb1iJvh+?R4Reb$`tjylt1n46w9{4(6^3$sw>9lvPv@mO7?c8xS^41Da@}V}qxj zE|L02ec*hPP0}nq9!aYd(L^7O^ZP7#|G2u1PaFoA55xj2Km0S!<9sZzxA&pJKF1qR zT=VV-BHn*#|0raE{vegqrD%LQeM=r1Vaj@-+3n-Gv1ExBr;X-Hh#C>s%fQh#=%L51DkA$SVwXNACU-V3j5IBeg{2)-7 zfbhriu)wy1u3=Hp45zU{-v`s{FD$x`#!6dz#o)G!b^D1N;cbgOHIe>u>(cU*z*DMk<^-BRdshF+qLaoPs9DZ1v*?d3>5|mjhyORkTNn$M2aw}!}L)zp^)#GYP z^X0w>^nI^E1qYxQD9!*mZD=`Y{J2Yi)Yu`aI$`vwkU*4gJPv#k=0Q)mL}N<&qfQ`H zcOz$Is6KPt{7@ho`f)&Y{_i&wXPg#-fME5c|2t4NXQm`-T4HQ)f}Lvo!d?s`ZVM}&KD}#je|E#5Mk?A{6`uWz8Z>EuPK0)X-e)~+I|B1T^%)7_YH3+Q(gIY-;6@71L1X- zx>-smD8-k6S3$irPU#T~SWxZ;=ZLb@L(ndc2f^*og00XBtE8ZkMZfBAg`BHT1ZR%+ zT?s=(_vXpk@+ZX`9j2WYc7tX>Yg34p0U5j_b)##41qEdaET`#`RA4ZzRs|7NGtCoM za$N$PfRP2*QmRBimp~4|(1PC3*sCQ75emfSnnXz8ipzF`R$NWRT@O9cMsU8?Rv?F! z0l8ge&qh%+w}>v#L%TJ7@&qw8tU_rZzJhn{p-t2AbguOoTz1rBXRNJ00JCoZ^8v~P zZLy%QgQBGd3~q$_Oa(QN*J2c|+)cm7rW2JjVFus(>B0#~h~_fCV< zK75*$plp1gh7S(%GwMe*NMggz8W*qfOhx}XY!sB@ceqVWHtREldG(TSNefHX*~;xY zB7xz@9Nigu)J7VZxi49Io&=l215S^|wEz9ISJl*|?Vu2B>64Pn>8A#hEpaL>z`s)T z>do63Zk#sJm{xxOIQp1J`7HaLZY<(}6tiQyfUXeiXQl`q&S425eX*-o0Yg9zFW1V> z%6Rz0JKizz;~66C`A7g33er>`q@o&?>o&-+5_`y@`8FKv`$B6sX`c*)C^zf5S|gQ_`&U_)FKtJA}u=JM68NOzB5u^931s?Xh#J zTN~uyM=C4*fOPFX_WE(#l|1&~Brug{sbfW7245%?y+z@72 zh%ghSqo6i>OgmqU+QVK^!lm~ga`I06mq{N?ZSFkDR2d*tOD6E zNT8}hzs0V2@i@~y^EwPV(4*4x!8#L<_ysAdo9HsUB-av~yOJJ!`$xP~6m%juY9x%N zhKacNM%2{_h^fGT*sKOBi(PL92DOZA=LA>FK)~GiW&{gQ#!u_CbC1;}jRA>OU<(wY z0v!3TivUI#@cy^P7$QXg9|qh_g4H)>1x(~D-6DZ^>?mUtG5H&WF>cya=i zD7pml?*PEk=&S_)WHnztEf^#Ty@nQ*mvAwCcQ2%`wz#Q1+$Hd631l+;SgL~Rq&h_N zV9_~LDqHfaH;^NUyYVWqiW*et%(`@LR&ASAZuS*vwZPhD6I64g2&hf?IU!A>>DXfc00z`zXw;?zbf-E1qL zeok|xQR`F*Fd8>^PO{0;=r3f}nGSJ8=gYAm4)dt3l_jR?^j3cj$yO#}I@w}aW+5N#ruDvZv^i{fEw}y2(FyD5?Y6_*qds_{#P^z-E&?UoevBJZ5?w{QY zdaenqR&Xo>kX_OuZtTmGVoOG>VrbAbSBi`Mt}e@D2Ms4bk=_dba#I__0^@WE)vc}8 zIi~nVuTgG&@HUCO8N%4+QWWy-db(}8E7B_z*vf7;DqF%omEldEtutpOif@N}>}^u3 zv|r!HsIF!o#90lc_-B|UHt#&5SAE5I_|ngxAtIEa%^llguUOK4@lFQb(6`;%E}cwk zDb`72LOz4tVhDy$9;j$MFxGM>if1Ch<~@d%ig#39i=+_xDny-K^nn#AXy3ck`FuT7^(@7 zwU9X~^~0SYnQY2=(ey`01G2)IA80z+{&~C8bDI!AKn7DBm~mx(sRCV937#Mh)u2p- zN~zbbO6qGe0U`clad>}8nRof*jWom1ThsL997&fV%bNES`xg{U`G!G~&3T%w+*o&Y zAd{m+ZmElA1@`WZPW|wy^&vPl11!Y&p?q@ea$D;WO)$$p5!G1!T`+OA$jfY=IP`}q zJRw$@4B?MIcFm&}s)8*%>ynFPZ%r@16b zJc9w4?soM^&7gM~T_AQ>ZE_iy4!PyW!lsF;Muplj!-CQ?q;bMRt)aj7?ubtPQF^x< z`m+SLlj=>AuL3`K0E!gDlRhPSDRnYggmgl`2$;7O^k)%StKGlijguOuF}%uL;5Uvw zSe5$*xF0gUAY66eW}6O-K$r?IMqdwm7>1qXoL-Eep;S2@#1+_>{uZ#SeZ5%n9&LrD z+mwNwznH%yt%msBPkeZLcJ8jT0D>KqJ{U}1$*$ANZxSy6WN|jAAe8?Tl60%HD)+`w z)SW)P_>q2yczFN`90jn?v~sdig3W?cHk)mls|K5mq*~V?S&A-qBeMogYDSuoYkqht z3IIn)1xKs78y(`De%9s`@}dshzGJ->#^g<)8kar@E4#c2nT%7^z$>)W=3!t2?k9Uv zH#;s)qMd2#J-s}`vv|yZ$ei^qSaY!|%a=K4&fR-J=+AC(bK%8!jDZ>Jq|{ECYy|L| zi{UB~SeNWAAEkpqkjJRwHGdd;+KH&m{cQi5j4W1GtnZgvA){P44L2zsxz#HUR=7pS zZ}n@CjYq7onH7MjX1#PVtknJrA7W)v23{EpFxQu!+p-MD1%5i6F*Npn=z8;bDA)gg z{B*qIlyFL+EK><}Y^m&q92F7@Mb?TI`_33Mrj8=(ghW{;*|JA=W{^GmI@y`QU@*p* zm@&rpn$G+4`+dK^$M5@BntSHHuKT{P>vdnR*K@h(J1zcb@a5*aivVy} zp*@QrETfl5G4_O;R}f=0W7#=bE>;SA<~D^gW2q-k=pU)AdHSh$;e_-DYQkS5F&yz& z(ybVPthVaP7dxh?I20-^VpLJxV9lnzg<%W0juTH3cRwhOP*3&dzG}d*)aRLI;uu&+ zD^Yokg6SYZ+b5B|NiI;MJu_jSL3&To-EIiO;b&RW-N3qusr)^_Fh1G}wB-}F6hFW- zzE^Os$a+30qXn|pa`naxV0o!I&67n<)9-(;!F_A_cC$9!wI951@&C9QFbT~Rm5anI z!fV3?Nk#A${@)T|hYFYegp2k%V9^jwB}kV5&AB1Sr~ZczrJ+X8)OGk~zE$gbgkXAf*1wed17+#FLo=9~B>R z0$0O1C;&Uk-oJ$GoU;@7GBB+4U#e8&Fq#{A=vVx@^X;**B39i?93k3Glhvn29KuO(xxHVie;LpN5``+|BuLm0DfieXuPYH1Lgylsp6 zYN$g(cgU=y!wk%5Bt?UR!Ir9v$R#V*`tfCL;e^#T6E_REA;Z$kr8S@y@k+ASpY>fT z?I=0%Up1p04-wFT;=4@6;>W>S_E#h)&%V{y&=UdW>t9QkrW)f~pEI3N=RlTj2z{M6 z?07E}ai@)Cp8%ThbJ>EIc0zb?VnCn6kkqL#gv&7|0eI*2z?KIHMNgL6bC3^C$^W89 zf{8pB;%D;sIH@xT?$!JzL0Oky4gkdg>MbYrXQrE@-sbD77~-4q_?M3WtPMbHZT?>W z^GmFXn*v8{x}ZhtzFYv958s=Gmc}nmEhq#!yOr9XES3Mm8rmeYtYK9J#PNq^Y&>RZ zA+rY57kV0D);=}NvcAX7Sx=t*F_v>cKAM~NxD<}N{8YI7BV|jEEb@aXX{h$=gQg0b zKv=;C>lby5f_%@^#hs@re;iSBJ6ce)aPC-31m{$JMrH|{hMt-hRory_h>`dpyi)pS6zA1TjX^^BGeIgjRMd}_fz zzeoIXy>Ky~%h0{$=Y=HKhOOT57WzlPE%{nmQ(>0MOOg6YYTw>|h*vbDM1rz)M$TdP1l6wEVp$8Tnc2bk`v{PmPwveO#J1Bj{ z8<=t0f&@Z=uKQjCKMQgm^<&mtsRbeAN+RV~3!& zdPpquh|k;Z2(}eE$X!kK(aXg9oGuHo6Z=I^=U#1x0TSX392@Hmx?RjhX%X1exm5Y)TW; z*MpB_&J?a4wR0T_c>Wk^R3?imlw6ELxbA|~P~W51+sdXdaB4)8-yJcm3i9$`-2RGX zLw>CKVzPnq2OS_JC{p<`J1)@HPDA_m8Xi4*`Rv-qKY3B}WFmrcyZ2hZtEK0sjR0M_ zmqL+(&kcm`_#)I1mOAP_mqzvE4O(mLzY7T6{}#BQNWG3K_FTruARUfQN@;W zdlm7u+jzdu=EeprJ2=E_f@x8Z5k+#0P-L1b*T`@B%Dwqk3#?VBQi%EO@h90Jbj(LB z!e@AYS1l`l24sa%Jkf}av;XZxOa^f?)OdVw@re&i2ug-J}HU5$#S0~(QzJZ=~eg^YHrJX_kC zbJtBKfSeJiA*~!z0d12EBZGmp=DF>%_&j=492aOm&zO1(G(^w$QU2&#V z(un?!Metr&Sks*aOI^I{+KU4LfwsaP$%bsy@aP@bK*R3VAOT zo6d8ENAC&N^Qv@qD1ZDliQ0luG)gFF9rB zJ^$>8V~Ez8vuOdp`uv;4%&!1Q?Me}?%qFN#`3<=M;zh9spzkR=+zMhY=UO^|wV8gm zy=;w?@>vJK^gR|E<`$;&SvBW19ng`In1b3PHUQB4)#OQ9JB)z@*yV&Tc=$0Ei2QeN zjj2+&c!>QuWkZ*i9oIrU+d?eawFv(V)a8vUfJW>}f^2d1Ck=pK+^}kWmPIhH$a3Rr ziVnH$kYzd|s-*qYeb%To7j87xVndK+%w3NhqKhat2s~`6hUSJQ4jZ%vhxnaSGWOcb z{B=|0s0qS(YCaEADpI>Z{&Y^|N^kok1D7nJXSRs$kwgKHbIRB37u|Q7&ZdcqmhsJ0 z!(eah7_&Db+x=m2>TC|Q%&U#fpr{YF8D{d$Kq*0eH)m3^N-4Nq70ecF#T+x<4P|rS zAlkqfeYEap^Dm#Tf{DpR6+RV9jBnP~+oCf^bk3r@wpHlxv&(7@g{D?+8_`i5N~Ia_ zq)?4dmR6%?@}Z9St}nSZt15(8Ygfk+e38f4A_>IcZbu38z1@cW-9JJSQYNz)xuMEU zaZ&A*c&pC)vEIrtv{vTJ)*DzNq3Lu)_RKNJqye>>U$Kl&#|l)$iG0V?JEHNE?&OF`0L9V$dw3MfS|H>oFn0%Zq8Ol7@ksAVEJp`J zfj2(Vn(VkwieeB`HQszJ4%g!RXRl4&|8yQHuwmEEcds>V-7j|q0PcC(pqQ$fA%?Q6 z@&oA*;##ipF$XpEOU3to_&KjMSTzQDxEX8)iK$%dG92VJtEiE1%}z4h4HZ=Ivz52qgTVB5U}33)XDIU&{Tii z4~khg7!@D3guR?~)oyp(hg{q|{WQ(fo!l_or`9m75#@>T7W30Bm}$D_aO3@{)bMp; zQqF{r2II}Qn)E30gbC#PR5sg8eCwa%({vHjbwl!t|4V<0>DO?$#e{T+Y}Qu9>UaqO z#{bqweY<`$(d83=7Ct#L8*hl_33~IjH)-Xe^#mvec0GRand`pBgCPZlpf@1*O$YE< z9@qVRnbs;$Y*s0mo?N+CmG9vlWn%#xK_6yUHG}|prV6HBofv)j#>08tSh0#vbraKo z#$WPF9LhXCB@nU^x?(fKyhpDnK^E0i8d$YD8<(Gi69h48_0Cx&jB!UI*eD`)pp4dFbT$7i~~KDET?*+qYQlBHstH z2Wd8NY<;k~TU7p2Lz=1LA7hFj2##=6!YdwubvEYhF`fwG3MiGh`)_v2SVEZn;isZE z*UGvSMnH@ot^f2{1GUo(Q6a@>AIhT)ZJtp`%RL3^t{!xt1g>KIX92qIjb0SPZGM+c zq1_9-!ET1IFCHGrRob5LY;XZGRZkZtkV)Q0F339Mg#b%X^hL8J2Q$|q<>6dix(g{* zbKPn=@yFl!>8FUUM!B4D1mLE?+kTfkh zblUtxSP9Wklb`Mot7$Vv`LG-zAp`vg%i#U{M`ni^x|7Hsgll(Nc% zM_^pK*oet+m-+ouzF=qWwH0IQu{Q%0Ld9$nik&+S*!9A4%YcHs|D-tTGltRq^d1P) z!9qL4Yp6fB!unp32;ozIB!8YdzEs zyho(@;MI z)s_Ni@QdcLs~%^V_>A)fjO9T4-FsA%vVIr@$#}X!guB~#h8!x zm-KaN$Nbbc4w=IK&NhWX0sdRWfgYE=%r3S960BhD)zAw2uJm^-Ui_e3=9Dz}-*THMeJ0mq)z3V;fMA>zEz- z+JkOKgw^qvxJW8yYc;rc6?LD*;n#~@_Y|$)oD?bEW6_Uv;Qemy9mBuzLmE>G-1nxx zs;DzFg;kAuvn{>0{)%CD#E3$68hM1=-ig(nZxpymeU>kFV!q^|c5` z6YZr2Z&ON9V-+>G+~3WchcNtYV$`-?ydHjXC{=rY0}Kw#@@Z1}?_!QR(?1q1zQyNc z;4AX>AJY#H#Y;?G^9fin(6u#vS$J0(o;ZveWAm7MMq&5XJWEt&5VV`yhRk*ptNjk8 zRzF_Fq^6W(_J;y<2vF;mje2A?n3A)?&SZ4h^f9WaNlx`vI~%OHj4A-8s_Z%TVgPc{ zexTpx?5X`t#r?s0sqG)_+Lb{Qhvc?%22k7VfKRMx9hh4;-XgE++g5(~{)^FEZvR^* zQ2OvqPs%e|qaqZG%;$?&;XAcUX+Zh1_Rhkw{<)4hv}+|IKu53Y_C-VAuh1`j$z8ta zp^G?O=>4?zNY9N{N{Zk}W`?IXz96i2$HB9P(aIKpHFBN0wH~e#Kp3sb=ppCI7-f5z8J3k- zEGRJ^ewo+tgqVLUW#PQWo^$RMBlmhH(6}?u^=e{14|GX4^H29MHUqOCbS24WI*6p~ zc_v?B!D6a8dH=9itmNGnWLn8H+{xt=H7Z*=Zpn+m{6(c>EOcBk@1V`OBiKiNz|#31 zocEd@9 z_~}Pb)<*Loca=lqtc}Q+V&6f?&s?pA3zD}i{6fvAdq*I_*!=mD$!B`GJ--J=;&0qa zkx@YcH&6e3PQ1u;MV@U?=^O7@E^_3<-pw}76u=(Ns^YGAF**z3y2zng+!0;&v|ITg zi#^pg(fPX;h-B!6gJ>Zp;+bYGi9{u5?-R+#$lS*JqE*n@o z)b>=of@||TawPUSHZP=*MzLwRS>&OLx9Fc@#U#lmWa=pZ&)@5tgQp+CW-p9hurH`@^n z4QP5|sNycP74ShpYcw<_N8#Des<83{4Gg^5SudM6*Vhiez_lS zoFeHign0I~?TKLkcD#j~Kh?g8$}TlpVQQ!teL!s{U<%nFl-?ANc?u=p&+LhhW^ zV%~T9ZO7DZ0%lD017ig8tW1h7ecd&~G=teM>v~F-Y}&kx5e!q9 zZkYXtS7@sQ!6aS7{Jj?3A9W5squxf18=^Ui3ajP`tm8I;a~t$TAp{8&9u*p`<{sf0qLgeZ~JDZ{U92prTfPrO0>5~JYIFC5dVqOU7H~$CTp5g zrx!FGq*uNo{|1WmP3dn-+^5BQgS|M+v-{uK{?NE$8^YNYs}ybdtg3~rl{keQaaFZ| zZ(lr!8v{ui?4y^_>J>({+UUvebLw`U2@az6VbeZ@G-iYB5S21_ywg~d9MIWCXQMKoZVXAFl7H)}eS$)7!TRdFMzGSvdcRzkB<|WTb z$D~Il^6`Lq^SFjihE}JO+kYv*amCvZykk7W*5P5~!Oi*kt1IUkL0LD~j_G0k(3pEE_#x%c%3Ya- z?iedme&My1_qe#&qb0tfh9ke5P?u(phxaf*-cInXzCY#&?6}Blrr7b!QX8c17Z3jY zszfWf*;>>tPLM+UD9Vpz7Y1z{fpv@Q4a`4+ z;nV*N+qlAmO;cKdE&P`n{v+(libJMs+gph1krmvOcA~Uu%^|7ib9<5tUeLur?T48T zl|iw|AWw76Pz44BoXcs46Y5)Zb5BTyf~o11Y>Jw;svIPQpTIeiF(NRTUAH; z>CTg|JDy$42`^?#8t!}OWDB`>GQ|8AawO8;yOXa3ZS7+<)~U)*#8t9}9lke(C5Sn& zH1n@H!Sn#-q2^b&6~P)UY>oh;-6fl4KSLFYS-11%m7xO zD_v!1>1n{c_LnqaikqZ%lBm3`KOY685rAfcdDqY)OluF~7~2kwT7DO1NQMBfG>>Gp z`%-qfN}yieP!P>yLH&^x%)d;X`xhc`Zb1Nq8EM8&#@MSzEVRG-u5W)%1c^!tS>EiI z$*;bU@rBu(Z+ei?UvRYMD8pB6>{Xgyf5A2dwbU96Bv2Ocx_>^{ey1=7nyxi0(!{di zZ47^bvs35eGx*T!cUx^#$B)zl4!aw!jxSoptUrtZb>iEw;28i?* z_VQgo)3cgVGzwI~%bcN)oUe6ug-Fs7-$r>*5up`verX(xprIg3HMWXSYPc;nNCd`Y zp&Z=&HAhFr%wj3&V2dy8wS!C!(`Dl$SI?j2$A1ZKgR*_zA)_-{>`4Cb%XbcX)B)7$ zj5s)P?%F0i0t!}N-M_DiB*i>^kyHr2I;gYgX z$k>!VDvnFjOo_^CLBC!MUvi}Gu6{M8IqS?_Ij%3!GeGTHlq5{yb4}R51W>iN1kEBd zMfV-^EnjXK@Ok@g2T)h!t*|HBWlFYqGy+|Jr#gpbQ@k_VY-8Vwiy|eL1$2(-_@1lr z4Vi2FGgHj_!BBx;?d_DhG_tu5a8h1N*Irxp#5c{=*qJig>H2Boe_kkI=MD6Wcg=w1 z^i|b+ZLIlBorAf4Zo_{DwMnNn9^yEq0{erN*GZUZ+xAgqj_F@E{49>6vD^f_$`WwP z*iV!&WZ7G#2l!uRLEO^Lhm_5t2L)W_M{UJAj$;r6r;iD_^E}}|E#-S@5jgvV>wGuE zY474uU2Jc!kxwPr{b^CiuUR@maM824_yp_FAE=g&K8lHt)_QPv z@E!1FmD+oCm_e1E&d{tNt^k0fuhexCVj$+q%iM9y-|di(Bg3l8o3!TN=(SCo{iZPW z)@K(==G(RnK!H5x`0;O>Ys?Bh80AP$lMr{Yqe20uh{Hg736;5h?Sw; zwUS-vauId1zm>)GA*gkPzD3z;(+hR?zuny4;l7v)8NM0f(mBGzpLc1_AW=>tMht_H zK&KPYKn&KA%cwreVKcNB-F3im=xs9B@Pd~J6@UD&O)?f(xX$cMw9%@5jUEK5%U<_E zz~R^gGcOx1IjwG+n|=)Q2yrb0cFt6rF~2D2T}$&_`DQou*vhkJ$=nxy{bp!7ohK=y zWOh~>rGz1}ZoG!`cFbrG?)hk`Fk2;2`6%q!oRaqbq#_?EAFRZPO3jeyAOnO9C{1oV z6v~^`0J~nZJx%*zI`D$|jT z*=JySAb#SKEAhkB1;?##t`cOD*mJb;ihm=(-U z!md8)^QO@7Uplro&_3OKhFVbN#-R=EMFuseIRB zg!80tI@~HuvA(ordn_Dy)B~D{tneT$6q9ICY=JALU$0+jU95G3`>hEp5Hh#KI1?DG zP5l{H9^uTeM**qM+%&?JV>|#P1WncHG{AaI5L7_7tICeC>dYM)HY%C+a_C|Q-DITE=8EGwlDK-OnO12a*OnA@t4OI8HF z|EcXeOWW!W=ubLFYVE-uIjsmOoHNxPy~R0NzsS7FyGOkZVI4i%cTRF~NampON>o}2 zW3$ZFutZ_uPfMuK@k?YF`#*bE@s;G8LbYG< zWqzNS76vGdQs3)7W5 zg|f8Atd`tVwzEV0LM!AAhqk(6WwjWnMQt<)6P{|(ezA&PIU6>-frWK*xn!7FRW<3EUTu%Y{WgpW zRG`V&djqU*ra*PA2nIixXjy&?!${`2LNp8z)hd5A6CNAl z#%7l-$A=s)RaCg;aq$}0Ie{zwirW(Ak9OPWetHP=)2?%PCXxhxFwU&vbj!NproKD0 zj@tq^T#(u?&)pw~4>2taR^1;R z9%BB1eIHG@Xh|9Xr|*G9IJoxh)Wxf&^_k(a8J!s0-b|zY?y5?MlZtznLkL5-bGay4 zi0@rF*fVgw(MdZMKcg|!LC(jclBmTMt=cVz?}7Jri#H!*>(V{jY`#}H^@T`juNnC; zpJF$2@xRWO#OYT$^|JlAz!`{Bb5?|loboM^FN7p+tEFT10qswqWkyv68MgDMRWv#` z>=S54{?A`2%yk}$9Y^%`hHA>*wVS_v1m=@vm;AMRK~B2}-XD=pYC=#dLl)sDX$~Pq zuPVwq;oQ7-#IJ{b7K*H#B<&*7C|VGWhQT$LrTT=>A4}(&ziJ001}gM|k$Xi+#^Cao zrx`{&Qo(IT>U%@e`6ZSGh!cIz;3CUSdw)JX)ZkQg+gN2!a5&$yyJ7$N#}JpRUomy@ z>O4VgYf_i5!d%j-L_upV>X9{FDXHb=J*`|YE(W#LCood1_^H2@$F@vw7vQ#sSiZQr z_~ko4t42)wYF;{&1s4io*b&Yn?Y75c?^9EAz%$;RcSF6~Fbd!uaT?OmEn@Pk?-xE5 z-UR)0k!ud}>mNOo+)U&-$a{Szvq*5|M^!eLANV=&qgVq=%ftu)24b8wf^t z(Fh26x!1;&#GqzXtp{ZH(F>{_v1l^VlI)tG#xr%%yHwBSU@f1-U-h)01D#22B!p>$^RU`<1VA#+hX8Lyh z_dGzr@YSC9>Dq~@@9&<;N15o0J>w;-z@9BSHak24}Tq z1m>i&D5n+%o;j)|F4boEx+bUYhLfF#PgXW*Y;zW55Grk1E{I9@8Qn1E8ZrN zTN|HFxvuTp>TPF3#go-P(9fxmyKG(e1Toa4)%Ol;=#-PyP6FdtI{k5R1v{c|$LMD_ zN|S_QY%b*40WP8E)5LbVA2SEPN*t&A$P~%+D3hV4Gzb~m*T$q}|Dp9HLZ^>pLzj=K zpvz9*CpDny_zyEU)muY~LFDlBdsU6~e|r9@bwyMGs`2P~VzjY^B-JPYAx(1JAAT5G z+=)h;Z-<8$7X^YRWN9}aFzs(&=h)(T4AqO#>Nh65m^!yV4r>W}vKBwJNTt(GpJLlQ zOn4Nf6M1+4`7NDQjpEz@$vs4)-X5#N2JUx_OZH^S=Np8i)n8Yf*UW8~0DxNnIbtDc2jTLEBvwd=rroDaSpzRjSJ)f35!ZvMjo)!#x+LgXg#PH41aZ=1;vCzV zlA^wj-Jb3&?`ogumI^A-!4>SkPP`^8D8u&`wEi=#%(?&89TK{bybnJ@3XZFncJcd5 z=OO``0~`A|`*B@X9R5r;o!n9)ejmdcsCaaTmoAkkAVO_9HgZPvxY#fJ!TvihsU3!T%_RoQJhn6Hb+(i>ASJbb7l2-pwhcQd&O= ztr-3Pw`D(LMX3rvPy1@ef9HyZQDjIb5A(0!TKw()kG{zMfBW*4Z@1Tez%o`Wc-fzs_$yr*35OM<6%p!Ar1nN5 zm)UaBQkq?3%PIWOfVBlmT^|5eeiAKF%$lPC3A%2CP9D3i8DBL4AqRp~&yIv%{l;zd zNR+@mi*WAa81)tPR8K}UJ;W7-eF~a|G`%KGdf}V|(GCP^E58s5eIdlzNo#JP0+Fbn znIr%j{>$NF%L}IMhLINT6CnOJbZa8((|&KmU_FvKSg3=g_TE2%u1?L$-lrCN8da(B zdw=pD(e@qog?T)BqV;Hd^`t3#$=csZtK@*rXZ+vntXSs-Bk|Jf{^uozU7P#-dmZ~= zgPB~!VaL}pRp&!)Go}X!;Mp;nNak7yC-owFl3~=}Rl)e@k{hU)n|=UjKv< zq-sEJ>!`wHz}LUMXyV+@KI86a{nd0Ru@hof5F1TWp5>uicVLE8s1aOtkv#l2 zV@ybH-R|A{OFEJiQEaaMk9rK4JB@$Sf4&^8AH@|P*qRvhhE7fXCof4uAOxqTc>5w2 z7aCgW<*VW|vxZNQm}rML_(K<&j`F%g>10KG605(4l0$9Oy^Lvh8|y$$kJf2hRDuw) z(q!-Oa4;eWfYrGPtffqJda9dpYL4DrF+|_=hsIOlyw}V9&kH5ro2;N8jk4Voo=KS* z-zhpp^1CnKue-pTbKe4=k!#|`xI-bi@6jD5LVYE6ucJwpcyQ)xT^pLCJ zmR1j@{b%WPJ5k2lW;T4BUC`dLA9o&$FxNc&xNHm$U1-;6cN(8GU^F&<_J1qe==A&r!*+2iJ`G^&d0 z_-@!Th(L84-(^c~LBc}-_uu3c=9Syos#9Ub3uw+yDzjU+S2AB1&73Xrv9cz53YprzuHEZ6qf9@QN?GuZrp;oXkV@;&I~>;t;qo@RxS=&| z_Y@I6zIp&P!6q^8YWWrY_;D?bhwR$%f1Xt@|YI{!WeJatr*(76ro!pL>ov{^zbFk%&&iZ|Ey3;Uvsynj z)0nAgPwlmzl1gWmhe@kiv`uwQ^j`h#z1&RYqEi)ZCAKwX_`$bNZB45xf8gKHP9yo$ z(R(Jj;1}4@g*ld!i;aotOBd; z4@*R}PKa(e&h4h@MeKf?^Y0eaR2lYe;w8(aJS`IftkZ{1ZPO~y z6?r>Exb@8aUS2<2Q*v>xEd{R7w&yLW%A+p%!FhdF<~m)AmtBpxiYfu-kGcz+HO zcWQ2l7;NFtf$U+xye)UXgMKYjF?H~|%$~MKJXTQX+h=O;%5&UP!)?Oy(8<~+n{7EH zAgWC5${I~eL9a%WJ2fxuApIXWV_n79eK(vwYr%^}KnPg<$%vY=MsesQIhJF20W+>| zw0MA@I};RAQ5#R= zubaxB>4Be1$$SagyD&3o3BNP`JWg3j`6}l5pEpvZ#W{>66LvuZg0YzaSK5r`pB#L_ zY?@eZIJu|K*`xMW$>P!p@zJ01{OyNF-MOk3bInw0(^-d%JT2$xTXO;^82r_(lK4B8 zCF>atb(*teyA&_z9R_?`<}VU`r>L}qzFzZIzibqnuCogK;wCN)oA0rag z#(T;{p(wVS zWr8IxPV2M|HQh*6J{%x=Q?7Ls`OlF>LK&>cU)&zEbs>|8s6`4&pzhpY2E};z)^Eio z^ptu8LY1y9P`KV#cRV=fn9#e{nJ|MSAqFe&rFT&(%2#IEnU2#Y3~L|@A!8E={I0OI z!?KHfdur*bjtXI_+^GolEb>D!0gMF>x_>Vw&y^vlSo%H2#Da(I(d?iBy93$D?R`u& zVwXL2dju=;)$n;P{Em4^Mdb4rAiqHySBrh?nEp14HWdI+Q}5nfM&t#1{Vq)E?DdL8 z-eAXN9Z7_029|t*Y$@l`S-o_9ZefPz+-l;+tLOG*KKa-P=3a=~PW2@5MADCRK}11i zv_RWlnsB;U3!Qm6-ElT8$Fr>$X3wi-@uP+r!PldaWhz=mGSI0y)X+ySmTB(BC)|yi zsP~|jDfaXsUrQavsGAAJib=Q*vF5!U`Y3P`)N?TqwL;gD$7MV6rwiNfbVnHvuStlC zTD8~klBe~!I^J{xpP0>f%kK9qIqTcQ`<4$>RyIW>`u!Ge~b`C1N|P}nJ0z z;ScRUi)kYASikvm==Roi5x-bTf$DClJsiG{WTBmez2}m(nB}~!*7;OoHLoxE{m??o zF>?{vGq9>S>JZ`)Xs<$mDhwFcQ>G>>5E5@TF@H(4u=v#uT%D-Vh#}+oP0pZX6<0$-vdjjO@ zEljSx3NdKm43eLQokUi}(?`2}J2b{g1+e>Ho?#{9nOG#pa~PodO$5Jr*0 zk$u-%C8J!f+H`((j!2vwj6)~ST3flrz6xBy743k3CQ}_})TJup{1iK5Dj z1@vKRHbUXH+kIl+9FyFg|8zJmf%02A!E1k94DQxp(i$3`V^kRIA%hrUR=VYp6!)7(aQt)kkatOlnr$81Rz@1~QxG}$ zoecmBix42N*#oUBnsxn&v{SsYdtVemitO39e{FnJ~x>!HAwG zX;2kHy~Qdt_@|DSvpYry=k&Dh_`Lqk&kYsnJc5to6;%@BGIawlu56P_;TI(=;d}@& z)swON-OEiE6sY|XwI*7OQg^e4(cqZS!oU(sLuG5_n~H7(a}usBJCz+-Fy}qVlR{1n zY`AcHugN6DNBW)`{)I0J9bu>OaB_w?%Vj@Y`XgiA$aZYQSFHZL(mQzA3=QFI}Y;C&P@Rz7)R+13|e$rEWGncfunfG+iVQ<9}zp~frI)2evW=YTZS z(Q_ELkL_bE7?Dq@r_lq1rpE{uBP@O?=va8eMQ57Gd!5qZRXB_Rm*{&XQRrr*@lf1! zT`CfCg<6yhZi>T5q(mg&U(uW~F(h+C4YH0lcC~fI;?jP87{w8zbi_|bi&NjCAN^IC zo>iUx83WhwHd%~D&sjzkfq2lmFta89zof;d49jV@@YVo7SfF_9d ze)30X-}IAflFNK&x#&B+vi7oQ)}qf*;b?oiK{(!#bq25L55p3Ik-t#_C_F!n^V&0n zH`iL-9=@Kd%of>sp0LVJp9y-{c(i#fvfT?y1Au+|LCFsyUJoYMYu{;;c}m)^LWS17 z_Kw0ojSD(^T72uvdeFS}^{>sCo72-xw~C+cnnQT7cV--Xiyk@Px1Dx2q(AoM+*C~a zuvGa@(dv;dHL1JP3-w5k>RV5)=f9Xo+gX>@E={*oaq?QS_HKM&bQ1f>!wYZYx3ATg=rd!2oCp}3&Os9gM~P)0vYX0u-|8TvF&i0uWnd= z<@9fohXqs~Z+5P$Y}3;XD3?N7yhWA1yg2c=nos;VsuNrPAcD)^fz?#$#QM^SiBp*u z;uiIOeL&^H&n>Ph3OyHkCq^|tHtB9x`NMpkxg-}E|7^DJW3KCI1)oj7i<4zci|?`u z=tIX;VX`j{<)WS3BF~%@xANOH;^2gZaWpP=F_YA#=kxvic?49Z<|E<@PWk&^5{C*5L zySv7?7PfsI*nFl?dlvuu9~XiZ2%2F( z0aFIs#Zu7@R8ZD0l_nh1MsDZlPAl5+8t>tsR&vg|e8yvI9t==H1 zSBxGFo^lKR0`4PR*~tId#S%j`c7n3>yCB}!A`&LR=??$)D-dnXT*o(FXxw8>dTDA| zgb?C7jl?~=#A2JmV!={tC~Q?dDP4C3{#7X&z^UUojDJZePf3bAB2^io zPZXTcXHZEC|t(HXK(0ro>o%}Jy&a28!*-FTqR~4Klmg+Z8gWG z*qY`ioWd^F$aS|W4bCYd+qSgUN!kx4r-^w7Abn^)hlh=ZNdbP}F21BD=js2f-XY2! z(Re0XX30 z_AF)L=WyS4ev=hftI7;a+3mm?hA?19d|-v;!L}QQQ~Fvy%vximNq)5A75Zkgw0-kq zYRAssQ_?zH8@>T!<=igK^+$nj3Ou z?g@}W2<9gH(L>){dyBV4cIr&5CX6D+z~E z*qg4cjWa}P{*#9*7mOtKa_w}!7wngpj1=ftlGm!&lNz7c5XL$zkGDQ~NJ_HfxOnZSqmu;n@Cqk6^Rw#5<&RGIP55y?})lTi_gl&f6~CWhfIXGB)p?#Gxm zz>B0WzD!v4ZrLq;>0bv!zbeY5JftQ}k)>k&mNItK+K9virC_#1Ul7_*4j(szoP{RA zSf!c=Q;v71>S%xarZ;d#FM{{3`+dxpJYTK)^X%eg9sk*Zt|VO~on4u(mXpFyCJat^ zS(2-Yiq(JqcxpY%2R&1F1z{5TCS-^lF}r!j-t6M1AG2TeJt&Nt^pK1$*wS_J6txBa zx(#TW+o>PeMG4fr_m(Q{fiIQ@)nt@vwnF|&fgx0XdT9DAQKPB`q7{HB(_ZdeQ}H>f|JJHA zba`w*(?6saA|~>AD_=Nxl;7mIoCe}e#?lERbd@!#B4Xgl6Gbw*{!@i%O|JbULwC)b zz4Hp>N-z9m8l)^s#_X7A<^#=zW9)%v{@-KvW%^Qea zI&Rx`Mo6ubV5f5^M?Z(#=@~OrPkx7PV#s$6L>TkW;X<;^W3x>|9%|W$661M`LR=eacNQ?Ca&I?CGj57aT~o*p@u0P z3b!&5mxNNU4TU+Z*jPDGD%!Rlw~$=0_*|O8(r47p`_Zk)|LoyYtyzbvlUJ+U)@9y{ zbZW+`75i!E!F|pjhx3GF> z3)39BqPzA=VI+M?CXsg1MJwplG6Oin(tzjSE<(O`rg-0$GBYsYW9|`e{P&4ZKj0Ie zB5UqkpZYA5YDAyUtXeU_&6*u_{p_83)vu*Vk9~zG|z{@8YPAzPImx66KwzR zoFf+*xAAF1UQ9_#yH>s4?S3f9TSD%CRdwZINoQ-g$w}@k>YbWa7j849HMUJ%Q89AL z)EN!U)XW9Z(X!ld0T&QS9VK(j%E>jsal@TVk;IVHYs8ovpcDp}ODd?Of*>y3U(a)& zXT0bA|NQYS=Q-#5&ilR4o0?pzr?d1KIV4#%VxfM-nIGj~hNCyO%hXJ@a$*3|hu=jeg_3kF}rX zR4k|D$Ph#^Mje#kl&1!B5#2 zh}2#ac4FXZQ|P+=R2ukOm{re^4~sW~ix>lfzQ8Q@wfJW_G)l3}8?B!O7wpkNayYrW zZ09cL40Ye|i{fUf{(NR)ST8e@Zw7p-C%2@H&Ote`tJ*6DchVB4EX$sw1o znkNTVy}ORCRPECY))K8=Cmz+BT4%m}WeNLkcqh|;ufl>^q*w;jHH#olU03YXeQ&oz zPx^pc86+sig~Mt3t&pmC1>I|R2Og7RbN7w5{f}N4?oB0a;>R&MKx8VMxl#|GQz$$F zc0mfur`m!9Yl}uz(>Wunk+V152OLn-bN`7Fc2j#4ALBZVxRd!$LYf9vUpYvMc077I zMVRvn7QT=GMiJ^D8kvK!p5tiwP9<4*YB;x(Jkq~F+_8BfBKX8&@V12Gv>O)S$=$Bj zikk1{f1r6o#a4)V9|hSZ-HL|t@$G8sLY>~b=Q0;=mMW=IBgPBB=o2fZ1=d=-w|v)# z1!WBDCbKe0YIr^5LsN6#&REaJiRHD9XQUfg_8*pIVI%8Cas91s2aN|!m*0KP`-0_8 z!=4&hbMa;D3!i8BW+9J_?R(Oqn?G0lp|HDzsPr;C%p6sQ&8N4REn!h_vy(otibIr; zZdSsEQlMQ4qcW?Ivm)%9FFFo`JN42+2ZvH(M^n;4IVGsP=ikIN0OeuBGioL#pkBqK z#eFU=)gk&3lt-T%@Xg3tWJJMcA21ZMPdhWUxRNg;{V>){>t^`K_2R+zMS+=gjx;kE zd-@k}pcNM~Ih3+I_}K`hVfvUX7(Woe4WWfMxh`G5uNMl>KbWKcSo%UYY$kZ)ZPD4? zL3>ks&T;aiEvqdM8A<&%Pdcq(-Uh7>twoPk&I;FV8hE6T{tBRoALcg2d3ceMmN=B& z_sba6kfdhqcZD<4*8u)%^UTP__TnZ4JXu!eczY)`c8os&EXH@MA-CS;%l^S)-ZRQ21}{c>LCP_`bhaNl&fjc zM^1&{7xEvzeslpKNJYa_g6qJvd={dQ}}*FT!9TZZ#*&sXTs{VMi9 zQkrAi+51D=HtZz}RoUy}lqNCLFwGVXij-;U`naIbW<{E2vyuYnxT4krQA_l9-N7$} z<|1{xa_2Bb8dL?Q%1aUh1k`^&=p{$Zoilqq*pso{2#pRv8h@lQs79kNl?T|$mIzCE zBmwC>P21%^aZNt0JXX?h!j>MA^<>Ty2-V#xtg(boqMT*mvU{|rWnsF>^wjlUjeiy4 znk2tMLKV)M!+UxA?+m4Eg($9c!HZFWL{&>DYq`S58+Dq&QEf@@Al_M@f(=;+!PxR( z$_}xk?E83Ee#WfBrta5o&O3q}wxAyeQtWs{^JY-|12qyFYjuF;tsy&GoQy2^wiE&< zEUJNy&NbC(*yZ9XHrkf=+L`QZO~j)EwqUFkT?+XbkUH(CL=D$n($XN#+Q8fk9~J^* zw1$k>=i4Pn!%EzzYaq*4GT^}qjZxV6=o_uiyx5Awx!Zt-3|x#E;A(4NeeS|hj}p;Z zUXs2cv+EF1Q=1}F)>z|hI~`@}fWsT%5d~EevTV1+WS)_b_%4cxvYwUUMn z6h_XK6XwH^qiVA;i1^g4aoR10PjQuPogR-E<`qYUzyTwT*m7~=BB*r#mYou`=%2_L zb&|~XQe2(_;x`|-IbYQG5Za_Z+UC-JVuUiid5Z~Cr=7b(wGtr} zyOenN-bQ~WgYl0X8zA4dBEse}@?v6}IF)CapdIU2Ti{W~HUn~9yOm3%#O{jQY^3$a z5arScNXCn0)zD{>>t-B7c^-0pHZ@FYfuGsx{S{t{km#2*^Cxiu4}1ua)c0{M6?)=F zvq-^>S>kB$S%4T;xIF$zJkd;cyp3>0!c(L}H?K0`@dLgnCI*xA@Pw}gaKQZyL_E+5 zs`GldP(znAj(lZJ@MoV|g=vo@`7~8xUp95N9$q zn+K9TyK37I6Y*}MMK<;0c((rU|HC_`@gU3z<9t6^e34BJ<0(pnM_|76FJTBa7zWJE zM=jLa*oaQKd5HeG8MUY_HC@8dqBUW(Xl$9dYOSK<<5LJQW1d2vYZcEwKmmvS-)Jw_ zp?$-+R$S&xb7Od*=!jbSn15q7H@0#uka=pERr{6e@F>bFPL$0IFE|1?XgGU}K%HbE z4J#xy+1!x3$xqQN&*EwWel$~U$Z+#h!De??Pn5rU<2uCNl57ik`ZJ#8(0^Y%$Mo%Y;&M`8I@?o5aAU4so!vy|Q;%F{0sjz|f@z7G;E24A%ZvfR z;wbIB=AyBI;N?sw*VcoL?~(Yn;_fDw&QwBQZcTz`?a(MD#7T33Q)f?bH!Pz|6PRkt z&Nl}zn2ORj-)dx_m-`-5Is{Q}0OaRA? aX>}40o=qxzp?7^7uzs<3x!8CiAoagR+YmGW literal 39077 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