From a2aa714a837411e93339a2b14bf699c5a240a182 Mon Sep 17 00:00:00 2001 From: wt Date: Wed, 28 Oct 2026 16:57:34 +0700 Subject: [PATCH] added oled theme and theme presets --- .github/workflows/android.yml | 11 +- .github/workflows/flutter.yml | 77 ++++++++++++ .github/workflows/ios.yml | 9 +- BalanceAndroid/gradlew | 0 BalanceFlutter/FEATURE_PARITY.md | 4 + BalanceFlutter/README.md | 7 +- BalanceFlutter/VALIDATION.md | 8 ++ BalanceFlutter/docs/oled-mobile.png | Bin 0 -> 53250 bytes BalanceFlutter/docs/oled-settings.png | Bin 0 -> 91277 bytes BalanceFlutter/lib/domain/appearance.dart | 15 +++ BalanceFlutter/lib/services/app_store.dart | 20 +++ BalanceFlutter/lib/ui/app.dart | 76 +++++++---- BalanceFlutter/lib/ui/app_theme.dart | 65 ++++++++++ BalanceFlutter/pubspec.yaml | 2 +- BalanceFlutter/test/appearance_test.dart | 140 +++++++++++++++++++++ BalanceFlutter/test/oled_preview_test.dart | 44 +++++++ 16 files changed, 436 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/flutter.yml mode change 100644 => 100755 BalanceAndroid/gradlew create mode 100644 BalanceFlutter/docs/oled-mobile.png create mode 100644 BalanceFlutter/docs/oled-settings.png create mode 100644 BalanceFlutter/lib/domain/appearance.dart create mode 100644 BalanceFlutter/lib/ui/app_theme.dart create mode 100644 BalanceFlutter/test/appearance_test.dart create mode 100644 BalanceFlutter/test/oled_preview_test.dart diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 3ea37a2..a2ba13d 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -2,14 +2,9 @@ name: Android CI on: push: - branches: - - main - - develop - - issue-* + branches: ["main"] pull_request: - branches: - - main - - develop + branches: ["main"] jobs: build: @@ -23,7 +18,7 @@ jobs: # Step 2: Set up JDK 17 with Gradle Caching - name: Set up JDK 17 - uses: actions/setup-java@v5 + uses: actions/setup-java@v4 with: distribution: "zulu" java-version: "17" diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml new file mode 100644 index 0000000..4ccadc0 --- /dev/null +++ b/.github/workflows/flutter.yml @@ -0,0 +1,77 @@ +name: Flutter + +on: + push: + paths: ['BalanceFlutter/**', '.github/workflows/flutter.yml', 'Balance/BalanceWatch/**', 'Balance/Balance.xcodeproj/**'] + pull_request: + paths: ['BalanceFlutter/**', '.github/workflows/flutter.yml', 'Balance/BalanceWatch/**', 'Balance/Balance.xcodeproj/**'] + workflow_dispatch: + +env: + FLUTTER_VERSION: '3.47.8' + +jobs: + checks: + runs-on: ubuntu-latest + defaults: + run: + working-directory: BalanceFlutter + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - run: flutter pub get + - run: flutter analyze + - run: flutter test + + build: + strategy: + fail-fast: false + matrix: + include: + - {platform: web, os: ubuntu-latest, artifact: 'BalanceFlutter/build/web'} + - {platform: android, os: ubuntu-latest, artifact: 'BalanceFlutter/build/app/outputs/flutter-apk/*.apk'} + - {platform: linux, os: ubuntu-latest, artifact: 'BalanceFlutter/build/linux/x64/release/bundle'} + - {platform: windows, os: windows-latest, artifact: 'BalanceFlutter/build/windows/x64/runner/Release'} + - {platform: ios, os: macos-latest, artifact: 'BalanceFlutter/build/ios/iphoneos/*.app'} + - {platform: macos, os: macos-latest, artifact: 'BalanceFlutter/build/macos/Build/Products/Release/*.app'} + runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash + working-directory: BalanceFlutter + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + if: matrix.platform == 'android' + with: + distribution: temurin + java-version: '17' + - name: Linux dependencies + if: matrix.platform == 'linux' + run: sudo apt-get update && sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev libstdc++-12-dev libsecret-1-dev libjsoncpp-dev + - uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - run: bash scripts/build.sh ${{ matrix.platform }} + - uses: actions/upload-artifact@v4 + with: + name: balance-${{ matrix.platform }} + path: ${{ matrix.artifact }} + if-no-files-found: error + + watchos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - run: bash BalanceFlutter/scripts/build.sh watchos + - uses: actions/upload-artifact@v4 + with: + name: balance-watchos + path: BalanceFlutter/build/watchos/Build/Products/*watchsimulator/*.app + if-no-files-found: error diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 58d0b89..1491c08 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -2,14 +2,9 @@ name: iOS CI on: push: - branches: - - main - - develop - - issue-* + branches: [ main ] pull_request: - branches: - - main - - develop + branches: [ main ] jobs: build-and-test: diff --git a/BalanceAndroid/gradlew b/BalanceAndroid/gradlew old mode 100644 new mode 100755 diff --git a/BalanceFlutter/FEATURE_PARITY.md b/BalanceFlutter/FEATURE_PARITY.md index 94dc90c..3fa3793 100644 --- a/BalanceFlutter/FEATURE_PARITY.md +++ b/BalanceFlutter/FEATURE_PARITY.md @@ -135,3 +135,7 @@ These checks do **not** prove actual Android OS wake-up, force-stop/reboot behav The web helper uses SDK `dart:js_interop` only. The audit compiled `scripts/probe_web_lock.dart` to JavaScript and ran it against Node 24's native `navigator.locks`: two separate owner instances serialized, ownership released/reacquired, duplicate acquire/release rejected, insecure origin rejected, unsupported API rejected. The existing three Android channel tests still pass, and targeted analyzer checks pass. This exercises native Web Locks Promise semantics, not a real browser two-tab IndexedDB/keychain scenario; that integration remains an explicit runtime check. The platform owner rebuilds the full release web bundle after this change. Desktop multiple independent app processes are not coordinated by this Web/Android helper. Standard desktop runners have one foreground AppStore; simultaneous desktop instances require a separately tested OS file-lock implementation before they can be claimed safe. + +## Appearance update 4.1 + +Flutter supports system/light/dark mode plus five persisted presets (forest, indigo, ocean, rose, OLED). Selecting OLED initially enables dark mode; system mode subsequently follows OS brightness. Pure-black surfaces are checked both as theme colors and actual rendered pixels. Total Flutter tests: 62 passing. The native Watch client retains its existing appearance controls. diff --git a/BalanceFlutter/README.md b/BalanceFlutter/README.md index 1b724a1..437003d 100644 --- a/BalanceFlutter/README.md +++ b/BalanceFlutter/README.md @@ -9,13 +9,18 @@ - Аналитика за 1, 3 и 12 календарных месяцев, доходы/расходы, результат, сбережения, средний расход, крупнейшая категория, динамика и структура расходов. - Месячные бюджеты по категориям, остаток и превышение; выбор месяца. - Встроенные и собственные категории, 50 значков Material с совместимыми серверными именами, 30 эмодзи и собственный эмодзи, 24 цвета. Переименование обновляет связанные записи; удаление сохраняет историю. -- RUB, EUR, USD, SEK; системная, светлая и тёмная тема; CSV-экспорт. +- RUB, EUR, USD, SEK; системная, светлая и тёмная тема; пресеты Лес, Индиго, Океан, Роза и OLED; CSV-экспорт. +- OLED использует чистый чёрный фон `#000000` в тёмном режиме (включая карточки, навигацию и диалоги). При выборе OLED включается тёмная тема; затем можно выбрать системный режим. Режим и пресет сохраняются локально. - Локальная работа без аккаунта; сервер, регистрация, вход, выход, refresh, ручная и автоматическая синхронизация, полная пересинхронизация. - Транзакционное сохранение данных и курсора, очередь изменений и удалений, повтор после сетевого сбоя; отдельные хранилища аккаунтов. - Адаптивная навигация: нижняя панель на телефоне, боковая на широком экране. ![Интерфейс на компьютере](docs/desktop.png) +OLED-пресет: + +![OLED настройки](docs/oled-settings.png) + ## Платформы | Платформа | Реализация / сборка | diff --git a/BalanceFlutter/VALIDATION.md b/BalanceFlutter/VALIDATION.md index 05b6406..a544c59 100644 --- a/BalanceFlutter/VALIDATION.md +++ b/BalanceFlutter/VALIDATION.md @@ -29,3 +29,11 @@ ## Принятые различия Material 3 и адаптивная навигация; денежные значения в целых сотых (старые доли менее сотой округляются); границы периодов `[start,end)`; отдельные данные аккаунтов; график динамики — пары столбцов. CloudKit удалён по прямому запросу. Финансовые payload, UUID, даты обновления, корректировки, категории, бюджеты и удаления совместимы с исходным сервером. + +## Обновление 4.1 — режимы и пресеты + +Добавлены Лес, Индиго, Океан, Роза и OLED. Режим (system/light/dark) и пресет сохраняются независимо в локальных настройках. При выборе OLED сначала включается dark; затем разрешено выбрать system. В тёмном OLED все основные Material surfaces, карточки, app bar, навигация и диалоги используют `#000000`, overlay tint отключён. + +Общий запуск после изменений: 62 Flutter-теста PASS; анализатор No issues found. Новые проверки: точные цвета OLED, разные акценты пресетов, сохранение/перезапуск, реакция системного режима на OS brightness, выбор на экране 320px и проверка чёрных пикселей снимков 390/1280px. + +APK 4.1 использует новый тестовый ключ, поскольку временный ключ предыдущей тестовой сборки не сохранился после смены среды. Прямая установка поверх APK 4.0 с другой подписью невозможна. Перед заменой старой тестовой сборки синхронизируйте её с Go-сервером и убедитесь в сохранности данных. Для последующих сборок ключ 4.1 сохранён отдельно от репозитория и исходного архива. Для публикации нужен собственный release keystore. diff --git a/BalanceFlutter/docs/oled-mobile.png b/BalanceFlutter/docs/oled-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa008c06260c97b3beeb48b8ded9e0c8b2572af GIT binary patch literal 53250 zcmeFZbx>7d*e|+~?vxItM5I$%8j)@U36buWM!J#i?go+W5Co*VySrl(=jFTe&7Jej znRD+s_s;$6GUK@2uDw|6UGEdWcy_RYoFqC5F$x3%LH{TvrUZe&1VA9LGDryE9SsW< za_|?Ny~sxuB=F;o^eqVd8^&HqQUp>yM7j%syn=ib6IS`2da&rIfu{wFaN?{f9j|~a z41+8F2f|vpKDT%|yGS-&ZoXYpz6gH&;S0Tkyiq7oq>%@Xt^;{_4_=@$*qpYuZLhi{ zvKtSjk{K?iu^SuFKw@7}Qr^kEDdGDdCicXHhCoS)qtAkc9fjokBPd9W5KT;sx>FAv zgN*=-jUCKF7!)Ms*8z^D{EtIN2MYu2w+4N2YDzLQ&EIOg9KvKb|3vsVOlh)by3j-n zE^zH(VEVh`F>*80(ubR-YobX*O3D|nMz5-)zcturJ3S2*&a@Kcy3P%z`F-cHIu;E1 zWbX88&!Apyo|ZD(`ZqC}kqg79!J_uYTcr9*lpkx;J(6&W%o2j=svQm|$t-zmyP{n}ZFU#nA>QWxXC|}d zoFTmU{z;m0ba==&C#$eaaIGCv;VG-P-Bh2TsYiM&9ISFxLx-QHZ5^PG95u_?=6oup zN%xw;v>sA@+rt^BM~7N9`#QHR(#}w^i)EE+ImX1qM7;~YDv0-|ZKihK3iN(e8~-0a zI<7yv{xvoab+4_Z(;6a57}o7h-Sslm%ory_YrJ!PJ9T>L4g>9kKamWTC^CZ{bgZ9T zeUJajVloyO+l=h$+jB{r-$X{4t^2@ZM~Yvr@j{DF>osWvgPp8VRO;t| zV!6*ddR1Fd{XojX=|Y%XrME`1Nl`Q&L$N6kJY*EYzHc^knhdJ*U-&$*Q5q<_?&8SP znj9pWA`TTZ^@ItDh+e;b4fDF=b^Z6%7y0t(`AW;&?U=m0A9eRJ(b2`lx6e9%X~p#u z@;k7QhVpezOyEIIc9q{RP}CdDZ4@DSUdt7_9go5$Y9+!#YAu&SiemDS_7?=mUmFiu zSJ!fteu-=|`iCO3y+3c>KcYOmY;0w_%N(`?>p^7PD38lV(B2_DP9} z?X!P~P!pH}M!WmoJFMt6UI}057F1M33R4BN7dgDu_^b&72@4Ao>yi#G)41n8+ZsTu zD~?laQ}ks(4q)&)xSCWZI5~*ALuI`3N2Pqf!?<9*FnHpL$E--|Dg1bXdKNgmpYZ)| z0oRy0tvAL$BqgnENTUV~L6 zmrtkMf^I;Ps?cBq(WLF6VsNnxhkodMb(xwa_;f0{EEkuTSt@jyVC`%QRn;F5n{TVP z*32y!EY3D%f5}PopRorpuV(1$=0Y0Lj>?=KG6Vuw2ez4$=H3*kpn%hglZIpliDIi1 zYQP9II*85$vZ$2lpohT0Q?`jwa&h6O%{hvJH#O#GR_^0aS=iWoRMZJL&8E9IKPA9G z8U_dbYuh{@LTVZ3A&~sxKGVEsx*&&N3{6P zY#!fKg=XNT`Bc%>!y=#i<2{jt#In^D)RFM-#6OiA0YO2*KdrIv4zp|d85qzoZt&4~ z!p1z6^#$kMJC6y5pYAam+_sq}inJu_X`}d@k2sEfciJpw60s}$%zbwX>B7jkP;|)C zI~zx?vj_#giG{45Ji4(E5)yZ2X(-~o-Sf_l_`_lly~inI2~~&pg_gP1JKa%I^YRu> z7u)6^@zJqJalGrRs;7!C(`IrPsZhw`|JK7MCN9x2*Ms0Cmkco`Fb0v{)!zPLlen|u zT8EJ2DOHYyBEgOY((c!XtC*uEJ2Nx$Do_zaDo-iAc7LqpU8BQs^2VKyKT7Awh=PV3 z|I0dg%u8b{vD^l>Aww95v3we~eFDJde4#^B>2=uP{2KpINC85QYs01|l^Ee&O`{xg)bWRQ7 z^Vn^Ca8Th8^tca#YtXjT5;8)A`CwsT5dvMRw`6y{-iHm$#$e%MmC)8E74*2v9j$%) z@#mYMcrWd`SCofUm3LRUyIRxMw3^$J@8NFRg~{Rg5knbjPI2R zA5}Z_3=%NW=Qsv0^mB7}_V+{MH_zb02nA4XQQe`G*@b`UWYSrX^FsNuv`q>80*as3 zGTm=2{FmF@KR&vCT)cBsY>{x(cRBBorQ1~?-IV58&w_U0K@UL8gZM=j3httQ_3DF) zT4v_Wr#KMaezv$h1`B?tHVo-!>mosPrYPcP6wMsyh>-W58}kNUrKRWJq;$RFHbp=7 z7}0)zoWa$KFPHrl@eyA})sf*SXp1ogbs$QY(ss8~{9QN~ywLI2 z`@V%vQp3~%q=B|2uS_{jV`F^{dJrJ&`7#7keH`C4Ru5C^RF4d99CwhGt+$}IqfJg} za~d`7G>}ZSv^hfFuQPSCxY9IoqX0C%BE70XC zHvh`e00zu}J@ow#SqjuH6uvc& zN0W0$z1=N}ku3DKIT{ohgN+evLXK}(A$X47GPI%&4jk$Hu4s8m!NrqpEwfw9KPf;> zZ@+dUXx43RPfe=kobzf+_h8lUr>>88_D@QByS8c9eBlu+iAj-VpJ4sk%rZ?fktPm* zk=Gep07q0^oj_4h@x=4-MM-=G-ciS^?1@iOQtfLEsH|r9gc~)3fm~#BS+apnMP^i| zWMczc%o3*Czmn{jec?VdB9!)|EeEH%#IzCG?RRpLE=JWBlyE_HN$Mx%9z(x(E(ho> zQD|N>+KGwnfz%Y1%z{soDorV$&d>5M>W=+kXUBvgRX|922+vc>nZ-eq6_&>A&C|s= zhZlu!6t=~I@}nR^MJRWrrOg}#wy;<%k=@4MEZZ+7{AxGmquLwQHGj5)kQ_|si881t z*?xNo<+{=JLFZcVe1$2aUg^R#ecR8i!vrn16Km0p&HdaHrvy6jkJ-?zwY6E)Bz%;S z9wOhYV6^q2W1p;G8Q-}%f?HNnR1$}d>AyP+v;Rl8%w7M-Gq^MEGU;6JjU!XVVxPh* z$}!5agQ$ zDf%dw5fl_OCSg7-9db_?;l+zC9#qj*n=GRgR3W71OzKk@xk@|%P{oAQ^`Gr-G}*Az z-W99DvAj60l$Q$&o><0DOWpe@Vq!#M`yD5uL(MJ<*=mM(47$W>{^wo)=5P>*`QeV# zb#t<@u}MR&nRVAE9|}(Rz0k2c_A>OO#l+^K^q-N@?0DNA6yPMfeb)bimi`xj)&G}= zE|wmB`25>s6323`20LCdk}!P5`S{mwc`>oJPzwUI@MMl2?+(~ig$WqQtAqg}utJ|> zUw0_9eucj{7)Pb~6z}Js2M@ZcDA2V9ogg)zop+6PNmd%nV}#G|FIHfhO%|aeA|iqk zD@qxKw66ng8wyJJAa;?Fcd3_nIxX|tY8nC5HLSS(ot^g1u@|6UrBh#eDVxmQ74*6* z=Ha()Ul|Uqd`8F`O-RWX3S3;@K@x6LC=C|&L%~M~UCrdo*vo;DQgQq6edygyw&D0z zP)L}Prh1JlCxcEc95@~QeyisLiae&gg?1gxo5&0)=eFRWoi}ChqEEuGEM^BLAb7GE zXlW5Zn}LLk{G%!uSvr<3>rBGyc8%uZU`{lzg`Hp+c^VtCGTs|`a&h7Zg>@!faE8FZ zz|8G%VPn%|*JS0&J?%4~_*Y`;6ABrTGNtk{$0lhd8Z73c)9q`k(Up8|A>Ny+2(>pJ zLN?6liNF^T23T()$^N--uWbbTr*A}><>Fuwx7Mk)^OsUl_uk8Q;#uCu`mB}5kkt2X zI1P52cT+H5zBuemDB_`Al5k;pw%J25?yiqe-Q3(%%0I*3A>4tB>-KfKjyY5YHF&g4 z()m5!yO2~Kdl8U`PESukgm^E15+a>x!h~KQsW+8@_97shFrr_zK)hf`<<9!b&&~rU|+nbG+BB99y*CXDuDz>4(ZL^<+~-gmX0XVz$&v_ z>F`KqY(=B7euc3BMiRvmIZJ&WIu@kK#bR1buf_b!Lgi~r{aesu7Ake1Lli0%gi~8> z@LgS9r9eU~HDw=dv^2+icZ4J$Ah6UWEO7Di5~oaAcW2+Cif^_dh&rg?y^3o8`&Y`)4dioQ zDCXCHL5d%be1qspOg4wMb%*gGuUPy~y&?<9vkgDJ`?Pv(#F&ffbH6hZFf)4<3gQE$Q2nMb&~+LqS{D5CxVB7$Ecl*jLfe~Q6FE` z{(p@BU?BMT#pB8kI(PcpS7aw=Ct~5BIY(QS5jXxN;ogvAJR{CA@lOzl;F4f=HS9I? zXr|ti3Zl24&sexz39~@oguH+0x$D+&R-XNEw9pFs+uHf&KPL!-;MW0@in_L00UEUh_;U%n#0AdN#7^w%ZsUua zo{^M9bn;M|V>{k6Q|aV^BN-AzcW!D(_g06T`Lmq+wEb6?^G(&as8B(foC0P+=*igy zj>u{tnO5Dphg47{LzI+4gS24{l-KTz?%wDA^rGR7(a`Ou_v{~k4%lvt=vyrQhL_^- zgNI}ti%!;FZw+dV{%T}T-EhCVQT%OTU=UM$7#zfwtmd<7-)#*3t0~S)^|yxN=r3)i z-aJ$S7*2xVuFeVF3J~a6jNAX>lr39w;o#v{w=PLKe`(6GkKWbSzpt71_qwD0%*8UI zuEqS8m9;8+lT@NFkPbxeIEda9Zfh~;x7*ALuV(LP(o)3+C`7zGc_V`(@XN-h)t`Fa z#f3C6MJAM#Z9jA(LSFrVGvcv-1}6YM+@j*OU$hy$fLt9fM(&6~2ctwE#I324WPaas zUX{$be*Advih~FbcG-A8QCGP6wD3(^pI%*RQg1>M>?c+qxU)CHyb9e|A1w~{|U<3p*WxeF>+lzrJWXbm% z*K+@9FV5t)m*f&a4ROqKc23Se7nDQW zt(O+b?KnSWGE*OAGXGb%b7g6r7{vnQ;8~6v4Stw3n>@L@G{>XYMnWg%#G79vkim|3N4@JNJw)%{O%)-__e^O4f03*) zW{{Cp2h>p_Yi$5}W8|yr7#mYEgm#10jv=)T%Utb&D)!+{3Qe{)gI}M`>3AVe(StJk zA0<4CtX6m$pFKVT0s`HxiqZvAXm_kMjn#6q|C8fE=~WY<4!_rro15>kj!prdY}KC6 zQ2Dlcd$pU{n3TI>`NJxuxI(>@z9JU2XO|o(Ji!KUSPa*`WgT<{Vj{VdL8i~j0e=2y z*H%?k1u_`yqfWDoilD`YjlK|y|BDPEFEtV?@WRdMuw(gCd{HSCWxv^HbOd)VgI4Ej za+yIH{Y+~JEG+EK&dw{qL1qYgcCyPemqLxn@?}!PZt8ES=Ur@`V62uK;Zadh35hnn z(^~}{92~GnNJ3WtHgVb{mcSs3*jKM8vT)n${^-|=2~Y+R8X8(wMFl34ZPk;!p!3k!yO-ImTf&ix6&`^cc3{1|0r${=v$Ju%!1GaV4t$RaIydU4mbq(miJC>?12%g<}GCmI~f5Ffd}1 z;D(kYFd00SHgw)OrSWB|Hchc`b4vm&SFYO-0Pi)3dr0N==Sq{I7u3|$CLX%5ftbQETe8p8E$Nao z*6o3%Vud0szxztW$j@uAReBa^P)}Z8z;cyq2JY+-a#)NZjgF2!7syRBRhGTss_%C@ z$hFpUA>hGrSj-WE%_C1PhyY1UPSU@fi>s{s)m^k+U~{pe4~GC}_E3X`O(U6<=9NE~ zRHR*P*fKWO&(?Ka<9Lj**}3`2&rq42eY1fiA@%_QQ{ja|?f!zW%jwih!>Y9ik+ea# z+II=%I!qUi%cs8dmP|SgG8*LEE!qH#G7>$LMA%2q3Kr`r(i>=t zPgx6D?csc|c|t|D!z|k~QKj(V)z)w_Dl?`$q<#0@w#~tbVyX5o{y)>-PZ!|9M{weE zD51c6+;VXh>ZB)-#OlJr^Io|T=o8~Sc@ z-8v!!@g7AH-$x_(RK4MyIf$6pkGnC2NA0Vk3av`;r5ep> z*T)Ngnz*fPO_pJv)sLcQ=a%WB%*BMx?+I3Pmk<2uViNXm7ZeH=@sAP{mv zo8GAwzR@ygX9lfGvBLRMRn*@W<2X>~s;;!Qa5d9 zy*~t?t!?C5J9~SbRo`q$1-=sk8gI1Lz%4B0{*CKXg=8{RS}c}$H@$pMCyS_o7<;hia&+#1#HaT1nqsHs;55}4`s*U&sXJmN0z5D*mT z@ZNje$0|4-O%Q>W{(ZcS%KX;2r2MPVQQKOtY@M#VwgWz#=wne9p~R#ln)&p{YyC9c$thW{&S03ib7kUnj>lv-h!Emjo5) zpEhaR$`A3TOpA-shUWd;KdEJq&t*zNWdl>(v@{`q-FXK(!HlGBDNg|>rbKvwBPnBZi ziTsdU4$OgkkUTp#jCW!}_ZNBHh(wBw9Z`}{zS14FUhi^9TY9EJGn)Y-r5!N&3^(RX zfE&OsJ3qhlt&$0d&httS*VwKRHu>wO-vH=ylci#KC+p?6yyGz5iHU@u2xiqQBWIPG zRAnpB$9-SDl*w5a7mL*adawKX9_K`{G6{u{-)h|QyWhJb_;xNYt{&~yr!i5Dhr2>9 zpY;Cao)V5wZKAe!^@MqY?zuV1{)C6}MO?8O{?uZ#6D+fb`)HAtad&U8u(~=X<9w~p zwzB+9^9g={?&sf@!JxJ2VkjUY=ClkmPS?raM+Ml~P`keqFr_c)RoekST;s7jap-lE zBP?(*Uqisk%1XDcgbx}?0!)zXNckM#zPLJdRgO|s8TT^9+A_iNx$%+CdLcm+dh!_V zF!mw=Mq2|4SmzbwFHjO)L6ZyNa2baSodq5%nz1Yaa-=LJKFVqtITFYsOQTx z3-IadRlDz0&A}RoSf=reKXvXP8?ZV|AkoF5@Sk6FmiCQ{JA!ocwSD9V3oEDi%06Ti z-WFmq^P82J%M#7So&T8$2%*j|pSsK80)j2?eFYWxlcPZX_?DEBghL!4QZ=Rr5&`IC zho5N-7A~2uaN|w>IQNYkK4p`^^Eu_$Lpy%8 zeb>r}l$4a-&+SPp;r}gH!+-5m{wD^A|Nqecy%l&=?ig|YAjF{ENLSJnmFwm9LrA+@h;u1q-ttn8}T&vF+qPI`DfIWul}|M`!J*#P12|p z0gtl33|ZdeJ9nqvo?{VE1Oj+P$;5==xHr|25%Y$U;ebjmgC8DJSzFbSjBdW7@SE;l z_jdh$);^Kl+$rG75_GQs1HA&QP6R1$v<2Na@u!_@#Zn1z4$?{PzRNdTW%!=XraG7= zkB8UFp;Kn0XnQKVbHrSKPzqe!?yd*oJ6J3xkp6}l65hA{sQ1|Cg6MTMqQ7@J!gIac zrGe`@xV6{Q)AM#>oNr$*lFYxb?CdL`L2q|p+@dvU(b*`Qh!mh&cZb#{Q@JNP`HWwTww_d090E3~_#VkG?y0Tl`^ zpP)-U>CxE z*k$j0vDAJ%M3u!q162*Ne3RFA^W(3nf&cJp3bD=Gv`=48S|<}%J#pA6((u1b7fx2N zZ+-vLUfOG{r`WDG(^LFYz(_#Qmq&*{p+wgh;vJz9GW4n7>)fJ2;_V4u0L7yB*U2{j z6yW7aTz7==;9|y~+iCC=1n2M;eW@OI$*c6XM|Up#`SZ>3B#mW{sP@fFh4=q#gpeVG zZcd2#ivsam2IqWz@f|P8Ulaiw0;^G3kL8jw8*U!FhblaaXnw$?hhb;N@ zVx|$4^W{gSDU62GVBftfp`La=97PArRH5p_}Z~>`#0_#w?qV4-l=)&dqbSh zzs-IC$ZBvmv5SO))|r{*s|e`#@cGPtt2Z7RMJ6>U*=JBhd3}A~@_MfmmBwrRucjCY z_?K9hZ(j&5)?d6WUwrkWor^86;F zF1sr4CrcunnRV7~)ZBG5<{h_2adUtnrgZ8(7H65;Fu7 zBdy1`%UEgg>X=CjgJySkA9!_?^7twFUjUv17&_XgrtpD!NitQ|EA*}{yr$<*Z`M;g zjL8U{2Rp|?u}TlcTfZMg0h6W)6BjaSbe32Ir3^bs_#M*7H=$MNXFCdSF z>ID8|AxM@RRka9^=Bw-8ELcRv3+U_^CiLo{tEukT=IjO;@`0vK+Q!Lt^u}=tbSX>B z&8)zC18E1x+U_k7#o99lg2gmlz%UH6VQXsCH{Al_NQ ztRM$cc5lDLkkLVc{OtXcV-dq^V|9fn^6-N5s6P==EEGd_O$cNSc)38^;@QsTpumq0{EDtuvlgm(i_MYC`O6Br1CndkXim~(*)a4 z8Y+#Mx`akMNvdWeOj&*;UfK0~x0m?v7OZ<4_$zKmq#4yBD%&j;LZzWEMUr}IU?4o_ zTf#xZ?>202uDDgY2jN`<5dN+!D41*`p5NDsu+H zGszLR$-yRJyOyUQx?|ED?>kpnRys)#{fe<5LId=DWq%HDn1N*)qHe3Z@JW+%P*{i` zD0YB<$9_o!s)^LvxSLt*TP=LxU|6fzt@hhTZyTGO6!n!rw|)G_Bj$OVU5gHRdo^4X ziz^XE9^8vbp$~j)&#d>54llD=*Vx%SD-xQ@(?_$l*pDNlQF>bwyYGRlq*kHp8xlt! zvUhWLqcQ^%Mec%%GRBm{Ja{;qLPZZ(ldNl;ju}Mn-$7{5gMDmt`GGrCPx*c=fK_ zdKQzc2rq(@K3nXNzL34}9aHH-amQ3!q=id($G|vh#2+%n*0teN6;PetH@)xbokxV6 zfO-os-tXfXokHbmCq_Cv6#jZ=UCX9qlkrwYP|v#KWm6{0E7Wp`fi4(=y#6Fpn-+Vg z-eQCfoP+w8{ga)Q;jOLdh2i(`=Tux=Tz%69#@2x()7EQ1cLKg$SlBpT-8RoZfb^|0 z*mu%yv{C%c1h_V!+-3jz0=>?3ZWHWl64+ia?C*N4+uD=I$!B9ahymAjqP+X5 zHCh~a-E6-;3Ke;#p}4#lVww*c51n2;YPBZFV?3MBuU|Z-)kMbOa*V^C39d~U;rR60+SUmVRNrZwGT0vG}Sh2+2#!iPFL0|uR+7mIyrYHAv_--~SUf5yh%8G}B> z&kqibOc0N0Q(IxQ3YHJ^Ja;OdHKsKjQ`jg zy-qkt&F}er!$TuFLQ9+#vgKZ)@imiM^Xt5_Mn-(z;>+_#A}xO_ZBoBn9Ud>##!{8y zUW!Z7|5=YAz<%VSR;|EZX8u`sYmP>ZLx$(Thz{7EX-om-MLDMgM&D-|mo_5BJBun{ z)oZcwgQO&)^>TAZbKBNhcU4A)iIHr|51}{m?I(&> zhxUp;>C|ZBp=}SPzLbrT{Rbjq0H1ks$B}xvjUCv5o|ZgJCURM&!LLeaWww1f5=cz+ zM6J9cn-^6tPT5F8g_PzZVmD16IKcFBn$54%Ynn;xx>FPWxs^w<05or zoz-RD5#Hc$t6L}*ZQEYa3nH}QdOmRy0>-4C$3*B!9#6RimCwvSVZ0snh+SGC&)Ds2% zpAPu{J^1rK=F$IOJS*^YcyocCQ19mNstwb282{ANPa+~19Av=TU}2L-w0nO@6|l!A znJSl`_Uw;y{*zypqHpn)fxgZ09G|ytKXL8qxzp+D3IEyl0VZ*i!&im=&vb?EDImIm zIOS7QGQHNf-n+YJ@O4g*3#e9v91bk~4e_F_?zJq@M8dkd6whvhh!DV?A*J(shJg>P z0463J$^$x1l@dkt+FB<-Bm4k$9qr zn_pD>l~E7?f?)VuO9)aLC|%K|1TTsF)8?J^hDv8m_jI3cm#Q~RBv6h_U*9z9s~aFI ztGt#4|0S{s%(^=6Pyfk?q0Riz;q$ik_VK~3RHqe1i_223%IYf-85#g0Klkz zGz46%PDk_M;8J7I;h)jevvm3|IptAr)6}VWU-brSIM-vb|B^rW{>PWyXrh}^5nQxkiTuMDq(kf)CK~8`uZI&FR#gT78$Se zZt9-LL*}8uc(pvU!`>JXFK-d_m@-OgBv(_};c!&e@XKw;OO|il3c$o)WHvrBg7tui zDK*J8cd;e=Q#wg>G+T3w!166f0++@Uh}vc|p>wyvu|hkncy=6hZxf z8vu=;LZOs?O>c|Q;pd&H9Jl0v-JRn*^iNc0Y+ zRhst>sT{IXMaXuD_^Zq{x$m;MIw_Kk@wlE5rb;K^#L5jaMAp?8z}8t<)z zi|+~%;e&TS2?ZpK zjE5K-8=HPp&E?GGcZIMhV(3yOr=g{R?+bX;!q|-WPTHI3X6tw1-+%7ll0zoU3yB%t zj$T#S((QSBPs0Ep^76q#r^0h*_2TWM`~({n)u>%{{GjU6j)8$emC2(>oTc;OOt7(; z(NH0DqC{4}^;+rHxy|;lajtP|t3kCt-9=!avNcaq{(dHn6#rt?{S`P^rcXMhhI`sQlX4I^Jc>1bn`5o%FTAcCg^W~sAu9(^;^f+mEIcI z!(NoAm#b+#Eu}RTY7}J`GBA1-f{X$@GllB=nBmtI3Un&{8_3AnhJ1W{alFT(A~w(| z%Nol7IK-}^*qB0wnrV5ZE|3NK;|SzAf`WrPgg)NSC(-hHBHQsio0Ih)#shjI$*H_x zP7w)!ITzG`S2v4I4EqERd;qC^zc|5u0ozRgW3AH`^$mz49&x__Qu}tT2t0PlbtX*o zO^)ldKx7H`5ng;V_xJB#>Zcv|<`!T9vQH_f&*)}bpP?>Lvz*kg11p?ucucS~GLCyZ z{iHf(a2OB}KySF3A(+NP%p z7BOP*<=2S_3PQU1?q&esN4>-9*MLi1T(D0RwX6&c|LA2N5TQ{8MvT;3f!!6=`O8<-EBuU37sG&^uKl z(v)r#eEJ|W&f*;XbqSj?1)bkaK$~}SKE{sA+sbBz;5pG{D{bxXrxbH>(6Gm6N!QS4 zv-yksSmbl2X$TJv4mROYKUx5muD1H<)w;LMw-)CeWzvSE0uFHN5|NWu+sa^;;B%e~ zQ-b*e!l(XpKoaIkWWYSA1ULXmqh~j!AbP=QCrF=8xi+lO;yU8XN6)V+Z-48G` z*#HFqF_NsObP#SJ*f{w1@2 z+H6pHwmAAU6p@6CO;kp8>Bme3cStm2yrW>8-OVByQ zc~yYgb^*O(^v%+CQI|<#Ro#@O0lD5wHX~`n>5#WpJ!#ovZ3bDp)qzL$VW!Cqvp@E2 z85?JHsl8?mcPkA(1x3Xr>W}9eF*Gv^0ogti)G(99Qp4i9C*ud9%Ha%MmH1Z)28%-G ztEUs9<`4I(VD(h`qm#4my1=?rSzqe_!gyz4(~E9*!*7s;Yb^^Znl<$7@HCnfdjI{P zvcJvkV?i|NCdTe+z;fv*~d3av~TSEet`TmTEA&VD^tSgt*rdW z=05fIeooQ6gC4U@=9tCPg%JQB6qvd>5>$>;3G~udHFyn*A1y3z9h3BhDHJNaRw+_b zHT+yu9m*bGc0xGZ2&Pqg}s=tK-1}GAK^?aWvfGoK;}Xr1VP* z?JVy=!ee+1$#ii39P#t6p0Cw(GSCzggR8YzD81?txI4Zp^XUNmbIDYBKv`N@AwP)k z6mE;o9%`%p7v8s__(6hMw0}2mjK%Mk{SdAx{9ZmmfQ44d?#RPOI|6!5Q5beBDQ`gq6;B;~j;?IK#o96&}+h%tw9iUTaIiHo*U*iKN5^7vm zpMYx+2^G~hE-tQ+-}aSZ0Pq3Vdp!wGmEQ##qvWpDAtL~WqIAAlXOrC5S{dEh;7Hd# zdZ8AO*CrDx_eDCzC84wD+j>{`xpmNvvR^4I`EFYmL})vU^1nT8o`g-t%h5q}c>@UC z(LI3&x~-s)5TA-j=34970Fc;Mx`6Xd}c2g`VeQPDz0oFE*m!5YJgb! zxs`3!QoRC-$Z0;Q^0v)+o5}TF{!-X|PO0FCf-Y`HMlwr5Z#p8kpfFz*l)G0$@NxPr z8*p%ND-*#nopwMXrysUQ!NgQYKJtTu|C*h1x;y@6q1h8wy+T`d|5N6Z_cA3R(C{qg zYQ;C-CID+C;x$G0hER+bhF2cF6+JhH={yLOn3lgYUO)G6MPr%_G?jP3rhbWqV<#+G}U#PkF_-FnPSm%YV{t zlH{8(4^)u@Kzbsau-4;slYTO66KAoQZB;e2AX#Q6HMa|2F_`H^+eCv?CR; z<5;vTxSm0y;Cyk3D^R_=*rZp3IRX{VQt@C2h>#mo=G|sU4BcYXDvT96cMTXi3)1{xzmcqLuhug1hJ!SKZ)yC4lG@WiIo)RC2J~sXG zU^$p+`gBOJlgek0A&Q7GRTzH#`j|b_IN6qd)9*D^K(P$j<=I8|Wy$o|WGz=jIG8f;CO>{SbXkY|k061Am z*ddrZS_MGSEHEC&?ct8|>ToILYfJ7uk7;&4SvxRu72SzsPz6S2W^2(X))NsEf9;6& zH<`?Td9QQVA!X!8uUb+_DhjE0gIXm+LOz>IOxL;}Ek09pB7!3h7S7a;uZJ9w&!EC+&>1TX2;u;Q2DT7+w)RikH! z3(K}p6QkWiig}?<$KpA(;fgs%=!y-%JPM{V%D6JUkT5WMe)lPJE)k5ezC(t9*{A4Y zk5Mo6TC@NPZnXz1FcO`kwav6ktUerMQ0;U{jK`pYb;$c$e$xI2Aku(cS$y-Iw4uZ= zG&h8aidbpG=>335VidvyU(o$C@} zHjWT(3xpJ4&M45}215qG7b|l)U5jHFZ{gDOGwn}rFBKT)01*58Wj_Vx(PD4%yjOo)%@fPzeFEd)sh!iw5)$I8V5|Yiv1*O!??1&7QA45ymudSY zFh~X9z;LPlE#MkB%BNXALB(RpZ0UkMNgC{ekFjsC?p_bviNvO{67JLibXZ}>dfRik zL6IaYw)gzjNRuwbs4o=2*1Q`+3reNPjt_1ALVLj!mmU{?qZsy46`gwZGA$|qUHaF+ zl92%ly6CM5BF(us*#|NxdY{#tedq)L@{0shIWx2KuaEZC(MUMZfNe^1kulpMbX;|} zE_y;)H(1L4KfcXjmGgh`>mUA~l3!6EMFEi)Oo^-C7HPFvsX2$!&7YrnL@Yhr0X1{# z`)NPo)zy{eB27Paqvqm|i;?m1E-*%IdpY(J@?rN^-e|V!KutYf$atf?#W42mo@dtNRxahRhd3$nt{j!#f%kDjx0ATf8 z%b?S(dI4Tm8TNAVU$~=Dct4MWpiw7&GgxG-PlOY4eBfaTc53H%ceG z^#$OdbKttcB(dCZUu~w|vU=`y^QUQMSO@|piBHP4RR>VekH{m%pt~bQR7}hDFRZEwA@^L#c4V73mXE)Rk*bq zTn^`-atP9A>K$VWzc4RvpPXEYbcn!H2*{{Xta(O_EHSVAl89asd42Sg04{woSW zZ*W=|$P^dXOoKHye{+l9v|5|62k?mQCzwI`zTGIuWN^Yh>-#lcnEX25*Z#btI1qA& z03xx|Q^{3e_@SBAxI|hy?*Jr4eX~iX8j|TSIvb_Gmchm^$ zZC>$2(d2Zru}Pp~H;B7Lm)hGCu|8XnLG$X>Pecl)``*h7dwJyooi93Wo2s;J_b9Jl zXYq4bSp;v!ZjQbo&-pl>FXLg1LUmLhTDSatfYY*n{@8B0aFqXa=Q~6Y`VHYaoOp0t zUS_2;lxbs$HHXJxhXpqy?eB4Dg3WDQLet}Fq>BxjQ&Sr9ddAmoGUuvqqigh5gUY(Y zs|h-tL2eSiEC@p#rgeMS!TDMhb8c6gj{61%*1^jL>j{%3k9{)N z>%*@4-kzwWq`ptg&E3QHp84`^t<3_LUqo-gG*cKM=h!7rsT|>#CMU+~BZ_A3@Qsac zcj!CYcjYbv_!jfOUV2Y2xu#)|&9S>pB{ZLnQ8%}Ee7}FY&DHj_#Ja$3#*xBpxu$n7 ztnT4;_b93U<=3xY^_x9fiL4LG*?hl^JFAC3cqXbDd7vz~&oesg8fizqq2=#0RM+ka zF?{#^YS%b8GISfP!!CEGSHt|Tb|05>BDW{e=92}n2r|B&L+7QVur@D9q(Ih`_ju717Y(QB9GrKKWMn)~WWi)V;<3B|7-F_qsKoY0ePoZtFZ-Nc z>x%EVYxrc?dvzGr^7I;l&#e7#EN-BFFS*3U^lKkgKj!k2w{f~#!131oe`D`0qoNGM zcF|E36bTWfLqQ4YZcqV1NkQq9lI~7H2|k??H))}y;G!B-8z7b@Hj#rtRE^RUbV+V#cMpm~p~tX=!2ADg9L{Z0NK- zocR5~*Ju$6hk3fV@Slir2L7q~P<+&QbgbPCMUihj_!S@DX)Q2!`^>i_JXLtOQAPma z@DeJ1*9Lar@`#u?U%R>(UEhKtd}gYSXS7X@-%N<~9%%UfU~Q_1#kTRr#lL(AF376GC{{OY{iVD7e_yZxi(pcyP9+HB1O)6LLX^;H0G=2x2GMgF8T zs-8aclw9u@gy0ZR&HoD_miJlWLoho>=PK;(mXfV{9;6C{Ou~W^t~}Q!3(Z0t*kSt) zh(m2#SmnRN`FVrS$2*3Irdg|ra{n`!hY&v%j){GAsJR}YYMJ~Mj!;tU zB?~)ycyn{JsuryuO3y8=?r39g`VxtU3<~`Ih?aEcJS8!*+i&hlCqp^1x1=U4wT$bp z9xTr1>SAw8014qVn1|fHeY@uJN3V`=78hYyi!t{QRJ}x1&o)0v%d=y!;FDZbbkt;n zxoYBpRCUB^OAzhnkq(&qYJQ$(nUxTjvw!}1sm>*~mKk+IFe?pT<}E~ygw1eL1r@8L zTkp(fACnvx*RdS0kGXV?CF%9fey`hdnLU+=$KQYD{Fjw!LK6L4UZnK`RejF8dwaK< zMQ&gwd&kGv%~mekkJA%&pPNEMQ0YE#J56WdC*nzJbca3KB}(E+aAM*#)qxFb&8 zP>NgUl(u$ToV_}EGdlbGn}IvHRgM4{N7s*ze*Ap0ZF1_%v9jFFN=HZUjy|gH!AFp% zd-bec>@4|bkPZqL;7?asV?Cu8qlU=TmZ`X_5wax6=T(T)(5SIfxNwD%usV(9`8E2( z9HmJ(v|6LuLqWSt*L(x_VdxU0?#vg(>qwsiHtmDtQQW_pjdeY}(W ze}MD|2NWgem#1I{ZxC1!Q)AU8@XO1q{O46~k$a~rY z@7ILAb+eptfRqOjs#fdiwvo4JtIjQae+SPkuXSAg44u@d_rM=ebj$5?F0m40fu`Mk z8%EK+|EX8Veg9iwgRnEYh5)z6Vb|a`KEbcu}=wQxx58{P{E|-he+Dd@S(w z>(@>87Zt1U#9pv3E<-s?G4CLFsCYzgaZSqJ5)GE4a&oh|!IIwgUAqN%hS%v$-d%8b z@uBcf-;Mi80=94-C9(d$iO`y(2-f&8f$2E8z+B9vEFu?X+>U-}!A;qsxC@tj_ceB;1?L9pW zh#+&gemIwQ&Mx6~LEW!il?@IdtQSU_A@2I%Er8HFkq~y-=sF~nC>|BQ-MED!0X~j0I%LykXqQ;cqgs#veJe6*4JA(*Tn_?{{C(#G1L?4 z_4V~je&1W*7^Cyq>>QqKi#cQ7=r}#|K0kWF#`Y5|kGOkx{ZRTTvfwB(AimNNwHzIh zchGk*u-}>uJUniCqOouYI4usv0J-&$l(f?_8n>kCd@X>m_NrK<#pNWxxso>vO3mI-(P5Zg8! z3s=wDi$q8q-O*%(o;sf4zMc7SKC}n?&cK{z1b_F)88hrhXsu#TCN?+nq%u^#6r4Y z5&kfY$D?Ov4q2yFkQf;w`Z_fcQ{jvBsj`_<*%s9nuw7`Dpg>5&eNMv36~L)$r{U~4 zvG_-DDD%zeYj7&GK(7?g(Wy8-#-pSA{M+Cm5fRqifZ$*>JE*Ni!t*3G z&Scz;Gl9)CGjp2gMv2OtIiIhVi73)hO<9(6A(Ciws*bw8(NtU8f|snJq4A5Oo`{Rh ztfHceivrtQsb&3^-sw>Op{6wON~eN#ygj4v@xmpcpU*K}{bvltlPxRpM?{fHWtM1{DXHqh z$nx2_n9&Lo$Ea||f-Fs`?7+L&I7E*~HjWEpXFNI{J|g+iwxG-u9Grp;9y~#w!Cz8x zMypsmAj8m@9yHp?ED}uY@NYE%-(>h5EE8=W1PUK*M8!oFBqOAx6thw`t%g-c?iZ?e zTAS3dk+ss(%La$Ks@sDfy}NI}_f6()O_6Bz9my}LoGMY#e8-W&UF0A@k_& zc@~NpJh2dnxBCw9Zu{RZ)K#ktXh9%PD#D4`>F9Fg-o5WY43tc*d=w#T@b(&AXQgu> zDV^SOyKqylPqDxW7_(?Mg?_3BNlq$aRaBH}N|u$q`7WGp8b!-5!J35&CbQubjzOnZ z*1}#(EmIjnCrh;k{CTjU?SI9wi6WtXU?NYdT-86cSY;*z7qMi_cDq!>Q~=O>*uRZX;eb)9sjQ=;GfQ@4A^Q>3ny3G@(L!DR?DP~; z3ee>=iks(4w?A-VEjJcfqnepmcnHIvRn8M`R1fZ19XB!fejlP81 zuGU5!e-ls7E`~CUWcYU`dXUosBY)j_D0r>9&ebxdxi$=8~{kBzVZMjquaM0msO6-qI zot^;qLkrkqE~PWF<7t4$GXB@8Xyk7R?B4+Fa8F&WSXlr%l%_mN;h z6ghY!0F}MUei{old8^sVpWq-ENkA=9m#dV>AFCizRqA;|gSj6#Z#gM=o}Za%oSb+Z zQw2L)hkimMAiKlM@%YoZnMb6N`(sT8WD}IwhrB+hRb|NTu}io>RAl6bRnazfa`=@I z?bGMa6P~bKFArw49nwyu3(WaM_b2mn`ObOW#=;^$In5G1JB4!^zk@Z@0Tl)e_7oJn)yhL5pO>r&pU|V z#cJZ=21|v->^r#_bfWDpidtC-S+uxv(0u=cIa0&u;3k zg>4$v-?Gw>kg%U(jwVsDu`5+u&*p3ipg=>~dwWAqB+}q4 z9KxG-TXp%QTkd(s=HZZYd~<<5>q zT(#%I1QwRI6hJ`Y?;ikEk1s@6l5Jtvaj7CMyJumE7*z0y<#qNabW|_9LG|<=;jYq9Eu(x2U9XwoTr!1j7?1JQAO2I zu#5;L&hJ&vx{G*UoU{!f2}6T$V10>bi}8_3KiU5L*%oEV3S_Eh@q#j?GKh4q#1lUD4mm$84N8M{U8K{`n4*9qTOzTq@t z7HbjaV|C6U=Ok-m^`sew8B`K3DYIPlx7?hEjrCG_$^Gn?Xz%{^?mPzIM{pl*(uq{I zhlMTYr~wnNCbiBPOlDs)`<*V_fQ)8FT17^| z=Lw-8>iFFfP;>5!m@l2K^<18%5^{(ECo5D}B)#atCG<&LrO&KBUgNIBjNQRcUfZFR zy9cY3w|^Vx##?MaLxrxk!p__O4inSsng&E8HS>=iN2;n` zoRdLV<0u~7^&`r9yST8>5^g=+o4T{R&<0*&Hgziu2-ipjis;nT{tXHBp&EN54AjIu z%pejxH4&DRdv7E7gG$HXqY&%Z5oM%=P%A5*_o>TG$Yz<{$vxPKT; zT;uvr3^-dneDp|V;k@zU`ms;K1u@d=ijM=f`v~MXG%qf^zBt}mpUc7_Ata3B(C$D- z>(iU6hp}w-9JHhK{n}arjA(BM1x)Jq@yjDgDIdI&l`TbE8C>b3g<^g+f5pO)egB>T zAiDiYB0EI2OWPu6-tDxa!q;4oDyu2H=JZ~5&ZAW3Cwh;c(tT1F86az=6x8Q?h>Hn$ zNOir4mQQ#di@m|W=fwY0KK+at)_0aTkn8(?N4&8X1h`*Fy=g$o%xH;zdMw!J!0j4N zhIj$hcnTt*u0GKg@J4DjQVK_nQ`(r$aU77@56I3X?PCbm`G(^m4N*~z8iQv8jk}@& zL3j)t0`ccZXdaWPk6`gZzPRd%wEc8t)2=k`smQ+*^lk9Z2l_<=pLWEx{ZA2dBHy5t#7b6iP047t66oqbfzr^LUWq*sfN z2IBg)zl=AK-!xv{$SS^Hj0~b#*v*if@j|n`*cjYyaFI{se*)3h*Z-TQ2Ety72vNbR zR%<%C?-pj9kMETbM$B1W+DuZMLM;R;Baw4kwDX&8?1D)gHiPr8t!5j(V^FL79r=Yi z%Hk~j8y{mclReb_6HzsxojdSzD0oFmsIj+=j7;YG4wZ)D_u7D_*1L54N{YJu3ZNjFQ*R?v zQx!JnH0C_6`f(9^fb`gdd#bJtW{9zAS3PGIN*plt>Hr9CIxOrMkBawK)73>8(4#jr zG~B~0IDNJx=d1rd`43avRawR8I>2rM0o#%bXrBse%J!B3oHM(rAc*MI@*UuWCJDQB zMK0*}urq=d)##eHkDk%TjL?>k@pGdTALmK8KU{5HfL*FYN|5v9PsApKjgk3>|KqO>6Q>Ikx zZH7ndrI*z%LKSNn*VEmdKjabYxxBjZOocA5;P|d2{&bl)&bxQrCW>H{$!Tc(Ie4E$ zfoaJ-g8S@ySNfKSh4uCBsWH7Qf`I?h0_2G^&BKP2BrZQL_HYp8YiwD*2S-uvTBCFw z5f1eyM3EF(|Eoi~UBQtjf-jEHt<7_T#eCoH1k4i1M6^|SDcey>-p$^t2+vfAFE1E+OrA7=O$D*so;u^Bp>h*1K50ogH^ig8s6eGSb8qxv(F6 z{A8m2(K%Jlh`+6#BTl@3!7k33m5ARu=!xaRa<{6!4ACtRz7?px%A?Ue^W5?{8T-T9 zSl8+tA5a;_Dkm2tAmOyl8%iO9tHsL<+Z^^^n7VNcR5ssqIX#t|sL63~J~{Rus+K(9 z-iS;hu=R!nMUca6HE6eC4{l${-OQ$WbFL6~!MS{pMf5WsMUG}#NiSIDr)y&iMLx}t ze9}dg$B^Q+=j61>=nGaybiu+zj=L+fnDb3|YW8|smAm?#X|8f}N#Vp~kZK*({c6LO z?>iBULatIT^x9jqwPlvVca2H@(fT)BW;sG9YyX!1>KVKFvCu(n{GNhJXjOFh?mb+; z=@NnME;f>ygTPj0JHZs#I|Uw__+Acv_Cg!787F5$&02SOotX(KoF|*s$y~p-PTg7i zqe-fgv>JbQwy=J_`S+Emo14}@$r*}Y#(GH3;tQ!2-o@)E*I>PqcSs|D&Oo{yQ|IcS zX!&Tt%0@WK_pwFUD`f*ip%VFgor8AifCtFVf32fR&lo#vN2o=HYnS#aTIZXd(7NNC zN~YUJ$Xn>eK)xpr4;HPc!cYFGM88C9Di{2q;0|f8h+yK z**qit9nJSg$uXN*g(`>kvi|m_gwgKdw{bRHiGiCoa@=JBBUT-Y6p4y1@;7$B9dYi! zSL1rVy^($RO@QfA)HcLX<{q4SbNJKuk*VsUnue+(T*>}8G;2w795vjq^D)Fn4a~m0&(5VQtr_%STr&?m zJSdWte%utF)_oJO_}A~f(E_CpD()zgEpK?LkYF&RXVCs;A;&S<8o+ zD`yu^&U7O^Vq9{gKOMTB9h`emqL{Di|5~AhNmHbs=p!CEmn>qspk7iV(x9*V15@zF zmPusH$21RT-07HZ*i`P?O0sl7hJl$zO!u-CC9R9kf@^z;hl60xja6lwzDz{sO02^z zjiLP??DcCGi@kSBNzaN6$lK8>Q#(CcdgcXnYz1}jF++aI^zFei-38bB>r<&S*plD05}9eczNe7l|3+Etq^C^?zqsRb13kQW zy4<%hb?e&GuzLsRok9R%JMA8=*K68`1 zy0w?obIhIT>J06_w}ijcN-L7pmmYFpxzx2;cjh9!NbNRe?Nw7m%I?)U;$lWz=MzB? zbYSHR-R2BdFCyjqhLCPirQW~A;`@i{$8+5&(O5f*99Mt+K5rpv-Csm}3EggHB|-Uy zx=wg_QU_=E4eJGgav ziM@>X;^PfCGiE_LnydYFZu)^d6Lrnl13-j*@)R*14GrgFZmTDS6@S7$^S^7=V_Q8c z{fU{~tC9}!V2JM$oR7Kv3>nbgaTW6AUcFJM7XgQtuW0@yOB9n!h}o3~+>XT~hDtNL zA=8L}S`@FJB3_5#tW9C`KFe7>Rr109v_C^tm)%mo(N7AB-uy2Oc?CBA@hImth6?v;{V(WAMUjo>vO}J z^u>OXhCjIlS3Dl}LBPxwG=s*l*eN~=vWaJ0dXoL=z^sPQF3k*=6s{S&?~YCbw;2^z z34J+hmK&JOch}Y7CkMVk2UCIpPX!;Qk)uU%3GO=(tSB3dc`PY9w9vxse>A&G&d4n- zXha+dQhbc&syKb zhP%I=+oVEt_iB;ZEhA@jD%MvcVh3UIjyN=A5GAo?Rz}u;6Pg#=Wg;Ev-v7wy2ykXD z+>WZGKOt&)H7CEj){#<2tS`S4{IKj3T>dukNu;Wp2!I}qmQc-*rSQf-{?DF5j;Z|; zk-`D(ZEa^S*DBZ_LP?tvjV^84NKj%#lIKDa7pH$6SiXN=uz6E)*e49$fP zJbMjS{~9KLdK%iAwdrr-bqIQA>^B4juUMOScNeXGxeEJdoUq3?W1q_NP>i*s4vSTL zg{rEa8?y(L!*k9oqYpkcL>TVj9&rVaK76n%?~Ds<9#Y!cgWlU!fAxOp8?+e`-I0X| z2r{@bMR`i-qe_Vwm0G_Bz|k|Xi}p$0Pcz44C{dp#I7>XMDaxcw+eOgzo5;z>rfYZi zQX6{X6uUUo(o%!sf!m|MlaTbjz@;1=>FCJyl<;nMS7>}Zv>4PpSzO_~$Q!;8Bmf7N zYN3+({S!x;$@D&l@Y=&RQH_d*W!u0*$KpINY`LFitv`%8vxjyYHxO|#khoZCSVt~m zj*nskM!%B4IVO2PWPtrqc=JC2xYJLm>>tp72HOL{u91pn75ZF0Ym z8TD45q#Z-MgcMtLZOyoaXxE~X(O!QPw3xFpet0jM(B#EJVt1WdM z>(ud75%(@pci#UzI07hg)7_i65r$Pp?%l&{{x~Ix z#QcggxgWrQ(P?Te(c~U&mEu3YO(~0h=lHfxc7Fz?RW2lzvt1#wOPj#Q~wZ=ZR>g)o1iKsHNz}g zPITWMXI3q3+JE76$Oyv_tgoyW(@9HZ-`1PcJH@&4%Wbn}y2lBPfA9aojiItcM9ea7 z#&^K~ZP-SNT9gNya#&(OH|YUn-KBokIu(9*#;14xTC5D<%m6fB+0K-fdY)b#A%IU$ zu{SX1ZNpLjwxfKa(pkhhb9zi_2;`7dgxGWz7foAcTM^Iy3Go+e6b-SO`qo(Qf{@yy zqr1^!%hVz!txr!$*&r;_O`@Q@VrLWys=2~h8!Un*#e$|ZPj@DV&(@EAVN#AZ!@CPq zC*azV4@q~92|(1~8~Xc~0mWP1&xr9YK`Oqw>Ebg3ron7!9(e|0&;i}uaB=F;$3*!@ zfC{)55!P%|jgXabG*{H-gxm=Vd`L4Hd^qa#XmJq;!bEgKNr>`4vC_~0=)G0q>3l_X zP0F|d(?hiq0>CR|=VV8L!2&?Ki{}xo0UMo4a$>)!{~Q1Ncm#BuOuqnRZ_}7nTMm~6 zf$jYV&eq=mR<05iRXR;Q;b1jkB{X5hzv+&PM|BW*WoF$2L{OLHcMTgUD`k=+|8OSND2?VT*ys*)c2z`q(kOE@3 zig$`GVt?{-(+ywJIaKi^$`=Q$fbj#o$1<3tc`%wh9>cRq~i zou#ZMjP71OPXW*+5Xv+hO;NHYz<&1}Jt4}+w{Yf6P+<6L8oeMw7#&jeb!;bANlD49 zH@6?C3DqNj5>WK&lIO2RnSWncpG75{O^4K)7eH2+?Qi0y5R)ME4JbZ5x} z6xJ?ABXuI-d1kc24Z%*A_@++^H#4)s6EQM6U8#0Iq#Q(k+6J5w1HTV!q0;978*vzm zRx5KxRH+~gTOE~%0nH?U^e!A-$4DL}5XE$+H#Ai{lie6;F{d3U5=p_o9BOL{bw=>J z>>%5EoD0d^cmAmKx_@qs2EqVF@O1#?FPt~2@96#8L`nkIDJ@|)8+`#p8(ru9l)*rk zI7T_ny}c)+J5tP9ys(;BF-FZa56Gei9I#h~<3*>QOGpeFi5YJIs26*< zc?j=V%uo}z0qUu%r^li9{QKB_qvgh|dw6)pXTv5|$hx2WA3lV+uib($z{C^v8a>M# zQS2mr`mYQOo}Pp?#RF}rN!&WX(SHgcm(RVf6a*F*3`O5j3tWFFhOJ|Bb8~B+U(hBf zm~K+Ag;PznoC%N;Z9VJCY0svF~m^5CTE`gb#!l}K)jTpdq z8n-7&0H)&w1fl23Mngj*pL{O9qvRd|7_$AdO-(7+FNDpb)p@(eo;wbR;QIT8#2rY= z8&d#Q9t_eOnGcpe^JUj>Q9uaAUyZryj{s@!cFl#N`1L$JVr#qiTB8F1wY*eB^$GGA zmTGxW5dEs2ED6L^{1O1#v>AARg8eCU+q}GyDRFoBh5qVyGKH*vj$%7=E zt)LFKkP)GQx_y5K#5pSEfsW-QZB{qE{%9?5)~3^nU6iKQZK55pQG0!=O3{&#uLtzR z+}9$@@L-23nNw9cHnVlC=hn|$kv^o5&^Y!C^O0N#ulZEWQfIj1iZ2Jwe7`Glv0?4t zLq|d^ETJV$3H_J)s9S?jR}ReBMEvx{Q{v$0Glg2_ z>6ZA20r4M?nHP5RszUPGApg{-asRUi8bIs`h^aUKDP`eb#(CI$Y(1@eV1sN*-4+A2 z;M~N|=ouLp7~(Wt0amW(iFWRSN&9SV@D=}N?getL(=Ss&q9S`j2wR?E9=EGl1Vp3! z%l!zkGeLB<)xUuO!q9edGEnKoB(4_7Xn=SPUQ~@-oyrA0Hw1`ggec&>K*CW_gqgg+ zB|j@`%*+e}WHWqn>-^gPtEA4($jETMI*cakEwW7?ef`p&pN{U6s^!g#F=Hmk^A`+d zyVXdDpu_3C-gq{%t2)?!XjN{~FGwD1l0O?f=0nEi?sX$%Gs7C+lvZe^LsVF3^U$-((R!g|*dcpV<8CY!B%E z2l5Ue59?hy{4#{Hoj+1SjyLBd0jZ!>ZPPxKB?BbX&WX;|sFgjyaJlW5?e(466F`7@ z#7glFQ2N7_U~t3TGf51oxJ@e-*w-iD+D3V6Fx#A1MOB4NY+oego$1cPXoiE0>~65Wc31v#2<{F@Kq|gW4)fiR zBKu6?B@$SijvZ#k#->q`X)U9!xiR$$QrY_$eWuC4;~#n*8#aJi!%6b-{?tQdk1u`Z2K{JQ5%m~3OQv^bD%`z_`NHx+K2MmO{DspL`rR29;;{!4XTN5003W5Z)teIx$Fwc#R``#8jattYf?x*%!t@p=B7>N6m+Aa3sNw|09h zqsax1iMnWUy}@VTwt#)V*F4UqeV-lmdZEnI2<%RLfcnbRyYc{OcaI)EY@QQ?m%dkg zpX(mF+IPKeDgO$wJ^R$xX?DLa^?*mr^XSezNKqKho6u}7k+^B?@|4;8H=@L~8MW|j z>^^;+w&rn52z9tZlP8W6Y5g+r#93Ra;Y!sHt^VZKdu|jk!B-3{`5uBw`T>z}u~}vY%T2uozXEpg6!i z5QmVA2y@104!uN;JVMOT*Lph>rAIqFdYx0d9^ljw4shwfJ`P{CX(UzZ3 zP!O$){x8=db|x0TlD-~k4!Vm)spfIL(pgSc`aEOQT;Wo*CQB1S%DbDP;K$ga#d_3Vvkf0z|f*QZFIirwl(6MiCJ?s$oC(>+u9 zm(wba?=M%kNxsUX)$&@)J=sOOrm{D2QIsmkp!R_G$T-l4ZJO>@irow78hO*JXvMUw zRyyfrDyMPa2lLWe-}E+(HD%wymgFvH;!J(R`%TgMK({?3*tygxg@CJ^FALjM(ai8@ zdh$5cQXv+3;QCK*C1iT11wYX``gL{*PFtHd`RvPIy=qhp3&wgceAwtvQBZNRD924! ziMUVOqO+2XyH$d&r@mBtG>yrAlinMS3fbuk7e2M~q;oQi2IRm?e@6Gy)R%cq(ahEe$XGNo*L3~>eG(U|urSUO-AZT3n za*SRXtLGTOR)h&EGSydW-h}G|qIWTATx>K{=!$aC^TV4E>*sW+D)3^I{z6ji&!zFU9bRbT)V^uC)j%BGBT_#y5pBp)+3>-anxk5r$79@iYcQ`fH`;=Q zQQGeV8J;32lv=4xjJ7X+!9U16?oE z+FoH$BiQ|$iS(Q5jEL`q^pIlyouoI$F{(d;Q!FjKQ3q`wUMC!A2VsJY z1v;4-q9&S#8LrWzvnsyM8egN&i6F~GR-drgc9HPzGpI;WD-zFg4efDr^i^J+3DQu_ z_;Z=g?3Th+n9wYsoZ6cDW?qh+eWVgj?8GmOh)UFU3*>B&y^>x=F8q}+Vp8(9eNfH+ zz|Px;rK2XRsZkT6ca~qa*7a_j!GtT{i0Q+vw3I$5^wNza{a>zQW>n)}!pi#&M;|V| zcBOJ|n<~Cx=nWTYGcYVuw7~hLo1MtOoX0uJ%J5}bd!oX~Rj>wh3ur+0)aGBoxc2nU zUfa)wKRza>>aGhp-QV-Sw0jci8?SX$a(zAix|sT=+(`4q)CC8-Lj~ocxoNL-q{fd! zG5zU@bgm+Qvi*x^1Zk`{!J?xheY*Wvy6MQUcSRqm^=HylRx9QV=XiJ7XU;gpRVp+) z+Xg>0EwtYI;hM}LZB}M3H<8fE=u~d@tHQ(&Y`t?IlKlu; z(uxOkB^&TElz%(>#d3Hc3hmras&HEe+BBPUW2k&2wDw*Utn8H~B#bxis*Fm@D3+JW zmOg>eZY9grB7tskoLirlUlZ?`^R~-Zsm2`(Bl>qqVOo zyCVUGi0PGB-zmvE|1cd9`fFi$N&w@RWg|nalRCV==mvemSGu<6<9qB-^A5!4#U{1y z&kogI43PAE=5Gm0JNiPqyk0Qf^*MF!#&~sqrpovnan$jddv7B5Ie(5Z@jALCJ3Ir- zK(nCp=DInZ(ZP84AjO#42876WdvkhyuOBa#NE^}i zg~6lZmE2^a{R}i;sFzjly}|h}Ex`HZ@%HE=0VB=O)CXcsLfy{J{l!iqH`?ysyyJOY zbXSEdzA7cQ*l8a?5IHF_(EZc>S7Rl^T(?x~#}_s(S#mZBKsBNd$0XC?+^E-|e`J_&lKsv6Y=Q!KK2UzZUA zv&@SFn}P?kOl5n(qH-B!C4t#W8FS9A%@Tu&Q@NHrXO%)J`ryKIq^qEVt;N=fz(^{z z6&m3=PK!b~xNPJIMWPIxKN|*D;xW~ZNPKc9KzZZCXvMm*D2dG_B+~ksU+i=Mh)lmo z#EA3OQYNnJsL8C{FH>kV+O9^}4o$kg%x1@3vg>NHwNVm&n5TJdlASZlX#Y}g`(e+O zG~8($nb1|ym=ljO=dWdN>#r2q`N~wVHYPugD@+b>j2N^!H5=FSj^-El122Fy_Rr6j zUF2IIsk_1vzk2KAn{Qdk!!tbp9F+IYIX5I~8Ru{7!`5b#*$ztf-Q4M$NwR`jp9#*!FP$Dbchx_757pBk_>MXD zu7;m26rW7G;LIU63uk(OCbnpt?}gY@m7R?4P~#o_&L_urb%@tHf1Qi}@*U?Y^Zv82 zk-V6SSSFlD2;F%2ysuTt+;=8eT|aoElb${m)yE>z+Z6W1z$EfIJe1cNJ7kSR=V~!7HLU}b~UDBmK{PYqHzOglekkATs-}R-sJwI-Gt6?T%cN=Y0AMos` zkz56K_(8Em(>-Qs(%p+H8Qx~?Z@y;K^4b3ki?W=L4@U_aGA@1o*d=@Nv@AxMWkW-a z=7Ps@uPOoWM1cz4<9HNrY$^Jjs9U|zKVvQ2L(Zc8TKr+eIMTFLc zxrCBk4i;-lK0S<=Ijv(CnvGBFCEQDFfQrOsbHCLAxY$coA=2fK@BgR%ByK~yGx-Th zM8pv}nc9j5v35D%o6nz(2b2o`2hN(W)$RYfE|bUAXa*Kf z-ivOiN-bM`vOFh)n`We$g574x{CM%Wva&WAR<4-x&q@vSDqxVfle>jA zuOdkc8f7FR6W`fse0j0@7%2ZAKO$)j3EPMmQ`<6-l~bU9$_a_i_Xkyxf@Obl{TJPH zgc`2zagg~Ak|+R+Q~WOlXxNDXckoVu{U)*nsD%yg;Sm)4=f{BgffpOdD$3I_Jtqro zR|%<=mim_p!esz}M@7YK#_i9z2n}V_1n`DgEf+6>Mn$#KQ${{?9kgBn#8Eh{*joeT zhiQ6gu?gCMKLPm;4{rP*k0PjDwG(X`Z#{d)p0?X{&y|Fkj&21|B2S;O&lQ=}@sZ(9 zRXcr;3YP7E0C*;w>iVLQTEA&q%{drj9QZ!qPiAy0f`gY2j`wm6rRc9G>j$<>5M3H1 z^;I@`3QqM&Oj=S>ewfUPN@vfXG1mS`?kJBdjTBwrLtf3#fud=ee4 zdiAVIPSq$2xnhiZSbYPbu5(ty)M%pwDFY*Ap79j;cP;kAGW;g3auu9J0244f_nMAw z-xiau(iZ#{ljISU_11Noj~4GPrp8RSG2OH6r$UpHc}5_CqB1SMniOz06I;g=>tERW z%^zU<%@01rbW>WA;u{@NAj8eG1oTwpkM_2J-LAKQ4@)^Fi65cByW6@k_Dq!9AMg*D zj2F3g?KUOXSbwFZEO?-k@_-2Y+VUDR5TLt@TzS>U$?pf=2ALJbKYt~ry?(Fq$fX`j zI~*URGbHy1iYa}4Mu#GSwub?p5ilwn=IzG(#E(e)(_s?%-OSkxc{SFr8VUrnT9iM& zQho}eVbFS`ql!BIq{+rBK-63JbHtt>FA}M^B3@0-j>hRG2 z&9j^SThbPx>tk-SIURs=#-GkD*xBtbzYC`p>q+`#>9!duGg}5o(frqZ9vueUiMvNf zIly2-$8oljRjclsX@BzAGKTm}nxVl1iG`ctA%?E(6B#c?8*Tc z;h8Qrg?G~Jo$WlA5~TIwL1XuqmdHoe2g~Roslu+ANWbg98dWp1fG8vqu=C`69PcI? z8PC}C50hVE%x$>0YtY<$tJq*|wwf@jGmN3Y`Z35=g*<1>D>b~rPIKQd2P$x5CR+gW zU^Kr|Qk5+rHK2YLK145bwsa!lwgFV>HLG=&?h7lVWg4syOq|{ze#Qq8Pvc4j9s*x) z%yx>~3cAiA;l8$hI&bdWd40 zjDdS1CD_AsUcY%KmX1o4+3rhBbnNg%2{4*spPuf~D{SyBo*ked@=5&Pflt)0S#FW@ z^K+18zu&d=j3vHg{&Z-`zUTO~mek=4!J_NBGm~N8_;whjeX=8KqEqShBAQY0{q97n zpyv-S*fQ4qT4dJY`VhL%+;w|ax?AN1@eED#k>$;Bx%q>2Xh0U0qz~=ey{Pu?I5tX9 zkP3iSHhQq`LuOU?jU(P6>kf8AdAnSqxCsRWiW4UEJ^f&CRc9B=(JmF2AP;d1L!sM2K;6a?0`&mPI(9AU!Y;1}M7xfxO_}1N`>s z3vz9Ko6jSG3h%^C>t|iKtOk`K=Z8CTz;UXyva;=!$t#U7OdNU*&DKGbEb&FZ#uI@x z4zQ6LS-qO`_R?#_R0AZVq$DPx=xGazND#0jK*7_Z$7@~C!X%SykckF+9^Y^({8w!q z_=#e+1h_fJW_5;J9@poNDNdKyY1|=EIdXTKBLFxcUq;Su=nSveF;!W>|HuEG4U3rQE|mOZ@<5P!o?#X zlkpK07VEZ2q(%rATTPUIFcaz5<~Q4Jb&p|FCs9>ZeT;h-RIgqx@0Y#^-^w`z7M@ET zFhtIgR>g4Iy+Xv_*Eug^bIvYKHlzJp=OiyM_Q)>BE`L701V04zH)EL9OQxsjZZk+p-tj`_OxRzj0kZ-f*l`K3H=7cDN7!?j zaH@yi&ZmQISOYR?f5t2zRt{63l+i!ip0+M7dM;q&BVNB{*LGE0?*hw`F-#W`fPi~Y zi8zD-wEF#xJ{ZHxaT#rq^Ao@&=+*X&0b1>FH>09)ch}DR8vL);vokffKY6G?fo0uz z1C8!YovuFHy~cuoEdXPMT_>!xmY@qe<^U$E88RhlykAC@>+ZRsE(lIUT=zn+30NNE zg5;xjg;hmMR;ujr2bX7#ps@0QMEngXV1w(o88=BTe0g#wLVx;ri%F&8OG7Ux|M6n% z`K^XDH+xXKo?W*l7zXq8pZ@uwCO8`II?**DixPNxIipg^+zs3^5p|X8GnJvd9CUR4 zZ8(It3~X%P8oYW6=>;|!pbQ3tO3XP0cr8PevxAR&3e=Hvz})oq!zbk3`bHg#Rc-j0 zCC5fhqn~_=T8G=^YP|LynJJ}bxXcPectMq_*bLmvpdp*7-CBN?6-2=>(o8WuLtDn$ zN4vtJWqDn72$*^G&7^?J>at^(R+HuHG0q(^=3ui4{HZMvIm_*t*_mrmS@4*xD)rAF zrrVcTb}-NQ?*}B$FUUGkwI@8OtC^{uuI=5bpt3sC^88b8y>dG)$7=z~%#ylk*HQkn z$IdPtIaP8E3g-Gowzf)@6k|C9X%RGB=9ef)G>^LC`pwm0w<_L-#6!RK-gxD_v?|}1 ztJ!1ux-#aCL|HN_rOMABZzLtnM;c<`J_0)vKhn}@AOj7J=E`~EufM(q*2<+PgW{kR z5SS`CV7A&P?KO#-avjqOG4Z_LAJkZ#3#lr7#z{1bNGIvk_OS0!Rxw>_!f<}H|hb?&t~ER@QS zRl>!|`CEH{M&$tg`&j@NKbNAD*aGU;;@6h4QhGg(Mp)hDOd@oq!JgPp1-@6k)8u=T zcKZufK+oVqzr`1Fvb{!AE=HTk`t;pWyWs81a4y4{J3Vn6LBP8j9)CTj>l(+QiTx@F zPMt%m^6}&2&{d9@;jNjbXo6Ic_x;S@Q*q^b9W=Dj%V$SuLQuNf#jrnz#fEB(gNv!)Y^P^;>kN>K0O)WF>Q{;RKV?k?#{h`S%G zMqZ2CZ+;s^t@t2P9rFf;%M}U**FR%6@z=Ku28zX048X0jK*vt9%3FxF}Dqj zjg9>kqhNuZ$9bwYTe*|MUu&}U2bxbf`iroM^;c`6^G_Nt>5#mL>5NO4K8aPg&AW; z!O~;Dx_Xut9g4(}=*ztDFE>+azPt&R5&am+QZ^6w`{Cn?R7Bt~N+yD4oi$>X%a&^PU*a#GJf$qP!kna6 zb6)OC_;}XS)nGXGz>f0qW$fd@&!Wd(VMc~Bke(QpwlGbez5h|#SH@M9E6cF_l%#)$kjGRd(u!l)FS#U z8xG4i(t8TB*H|sr3g{yJ-*yOZm4@h3tZc;`F3$TAM@DdKYr)7{7{HjA4%2ncQ7atP zY5s3%v_9C6Ia=IkTAB+>m^)8@(3glR2zy8FBKew~vJ770@K;ix^O>3n+ z{Jr=i{^y@R`>rtd_Ya3(D73S}h%n?yO`GBSc>mo8t<0RM<>JF{YdIW;EFjc* ze}H0>3AVNcii)Y`?(SRV8VY++&%XL$M_({AX;(c(_X*ie>|xffN^`(_V>WD)Zk5Bw zVc8o4H>nBd22+XVPm*j)PpC2T+_Onj?ITcDQL(rvu!=wx;+42`kwB0QgB@md-&i$U zEAZFguhq23HiP1|Uaiwdl_w4VTCuStu@d(S#uoL5RrP|0oQbnB1j>_K1Pzg&YIhDj zsJl8y8En#{f(yK3)qanP;`YCFr)5nno%$hP`RBa^5vTRYizTu7U2}Pv`*dWPfkNfp zK0fKSrO@XnG$yd4&_%)}jXX>e_GH3){@5krrG>*`@?|ni2qBoz8r1e2JUN?h3+FMF z5ywwVJRa#T!lycr3#rP^r*-!>!das>Ex-tAS zxpqZhDWlepPxc3dghYS;zQ3DhC?Vnd9@%p1zJr4UpXi#)*^m#+UF`?2fYpIZH#^Ns z5sb7yX31}akUt;1<9~ON^kc(qyuh8mzE9ZfvvOPh+f;Fw75=+l1T}r(j&M0z6Q%gl z!|A&>4_40^BDPD80Z)52*G0ya z8>6lN{9bwn4N2=;?eN|v{pa|cge@ULq5qS>-o<$7f_fzvn72j9mbZXk) z{QUUp7K5J^8EJ2(FwBaVYGGr2!)$(eS@g~*I!^rZ{0H%?W9M`=^2TUAM}mjM58p2z z-vQrxkxhX^<(7v9aW1e8OMt~lK}iu9II(?b=5X0x{hE>z+TB}S)W6Z!&9;_`&kx}NVM-6vd6_$XRNG9V|9X`t z(S}TaT;Xgm`Qtk7Y9^jgy+}O~vH92u7B1QIgSbIfZtfP|A*n>`75#q&mRJf33bYY2 zFz;5az=%pqvC1zX;HhKMIJh9cEHsdIb9WEd$iP6|VwpekZZ%-rJr4`^X}LAG*Nz2t z33PSh;u3{mXu-4gOO^iqvv-~PJuNZu@uB=ZOSe}49gVoH)SqJ^v8(e|kk#1(_6{er zhPO6_L(+EtzOA;shZoNg#+2}cl5(WX0|U%(Zzc>zb;o^n|5ij+KWeMttx7_9z(C8Op3_jI6G#y!@k~X6iqY zsT(@sUAWL5Mx!`>hvD<1M__d0?U4AEbc7}-QKw~SW9oxNxEXl4DYJ({ZW8pF6f*h8 zi8c^3S!VKZzFJUusL&`z`lg`|P!V-|K_E#{aSZT3~qWr|?bl*tU9ekVa?sa_ij zA}z3*!}$n#yjxo7uoxm&`5y)yTE-uE8kN6tDT!b#)8!ttgaDd)n_TcX~h~K@HE!J6u z$;U7$JVHy*1FT#3ke6Uc^b|0})x_b7533}`5wDf6vUV$eVQq1SNExu_k%FK~{I67a zZRmH?QY1b!D2qu*>_Tw8-~H}t)S_5$uC!GVexImiOYp-Uu$92Z#tx~WgwEdJ>dK?u z?+We$=`iQgc({+LN0$VGrA1^ZZ*znZh`++8Gw?lMyww{ zeqi6aF$<8Bn9rv5&7RFs_kUZNu7hmnH9dIbHYa(i>`(8pf7wK71jbjuf(^tD*2`&DBOd2wzq(v);*^2NL%Ps^!7E1q7ZRME^PQ5bUz_X_?#KpCoESl`NVYKLvP#r)jfun%eVi}cTk}F zz{~HV*RBo~`GSoLM|$77Lj*@&BmE!$A@Sm1lA65yOX7z=l(S%xuxM817g#m6pZzqw zZ(rqosM1Y>d-ozI)$Vxctel!D?ycXCi8G`$=TbpGJ3l#|#4k~ohkF@%=ME&U--DDh z-yFgjdC05~5EZ^t3+wNW3ij}D+eP_ZwkVo#%ntU$X%maYVPdl1w6j>Zow?k(o2OMp zSb`>U`x7p07rJQD*-5Vn$8pth@b>n0@xOHVmD_mA)q85WA#+M;EX>K(b(eFQ1CxnY z|B$H6$zs6T`hp^}!KrMDMu3r#(~$};T3U#zxlFrW$n`OSa_89{T23zJt9Qdx%cY;^ zhN!e=-NA=2q4f%TmYj{+qq zz2Wc|)KNdY>YJG!2r*yCw#i?8f+=GYx~Kz#?3u6!0e2pb_hSQFy8A@7qa(YkO&t-V z32>4j3d&DeVvI|tQC6jm5#rd>!mnF(J}`coz*m^yLMBWBiTK&|U3Rwt?1sk1kuob$7vr7G zy$McCQGHP%k8Ro5ak!fOE5iB0YDGp1b(801uk*wOqxl#$i?4wp4&R5Bgvk*Uox7tB zi&Brt2cB%kN5pRnvSOJ!e6u8njl9kP^oX3c^1W#-Hjw$YmwKIBuz9}z|EI8wfdS=ua zNB3+DrXj=8@3S`0pNIYs-*#E)0yi$Sw6l%TTFLefSe5p>!&&CW-5Pu?lv^!)C(O#l zQgM%#=8re)zGr5FSBY5ryu|HK$^M}QcYvKZcHf>muRP-Gm^`TwO;J_;E%x3tsfU3) zh>W)#SW)Mlv(E~rU=g-!UZU-McFY>htl13FL0BTN4u}GoaBgiOg(RN(bJWp$8+)C< z%XbjCvu!lm zCzaB+JOPY}csleJW8>m>54*s{ugY08nXDS|Z}kr;zpJIt#>NJnN-pE1VltcatO4Rl zLu1y$>I+m5X`1EcMA4Vp%Q)=1+EQyNPTxzdixwCF&ij6!2sjAc#_OJ?`84iUOe2wr91PO8kB(Y8 z86Vyssd|dB^Z&E}&+OyE84HbR=-I-?O0D$6`>AK}#Do3aAiLL>3|eKZaGs+EVEL`c zUpdR~;!PWvz?%FkqX5L9x6#fy-yI)6WI6VfSP+cs&XE*p8o3cJtKNPzFSfdNG9n~J7dkl*LGnKt%kPL@r5P_%zYqnPl7jg8>j z`u*Q(C2^PX$!%fc-*9f;oSWadtIX%KtnLSoFBh*J0U^;Rl&0gOoBZhc1~X5hn6$u6 zaGN_aU8f%1WWa3kf_by;5*Qp4L>`S6qgK8jc)z*#3n5?ps@YS6O^)?y*ngJa-M~1G zW}rtPC==S+Ky}AEa4p;cztNnW{G!}Gw*6H$3}DhCb8%7v!soZ;?-QVel`E*_<6$I! zFkIcMT>{))5LZy%zn+{@viFauYkL&K&5tiqdPfx3{#cqIf79(QpTP9;D_{o#3G;r2 z$OHkW82(c0mNxyo8ut*ijwnV$$k{OA+{k0Kie&xn0N9BkPAL>OcLPX z;oF5YaD?6X%Gv3uwefNOjD~ypq{F-qH7ur1hnsVYoh7$=U$sW1u`$f2xY8Z!Rsh z3`ncY&Rf<^dl5R&cb1rgjA!kTr-S`T*O6RPN7QNVfoDeBd7pdWuBz7I!};$?Pp6(g&))609n)49h0ThQi;~d2EWE}R8_?U^d#yhb$aMEF z_|r27*!X#p>%z7nY<;A`p$c9@BMKUf!O z3uaO$=@ zvQZlMKc%HDaJdwoU)Y`TTvWUJNKOWqI~^2uzYpXcg6)52-=p)Ok{fmkuWr_g84uaa zP8iu574$M#OAyXq{@fRDRN_l##<$K-tYyI+8ITjHi zPOeI?L?0HyL;NK5@zZM!%7+t!<$Lp((;H)@+VcHyuXpFWIs)kW)he96a`A_T;-2dh zJsT?ylVEpqy7X#L_l6oD++_FxT0ka-#t%Yn*0-VmU*96oF#+F4jiyNZ3}6 zgqYy|{pOGL7!YOa%AHt&lIr>Hf$^`_Q5XSeGfk{54EYBS7uU}}z~D5(6fuzXhDLfJ zxG!Itl5D*8>XxAKIG;T=W=>2M&yGU2LaE_6Az0nxlI z3m5wNr#y$+SYOh zxOV48`6FPAz#?R%c*f2S2Ip6-K@A0}AuH>~o8IM}YAn&cAxZ**g2e245#8@G(u@zE zs%nWyF~l;k81!L57v(qOfaNt2E|8MQgpP`Op~GO^=?7bZ%&ah9aW>%C&zUVPDXFIW zjN$T3w0w7=pw&tw3z^R2a!hO39;LuRu9BfhDI3Kockaq&&h^wi;5hon6UwirvoC3F z%l{Z6|Na$=bKLz)r;sS{)yoTwDVM3(bT~?dM&S<8ZNx|4ykMKJfSeo3cKG)6grhr< zNdJ$^8*W|tii%ufwaemJO1r~T6=Rh`~-f=j#+X21!@x zV-8)Kp78TWwy_S$W_WHb_yfR|y$HHBZdV(v!v~H{um^w_Y5YLSAh=o(%245Nu0Un% zK;5joB44NN3DhbXqL^ekSiq)8rK99Nf9XcuUg#2cG}d(Or52<=SHv@vp$UH^za$4{ zu)Js~%^sk*#Z)2Q$Lvdu8A$e3f4=pK?KgtiWZpihJ`sOlZ??b8!2)-mzk4&3P&PF( zGGa`~+}JMpQ&8XDE+eD;UB@HImFDcN7cc@@_w~R;=Pr?un^SOlWP0(V?{1%W`5fDQ zzkHEBnJP48A2d^KDUT^C*2sCi_It|uc`c9gw%dFgutEsH5a{I=c1`l(pLTD&P;YzW zMUml5^UUW3ZmeA8mg2?jdy(sd4647RmU1;&SXpPfbH<9d_D}BAMZF$fD&fD+B=^x1 z5kF*|W;e`qHdM;pOic|06?7E%4c}!>T)g=a9JqFYzFZNDinv=1?z~V(I$7&^-^SDu z{rZ`cQk$O z({H(=jG!>{BQrA?(k%fpr{3~+#uW}*{xazeM>)*kEl9({5>kJTiS*ol4rQAw#wLqW zi|NhxyiA&d>Zgm~W{*q8_30p<8yo;$LXz4C9=#IyYut9YXmZ~b9cC|B4&_T19@1b>G1y(h#PBIL6*?s; z$5q7~75ZYZ+M9)u`=OZ9*X3Y?)H<%d(Kp|C*y^JE4FB$BT-{G$$$o1cPvAO|@X1+$ zw%W;cT&|<==i^_qzfJQLaQQ2S*Ho3bJLPsLE<2;H3~(q5AmR6gbTNl zsNC<;mP$PRkj`y)a6WruqI)t(L=>|xMII&Ak*~AqX1mz_)jV-j^|uC&r>Ezwb^gcK zuOnI-f*9YGpnshH{y6u{?z6CDkb+M3dniEM_z08@nTvn{@>5xACjmWdxSVSH&w8hR zJB=uhR{$+*yHE8Qy;Dxb8r3#)bSLb@Z%4f2zDkb7hlCqE9-M&yb8nIIwDx+5DnAYv zt^tmmU2k8?1(?{K)RqrXniUSjkmyR^06OF^^W0QRh_V1$QgD@E3LU3AG6Bn>{HobnM&@hG_e?CcKz0c& zc#Ew}?lw`)o`uCvZ>F4?QiYI4Hut?JKmy`0meL$IN`un|1Hn^+x}|>AP#h=UyWDE;pS7eSCA3Qf*xp zRU!QsJuN^NEf4Gc6?!-#!++#6m04!m(4dybBVlk=*!VN(zWw_@=JS|lkUBfH8UtQLKz!I>?5*_H{I9aVg!^}DrnWZ9cYdn zzejKM%+nnfu~bneD#66L6x6cdB>6j=eQ65zV*`{cATN+tZaitHW2 zPXoq!xSsoiLm_ytRuUglgoBYf?us}Q4U);&W$DGSTI+&RH9^EPv@Z$`BOP>y-L^AJ zyK|Vnql0tgma0E!|BZPw;?c{Rampl@iY<1Ao}vgo5lQ%t#)(dl*z}WHl{YrhJdwhd zKAgMm+e&NcY96#c+Jojb`o`95V6-+cuvkUsyTh`X*_b1tVIqmx;+^2x+sK%LJF0Y< ziQb~qLxN5xH-y{<5j^(YX2tC}0g;`8E+FYF`8e3TQ-k)_CF)HI@hWlBE4Ov1iJLO@Wi-<-G^jW?G_mFhmUuVCGIy>(BjeFF52^$MIF&wAyZ4 zO``o9yg}avZ!ikzbI@dQn)a(bgL~M`=AqMT@|c68+AhUC+J_qB8ZE$d)uts}#+OQFa0tXa!w|QGLz5*Iv2n$M6>i*;MxA4RaXV`L zNkApb0%>cvW=-AtiJg5^mv&W1CE1bF_B@3Z%0b^!ALAqV15)B@R|rB#B}N{B_MHZ_1NrYVCEjD@%?Z4)Bl!uRmvFf zEhHk+`Ofw{D^rX*nlicrrmWJHoLK+pGlBgWa>^f1o&Zrq#YkC2eYGqxP`NEu;Kdmr z7x0ppIK%a}6n&t&sFV$h2%6W=!PWilpsOXmCl9bCJcW(zZ|mQ;OHJ&tU)6J{X&;A# zeAnTaElGqQ7G{8TRmJDJX}4droT-(IR04@vvXC2L{T0EfUWo3aob`900XLnkse+pA z6Zj(uRUc9A@=t95-MLLEWy>F;!9+8LPekZ<%V~tMlg+Xy2EJKFW;9j_6J9HweH5Ya zeZt2R!h70_7QX9)4c>I4$kb(2!g_yN{qGzRhvxdx>E3_(`?)kP9MqZS*G)W}bSuti`&QlNKL%a4k8beGxW|F|FW41-xqqW{zdJ5SEE~Zps;n}4 zbnQAKGL#}Wa5d9OhlP!m`YA0>KdxaQ?~G^1)QhuKuHQ81qKpdN;>&$Y+~BRr!p$vt z7zy)dYia~`+~msr?`@;DDZ2JziDP2p(eh2Y(GA#$&wX+0IvW_Pi|$DRXUvl={cAk+ z_Fcl$l1)g8o+m7<-6}`xE!W!P>5wao%QqRT*t)@}4ZVyk-DciEmDAO13?P4a-1YYH zzAJBRV$j;{=vmfSKAE#;8&+L=pgB*~Wv?RX<534Q#TKi?mszSf88?A6 z+7hNws(p`vfTtjwU(qVbSy(nT!3eC@y-VJ4fA2FXbGmr)pgSpb%vvzNun>K^z8aO~1X$jx3*hxet+OF~fvNp*>Xi5aWm>!sVE?YDJrn!K)(+j@@4 zFW0Q8k};B)=oj|(kz{K3Bhj}$KHe{B@9i+%#Kr#0Q_&n9F};&&)}Qk19k-P<3s}1L zmt&vq?)7AZr1}sNCJF86<&9Z&C-FVp>c@bIwFo6*66F*bD&XaeN5?N&ZMV0C4Q+^6 z>_b%ft;5HXhBn3?hqu8ZavHDfaX)fJ2<$pZU3g!oRm&ixl8GKTsW~9$3vp&&N|U{~ zi;H`Ds^-y7?h8h;+QPCKE^f^icfZUfPUXMWG==u)T+@W?fK-n;->;ayiSJ5_?A9D! zTdIGPNKKLal4}}O8}QS3N=sR3c__Dt<8ol3h_6eUq$G~yp2zj+_Vf<9c$V0gp66dn z0y)_iyJi7$n3ebzG)iX5@*?AasAM`Y!+^Q5WW06@Pvc{WK^S2$7`BkW>#Qy_mTiY` zRx$L$HF@fa1svnHc0O;%S|Vt&$$5iSYRT_>awZ-ZO;KML()3t%bm6H_n_fscy3g&} zKZ&C%c`q?6HY`T+_1UqGHWfLZKbrKU?Zyixt^AN79v=l6HrNl;pT06z;aytkVLJ79 z96n5JQ{O_Ke3QF$y+PR$Sl`Zv^?Hc6*C0%&GNRXd8v(wtI5;@EXFm&$YYv)9v`7`m z1cU5$^cc0Oars?c5l~j__80G1p3G&xm#sQGUvT%Wx>}(XiW>fKh5x5;>X-EMpXt{y ze3TWLH*5*WV*}QCf6sPuNzdF--jO~kq)};9|1g(GPIUWt&`{Xt*&26&;W;(e`uK~M zs15t551W0QF4w~1NZ;GOQemi7}~l%mH;E9l8(LO(Pz3YxTyGtML2v zjOIKtHsr|+Q5C+g*D=eVxLY5G0Sp(eV$eKH zoHSHq>WhfT7e(Fr8#`QRX&w*|h%lL`$sr`FQ7w)sQdnB++1-!uYn6&{aREQkoxUDs zQ-(GJWX|&?#pH!E(~Y<1$!+7rMNT{Gyf7cQh5pMuP0zLN!Hze_Ioj3`CAK?J#Cw;S z8~jB3sN3s%^BKmqTKgMA-*Rg|G$Px>AftZG{4UZ8gPcGBb>8WSe%WbwdB;+%R(h!@ z-0lvpYI5GVsxQ6&eY>C{tv1u=+I zO0+R78`c*jyit{_i1%$X4bg;-92;7q#R{p&^m*f%TuQse{3XvmORr?@H6`N0102$s_q{r;A4)MLcm+ z#InL7XkUeS)#CT5-R}>6m7zf#S85fjP_D?xB6eOy(~?}iF8qtxr=cuVzs#{Eag5t) zXSlV%%_$G>mR(e*ad+4W?D%^iR%{L;q8xnUK@B#!n2)11a}DywavbqJa$e%eGRQt@ zpmbW^VYz1;!-_{H6j0-X(l;^q3u|7jQV$QoaG#lykt1TVL`TOjz)z|&!GMLhWSu@zCQc9jeYG>#`gFwo z8SP)NT)w6MB^bym0uX$0vY+$1MJQAxx3#6V;Nauaz)l3AEUYT2rUrzArdwoFB@=;% zUGMrc&6{2BE19+HCSriHOG*m++;x8uwz+}d8{Vjm%76>^r({Ruw+V^FKtDisM8;ya zjJ-Kt5okU!ssSYfG(i*rP!t+WE$w`g6%iEmLcaOE`Kr$AVn(;)M7DH!>=)lAI7>Ts zHudm5$+8R1<*=SWk4&MENoSk9f3_jsV^GFxG!J6tnyg! zaZego&3et*hE}NC-%Ruq_jvgz^m@@^hKmq;oVeYCX^kI5PF-(S1EG)p)rSzG2R8%H&lHlFZ zomol5qqzQ;ER2Mh_+;?=ZT+Po(qfY_nNyVU(!nv#p|kDWvg+G7$5|xt{7%B%)#0C_ zaHR~}qtWX2W>Pu2%q4apR|z8LlbO3OPxrczM=V*z!ggW4=j$Bo8hF)}``2{(ex>se zI*2hvr}mk!uyeO`YPepu7KlnB7jlgWZsL-Z`1VeRsOE6G9T=4?Gi$kwPv0kb6gH!M zFalu+*z-)F`f4oB9qFg zqT52+7LXI2tce}I627z%H*OFjgY-b2U1Hzqe5%gkN|xRp1qBD2l?HL9r0VBDrKwaI zyuZQAr&JunZWb8VAfC|sb8!6Z2s1k>=etbFFV)|_-TfvTM)vxjU4E?z7Re0>7yR49xPDiJfzNC@%+xsseRE*@ikY-2c$Z@#K>G+j9XX}@C zU&FfovQ{EdwZ~kd_n>qWF7=H-^~RuQV{c1s_$)>EJB(Ni5yYm@~V>zZ_Q<| zW9`qS;|o!`IGT^sb>DFx5+cT}r_wDx+uE-W#op57qjs(inh+AcwqZ=7TV!-XKg6gV zIXTi=4E6FIk5zdJ$u9;uM^IS1LpVEgR38l4?*2oz>Ak8W>8fl2JgOBuE66VGWWUKB zoqeD8#}2OBnn2-B1VjuDMD)$IDE%EFZZr@g5ai*x20Hc_HV?LoWVRj@HE;_%Eircn zER__ECucCe#PB-1R4mX50iz*S>(tPRME^Y7Vv!x>A292)Rf((l4#Xc)H>GQ+Sb+oz z-a2R7AKWih&K^9j_GJE#M#0t$mv!Ej7n1ef{$a%zs{zaci~)+|LjKm{Q)=#|;c*>yo#DXAuIBH#)j!s}U<8 z!mR^MFN!~mn3%8#m6qv3I~H0OcJ1-+gLoJMuS5ZmZ_fV~F8yDDOX#LoJrvqQ^(A(;vuL3FE4Q_N1=ji+U#Ym6O%|3f{vAt}Qn>KCzWidD2)zn)IG9!>XW20!{&BwSq-O%X|->CR~oyKAV%=K0dan5G{G7u%qx zTNAmYNZv#_y;NliNZ}ab6CV@ElQ?i@s8HUd%2cnq@x{u zdo;177AgCu;-6pC&tJ+fw3gp}#OvrCd(%jEEin0%yM;L+OsGeTBe=TdmQ?bv53W9<#Y>aJ1gWGxlqO!p)8f?Xr~5U^5p|*Ye&}7PrT&jK zJaT@2*nRaa^yF@tn;$0f{0+jWOuJ0hI!EPi{iO)f=4o2(S_?aWlJE({ZZ`Y9cW$kZ z^!!R^_*ed+vUt5WR$nd|C5&i)P1{mo`HlOEO!Tuj*Q=8SU&8TYYp^DGodWVD~h!2Ki z2>D-sZ3|~+?ikKnJZ|b=7k(duCW>?!12z6G@@6IP))5ADV;+ zGoOePvAPf{;{t`ACKU1&V7MHDi0jPpDo#LWTb|ZQZ;FcKsG|k*Mhizg z9axpj_j>t&KGX=Bv#y@G*?Em?;lI^DI!V!mT3%|o5}N)g=#zGJx)h0GR&PInTEQaz zr5$0A!sn4%SLRK}anpe+oI$hK(NXbnhWf*Q5+6-EhWuzsSQ#mOfM}G!&vZ-oU!UA; z&YGj4)BJ-gczPDK&St+da*(|>z0CfT91_vCNuw7eoaWx@sk$rPO~|D*Ko7X2C;VP$ zXpBjvw@cJTm&i1QnS(vD`f@G#N6L)O-<0kdI=^93>-HYmbGqCVWKOQtsb6>AskzIS zGRNU`tP~Is@V3PMx)+*P*}#YN4`2R_mpjKFWDkdSbVrf7hhKW`agKC${sXx8?r3uw zo}d6SVXjI0Mu`irlu!yl)iWFM-1eJ&k-L%fQXP>pR379)`Ii0n-7Z|Ix{jO|8v8^g zAxO$+Zfe^98L2Uss(K2l zHUl=GUDBj4zhz1UlU>sA{?2(@;6yyBrD%#QjI}Rdvlt+s@3_3_>aaNr#UEHX*uyR# z!08U_rcuvTO4rcP@Rr3jsT&nvdl-KXfCoVD>}ko`y4{#)jkd>3Fzb7i<}3Ppxd*eJ zoOv%&zN;MNf*Tr(-EJ{YNBC*Hd}PMc$o7xD%t_MwQyt*#8RQ}Uv%NP2b+pOu_Ve(s zJLm_XM1ux4Y3fi3LmjRgu6CM6FlgTrba$^fSPudzJlAi{9&OK{M&Jqsv5sE$4}O+^ z$R)nDM5RI_kM>>TWS58UoaXdM_Yi2wXCD@^u&~0ZWbY?B!q7{9uLrn^V&qDw{FCEvYj=R9xkD;hi0ww>|YO8qf%vLR?Jv z=YXD`S!LRLzctH!K|2oEgEaGpxIOw$nRGl{W5q-YT3XufK~`LrF*iH1_lVbq=;MPP?RcgO`ac1^OPkPZ?JK>SFX!4z zTEd8D+P9)Ba;w~SUfeK&ECxE@3JSaH+o?K6iXAYp4%dxS$L^aAI?N=0i>BaXxps_| zZ-1c&Qk$Uilcl@uKX`BcR840)AQ@~qKh#9XMA3-@5Y^yuO#;9qf<84RJx9I!cduao zavS>m6v+5fRDuGn-T{4A<#`m8elyBucX@}9UxHPxD7H|yWigLws?;3+BKeHh@sv?F zC54dg_0_(yU3P@PqLH+^aP>*wD|x^QoJ#`~mrlE(XY_uFI_VPsUdfcjiml;}`&viY zol%m|$Pc&ZU*!Y<&;gkf@)RgJv8({s)z`FyxDN#%nLjj-V%G2m>0jbP+sV}qhK+;M zH2p35%Ti(2_2xp_H#qq^5 zA)nJbAd2{A%zT_)$J{o$Ijovl{VcF8#8&YaL*<2Y6U5ZTFWnzGa+H@`Po==IK_d$ooRPjA1AfeKm>>hj{ z=uZ`oe{H`tNcjp~6dEnp-gxGs-G8wck1-WsPpf8WZT=^kW}R?=(wKl zZwXc&o$>Ld^1LkYC~9t&KpqiKZ^W0ia(1RBxHyA8k(RuO3UwkqUopo1-rD7_4yWZ(*{Ysy}ao zzPCBa!1UKmW_)iRNrz4#2~gwZY9$up35IOt3G{=%GMtv2(NNb z1Resl%(V`f2O70k#G<#N-QK=6S{n4+!D5V*5nnKS<+OLo$(^f-rIR;C232cK7qfWx zaMbxZ5+KdLLXW$^9OxJ&70O4k>Uo=V?i)H+9;`~6NYPgF9qAkv$0E-{LT&^5Ywtb& zQP&61t3=@;If@$vJ>7Epnquk;`Bx1NnTkT5!ZH!`($Kqua@YtgdRB{1US@xR4ohHJ z*#3KW;rxY>N_um?!=U;vXf@yRaJQkK{UnqA1Js$$>nCr`cFSQXZY0ASy~&0X16Gzg z=wd6~7^NSET2_9mRlQZIra{*)K_zHKwtxl@=$Y#Mt}8mv#!Dp=DVCySvwJLUI(3!J zc-k3Xb=JdzivEG(LUxR(7@PK{QQVATUIZGLN;VoEtoJt7$P1s%$r{-7Sl-i|;_p-z2p{ zRxRed0}Q{nBu0YgI#JxEKWH{sMqjs^9d2#tRuXtv356w zpC%z8vAnYOaw45NGdS6x)o-exH7QZt?!Hd+SWuXuOo8W-7JOTp>If2us0JXh?w(&z zr-_8aU#-k6&$j}Pro4Xq^b2g6nDiJ|->D&PdHL;0#o{?klW3BSOdI}KGY=hbu!wf| zzrOh~b~b8#2$5_BS@iI3ru^(+_M3-f3%?RVt?_i*J@s>Hp0aPUE=S61X(f z^={zT#)}2|NFLC}H>O52CzK-KafN{gf>*uaB@Az3g!Rn_lCIb$W0sUYZNIaljN)b|&k>6SDJjGiGhw=^6f5og2M_w~)N6xnj+U;_{ zlJ}9F809dZ@IKm_wA&eXHa%&<_W<5362u~QON*9K;*O(MTBV_NAD^oin|@7ybqgH> zy_ICmOe{+k>8Rv+dTUh?I*P9bBFO(%I0GCH@$q!ft?AlM1oFz^peWXMrjs|3q3qid zlU`g`MDw#a>avUUy$3w5tGJM5U!9Y+RxQ*hU;Z|DPcO-hXE9ZEkiACpdU8w6dU1XQ z;(gMhr8;EppMb5JJ?RY}Jup+L(Yro*T-Dr4yAUT3C?9ZjUpDw1>!^(t4l6c>h-1a< z@3woZ+2LGzx*j13xCwpVpT(XaFiI+Z>Y%Q#rmI%m&iedAFX8W ztiLc23w>Gjfl&OfvWVmz!X0*#>Sz9IY~SxvTcvG3p>O{eaC})`**0qvme3fU5Hf!z z7x`h(B{V5FYX`?tf-B-kNIS2HePQoJRZ}~AD2U6j$|cK~j_%j*9AzVis2f5ay%&=g zkq%!ly=@;YO=&h-&K*&ASw8z^ZKldW@@kuGiTci>QNxXE==9mYdZ#+>1umIpg{58O zx$~X5fB#Xaw@}kDxNiSe_U5ru{%P{ZS$+w4Jf8|VA9u1HBFP$H2bMjs`l9D`>mU>4SPQgt? za_E*!yOo`h(jB;NQIUK@IDX^nBk1-g>tNkK3n!8yD|p+v#)ObU$KMS=3s$r?E}h*e z8=iPh5EFmP+@14Bzp#U5ZFah5P-9c0N?o2H8Uj;R8iDZ9K_G~(VIb-r6Cn_o^#}wD sHYVbu2nzy%>y3ucxsCh(JLElDCe9NjvV+np1pFs0t{|5CLdW~R0DCGFi2wiq literal 0 HcmV?d00001 diff --git a/BalanceFlutter/docs/oled-settings.png b/BalanceFlutter/docs/oled-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..2778424513941d405bc825ab5b01c1a774efb0ea GIT binary patch literal 91277 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

e@#D&Z^WqjIclv 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 = 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

_NP<70S7?=^5ElEcE;PU0&$d{uufaG+c|MAv0Db zCDRTU7f*(ERJ%+KC58!`7vD5lO(ZrfQh!o~BiHAQ63abHafZ`dE+?qDZd~4LH?lou zJ?lEo#nhdh6s^}EMb`exC6SFOV1e^`9%tQ~Qj?N;7m@g=rW-|t9bkHHZ!ewP3GZ*J zGK-0<|mTjm_#RWD6%3l}FZ`xU(z{6=|ndj_>_EN%Wd0 z<4!`R_@*VqXWyZdvDz(i=JjZMHQ}|*-d)_;-rkGisA1Y2rnUSN^)=CVj1nwUQOxY| zN#pvQmVWQ7Z@KB{jwQK(pWgTamLW=H@+5R)ErV7IlB3C`f*bRqWUR!7h6k_f)*aW9 zDO~sO+*LQI)J^mK6Fup%L`-bYx*S)p|8DT3m+Q;r24niivF%x0#;uEGtVs5vV?QKy zEz)y@|7b|pXwFblGC=J3m!uT&U@&7!-p-DT5G8>=-?kNaTT$OqAF0(UM&(?|W|^?4 z-P7F}I43e>!Wk5V7xo@i;hm``D@B*&5ww>pl7X>N9pd2J0}^I;b- zc_E>0yqOwD-C&{Qhh?NfZd{cG{Lxw&?uQj5c|rNiaUlJY+XQ2wLj z>IpmcGn*Q=dx(gGNv@8rju$#QiJ;xSlY9OPh8}NzgxQLj_&_;oj>|aqXr!@pF-#L$ zvtk?Y3L$XMA85bU7)qei+tsePlMA_(11_qu&WyH3A+w^Y%AGojHQt5lAWmwR7a-4gbL4>WkYV<*;mO>qJfB$A}3t5+`B57wggP>X#7HS3@o5%JRT z(t@?ScEXP^Dp>3MnWU)qE&v?|!?t^DH6ikSY3s)@1D}jdijA(7;z1>6yN~o>nMmX+ ziRzbd8uYD_%hfLSg(ijx+H|&jGRRbg$+Y;2VQ0n#*GvJ;29X4?#bB`}s%GwN{pYaU zOoeeLzlMgoRo8dN!zI2?*4wrCqqUX@ut#7<3Sdh=w^abRq5DQcB8@{o=d5mSFD8rC zzFzrYqRw)TF|E@IYz*ET>$>TxwFG9V)c{soCQmWsQv}NQhNnJKRzs!aXr<~7vvu+b zoV@VFJt%F3Yxyw)SO{3^N`N_cxUKgM;U^K@{7>ZAd5~Iv)B5)-U?3~x*_b-^@hFQn zv@9sN$NvyhRu*5GS{X~KhFQIfuiHldJl8^ndK6FW@qo+XksmHE#Iz5+~-OWU9)M}>#1Weo^$WbCRt%zIDYmH$RkF^ zTy0BJ?h0t=-fHsdaI2cKs1*2S&uy2LP1hREFwiEHwkGl0S~>X~RjwV?yD97K6&B@( z6Z`i(HV<7$hW^IoPEcgw;Lrrs(F?0>x+~CUdXhnWAJbToFY{p$Vl2gM*pZF0QZ!TR zAJO!N?(!xiirMp14O<{i1Fo{r@uB}-!!@4_Or!d(!;GCPUl{VSY zZhL&-gpMHWuBmnWF%FJe&aWC;f~&pOdl@TCPoz^EPhC+?r> zd}sREV`it^>nnF?fRsuOr{G^4ph?NJ_7hV>m`!2fCV&lgH@dnZa2$GUs}{FdIU|b( zNp4=5bE`8geHnMxJbEa`1C8XVGES-Y4V6Wrre;5P+lBg4hD*=XPBn&pOdP16r4+WY zusPiBykXdX_1j9SqpI&^Y? zi;pKA=>WyDp>9?w-exMpnWN@;PklW@3Bp?|f71KJ7HHj6+W~j6q+@YXz_(RRv0;rE z&sO;o_~F;-QT$P5mola{gg6x>S5ELS=K)h(NzK@s7- z8>pMAQgc&D-lCIxF_-F8bULlTH!uiKZ>>UnjX3xk97A8#nQaX9hynN@vHe&va>}>l z-r4rtJ#^F_AMfIb%xT7f^MWNN?uXpTFyv!A05%vp7e-+KbgcX-21)n==5`UYF2(9@%aqM z0s|3P?mAG9#Z-n?L>U4T6tv!JUy_#1$BOI=ghl*pzLBPBD)mk}k_IhUupa-zb^7e+ z0FUY@;4Y>LDwf?LI!DguSNQa6`lRQYlC55y@+G8Uz%K(KqJoK7I|6w@}CxHV_q*zrqif`1$o~vQuLs@(sm*T0PdGAUuELtQ~{MS)PZ(2 z`EtukZ%=P)l<>rA$N|98_|)7lOU{mz;^RN&fBEuA)8xJ619q>??0Y51-NUpM8OF0n zfI+^$MRU*FPexT0P6pyWOBku4wCj7o3$xRuhWh?jZWH&)W_8-Q37)pe0p40R(k(na z3`?Ry^>p`UHPHP>Q@f2i9Ne%U{L@P}X#W$U5wB&@{!Qx8WQkj@uK`)7Kt@Ie44#+7 z1myR%G%5_dmW6!(?25!>Y29NRh(qLBed~>_@HWqv4{^(L_yzIZIAXLI%VCendb>X1 z@~vH5otIEm-!?_eg-F8+Fhh$C=&1-> z>OSqpx*xAuWRFX{vg&1MQge+XMU-39hWEow+kQT%T{uNr4RJz?vNzZVm&|$B{~L$9 z+hdj|1Qk7|Tz3deNPgj}h{L0UsB*S@#I*p(n~;z|&f}&S>kRgYsyGly@?1rYU#0F_ zD(R@23zzhgkmizb^}n=htI2PkpTr9BPTPxt-6oJDG92q z12gG;8{CTSJwCCiE5e2A_jQVmd=U6z^!Z(-Lxa*@ z)<2){#>DLwqXYnAr_-Pzso!wAw;)jI<#RgjnJDgV0B?mp-mKP)^xZuT>W-N5k=kY} zLGFXpyJ=*iD6}_U+!8aHVhI&tWn>)!j-f~1L)|Q#oROkpw#!SxGle{uQ0tO@HI*JM zZOa6JJUz{b0u;-)_a=zw=9PzX!1F_5=p|QYxGhjMo-=i}yQhQjs<5)MA|eQy+dHbT zUf^grEYWf~WX`qRaNc8pKrVw2YbsT z=hnP5aFjVFyS~!&JFH3d`1RWNU?e1Jf9dI<0Ck6ZE>SzlnzqbL*ZeD9J}?u0R<`ap)uhT8UQLE#V; zvN5}526?cOHrwWGHDtyOeQM(hCf?X{fu*g!o7IPORk}BTU6%k92QY# zC}7}&@r$g|ylHd>d>YHvD_FoG2Xc;X`Nydm>gLLljNT!oVvIjq{Rgmg?3-0-XMF@l zer=)-%$O7aW>~%l$%=bl>viCpQuW{(VI+D^l{cbWBZe4s{JPc1)lS~(DTxcTP2$B? zwH|Oi=-&%%S!7x?apkMn;^QTyYJMK}*S*HfNFLmwHYdNN`Z~X9W1D9#>E9y?UOi$e z83V|_OANpYBRfr9!UCI!UY$Qbs>}z2kB9r#$*t2|*n!Y853Uv7+IbDtK>82k(P1Kb z;pz!6SpF+=R{&yY;BIAqxT*g?kL4r`Zqv{%+6i+poipjQLXc5iU%L}ePQI*RsFwSj z$;2fw@E zP6sqS2e*$ZY5cm#)N~0}eC7O=Ay_};#ee^Q@ml + values.firstWhere((preset) => preset.id == id, orElse: () => forest); +} diff --git a/BalanceFlutter/lib/services/app_store.dart b/BalanceFlutter/lib/services/app_store.dart index 353fdba..0061f40 100644 --- a/BalanceFlutter/lib/services/app_store.dart +++ b/BalanceFlutter/lib/services/app_store.dart @@ -7,6 +7,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:uuid/uuid.dart'; import '../domain/finance.dart'; +import '../domain/appearance.dart'; import 'storage.dart'; import 'runtime_lock.dart'; import 'sync_api.dart'; @@ -62,6 +63,7 @@ class AppStore extends ChangeNotifier with WidgetsBindingObserver { String serverUrl = ''; String currency = 'RUB'; String theme = 'system'; + String themePreset = 'forest'; AuthSession? session; String? sessionPersistenceWarning; String get email => session?.email ?? ''; @@ -121,6 +123,7 @@ class AppStore extends ChangeNotifier with WidgetsBindingObserver { serverUrl = _preferences!.getString('serverUrl') ?? serverUrl; currency = _preferences!.getString('currency') ?? currency; theme = _preferences!.getString('theme') ?? theme; + themePreset = ColorPreset.fromId(_preferences!.getString('themePreset')).id; _deviceId = _preferences!.getString('deviceId') ?? newId(); await _preferences!.setString('deviceId', _deviceId); _storage ??= await LedgerStorage.open(); @@ -147,6 +150,7 @@ class AppStore extends ChangeNotifier with WidgetsBindingObserver { } currency = _preferences!.getString('currency') ?? 'RUB'; theme = _preferences!.getString('theme') ?? 'system'; + themePreset = ColorPreset.fromId(_preferences!.getString('themePreset')).id; _deviceId = _preferences!.getString('deviceId') ?? _deviceId; await _restoreSession(); await _loadScope(); @@ -481,10 +485,26 @@ class AppStore extends ChangeNotifier with WidgetsBindingObserver { _notify(); }); Future setTheme(String value) => _exclusive(() async { + if (!const ['system', 'light', 'dark'].contains(value)) { + throw ArgumentError('Неизвестный режим темы'); + } theme = value; await _preferences!.setString('theme', value); _notify(); }); + Future setThemePreset(String value) => _exclusive(() async { + if (!ColorPreset.values.any((preset) => preset.id == value)) { + throw ArgumentError('Неизвестный пресет'); + } + await _preferences!.setString('themePreset', value); + themePreset = value; + if (value == ColorPreset.oled.id) { + await _preferences!.setString('theme', 'dark'); + theme = 'dark'; + } + _notify(); + }); + Future setServerUrl(String value) => _exclusive(() async { final normalized = value.trim().replaceAll(RegExp(r'/+$'), ''); final uri = Uri.tryParse(normalized); diff --git a/BalanceFlutter/lib/ui/app.dart b/BalanceFlutter/lib/ui/app.dart index c5a4ee2..dc8569f 100644 --- a/BalanceFlutter/lib/ui/app.dart +++ b/BalanceFlutter/lib/ui/app.dart @@ -6,6 +6,8 @@ import 'package:intl/intl.dart'; import 'package:file_selector/file_selector.dart'; import 'package:share_plus/share_plus.dart'; import '../domain/finance.dart'; +import '../domain/appearance.dart'; +import 'app_theme.dart'; import '../services/app_store.dart'; import 'design.dart'; import 'editors.dart'; @@ -22,8 +24,14 @@ class BalanceApp extends StatelessWidget { locale: const Locale('ru'), supportedLocales: const [Locale('ru'), Locale('en')], localizationsDelegates: GlobalMaterialLocalizations.delegates, - theme: makeTheme(Brightness.light), - darkTheme: makeTheme(Brightness.dark), + theme: BalanceThemes.build( + Brightness.light, + ColorPreset.fromId(store.themePreset), + ), + darkTheme: BalanceThemes.build( + Brightness.dark, + ColorPreset.fromId(store.themePreset), + ), themeMode: store.theme == 'dark' ? ThemeMode.dark : store.theme == 'light' @@ -34,28 +42,6 @@ class BalanceApp extends StatelessWidget { : const Scaffold(body: Center(child: CircularProgressIndicator())), ), ); - ThemeData makeTheme(Brightness brightness) { - final scheme = ColorScheme.fromSeed( - seedColor: const Color(0xff356859), - brightness: brightness, - ); - return ThemeData( - useMaterial3: true, - fontFamily: 'BalanceRoboto', - colorScheme: scheme, - scaffoldBackgroundColor: scheme.surface, - inputDecorationTheme: const InputDecorationTheme( - border: OutlineInputBorder(), - ), - cardTheme: CardThemeData( - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24)), - ), - appBarTheme: AppBarTheme( - backgroundColor: scheme.surface, - centerTitle: false, - ), - ); - } } class BalanceShell extends StatefulWidget { @@ -1105,6 +1091,7 @@ class _BalanceShellState extends State { ), const SizedBox(height: 16), DropdownButtonFormField( + key: ValueKey('theme-mode-${store.theme}'), initialValue: store.theme, decoration: const InputDecoration(labelText: 'Тема'), items: const [ @@ -1116,6 +1103,45 @@ class _BalanceShellState extends State { if (v != null) run(() => store.setTheme(v)); }, ), + const SizedBox(height: 20), + Text( + 'Цветовой пресет', + style: Theme.of(context).textTheme.titleSmall, + ), + const SizedBox(height: 10), + Wrap( + spacing: 8, + runSpacing: 8, + children: ColorPreset.values + .map( + (preset) => ChoiceChip( + label: Text(preset.label), + avatar: CircleAvatar( + radius: 9, + backgroundColor: preset == ColorPreset.oled + ? Colors.black + : Color(preset.seedArgb), + child: preset == ColorPreset.oled + ? const Icon( + Icons.nightlight_round, + size: 13, + color: Colors.white, + ) + : null, + ), + selected: store.themePreset == preset.id, + onSelected: (_) => + run(() => store.setThemePreset(preset.id)), + ), + ) + .toList(), + ), + if (store.themePreset == 'oled') ...[ + const SizedBox(height: 12), + const Text( + 'OLED: чистый чёрный фон #000000 в тёмном режиме. При выборе пресета тёмная тема включается автоматически. Можно затем выбрать системный режим.', + ), + ], const SizedBox(height: 12), Text( 'Валюта задаёт формат сумм. Конвертация валют не выполняется.', @@ -1288,7 +1314,7 @@ class _BalanceShellState extends State { onPressed: () => showAboutDialog( context: context, applicationName: 'Баланс', - applicationVersion: '4.0.0', + applicationVersion: '4.1.0', applicationIcon: const Icon( Icons.account_balance_wallet_outlined, size: 40, diff --git a/BalanceFlutter/lib/ui/app_theme.dart b/BalanceFlutter/lib/ui/app_theme.dart new file mode 100644 index 0000000..eb69520 --- /dev/null +++ b/BalanceFlutter/lib/ui/app_theme.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; +import '../domain/appearance.dart'; + +class BalanceThemes { + static ThemeData build(Brightness brightness, ColorPreset preset) { + final oled = brightness == Brightness.dark && preset == ColorPreset.oled; + var scheme = ColorScheme.fromSeed( + seedColor: Color(preset.seedArgb), + brightness: brightness, + ); + if (oled) { + scheme = scheme.copyWith( + surface: Colors.black, + surfaceDim: Colors.black, + surfaceBright: Colors.black, + surfaceContainerLowest: Colors.black, + surfaceContainerLow: Colors.black, + surfaceContainer: Colors.black, + surfaceContainerHigh: Colors.black, + surfaceContainerHighest: Colors.black, + surfaceTint: Colors.transparent, + primaryContainer: Colors.black, + onPrimaryContainer: scheme.onSurface, + secondaryContainer: const Color(0xff171b19), + outlineVariant: const Color(0xff303633), + ); + } + return ThemeData( + useMaterial3: true, + fontFamily: 'BalanceRoboto', + colorScheme: scheme, + scaffoldBackgroundColor: scheme.surface, + canvasColor: scheme.surface, + applyElevationOverlayColor: !oled, + inputDecorationTheme: const InputDecorationTheme( + border: OutlineInputBorder(), + ), + cardTheme: CardThemeData( + surfaceTintColor: oled ? Colors.transparent : null, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24), + side: oled + ? BorderSide(color: scheme.outlineVariant) + : BorderSide.none, + ), + ), + appBarTheme: AppBarTheme( + backgroundColor: scheme.surface, + surfaceTintColor: oled ? Colors.transparent : null, + centerTitle: false, + ), + navigationBarTheme: NavigationBarThemeData( + backgroundColor: oled ? Colors.black : null, + surfaceTintColor: oled ? Colors.transparent : null, + ), + navigationRailTheme: NavigationRailThemeData( + backgroundColor: oled ? Colors.black : null, + ), + dialogTheme: DialogThemeData( + backgroundColor: oled ? Colors.black : null, + surfaceTintColor: oled ? Colors.transparent : null, + ), + ); + } +} diff --git a/BalanceFlutter/pubspec.yaml b/BalanceFlutter/pubspec.yaml index b3353da..6838a65 100644 --- a/BalanceFlutter/pubspec.yaml +++ b/BalanceFlutter/pubspec.yaml @@ -1,7 +1,7 @@ name: balance_flutter description: Local-first personal finance with BalanceServer synchronization. publish_to: none -version: 4.0.0+1 +version: 4.1.0+2 environment: sdk: '>=3.8.0 <4.0.0' dependencies: diff --git a/BalanceFlutter/test/appearance_test.dart b/BalanceFlutter/test/appearance_test.dart new file mode 100644 index 0000000..a045a5d --- /dev/null +++ b/BalanceFlutter/test/appearance_test.dart @@ -0,0 +1,140 @@ +import 'package:balance_flutter/domain/appearance.dart'; +import 'package:balance_flutter/services/app_store.dart'; +import 'package:balance_flutter/services/storage.dart'; +import 'package:balance_flutter/ui/app_theme.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'widget_test.dart' as fixtures; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + setUp(fixtures.mockStorage); + + test('OLED uses pure black for surfaces, cards, navigation and dialogs', () { + final theme = BalanceThemes.build(Brightness.dark, ColorPreset.oled); + final scheme = theme.colorScheme; + expect(theme.brightness, Brightness.dark); + for (final surface in [ + theme.scaffoldBackgroundColor, + theme.canvasColor, + scheme.surface, + scheme.surfaceDim, + scheme.surfaceBright, + scheme.surfaceContainerLowest, + scheme.surfaceContainerLow, + scheme.surfaceContainer, + scheme.surfaceContainerHigh, + scheme.surfaceContainerHighest, + scheme.primaryContainer, + theme.appBarTheme.backgroundColor, + theme.navigationBarTheme.backgroundColor, + theme.navigationRailTheme.backgroundColor, + theme.dialogTheme.backgroundColor, + ]) { + expect(surface, Colors.black); + } + expect(theme.cardTheme.surfaceTintColor, Colors.transparent); + expect(theme.applyElevationOverlayColor, isFalse); + expect(scheme.onSurface.computeLuminance(), greaterThan(.6)); + expect(scheme.primary.computeLuminance(), greaterThan(.3)); + }); + + test('presets have distinct accents and preserve light/dark mode', () { + final accents = {}; + for (final preset in ColorPreset.values) { + final light = BalanceThemes.build(Brightness.light, preset); + final dark = BalanceThemes.build(Brightness.dark, preset); + expect(light.brightness, Brightness.light); + expect(dark.brightness, Brightness.dark); + expect(light.scaffoldBackgroundColor, isNot(Colors.black)); + accents.add(light.colorScheme.primary); + } + expect(accents.length, ColorPreset.values.length); + }); + + test( + 'preset and mode survive restart; OLED initially selects dark', + () async { + final storage = MemorySnapshotStorage(); + final store = AppStore(storage: storage, background: true); + await store.initialize(); + expect(store.themePreset, 'forest'); + expect(store.theme, 'system'); + await store.setTheme('light'); + await store.setThemePreset('oled'); + expect(store.theme, 'dark'); + await store.setTheme('system'); + final reopened = AppStore(storage: storage, background: true); + await reopened.initialize(); + expect(reopened.themePreset, 'oled'); + expect(reopened.theme, 'system'); + await reopened.setThemePreset('rose'); + expect(reopened.theme, 'system'); + await expectLater( + reopened.setThemePreset('unknown'), + throwsArgumentError, + ); + await store.close(); + await reopened.close(); + store.dispose(); + reopened.dispose(); + }, + ); + + testWidgets('system mode responds to OS brightness with OLED selected', ( + tester, + ) async { + final store = (await tester.runAsync( + () => fixtures.createStore(seeded: false), + ))!; + await tester.runAsync(() async { + await store.setThemePreset('oled'); + await store.setTheme('system'); + }); + tester.platformDispatcher.platformBrightnessTestValue = Brightness.dark; + addTearDown(tester.platformDispatcher.clearPlatformBrightnessTestValue); + await fixtures.boot(tester, store, const Size(390, 844)); + ThemeData theme() => Theme.of(tester.element(find.byType(Scaffold).first)); + expect(theme().scaffoldBackgroundColor, Colors.black); + tester.platformDispatcher.platformBrightnessTestValue = Brightness.light; + await tester.pumpAndSettle(); + expect(theme().brightness, Brightness.light); + expect(theme().scaffoldBackgroundColor, isNot(Colors.black)); + await tester.runAsync(() => store.setTheme('dark')); + await tester.pumpAndSettle(); + expect(theme().scaffoldBackgroundColor, Colors.black); + }); + + testWidgets( + 'OLED can be selected in narrow settings and updates mode control', + (tester) async { + await fixtures.loadReadableFont(); + final store = (await tester.runAsync( + () => fixtures.createStore(seeded: false), + ))!; + await fixtures.boot(tester, store, const Size(320, 568)); + await fixtures.navigate(tester, 4); + final oled = find.widgetWithText(ChoiceChip, 'OLED — чёрный'); + await tester.ensureVisible(oled); + await tester.pumpAndSettle(); + await tester.tap(oled); + await tester.runAsync(() async { + await Future.delayed(const Duration(milliseconds: 50)); + }); + await tester.pumpAndSettle(); + expect(store.themePreset, 'oled'); + expect(store.theme, 'dark'); + expect( + tester.widget(find.byType(MaterialApp)).themeMode, + ThemeMode.dark, + ); + expect( + Theme.of( + tester.element(find.byType(Scaffold).first), + ).scaffoldBackgroundColor, + Colors.black, + ); + expect(tester.takeException(), isNull); + }, + ); +} diff --git a/BalanceFlutter/test/oled_preview_test.dart b/BalanceFlutter/test/oled_preview_test.dart new file mode 100644 index 0000000..2280ffd --- /dev/null +++ b/BalanceFlutter/test/oled_preview_test.dart @@ -0,0 +1,44 @@ +import 'dart:io'; +import 'dart:ui' as ui; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'widget_test.dart' as fixtures; + +void main() { + setUpAll(fixtures.loadReadableFont); + setUp(fixtures.mockStorage); + for (final size in [const Size(390, 844), const Size(1280, 900)]) { + testWidgets('OLED renders black pixels at $size', (tester) async { + final store = (await tester.runAsync(() => fixtures.createStore()))!; + await tester.runAsync(() => store.setThemePreset('oled')); + final key = GlobalKey(); + await fixtures.boot(tester, store, size, boundaryKey: key); + for (final page in [0, 4]) { + await fixtures.navigate(tester, page); + await tester.runAsync(() async { + final boundary = + key.currentContext!.findRenderObject()! as RenderRepaintBoundary; + final image = await boundary.toImage(pixelRatio: 1); + final rgba = await image.toByteData( + format: ui.ImageByteFormat.rawRgba, + ); + // Left edge of the scaffold/rail below the app bar, away from text. + final pixel = (110 * image.width) * 4; + expect(rgba!.getUint8(pixel), 0); + expect(rgba.getUint8(pixel + 1), 0); + expect(rgba.getUint8(pixel + 2), 0); + expect(rgba.getUint8(pixel + 3), 255); + final png = await image.toByteData(format: ui.ImageByteFormat.png); + final dir = Directory('/tmp/balance-oled-preview') + ..createSync(recursive: true); + File( + '${dir.path}/${size.width.toInt()}-${page == 0 ? 'overview' : 'settings'}.png', + ).writeAsBytesSync(png!.buffer.asUint8List()); + image.dispose(); + }); + expect(tester.takeException(), isNull); + } + }); + } +}