From e1920174118e039cfa39d6dea9ec7f825fb7fb90 Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Mon, 27 Apr 2026 19:01:27 -0400 Subject: [PATCH 1/7] feat: add media contribution site awards --- app/Api/V2/UserAwards/UserAwardKind.php | 3 + app/Api/V2/UserAwards/UserAwardPresenter.php | 6 + app/Community/Enums/AwardType.php | 6 + app/Helpers/render/site-award.php | 15 ++ app/Models/PlayerBadge.php | 12 ++ .../Actions/ApproveGameScreenshotAction.php | 50 +++++++ public/assets/images/badge/README.md | 8 ++ public/assets/images/badge/mediaContrib-0.png | Bin 0 -> 7008 bytes public/assets/images/badge/mediaContrib-1.png | Bin 0 -> 23143 bytes public/assets/images/badge/mediaContrib-2.png | Bin 0 -> 16627 bytes public/assets/images/badge/mediaContrib-3.png | Bin 0 -> 21869 bytes public/assets/images/badge/mediaContrib-4.png | Bin 0 -> 17728 bytes public/assets/images/badge/mediaContrib-5.png | Bin 0 -> 18374 bytes resources/js/types/generated.d.ts | 9 +- tests/Feature/Api/V2/UserAwardsTest.php | 67 +++++++++ .../ApproveGameScreenshotActionTest.php | 129 +++++++++++++++++- 16 files changed, 301 insertions(+), 4 deletions(-) create mode 100644 public/assets/images/badge/README.md create mode 100644 public/assets/images/badge/mediaContrib-0.png create mode 100644 public/assets/images/badge/mediaContrib-1.png create mode 100644 public/assets/images/badge/mediaContrib-2.png create mode 100644 public/assets/images/badge/mediaContrib-3.png create mode 100644 public/assets/images/badge/mediaContrib-4.png create mode 100644 public/assets/images/badge/mediaContrib-5.png diff --git a/app/Api/V2/UserAwards/UserAwardKind.php b/app/Api/V2/UserAwards/UserAwardKind.php index 40e0dc54b7..2796d24fe7 100644 --- a/app/Api/V2/UserAwards/UserAwardKind.php +++ b/app/Api/V2/UserAwards/UserAwardKind.php @@ -19,6 +19,7 @@ enum UserAwardKind: string case Completed = 'completed'; case Event = 'event'; case Mastered = 'mastered'; + case MediaContribution = 'media-contribution'; case PatreonSupporter = 'patreon-supporter'; case Playtest = 'playtest'; @@ -33,6 +34,7 @@ public static function fromAward(PlayerBadge $award): self AwardType::AchievementPointsYield => self::AchievementPointsYield, AwardType::PatreonSupporter => self::PatreonSupporter, AwardType::CertifiedLegend => self::CertifiedLegend, + AwardType::MediaContribution => self::MediaContribution, }; } @@ -53,6 +55,7 @@ public function apply(Builder $query): Builder self::AchievementPointsYield => $query->where('award_type', AwardType::AchievementPointsYield), self::PatreonSupporter => $query->where('award_type', AwardType::PatreonSupporter), self::CertifiedLegend => $query->where('award_type', AwardType::CertifiedLegend), + self::MediaContribution => $query->where('award_type', AwardType::MediaContribution), }; } diff --git a/app/Api/V2/UserAwards/UserAwardPresenter.php b/app/Api/V2/UserAwards/UserAwardPresenter.php index 9ce9eedfdc..84ada56868 100644 --- a/app/Api/V2/UserAwards/UserAwardPresenter.php +++ b/app/Api/V2/UserAwards/UserAwardPresenter.php @@ -35,6 +35,7 @@ public function title(): ?string AwardType::AchievementPointsYield => 'Achievement Points Earned by Others', AwardType::PatreonSupporter => 'Patreon Supporter', AwardType::CertifiedLegend => 'Certified Legend', + AwardType::MediaContribution => 'Media Contribution', }; } @@ -52,6 +53,7 @@ public function badgeUrl(): ?string AwardType::AchievementPointsYield => asset("/assets/images/badge/contribPoints-{$this->award->award_key}.png"), AwardType::PatreonSupporter => asset('/assets/images/badge/patreon.png'), AwardType::CertifiedLegend => asset('/assets/images/badge/legend.png'), + AwardType::MediaContribution => asset("/assets/images/badge/mediaContrib-{$this->award->award_key}.png"), }; } @@ -75,6 +77,10 @@ public function context(): array 'tier' => $this->award->award_key, 'threshold' => PlayerBadge::getBadgeThreshold($this->award->award_type, $this->award->award_key), ], + AwardType::MediaContribution => [ + 'tier' => $this->award->award_key, + 'threshold' => PlayerBadge::getBadgeThreshold($this->award->award_type, $this->award->award_key), + ], AwardType::PatreonSupporter, AwardType::CertifiedLegend => [ 'siteAwardType' => $this->award->award_type->value, ], diff --git a/app/Community/Enums/AwardType.php b/app/Community/Enums/AwardType.php index 79bea2da11..533de49f58 100644 --- a/app/Community/Enums/AwardType.php +++ b/app/Community/Enums/AwardType.php @@ -27,6 +27,8 @@ enum AwardType: string case Playtest = 'playtest'; + case MediaContribution = 'media_contribution'; + /** * Returns all standard award type cases, excluding Event. * Event is excluded because it's handled specially and shouldn't @@ -41,6 +43,7 @@ public static function standardCases(): array self::PatreonSupporter, self::CertifiedLegend, self::GameBeaten, + self::MediaContribution, ]; } @@ -68,6 +71,7 @@ public function label(): string self::GameBeaten => 'Game Beaten', self::Event => 'Event', self::Playtest => 'Playtest', + self::MediaContribution => 'Media Contribution', }; } @@ -87,6 +91,7 @@ public function toLegacyInteger(): int self::GameBeaten => 8, self::Event => 9, self::Playtest => 10, + self::MediaContribution => 11, }; } @@ -105,6 +110,7 @@ public static function fromLegacyInteger(int $value): self 8 => self::GameBeaten, 9 => self::Event, 10 => self::Playtest, + 11 => self::MediaContribution, default => throw new InvalidArgumentException("Invalid legacy AwardType value: {$value}"), }; } diff --git a/app/Helpers/render/site-award.php b/app/Helpers/render/site-award.php index 37b9a759c2..31d2c08aa9 100644 --- a/app/Helpers/render/site-award.php +++ b/app/Helpers/render/site-award.php @@ -349,6 +349,19 @@ function RenderAward( $imagepath = asset('/assets/images/badge/patreon.png'); $imgclass = 'goldimage'; $linkdest = route('patreon-supporter.index'); + } elseif ($awardTypeEnum === AwardType::MediaContribution) { + $threshold = PlayerBadge::getBadgeThreshold($awardTypeEnum, $awardData); + echo avatar("mediaContributionAward", $awardData, + tooltip: "", + iconUrl: asset("/assets/images/badge/mediaContrib-$awardData.png"), + iconSize: $imageSize, + iconClass: 'goldimage', + context: $ownerUsername, + altText: 'Media Contribution', + hasLink: false, + ); + + return; } elseif ($awardTypeEnum === AwardType::CertifiedLegend) { $tooltip = 'Specially Awarded to a Certified RetroAchievements Legend'; $imagepath = asset('/assets/images/badge/legend.png'); @@ -440,6 +453,8 @@ function RenderAwardOrderTable( $awardTitle = "Achievement Points Earned by Others"; } elseif ($awardTypeEnum === AwardType::PatreonSupporter) { $awardTitle = "Patreon Supporter"; + } elseif ($awardTypeEnum === AwardType::MediaContribution) { + $awardTitle = "Media Contribution"; } elseif ($awardTypeEnum === AwardType::CertifiedLegend) { $awardTitle = "Certified Legend"; } diff --git a/app/Models/PlayerBadge.php b/app/Models/PlayerBadge.php index b37c2826cf..6a9bc9b682 100644 --- a/app/Models/PlayerBadge.php +++ b/app/Models/PlayerBadge.php @@ -79,11 +79,21 @@ class PlayerBadge extends BaseModel 50_000_000, ]; + private const MEDIA_CONTRIBUTION_BOUNDARIES = [ + 2, + 10, + 100, + 500, + 1000, + 5000, + ]; + private static function getThresholds(AwardType $awardType): ?array { return match ($awardType) { AwardType::AchievementUnlocksYield => self::DEVELOPER_COUNT_BOUNDARIES, AwardType::AchievementPointsYield => self::DEVELOPER_POINT_BOUNDARIES, + AwardType::MediaContribution => self::MEDIA_CONTRIBUTION_BOUNDARIES, default => null, }; } @@ -199,6 +209,7 @@ public function isCountedAsSiteAward(): bool AwardType::PatreonSupporter, AwardType::CertifiedLegend, AwardType::Playtest, + AwardType::MediaContribution, ], true); } @@ -286,6 +297,7 @@ public function scopeCanonicalForApiUser(Builder $query, int $userId): Builder AwardType::AchievementPointsYield->value, AwardType::PatreonSupporter->value, AwardType::CertifiedLegend->value, + AwardType::MediaContribution->value, ]; $gameTypes = AwardType::gameValues(); diff --git a/app/Platform/Actions/ApproveGameScreenshotAction.php b/app/Platform/Actions/ApproveGameScreenshotAction.php index d2bba4b58b..64ae807e11 100644 --- a/app/Platform/Actions/ApproveGameScreenshotAction.php +++ b/app/Platform/Actions/ApproveGameScreenshotAction.php @@ -4,12 +4,15 @@ namespace App\Platform\Actions; +use App\Community\Enums\AwardType; use App\Community\Enums\SubscriptionSubjectType; use App\Models\GameScreenshot; +use App\Models\PlayerBadge; use App\Models\User; use App\Models\UserDelayedSubscription; use App\Platform\Enums\GameScreenshotStatus; use App\Platform\Enums\ScreenshotType; +use App\Platform\Events\SiteBadgeAwarded; use App\Platform\Services\ScreenshotResolutionService; use App\Support\Media\CreateLegacyScreenshotPngAction; use Illuminate\Support\Facades\Storage; @@ -120,6 +123,8 @@ public function execute(GameScreenshot $screenshot, User $reviewer): void $screenshot->reviewed_at = now(); $screenshot->save(); + $this->awardMediaContributionBadgeIfEligible($screenshot); + if ( $screenshot->captured_by_user_id && $screenshot->captured_by_user_id !== $reviewer->id @@ -137,6 +142,51 @@ public function execute(GameScreenshot $screenshot, User $reviewer): void } } + private function awardMediaContributionBadgeIfEligible(GameScreenshot $screenshot): void + { + if (!$screenshot->captured_by_user_id) { + return; + } + + $submitter = User::find($screenshot->captured_by_user_id); + if (!$submitter) { + return; + } + + $approvedCount = GameScreenshot::query() + ->where('captured_by_user_id', $submitter->id) + ->approved() + ->count(); + + $tier = PlayerBadge::getNewBadgeTier(AwardType::MediaContribution, 0, $approvedCount); + if ($tier === null) { + return; + } + + $existingBadge = PlayerBadge::query() + ->where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->orderByDesc('award_key') + ->first(); + + if ($existingBadge && $existingBadge->award_key >= $tier) { + return; + } + + $displayOrder = $existingBadge + ? $existingBadge->order_column + : PlayerBadge::getNextDisplayOrder($submitter); + + $badge = AddSiteAward( + user: $submitter, + awardType: AwardType::MediaContribution, + data: $tier, + displayOrder: $displayOrder, + ); + + SiteBadgeAwarded::dispatch($badge); + } + private function ensureLegacyPng(GameScreenshot $screenshot): void { $media = $screenshot->media; diff --git a/public/assets/images/badge/README.md b/public/assets/images/badge/README.md new file mode 100644 index 0000000000..1b59b498b0 --- /dev/null +++ b/public/assets/images/badge/README.md @@ -0,0 +1,8 @@ +Credits: + +mediaContrib-0.png - https://retroachievements.org/user/Cruzelion +mediaContrib-1.png - https://retroachievements.org/user/Cruzelion +mediaContrib-2.png - https://retroachievements.org/user/Cruzelion +mediaContrib-3.png - https://retroachievements.org/user/Cruzelion +mediaContrib-4.png - https://retroachievements.org/user/salvadorbastard +mediaContrib-5.png - https://retroachievements.org/user/Gollawiz diff --git a/public/assets/images/badge/mediaContrib-0.png b/public/assets/images/badge/mediaContrib-0.png new file mode 100644 index 0000000000000000000000000000000000000000..7a7a5195f71c51bb99bedcf7743c7681889847eb GIT binary patch literal 7008 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 SYR=jK0000{WxG-&Fb{MmKA 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

`JaFDeSYod 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/badge/mediaContrib-4.png b/public/assets/images/badge/mediaContrib-4.png new file mode 100644 index 0000000000000000000000000000000000000000..aa741f82d02d5709d0068f764ec79340dc707e59 GIT binary patch literal 17728 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 RWIg}@002ovPDHLkV1l#4A$|Y= literal 0 HcmV?d00001 diff --git a/public/assets/images/badge/mediaContrib-5.png b/public/assets/images/badge/mediaContrib-5.png new file mode 100644 index 0000000000000000000000000000000000000000..62a9a0828c6226a054d7fb19b857c85264a91f14 GIT binary patch literal 18374 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 literal 0 HcmV?d00001 diff --git a/resources/js/types/generated.d.ts b/resources/js/types/generated.d.ts index 69aae1c5a8..706a8c92c6 100644 --- a/resources/js/types/generated.d.ts +++ b/resources/js/types/generated.d.ts @@ -1,3 +1,6 @@ +declare namespace App.Api.V2.UserAwards { +export type UserAwardKind = 'achievement-points-yield' | 'achievement-unlocks-yield' | 'beaten-hardcore' | 'beaten-softcore' | 'certified-legend' | 'completed' | 'event' | 'mastered' | 'media-contribution' | 'patreon-supporter' | 'playtest'; +} declare namespace App.Community.Data { export type AchievementChecklistGroup = { header: string; @@ -186,7 +189,7 @@ requestedUsername: string | null; }; } declare namespace App.Community.Enums { -export type AwardType = 'mastery' | 'achievement_unlocks_yield' | 'achievement_points_yield' | 'patreon_supporter' | 'certified_legend' | 'game_beaten' | 'event' | 'playtest'; +export type AwardType = 'mastery' | 'achievement_unlocks_yield' | 'achievement_points_yield' | 'patreon_supporter' | 'certified_legend' | 'game_beaten' | 'event' | 'playtest' | 'media_contribution'; export type ClaimSetType = 'new_set' | 'revision'; export type ClaimSpecial = 'none' | 'own_revision' | 'free_rollout' | 'scheduled_release'; export type ClaimStatus = 'active' | 'complete' | 'dropped' | 'in_review'; @@ -640,9 +643,9 @@ systems?: Array | null; }; export type EmulatorDownload = { id: number; -platformId: number; label: string | null; url: string; +platformId: number; }; export type EventAchievement = { achievement?: App.Platform.Data.Achievement; @@ -700,10 +703,10 @@ export type GameAchievementSet = { id: number; type: App.Platform.Enums.AchievementSetType; title: string | null; -orderColumn: number; createdAt: string | null; updatedAt: string | null; achievementSet: App.Platform.Data.AchievementSet; +orderColumn: number; }; export type GameClaimant = { user: App.Data.User; diff --git a/tests/Feature/Api/V2/UserAwardsTest.php b/tests/Feature/Api/V2/UserAwardsTest.php index fed6377343..559f3e6623 100644 --- a/tests/Feature/Api/V2/UserAwardsTest.php +++ b/tests/Feature/Api/V2/UserAwardsTest.php @@ -501,6 +501,38 @@ public function testItUsesTheSiteAwardLabelAsThePlaytestTitle(): void $this->assertEquals($siteAward->id, $response->json('data.0.attributes.context.siteAwardId')); } + public function testItExposesMediaContributionAwards(): void + { + // Arrange + User::factory()->create(['web_api_key' => 'test-key']); + $player = User::factory()->create(); + + PlayerBadge::factory()->create([ + 'user_id' => $player->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 2, + 'award_tier' => 0, + 'order_column' => 0, + ]); + + // Act + $response = $this->jsonApi('v2') + ->expects('user-awards') + ->withHeader('X-API-Key', 'test-key') + ->get("/api/v2/users/{$player->ulid}/awards?filter[kind]=media-contribution"); + + // Assert + $response->assertSuccessful(); + + $this->assertCount(1, $response->json('data')); + $this->assertEquals('media-contribution', $response->json('data.0.attributes.kind')); + $this->assertEquals('Media Contribution', $response->json('data.0.attributes.title')); + $this->assertStringEndsWith('/assets/images/badge/mediaContrib-2.png', $response->json('data.0.attributes.badgeUrl')); + $this->assertEquals(2, $response->json('data.0.attributes.context.tier')); + $this->assertEquals(100, $response->json('data.0.attributes.context.threshold')); + $this->assertEquals(1, $response->json('meta.siteAwardsCount')); + } + public function testItCanSortByAwardedAtDescending(): void { // Arrange @@ -813,6 +845,41 @@ public function testItCollapsesDeveloperYieldAwardsToTheHighestTier(): void $this->assertEquals(1, $response->json('meta.totalAwardsCount')); } + public function testItCollapsesMediaContributionAwardsToTheHighestTier(): void + { + // Arrange + User::factory()->create(['web_api_key' => 'test-key']); + $player = User::factory()->create(); + + PlayerBadge::factory()->create([ + 'user_id' => $player->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 1, + 'order_column' => 0, + ]); + PlayerBadge::factory()->create([ + 'user_id' => $player->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 2, + 'order_column' => 0, + ]); + + // Act + $response = $this->jsonApi('v2') + ->expects('user-awards') + ->withHeader('X-API-Key', 'test-key') + ->get("/api/v2/users/{$player->ulid}/awards"); + + // Assert + $response->assertSuccessful(); + + $this->assertCount(1, $response->json('data')); + $this->assertEquals('media-contribution', $response->json('data.0.attributes.kind')); + $this->assertEquals(2, $response->json('data.0.attributes.context.tier')); + $this->assertEquals(1, $response->json('meta.totalAwardsCount')); + $this->assertEquals(1, $response->json('meta.siteAwardsCount')); + } + public function testItPaginatesBy50ByDefault(): void { // Arrange diff --git a/tests/Feature/Platform/Actions/ApproveGameScreenshotActionTest.php b/tests/Feature/Platform/Actions/ApproveGameScreenshotActionTest.php index 7ae8493b8a..20f49a48cb 100644 --- a/tests/Feature/Platform/Actions/ApproveGameScreenshotActionTest.php +++ b/tests/Feature/Platform/Actions/ApproveGameScreenshotActionTest.php @@ -2,9 +2,11 @@ declare(strict_types=1); +use App\Community\Enums\AwardType; use App\Community\Enums\SubscriptionSubjectType; use App\Models\Game; use App\Models\GameScreenshot; +use App\Models\PlayerBadge; use App\Models\System; use App\Models\User; use App\Models\UserDelayedSubscription; @@ -12,8 +14,10 @@ use App\Platform\Actions\SubmitPendingGameScreenshotAction; use App\Platform\Enums\GameScreenshotStatus; use App\Platform\Enums\ScreenshotType; +use App\Platform\Events\SiteBadgeAwarded; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Http\UploadedFile; +use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Storage; use Illuminate\Validation\ValidationException; use Spatie\MediaLibrary\Conversions\FileManipulator; @@ -108,7 +112,7 @@ function createPendingScreenshotForApprovalTest( expect($delayedSubscription->subject_id)->toEqual($fresh->id); expect($delayedSubscription->first_update_id)->toEqual($fresh->id); - expect(App\Models\PlayerBadge::count())->toEqual(0); + expect(PlayerBadge::count())->toEqual(0); }); it('does not notify the submitter when they approve their own screenshot', function () { @@ -133,6 +137,129 @@ function createPendingScreenshotForApprovalTest( expect(UserDelayedSubscription::count())->toEqual(0); }); +it('awards a media contribution badge when approval crosses a screenshot threshold', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + GameScreenshot::factory()->for($game)->ingame()->primary()->create([ + 'order_column' => 1, + ]); + GameScreenshot::factory()->for($game)->ingame()->create([ + 'captured_by_user_id' => $submitter->id, + 'status' => GameScreenshotStatus::Approved, + ]); + + $pending = createPendingScreenshotForApprovalTest($game, $submitter, ScreenshotType::Ingame); + + $fileManipulator = new ApproveGameScreenshotActionTestFileManipulator(); + app()->instance(FileManipulator::class, $fileManipulator); + + Event::fake(); + + // ACT + (new ApproveGameScreenshotAction())->execute($pending, $reviewer); + + // ASSERT + $badge = PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->sole(); + + expect($badge->award_key)->toEqual(0); + expect($badge->award_tier)->toEqual(0); + + Event::assertDispatched( + SiteBadgeAwarded::class, + fn (SiteBadgeAwarded $event) => $event->playerBadge->is($badge), + ); +}); + +it('does not duplicate an existing media contribution badge tier', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + GameScreenshot::factory()->for($game)->ingame()->primary()->create([ + 'order_column' => 1, + ]); + GameScreenshot::factory()->count(2)->for($game)->ingame()->create([ + 'captured_by_user_id' => $submitter->id, + 'status' => GameScreenshotStatus::Approved, + ]); + PlayerBadge::factory()->create([ + 'user_id' => $submitter->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 0, + 'award_tier' => 0, + 'order_column' => 7, + ]); + + $pending = createPendingScreenshotForApprovalTest($game, $submitter, ScreenshotType::Ingame); + + $fileManipulator = new ApproveGameScreenshotActionTestFileManipulator(); + app()->instance(FileManipulator::class, $fileManipulator); + + Event::fake(); + + // ACT + (new ApproveGameScreenshotAction())->execute($pending, $reviewer); + + // ASSERT + expect(PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->count())->toEqual(1); + + Event::assertNotDispatched(SiteBadgeAwarded::class); +}); + +it('awards the next media contribution badge tier when approval crosses a higher threshold', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + GameScreenshot::factory()->for($game)->ingame()->primary()->create([ + 'order_column' => 1, + ]); + GameScreenshot::factory()->count(9)->for($game)->ingame()->create([ + 'captured_by_user_id' => $submitter->id, + 'status' => GameScreenshotStatus::Approved, + ]); + PlayerBadge::factory()->create([ + 'user_id' => $submitter->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 0, + 'award_tier' => 0, + 'order_column' => 7, + ]); + + $pending = createPendingScreenshotForApprovalTest($game, $submitter, ScreenshotType::Ingame); + + $fileManipulator = new ApproveGameScreenshotActionTestFileManipulator(); + app()->instance(FileManipulator::class, $fileManipulator); + + Event::fake(); + + // ACT + (new ApproveGameScreenshotAction())->execute($pending, $reviewer); + + // ASSERT + $badge = PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->where('award_key', 1) + ->sole(); + + expect($badge->award_tier)->toEqual(0); + expect($badge->order_column)->toEqual(7); + + Event::assertDispatched( + SiteBadgeAwarded::class, + fn (SiteBadgeAwarded $event) => $event->playerBadge->is($badge), + ); +}); + it('replaces the existing approved title screenshot when a new one is approved', function () { // ARRANGE $game = Game::factory()->create(['system_id' => System::factory()]); From bebc2ae242dd69277edca0d88ea04bf16ac926e8 Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Mon, 27 Apr 2026 19:05:50 -0400 Subject: [PATCH 2/7] chore: swap tiers --- public/assets/images/badge/mediaContrib-1.png | Bin 23143 -> 21869 bytes public/assets/images/badge/mediaContrib-2.png | Bin 16627 -> 23143 bytes public/assets/images/badge/mediaContrib-3.png | Bin 21869 -> 16627 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/public/assets/images/badge/mediaContrib-1.png b/public/assets/images/badge/mediaContrib-1.png index 39ba0fcc63e2359af996809e2e144e71373ab5f5..ceed99cac0dfd4f47fd78ba7ead3f5748b7d686a 100644 GIT binary patch literal 21869 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

`JaFDeSYod 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 From 7585ea4181d7de038db6e1821f0b025f101083ad Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Mon, 27 Apr 2026 22:02:56 -0400 Subject: [PATCH 3/7] feat: only consider community contributions --- .../Actions/CreateGameClaimAction.php | 3 + app/Community/Actions/DropGameClaimAction.php | 2 + .../Actions/UpdateGameClaimAction.php | 5 + .../GameScreenshotModerationResource.php | 4 + app/Models/GameScreenshot.php | 24 + .../Actions/ApproveGameScreenshotAction.php | 50 --- ...ediaContributionBadgeEligibilityAction.php | 68 +++ app/Platform/EventServiceProvider.php | 4 + ...idateMediaContributionBadgeEligibility.php | 39 ++ .../ApproveGameScreenshotActionTest.php | 95 +--- ...ContributionBadgeEligibilityActionTest.php | 420 ++++++++++++++++++ 11 files changed, 571 insertions(+), 143 deletions(-) create mode 100644 app/Platform/Actions/RevalidateMediaContributionBadgeEligibilityAction.php create mode 100644 app/Platform/Listeners/RevalidateMediaContributionBadgeEligibility.php create mode 100644 tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php diff --git a/app/Community/Actions/CreateGameClaimAction.php b/app/Community/Actions/CreateGameClaimAction.php index 704f33d9ed..1a6201642e 100644 --- a/app/Community/Actions/CreateGameClaimAction.php +++ b/app/Community/Actions/CreateGameClaimAction.php @@ -15,6 +15,7 @@ use App\Models\Game; use App\Models\Ticket; use App\Models\User; +use App\Platform\Actions\RevalidateMediaContributionBadgeEligibilityAction; use App\Support\Alerts\ClaimWithUnresolvedTicketsAlert; use App\Support\Cache\CacheKey; use Carbon\Carbon; @@ -67,6 +68,8 @@ public function execute(Game $game, ?User $currentUser = null): AchievementSetCl 'finished_at' => $expiresAt, ]); + (new RevalidateMediaContributionBadgeEligibilityAction())->execute($currentUser); + Cache::forget(CacheKey::buildUserExpiringClaimsCacheKey($currentUser->username)); addArticleComment("Server", CommentableType::SetClaim, $game->id, diff --git a/app/Community/Actions/DropGameClaimAction.php b/app/Community/Actions/DropGameClaimAction.php index b6501fb27f..34907c1d60 100644 --- a/app/Community/Actions/DropGameClaimAction.php +++ b/app/Community/Actions/DropGameClaimAction.php @@ -9,6 +9,7 @@ use App\Community\Enums\CommentableType; use App\Models\AchievementSetClaim; use App\Models\User; +use App\Platform\Actions\RevalidateMediaContributionBadgeEligibilityAction; use App\Support\Cache\CacheKey; use Carbon\Carbon; use GuzzleHttp\Client; @@ -25,6 +26,7 @@ public function execute(AchievementSetClaim $claim, User $actingUser): void $claim->save(); Cache::forget(CacheKey::buildUserExpiringClaimsCacheKey($claim->user->username)); + (new RevalidateMediaContributionBadgeEligibilityAction())->execute($claim->user); // If the primary claim was dropped and there's a collaboration claim, promote it to primary. $firstCollabClaim = ($claim->claim_type === ClaimType::Primary) ? diff --git a/app/Community/Actions/UpdateGameClaimAction.php b/app/Community/Actions/UpdateGameClaimAction.php index d6887847ad..7c21074f0a 100644 --- a/app/Community/Actions/UpdateGameClaimAction.php +++ b/app/Community/Actions/UpdateGameClaimAction.php @@ -18,6 +18,7 @@ use App\Models\UserGameListEntry; use App\Notifications\Achievement\SetAchievementsPublishedNotification; use App\Notifications\Achievement\SetRevisionNotification; +use App\Platform\Actions\RevalidateMediaContributionBadgeEligibilityAction; use Carbon\Carbon; use GuzzleHttp\Client; use Illuminate\Support\Facades\Auth; @@ -96,6 +97,10 @@ public function execute(AchievementSetClaim $claim, array $newValues): void if ($claim->isDirty()) { $claim->save(); + if ($claim->wasChanged('status')) { + (new RevalidateMediaContributionBadgeEligibilityAction())->execute($claim->user); + } + addArticleComment("Server", CommentableType::SetClaim, $claim->game_id, $auditMessage); } } diff --git a/app/Filament/Resources/GameScreenshotModerationResource.php b/app/Filament/Resources/GameScreenshotModerationResource.php index a3c58e9b14..750e634288 100644 --- a/app/Filament/Resources/GameScreenshotModerationResource.php +++ b/app/Filament/Resources/GameScreenshotModerationResource.php @@ -10,6 +10,7 @@ use App\Models\User; use App\Platform\Actions\ApproveGameScreenshotAction; use App\Platform\Actions\RejectGameScreenshotAction; +use App\Platform\Actions\RevalidateMediaContributionBadgeEligibilityAction; use App\Platform\Enums\GameScreenshotRejectionReason; use App\Platform\Enums\GameScreenshotStatus; use App\Platform\Enums\ScreenshotType; @@ -214,6 +215,9 @@ public static function table(Table $table): Table ->action(function (GameScreenshot $record) use ($user) { try { (new ApproveGameScreenshotAction())->execute($record, $user); + if ($record->capturedBy) { + (new RevalidateMediaContributionBadgeEligibilityAction())->execute($record->capturedBy); + } Notification::make() ->success() diff --git a/app/Models/GameScreenshot.php b/app/Models/GameScreenshot.php index a58db8bc63..2958299e2d 100644 --- a/app/Models/GameScreenshot.php +++ b/app/Models/GameScreenshot.php @@ -4,6 +4,7 @@ namespace App\Models; +use App\Community\Enums\ClaimStatus; use App\Platform\Enums\GameScreenshotRejectionReason; use App\Platform\Enums\GameScreenshotStatus; use App\Platform\Enums\ScreenshotType; @@ -153,6 +154,29 @@ public function scopePrimary(Builder $query): Builder return $query->where('is_primary', true); } + /** + * Grab screenshots that currently count toward a user's media contribution badge. + * + * @param Builder $query + * @return Builder + */ + public function scopeEligibleForMediaContributionBy(Builder $query, User $user): Builder + { + return $query->approved() + ->where('captured_by_user_id', $user->id) + ->whereColumn('captured_by_user_id', '!=', 'reviewed_by_user_id') + ->whereDoesntHave('game.achievements', function (Builder $query) use ($user) { + /** @var Builder $query */ + $query->withTrashed()->where('user_id', $user->id); + }) + ->whereDoesntHave('game.achievementSetClaims', function (Builder $query) use ($user) { + /** @var Builder $query */ + $query + ->where('user_id', $user->id) + ->where('status', '!=', ClaimStatus::Dropped); + }); + } + /** * This is separate, but complementary, to GameScreenshotPolicy * stuff because we actually need to filter a query by these values. diff --git a/app/Platform/Actions/ApproveGameScreenshotAction.php b/app/Platform/Actions/ApproveGameScreenshotAction.php index 64ae807e11..d2bba4b58b 100644 --- a/app/Platform/Actions/ApproveGameScreenshotAction.php +++ b/app/Platform/Actions/ApproveGameScreenshotAction.php @@ -4,15 +4,12 @@ namespace App\Platform\Actions; -use App\Community\Enums\AwardType; use App\Community\Enums\SubscriptionSubjectType; use App\Models\GameScreenshot; -use App\Models\PlayerBadge; use App\Models\User; use App\Models\UserDelayedSubscription; use App\Platform\Enums\GameScreenshotStatus; use App\Platform\Enums\ScreenshotType; -use App\Platform\Events\SiteBadgeAwarded; use App\Platform\Services\ScreenshotResolutionService; use App\Support\Media\CreateLegacyScreenshotPngAction; use Illuminate\Support\Facades\Storage; @@ -123,8 +120,6 @@ public function execute(GameScreenshot $screenshot, User $reviewer): void $screenshot->reviewed_at = now(); $screenshot->save(); - $this->awardMediaContributionBadgeIfEligible($screenshot); - if ( $screenshot->captured_by_user_id && $screenshot->captured_by_user_id !== $reviewer->id @@ -142,51 +137,6 @@ public function execute(GameScreenshot $screenshot, User $reviewer): void } } - private function awardMediaContributionBadgeIfEligible(GameScreenshot $screenshot): void - { - if (!$screenshot->captured_by_user_id) { - return; - } - - $submitter = User::find($screenshot->captured_by_user_id); - if (!$submitter) { - return; - } - - $approvedCount = GameScreenshot::query() - ->where('captured_by_user_id', $submitter->id) - ->approved() - ->count(); - - $tier = PlayerBadge::getNewBadgeTier(AwardType::MediaContribution, 0, $approvedCount); - if ($tier === null) { - return; - } - - $existingBadge = PlayerBadge::query() - ->where('user_id', $submitter->id) - ->where('award_type', AwardType::MediaContribution) - ->orderByDesc('award_key') - ->first(); - - if ($existingBadge && $existingBadge->award_key >= $tier) { - return; - } - - $displayOrder = $existingBadge - ? $existingBadge->order_column - : PlayerBadge::getNextDisplayOrder($submitter); - - $badge = AddSiteAward( - user: $submitter, - awardType: AwardType::MediaContribution, - data: $tier, - displayOrder: $displayOrder, - ); - - SiteBadgeAwarded::dispatch($badge); - } - private function ensureLegacyPng(GameScreenshot $screenshot): void { $media = $screenshot->media; diff --git a/app/Platform/Actions/RevalidateMediaContributionBadgeEligibilityAction.php b/app/Platform/Actions/RevalidateMediaContributionBadgeEligibilityAction.php new file mode 100644 index 0000000000..830d9512c6 --- /dev/null +++ b/app/Platform/Actions/RevalidateMediaContributionBadgeEligibilityAction.php @@ -0,0 +1,68 @@ +eligibleForMediaContributionBy($user) + ->count(); + $expectedTier = PlayerBadge::getNewBadgeTier(AwardType::MediaContribution, 0, $eligibleCount); + + $existingBadges = $user->playerBadges() + ->where('award_type', AwardType::MediaContribution) + ->orderByDesc('award_key') + ->get(); + + if ($expectedTier === null) { + // Media contribution badges represent current community screenshot credit. + // If later dev activity makes those screenshots ineligible, remove the badge. + if ($existingBadges->isNotEmpty()) { + PlayerBadge::whereKey($existingBadges->modelKeys())->delete(); + } + + return null; + } + + $previousHighestBadge = $existingBadges->first(); + + // If only some screenshots stopped counting, keep the earned tier that still + // matches current eligibility and remove any higher tiers. + $tooHighIds = $existingBadges + ->where('award_key', '>', $expectedTier) + ->modelKeys(); + if ($tooHighIds) { + PlayerBadge::whereKey($tooHighIds)->delete(); + } + + $expectedBadge = $existingBadges->first( + fn (PlayerBadge $badge) => $badge->award_key === $expectedTier && $badge->award_tier === 0, + ); + if ($expectedBadge) { + return $expectedBadge; + } + + $newBadge = AddSiteAward( + user: $user, + awardType: AwardType::MediaContribution, + data: $expectedTier, + displayOrder: $previousHighestBadge?->order_column ?? PlayerBadge::getNextDisplayOrder($user), + ); + + if ($previousHighestBadge === null || $newBadge->award_key > $previousHighestBadge->award_key) { + SiteBadgeAwarded::dispatch($newBadge); + } + + return $newBadge; + } +} diff --git a/app/Platform/EventServiceProvider.php b/app/Platform/EventServiceProvider.php index 4e3a94de15..ac2cf27b47 100755 --- a/app/Platform/EventServiceProvider.php +++ b/app/Platform/EventServiceProvider.php @@ -43,6 +43,7 @@ use App\Platform\Listeners\RecalculateLeaderboardTopEntriesForUser; use App\Platform\Listeners\ResetPlayerProgress; use App\Platform\Listeners\ResumePlayerSession; +use App\Platform\Listeners\RevalidateMediaContributionBadgeEligibility; use App\Platform\Listeners\UpdateAuthorYieldUnlocksForUser; use App\Platform\Listeners\UpdateTotalGamesCount; use App\Platform\Observers\GameScreenshotObserver; @@ -56,6 +57,7 @@ class EventServiceProvider extends ServiceProvider protected $listen = [ AchievementCreated::class => [ DispatchUpdateGameMetricsJob::class, // dispatches GameMetricsUpdated + RevalidateMediaContributionBadgeEligibility::class, ], AchievementDeleted::class => [ DispatchUpdateGameMetricsJob::class, // dispatches GameMetricsUpdated @@ -63,11 +65,13 @@ class EventServiceProvider extends ServiceProvider AchievementMoved::class => [ DispatchUpdateGamePlayerCountJob::class, DispatchUpdateGameMetricsJob::class, // dispatches GameMetricsUpdated + RevalidateMediaContributionBadgeEligibility::class, ], AchievementPromoted::class => [ DispatchUpdateGamePlayerCountJob::class, DispatchUpdateGameMetricsJob::class, // dispatches GameMetricsUpdated DispatchUpdateDeveloperContributionYieldJob::class, // dispatches UpdateDeveloperContributionYield + RevalidateMediaContributionBadgeEligibility::class, EnsureTriggerVersionedOnPromotion::class, UpdateTotalGamesCount::class, // TODO Notify player/developer when moved to AchievementSetPublished event diff --git a/app/Platform/Listeners/RevalidateMediaContributionBadgeEligibility.php b/app/Platform/Listeners/RevalidateMediaContributionBadgeEligibility.php new file mode 100644 index 0000000000..08825009c0 --- /dev/null +++ b/app/Platform/Listeners/RevalidateMediaContributionBadgeEligibility.php @@ -0,0 +1,39 @@ +achievement->developer; + if (!$developer || $developer->trashed()) { + return; + } + + $gameIds = [$event->achievement->game_id]; + if ($event instanceof AchievementMoved) { + $gameIds[] = $event->originalGame->id; + } + + $hasScreenshotOnGame = GameScreenshot::query() + ->where('captured_by_user_id', $developer->id) + ->whereIn('game_id', array_unique($gameIds)) + ->approved() + ->exists(); + if (!$hasScreenshotOnGame) { + return; + } + + (new RevalidateMediaContributionBadgeEligibilityAction())->execute($developer); + } +} diff --git a/tests/Feature/Platform/Actions/ApproveGameScreenshotActionTest.php b/tests/Feature/Platform/Actions/ApproveGameScreenshotActionTest.php index 20f49a48cb..6d6bbccf84 100644 --- a/tests/Feature/Platform/Actions/ApproveGameScreenshotActionTest.php +++ b/tests/Feature/Platform/Actions/ApproveGameScreenshotActionTest.php @@ -137,7 +137,7 @@ function createPendingScreenshotForApprovalTest( expect(UserDelayedSubscription::count())->toEqual(0); }); -it('awards a media contribution badge when approval crosses a screenshot threshold', function () { +it('does not award media contribution badges outside the moderation resource', function () { // ARRANGE $game = Game::factory()->create(['system_id' => System::factory()]); $submitter = User::factory()->create(); @@ -161,105 +161,14 @@ function createPendingScreenshotForApprovalTest( // ACT (new ApproveGameScreenshotAction())->execute($pending, $reviewer); - // ASSERT - $badge = PlayerBadge::where('user_id', $submitter->id) - ->where('award_type', AwardType::MediaContribution) - ->sole(); - - expect($badge->award_key)->toEqual(0); - expect($badge->award_tier)->toEqual(0); - - Event::assertDispatched( - SiteBadgeAwarded::class, - fn (SiteBadgeAwarded $event) => $event->playerBadge->is($badge), - ); -}); - -it('does not duplicate an existing media contribution badge tier', function () { - // ARRANGE - $game = Game::factory()->create(['system_id' => System::factory()]); - $submitter = User::factory()->create(); - $reviewer = User::factory()->create(); - - GameScreenshot::factory()->for($game)->ingame()->primary()->create([ - 'order_column' => 1, - ]); - GameScreenshot::factory()->count(2)->for($game)->ingame()->create([ - 'captured_by_user_id' => $submitter->id, - 'status' => GameScreenshotStatus::Approved, - ]); - PlayerBadge::factory()->create([ - 'user_id' => $submitter->id, - 'award_type' => AwardType::MediaContribution, - 'award_key' => 0, - 'award_tier' => 0, - 'order_column' => 7, - ]); - - $pending = createPendingScreenshotForApprovalTest($game, $submitter, ScreenshotType::Ingame); - - $fileManipulator = new ApproveGameScreenshotActionTestFileManipulator(); - app()->instance(FileManipulator::class, $fileManipulator); - - Event::fake(); - - // ACT - (new ApproveGameScreenshotAction())->execute($pending, $reviewer); - // ASSERT expect(PlayerBadge::where('user_id', $submitter->id) ->where('award_type', AwardType::MediaContribution) - ->count())->toEqual(1); + ->count())->toEqual(0); Event::assertNotDispatched(SiteBadgeAwarded::class); }); -it('awards the next media contribution badge tier when approval crosses a higher threshold', function () { - // ARRANGE - $game = Game::factory()->create(['system_id' => System::factory()]); - $submitter = User::factory()->create(); - $reviewer = User::factory()->create(); - - GameScreenshot::factory()->for($game)->ingame()->primary()->create([ - 'order_column' => 1, - ]); - GameScreenshot::factory()->count(9)->for($game)->ingame()->create([ - 'captured_by_user_id' => $submitter->id, - 'status' => GameScreenshotStatus::Approved, - ]); - PlayerBadge::factory()->create([ - 'user_id' => $submitter->id, - 'award_type' => AwardType::MediaContribution, - 'award_key' => 0, - 'award_tier' => 0, - 'order_column' => 7, - ]); - - $pending = createPendingScreenshotForApprovalTest($game, $submitter, ScreenshotType::Ingame); - - $fileManipulator = new ApproveGameScreenshotActionTestFileManipulator(); - app()->instance(FileManipulator::class, $fileManipulator); - - Event::fake(); - - // ACT - (new ApproveGameScreenshotAction())->execute($pending, $reviewer); - - // ASSERT - $badge = PlayerBadge::where('user_id', $submitter->id) - ->where('award_type', AwardType::MediaContribution) - ->where('award_key', 1) - ->sole(); - - expect($badge->award_tier)->toEqual(0); - expect($badge->order_column)->toEqual(7); - - Event::assertDispatched( - SiteBadgeAwarded::class, - fn (SiteBadgeAwarded $event) => $event->playerBadge->is($badge), - ); -}); - it('replaces the existing approved title screenshot when a new one is approved', function () { // ARRANGE $game = Game::factory()->create(['system_id' => System::factory()]); diff --git a/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php b/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php new file mode 100644 index 0000000000..42736f0686 --- /dev/null +++ b/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php @@ -0,0 +1,420 @@ +for($game) + ->ingame() + ->create([ + 'captured_by_user_id' => $submitter->id, + 'reviewed_by_user_id' => $reviewer->id, + 'reviewed_at' => now(), + 'status' => GameScreenshotStatus::Approved, + ]); +} + +it('awards a tier 0 badge when eligible screenshots cross the first threshold', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + + Event::fake([SiteBadgeAwarded::class]); + + // ACT + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + + // ASSERT + expect($badge)->not->toBeNull(); + expect($badge->award_type)->toEqual(AwardType::MediaContribution); + expect($badge->award_key)->toEqual(0); + expect($badge->award_tier)->toEqual(0); + + Event::assertDispatched( + SiteBadgeAwarded::class, + fn (SiteBadgeAwarded $event) => $event->playerBadge->is($badge), + ); +}); + +it('excludes self-approved screenshots from the eligible count', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $submitter); + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $submitter); + + Event::fake([SiteBadgeAwarded::class]); + + // ACT + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + + // ASSERT + expect($badge)->toBeNull(); + expect( + PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->count() + )->toEqual(0); + + Event::assertNotDispatched(SiteBadgeAwarded::class); +}); + +it('excludes screenshots for games with active claims and counts those with dropped claims', function () { + // ARRANGE + $activeClaimGame = Game::factory()->create(['system_id' => System::factory()]); + $droppedClaimGame = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + AchievementSetClaim::factory()->create([ + 'game_id' => $activeClaimGame->id, + 'user_id' => $submitter->id, + ]); + AchievementSetClaim::factory()->create([ + 'game_id' => $droppedClaimGame->id, + 'user_id' => $submitter->id, + 'status' => ClaimStatus::Dropped, + ]); + + // ... the active claim game contributes a screenshot that should be ignored ... + createApprovedScreenshotForRevalidateActionTest($activeClaimGame, $submitter, $reviewer); + + // ... the dropped claim game contributes two screenshots that should still count ... + createApprovedScreenshotForRevalidateActionTest($droppedClaimGame, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($droppedClaimGame, $submitter, $reviewer); + + // ACT + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + + // ASSERT + expect($badge)->not->toBeNull(); + expect($badge->award_key)->toEqual(0); +}); + +it('removes existing badges and returns null when no screenshots are eligible', function () { + // ARRANGE + $submitter = User::factory()->create(); + + PlayerBadge::factory()->create([ + 'user_id' => $submitter->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 1, + 'award_tier' => 0, + ]); + + // ACT + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + + // ASSERT + expect($badge)->toBeNull(); + expect( + PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->count() + )->toEqual(0); +}); + +it('reuses an existing badge at the expected tier without dispatching an event', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + + $existing = PlayerBadge::factory()->create([ + 'user_id' => $submitter->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 0, + 'award_tier' => 0, + 'order_column' => 7, + ]); + + Event::fake([SiteBadgeAwarded::class]); + + // ACT + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + + // ASSERT + expect($badge->id)->toEqual($existing->id); + expect( + PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->count() + )->toEqual(1); + + Event::assertNotDispatched(SiteBadgeAwarded::class); +}); + +it('downgrades by deleting higher tiers and returning the matching lower tier', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + + PlayerBadge::factory()->create([ + 'user_id' => $submitter->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 0, + 'award_tier' => 0, + ]); + PlayerBadge::factory()->create([ + 'user_id' => $submitter->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 1, + 'award_tier' => 0, + ]); + + Event::fake([SiteBadgeAwarded::class]); + + // ACT + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + + // ASSERT + expect($badge->award_key)->toEqual(0); + expect(PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->where('award_key', 1) + ->count())->toEqual(0); + + Event::assertNotDispatched(SiteBadgeAwarded::class); +}); + +it('preserves the order_column from the previous highest tier when upgrading', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + for ($i = 0; $i < 10; $i++) { + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + } + + PlayerBadge::factory()->create([ + 'user_id' => $submitter->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 0, + 'award_tier' => 0, + 'order_column' => 7, + ]); + + Event::fake([SiteBadgeAwarded::class]); + + // ACT + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + + // ASSERT + expect($badge->award_key)->toEqual(1); + expect($badge->order_column)->toEqual(7); + + Event::assertDispatched( + SiteBadgeAwarded::class, + fn (SiteBadgeAwarded $event) => $event->playerBadge->is($badge), + ); +}); + +it('awards upgraded tiers at the time they are earned', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + for ($i = 0; $i < 10; $i++) { + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + } + + $originalAwardedAt = Carbon::parse('2025-01-15 12:00:00'); + $upgradedAt = Carbon::parse('2025-02-15 12:00:00'); + + PlayerBadge::factory()->create([ + 'user_id' => $submitter->id, + 'award_type' => AwardType::MediaContribution, + 'award_key' => 0, + 'award_tier' => 0, + 'awarded_at' => $originalAwardedAt, + 'order_column' => 7, + ]); + + Carbon::setTestNow($upgradedAt); + + // ACT + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + + // ASSERT + expect($badge->award_key)->toEqual(1); + expect($badge->order_column)->toEqual(7); + expect($badge->awarded_at->toDateTimeString())->toEqual($upgradedAt->toDateTimeString()); + expect($badge->awarded_at->toDateTimeString())->not->toEqual($originalAwardedAt->toDateTimeString()); + + Carbon::setTestNow(); +}); + +it('revalidates the badge when a game claim is created', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + expect($badge?->award_key)->toEqual(0); + + // ACT + (new CreateGameClaimAction())->execute($game, $submitter); + + // ASSERT + expect( + PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->count() + )->toEqual(0); +}); + +it('revalidates the badge when a game claim is dropped', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + $claim = AchievementSetClaim::factory()->create([ + 'game_id' => $game->id, + 'user_id' => $submitter->id, + ]); + + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + expect($badge)->toBeNull(); + + // ACT + (new DropGameClaimAction())->execute($claim, $submitter); + + // ASSERT + expect( + PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->sole() + ->award_key + )->toEqual(0); +}); + +it('revalidates the badge when a game claim status is updated to dropped', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + $claim = AchievementSetClaim::factory()->create([ + 'game_id' => $game->id, + 'user_id' => $submitter->id, + ]); + + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + expect($badge)->toBeNull(); + + // ACT + $this->actingAs($reviewer); + (new UpdateGameClaimAction())->execute($claim, ['status' => ClaimStatus::Dropped->value]); + + // ASSERT + expect( + PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->sole() + ->award_key + )->toEqual(0); +}); + +it('revalidates the badge when the submitter authors an achievement for the game', function () { + // ARRANGE + $game = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + + $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); + expect($badge?->award_key)->toEqual(0); // they have a badge from 2 screenshots + + // ACT + Achievement::factory()->for($game)->create(['user_id' => $submitter->id]); + + // ASSERT + expect( + PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->count() + )->toEqual(0); +}); + +it('revalidates the original game when an achievement moves away from submitted screenshots', function () { + // ARRANGE + $originalGame = Game::factory()->create(['system_id' => System::factory()]); + $newGame = Game::factory()->create(['system_id' => System::factory()]); + $submitter = User::factory()->create(); + $reviewer = User::factory()->create(); + + $achievement = Achievement::factory()->for($originalGame)->create(['user_id' => $submitter->id]); + + createApprovedScreenshotForRevalidateActionTest($originalGame, $submitter, $reviewer); + createApprovedScreenshotForRevalidateActionTest($originalGame, $submitter, $reviewer); + + $achievement->game_id = $newGame->id; + $achievement->saveQuietly(); + + // ACT + (new RevalidateMediaContributionBadgeEligibility())->handle( + new AchievementMoved($achievement, $originalGame), + ); + + // ASSERT + expect( + PlayerBadge::where('user_id', $submitter->id) + ->where('award_type', AwardType::MediaContribution) + ->sole() + ->award_key + )->toEqual(0); +}); From ee645a7b7d3d1b38aa8eb416a9feefb606dbeeda Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sat, 2 May 2026 12:03:27 -0400 Subject: [PATCH 4/7] fix: update tiers --- app/Models/PlayerBadge.php | 6 +-- ...ContributionBadgeEligibilityActionTest.php | 53 +++++++++---------- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/app/Models/PlayerBadge.php b/app/Models/PlayerBadge.php index 6a9bc9b682..83b1b6289d 100644 --- a/app/Models/PlayerBadge.php +++ b/app/Models/PlayerBadge.php @@ -80,12 +80,12 @@ class PlayerBadge extends BaseModel ]; private const MEDIA_CONTRIBUTION_BOUNDARIES = [ - 2, 10, + 30, 100, - 500, + 300, 1000, - 5000, + 3000, ]; private static function getThresholds(AwardType $awardType): ?array diff --git a/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php b/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php index 42736f0686..51f4a6d0ac 100644 --- a/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php +++ b/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php @@ -41,14 +41,24 @@ function createApprovedScreenshotForRevalidateActionTest( ]); } +function createApprovedScreenshotsForRevalidateActionTest( + int $count, + Game $game, + User $submitter, + User $reviewer, +): void { + for ($i = 0; $i < $count; $i++) { + createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + } +} + it('awards a tier 0 badge when eligible screenshots cross the first threshold', function () { // ARRANGE $game = Game::factory()->create(['system_id' => System::factory()]); $submitter = User::factory()->create(); $reviewer = User::factory()->create(); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(10, $game, $submitter, $reviewer); Event::fake([SiteBadgeAwarded::class]); @@ -72,8 +82,7 @@ function createApprovedScreenshotForRevalidateActionTest( $game = Game::factory()->create(['system_id' => System::factory()]); $submitter = User::factory()->create(); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $submitter); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $submitter); + createApprovedScreenshotsForRevalidateActionTest(10, $game, $submitter, $submitter); Event::fake([SiteBadgeAwarded::class]); @@ -111,9 +120,8 @@ function createApprovedScreenshotForRevalidateActionTest( // ... the active claim game contributes a screenshot that should be ignored ... createApprovedScreenshotForRevalidateActionTest($activeClaimGame, $submitter, $reviewer); - // ... the dropped claim game contributes two screenshots that should still count ... - createApprovedScreenshotForRevalidateActionTest($droppedClaimGame, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($droppedClaimGame, $submitter, $reviewer); + // ... the dropped claim game contributes screenshots that should still count ... + createApprovedScreenshotsForRevalidateActionTest(10, $droppedClaimGame, $submitter, $reviewer); // ACT $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); @@ -152,8 +160,7 @@ function createApprovedScreenshotForRevalidateActionTest( $submitter = User::factory()->create(); $reviewer = User::factory()->create(); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(10, $game, $submitter, $reviewer); $existing = PlayerBadge::factory()->create([ 'user_id' => $submitter->id, @@ -185,8 +192,7 @@ function createApprovedScreenshotForRevalidateActionTest( $submitter = User::factory()->create(); $reviewer = User::factory()->create(); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(10, $game, $submitter, $reviewer); PlayerBadge::factory()->create([ 'user_id' => $submitter->id, @@ -222,9 +228,7 @@ function createApprovedScreenshotForRevalidateActionTest( $submitter = User::factory()->create(); $reviewer = User::factory()->create(); - for ($i = 0; $i < 10; $i++) { - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - } + createApprovedScreenshotsForRevalidateActionTest(30, $game, $submitter, $reviewer); PlayerBadge::factory()->create([ 'user_id' => $submitter->id, @@ -255,9 +259,7 @@ function createApprovedScreenshotForRevalidateActionTest( $submitter = User::factory()->create(); $reviewer = User::factory()->create(); - for ($i = 0; $i < 10; $i++) { - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - } + createApprovedScreenshotsForRevalidateActionTest(30, $game, $submitter, $reviewer); $originalAwardedAt = Carbon::parse('2025-01-15 12:00:00'); $upgradedAt = Carbon::parse('2025-02-15 12:00:00'); @@ -291,8 +293,7 @@ function createApprovedScreenshotForRevalidateActionTest( $submitter = User::factory()->create(); $reviewer = User::factory()->create(); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(10, $game, $submitter, $reviewer); $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); expect($badge?->award_key)->toEqual(0); @@ -319,8 +320,7 @@ function createApprovedScreenshotForRevalidateActionTest( 'user_id' => $submitter->id, ]); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(10, $game, $submitter, $reviewer); $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); expect($badge)->toBeNull(); @@ -348,8 +348,7 @@ function createApprovedScreenshotForRevalidateActionTest( 'user_id' => $submitter->id, ]); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(10, $game, $submitter, $reviewer); $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); expect($badge)->toBeNull(); @@ -373,11 +372,10 @@ function createApprovedScreenshotForRevalidateActionTest( $submitter = User::factory()->create(); $reviewer = User::factory()->create(); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(10, $game, $submitter, $reviewer); $badge = (new RevalidateMediaContributionBadgeEligibilityAction())->execute($submitter); - expect($badge?->award_key)->toEqual(0); // they have a badge from 2 screenshots + expect($badge?->award_key)->toEqual(0); // they have a badge from their screenshots // ACT Achievement::factory()->for($game)->create(['user_id' => $submitter->id]); @@ -399,8 +397,7 @@ function createApprovedScreenshotForRevalidateActionTest( $achievement = Achievement::factory()->for($originalGame)->create(['user_id' => $submitter->id]); - createApprovedScreenshotForRevalidateActionTest($originalGame, $submitter, $reviewer); - createApprovedScreenshotForRevalidateActionTest($originalGame, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(10, $originalGame, $submitter, $reviewer); $achievement->game_id = $newGame->id; $achievement->saveQuietly(); From e57d5c3c8c35f240a2a69b90e45b336e7c7c6147 Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sat, 2 May 2026 12:04:47 -0400 Subject: [PATCH 5/7] refactor: simplify --- ...ContributionBadgeEligibilityActionTest.php | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php b/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php index 51f4a6d0ac..c2f10010da 100644 --- a/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php +++ b/tests/Feature/Platform/Actions/RevalidateMediaContributionBadgeEligibilityActionTest.php @@ -25,22 +25,6 @@ uses(RefreshDatabase::class); -function createApprovedScreenshotForRevalidateActionTest( - Game $game, - User $submitter, - User $reviewer, -): GameScreenshot { - return GameScreenshot::factory() - ->for($game) - ->ingame() - ->create([ - 'captured_by_user_id' => $submitter->id, - 'reviewed_by_user_id' => $reviewer->id, - 'reviewed_at' => now(), - 'status' => GameScreenshotStatus::Approved, - ]); -} - function createApprovedScreenshotsForRevalidateActionTest( int $count, Game $game, @@ -48,7 +32,15 @@ function createApprovedScreenshotsForRevalidateActionTest( User $reviewer, ): void { for ($i = 0; $i < $count; $i++) { - createApprovedScreenshotForRevalidateActionTest($game, $submitter, $reviewer); + GameScreenshot::factory() + ->for($game) + ->ingame() + ->create([ + 'captured_by_user_id' => $submitter->id, + 'reviewed_by_user_id' => $reviewer->id, + 'reviewed_at' => now(), + 'status' => GameScreenshotStatus::Approved, + ]); } } @@ -118,7 +110,7 @@ function createApprovedScreenshotsForRevalidateActionTest( ]); // ... the active claim game contributes a screenshot that should be ignored ... - createApprovedScreenshotForRevalidateActionTest($activeClaimGame, $submitter, $reviewer); + createApprovedScreenshotsForRevalidateActionTest(1, $activeClaimGame, $submitter, $reviewer); // ... the dropped claim game contributes screenshots that should still count ... createApprovedScreenshotsForRevalidateActionTest(10, $droppedClaimGame, $submitter, $reviewer); From 55cc085918a59c30f500758c84cdf4f5d9ad0b34 Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sat, 2 May 2026 12:41:14 -0400 Subject: [PATCH 6/7] fix: show badge progress in the tooltip --- app/Helpers/render/site-award.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/app/Helpers/render/site-award.php b/app/Helpers/render/site-award.php index 31d2c08aa9..a1fd600496 100644 --- a/app/Helpers/render/site-award.php +++ b/app/Helpers/render/site-award.php @@ -3,7 +3,9 @@ use App\Community\Enums\AwardType; use App\Models\Event; use App\Models\EventAward; +use App\Models\GameScreenshot; use App\Models\PlayerBadge; +use App\Models\User; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Collection as SupportCollection; use Illuminate\Support\Str; @@ -350,9 +352,9 @@ function RenderAward( $imgclass = 'goldimage'; $linkdest = route('patreon-supporter.index'); } elseif ($awardTypeEnum === AwardType::MediaContribution) { - $threshold = PlayerBadge::getBadgeThreshold($awardTypeEnum, $awardData); + $description = getMediaContributionDescription($ownerUsername, (int) $awardData); echo avatar("mediaContributionAward", $awardData, - tooltip: "

", + tooltip: "", iconUrl: asset("/assets/images/badge/mediaContrib-$awardData.png"), iconSize: $imageSize, iconClass: 'goldimage', @@ -563,6 +565,26 @@ function getInitialSectionOrders(array $gameAwards, array $eventAwards, array $s ]; } +function getMediaContributionDescription(string $username, int $currentTier): string +{ + $user = User::whereName($username)->first(); + $eligibleCount = $user + ? GameScreenshot::query()->eligibleForMediaContributionBy($user)->count() + : 0; + + $nextThreshold = PlayerBadge::getBadgeThreshold(AwardType::MediaContribution, $currentTier + 1); + + $formattedCount = number_format($eligibleCount); + + if ($nextThreshold === 0) { + return "

{$formattedCount} approved screenshots

Top tier reached.

"; + } + + $formattedThreshold = number_format($nextThreshold); + + return "

{$formattedCount} of {$formattedThreshold} approved screenshots toward the next tier

"; +} + function generateManualMoveButtons( int $awardCounter, int $moveValue, From 58aa5ea5aa7f592c12cf71ad14963d54cbe71e99 Mon Sep 17 00:00:00 2001 From: Wes Copeland Date: Sun, 3 May 2026 14:41:25 -0400 Subject: [PATCH 7/7] fix: address feedback --- app/Helpers/render/site-award.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/app/Helpers/render/site-award.php b/app/Helpers/render/site-award.php index a1fd600496..ac88ed6d28 100644 --- a/app/Helpers/render/site-award.php +++ b/app/Helpers/render/site-award.php @@ -354,7 +354,7 @@ function RenderAward( } elseif ($awardTypeEnum === AwardType::MediaContribution) { $description = getMediaContributionDescription($ownerUsername, (int) $awardData); echo avatar("mediaContributionAward", $awardData, - tooltip: "", + tooltip: "", iconUrl: asset("/assets/images/badge/mediaContrib-$awardData.png"), iconSize: $imageSize, iconClass: 'goldimage', @@ -567,22 +567,29 @@ function getInitialSectionOrders(array $gameAwards, array $eventAwards, array $s function getMediaContributionDescription(string $username, int $currentTier): string { + $currentThreshold = PlayerBadge::getBadgeThreshold(AwardType::MediaContribution, $currentTier); + $nextThreshold = PlayerBadge::getBadgeThreshold(AwardType::MediaContribution, $currentTier + 1); + + $formattedCurrent = number_format($currentThreshold); + $achievement = "

Awarded for contributing {$formattedCurrent} approved screenshots to game galleries.

"; + + if ($nextThreshold === 0) { + return $achievement; + } + $user = User::whereName($username)->first(); $eligibleCount = $user ? GameScreenshot::query()->eligibleForMediaContributionBy($user)->count() : 0; - $nextThreshold = PlayerBadge::getBadgeThreshold(AwardType::MediaContribution, $currentTier + 1); - - $formattedCount = number_format($eligibleCount); - - if ($nextThreshold === 0) { - return "

{$formattedCount} approved screenshots

Top tier reached.

"; + $remaining = $nextThreshold - $eligibleCount; + if ($remaining <= 0) { + return $achievement; } - $formattedThreshold = number_format($nextThreshold); + $formattedRemaining = number_format($remaining); - return "

{$formattedCount} of {$formattedThreshold} approved screenshots toward the next tier

"; + return $achievement . "

{$formattedRemaining} more to next tier.

"; } function generateManualMoveButtons(

`JaFDeSYod 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 literal 23143 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 SYR=jK0000{WxG-&Fb{MmKA z_wpE*j&SAC)vAN{PM*Qt+TUPs&00jFVT80WLg6qFWr#(G5Me_IhX)ag#GoN``%1hE z^nK@|Bi169uZhL9+by)~H_=#i&~DezX}18kBUTk0Z(iMv2Or#pO`A8$Ic~c6dB5;R*kQ^Ipd;f ze;RyBf=}%pHfceEqI<6EQG0j!uI55>k* z;JRUG9SvG1NYO6ZZbu=vBW_5ek6KvHDsHarBZYnp5prn04t?2#7AE9s=!C-PbX>6} z2@w~ab{n-@HNh=f&%MYy)?6(>aFVFHH?Q@Az~>*p?ftqJynWIn5}YhPbl+_l{Yj5E zzWP6*v8IU#!hjp<0Bd5iA|AQQ0KZd(8oT39Y!AjCymP=5>PbO1uA z;E*=jtrpyN1MPMbuGSX!+!37D5y)6wt>X*-<8S=b@40_88`pi9NBU)d=)uoI+prVb z+Pi+TSLHX+an7L=iNI~Q(QGxOOl$+4mWD_ygiZ)>TP=hlO@!zNt%FXxiB7AHcBiSh z5zs;*gtVyOgs>~cP$%TVZFhty3Tg6qLRzQoqE)Y>)ox;CwSg8P1#MKW)iFC?Mfiy? zKwE17v7x`iP2GVTKIq8h%W!X;LFc`1^n4%bKbe3Z-t{SH8+ZL37W5&bb_3eAlbCz! zHGK5G8a8im5k?aoH-b>Ofk?EDa4d#MD2jnl2Q94yUgub?x3Roj$MOotty&$e77z}H z5RK7!5rjiAAsR`S$3g&$X<#gbm_}UD#O1{%UO#mcKRnw+Wm!WD5p=W&F0QV_^-v1o zhltpcKy>gYd%u0dy?z?)(|@VH)O^_#=|7MtpMbAzdhjQ^g8DMF_y)YVkbpaX5iY+e z$=@Gjr8K%)%Ufut4R^`L1GTqs|HTDFqAi?mt;K3*5GxxtV0F_j+zM@k7Eb`NwLmzc z#Fh($2BC!qfY<{-Yz+`&04d}s12(RO7T*YMXcG`!BhULO5ADi3T{tVf8Mx}-&PIQ) z5n%|e*$Ov208PIKZmTW<6&(Gan>D!CPh#Z#V|Zfq0-oEgLHoHB@TP@pmlkp6+9J+h zJC6%&Jt{jN!FxlWKq#>jAfOW9Lm_CPs4#QI=WvYV7Z8p@3r7Vq{O^8-gDff6m8w3{ zCAK@**gwe;iUJ@zV9I*S;TR8XBDBc?S6@)h42hg<$xWaS{DL`voGg|v86Ws?4 z*RzCNr2{mr-#z&$3{6@u2!(s+rq$G!(7ACMu_X)jmJ75Scxd_i_|+eN31b-!WJiFa z1)RJoJQv53r!oM$>vi$|!R4E<81S99{sNp0;?$ZXw2k-w%&GfFADXagg$QzcZ2zC( zXs*I_&LeVZ9v^+@%eeQ%>jJ1ZKJ|HQIQ6z#M-nKOfjkEcz$tTpG4TsmNT9!QaG0Dv zRS^E`Kf{Ia4)B3>(!%*k4A=e1a*UcU;)@>lXNUn(thMWKFTIW@&&}Z8AO2U2->edR zQ3O!>%Rd!B&7}a?9N-@Cp@7f9!F=F*!$X3_mhj8xzJZrD1~;`A+R)~|-+Em)5P-SU z?;WzG<$Dsfe;d~Y;x;{w*w19NI9%r()?WA)p84TnY`C(10Q|g*rAb_C;;GoV43!o29MgC4m z5@LqIKZE#y4kI+_0s+J<95!btzxf9C#s=`s;sx+ckD{~gZfRySUE2MBSA=+gSFd=q zg<2yf=L`J^I>+sXJA5v#P4a@`X*oi^gJ4r;9^YV83a^1+m^>%b%Hfvq9n5C76LL!~Dm5un{U()$w|B=fJG z#Ajan=K}bjbF0Xi0GlA|hQy2wr|bw(FMvisb>zj%LL4!ql#pQoy4@A5TdK#Z3sPHJNnaJ^=9EI)@X$r*+`! zHE$k|;8ig0LtTJ=P4{;gF0W$k;t#NTxrSe?RRz_v@eyFUEM&aJC7`_v62MF)a;oAR zE<{Uk5KZ2`Gn^N4cI{}|bQE2FZnUMAa5nE~q_~Exa_{&JIbi}m3#lre~0$))7 zjrZ~B52mnXwF*-QbP_o;CGaxGoDXOn4kXaxg5sqLV2p!Y0p=@b31G+L2+qJ6lN_KF zG#zaAFFn8wj4|ltBGN;DfgfJn3T?|UaP0)1JpZTI{pK`Y{>-02yYD%%b`dTisvoKY z^$@D9IFf6kFcTq^D^mO^xch&}dK)Jqivzp{B;vr^?*cVtC}~=s^g~B;73*#;Aa?B>GGrza$Cqso*?Yh*Lq`pcqID?6>L4uuCM?jN zL0qu_&lez_p%%v!3y{cRx37+?V+aWu#&G4*NhAiof^WTl7c$x<{CB0lfaTql>msbR zFc7N4r8pG_s+|GoYod7mqai^^B>t=_kS_yeN5aHl68J>*%77DNvEE&W>j@z8gk3N7 zru=}l6fuYasRXcpL}GEW0L&^Gp`*)YG%CCg5q*eqSFdApkM`= z4nr;c_wU1p7Z4LRtq(js$kb1ojRCc?*~>LJ$~H zJORI41&lb5)Pdp6z><=qzE2?>F+Xo9IpD6f!1^r`gG}BbG6qnvByeets=9f)ktFLw zLh#PX+^Sv2hVyR4x31zJ|IPo7m!JMOLJS#0 zVN7HsJgPMyWk}%aj)Vg#dolv{rGQjYu7?0lMg+l!+j3dk*GcK(4b2xpLIM5vW&m+JSVfCXE!8VyIuAl}ab!O^aRt=dAX(s|$eBjg*93 zmlT;M+mh=7Xtv@2GDR(QU9ON~NOu8o-VIYgd3Yld!F3#7IKW*n$0C88$*y9QWs2$@{tAEKKBBFJs7VsPaY9=>(Uiy)xl zbPtsQ1s$gDz)a{c%mfUpih|`}ln%%y;mlP8wa$WJ3>+B%Gh7lydPIjkUlEAW)kSMu ziX)3Lm`d@+m7m}+E)Wcb$T39#WQA22@N4H@6&ziB<}(<3#zbVRr23LA0ZRZRco+#n zth`s^0)qpEs?-M_4Ga_f9Qj>FDY5EOm;SvG@gk!hOT;6rs zL;z#mi>dqcIl)KH>J6-|l%ZEFVU-N`;VPw+t!e1UWliX20wXmOGcOj9PRUtF)XXvl zn@m%kL3gD7$fk9SW=$L|IfC*_0;p0W5HM}UnVteCD=DtH*-~suqCRt^MlN_aSp zjoa=;e2u(60&>-s_a#JLysLoY=oP=76KGc@$2*ExFE0X1Jya`ouQXxDrUyLFFGx_H!tAfv)@3RNjsj9Q0PH{6d#6RKu;1`rGVj- z!cG!o=Mj6SO&vKE=aCm?$PkOBhH>CP7DYl3I2ORgP18AfLESP;;k(WXIOIFfRnjE( zgq6hvQcElW`;3C|aMcnk3H?Z7EpDjtt|NZwTvU4UC^0X*P+A_#ovJT}~zM@VBBQCRU6 zrn(bP2Uxa^5kdtsd>dX+e_2ksKbOE{xgwPwIbR~y10)kBV3;@phN;;02(1L7vNX5kh3t*JaFGxIZW-~4l|Sv`*{H#I?U^s?^$)@jy_Wb%n{(Fd0`Xt9!gP^uR;sbQt{aWqvKgjAIb}* zZILNab->aYjE01l z2{A&5$(V|+N@6e-*A&Q}BFg0)*Ve7aj>sBe^>|{0u>kOyjDtH&N`xPIcoN5TMOkK# zS#+ZYG?exx1wt?;=|BR)sVQIwMAH5&Ft-=@!%ttt=T`n0pFRB_@P+L*V5ES236%=# z1AcGZ1S$uRB5hAfkk!CaDPcwy$$qCBEC~++V+Y5O&83A&Dk$CIDDetrDae+lh*t*b zi3#NP?Z-mJL8V$n+KeNcGce-0?n?H14p~tx&QQ9C6#bl9)5VeJux0aIz6s5hTz5QL zQSk8$kPj0_^`1|vtdeSCyHz+62~>Y}GvGATltljUP zq~b~8I`erhLI+8u=+HG3R18SIYTziBIV$-)DFlItgZs0vnY`FEMNMr>u%ek{sObz- zDlCy#^Oj0wg;=XpYe*SP#-NliPQnr5B&DLGLCBFOp5)RvxGx&P zt#HJ5`l`wo2!_PFXq7N>ct5wxG0^kL^=q?2cc^pj9qKB+dJK}Ux)7CqU%h%6C`}_3 zXQ&h^LW!0Xmw3?kfbS_v&rBq$o6cJ}d^C^epP$3j!6`6<;qZ}tLY@~K2eXrTp#f)R zrD=3@B85y+ii?T;6F76`49ev)N^^OPj^)5oS&`QCDA!0ZWE4Uz=mL3;0=T7a#!vz& z0SBA6Wzc-+Bfy&VJ^~Vo@cesW(mW?+>nYmmkH8I@D%%(N0Jo>gUm8Ju{L(wr#3a|f z3pc33czIb`9(j2{iFc{q8@8f+hj(K;mM}%(<+{X}D_h7Pw2(`i7#&N4=Pk^XEa-Cu z>=`wYOfV!zGQjaNCPw#TdTI)Vd_l}|cybcQM{_U}H8|!lY`ci0AstIX0$n_=!V(m7 zG6fd|jaM!>{=(x=VJMly!s2?c0T;s?v>t25U#%l`fvyn3`q|?SVdHL>g^P&R^R>vC zV;R!kM$o2(G&jA$P>MWr`iRu9*6SA{poz*E!Tl%?r{KuIbp8_L7^hj1-OoGxZ#cnRbhygb`1K? zhfv=AX_(g6RPaoS7cWLr4#+NLJPF_vr51G)2lns7i!Z*2Gsn+hc;_&tb196EXTXSb zN#Bg_L28r&QkEa4CCaX4$1pKwVS08_Tq&JS3*I8pS1^+p4v?f_){v>{m^eHE%*}}J zM#oYp&z8knJelggk8!D3d^JKmk91Nnfl5WuS64!fRq^uYUkAAA@ar)GyB_^KV`O-BDsF zsbnqVRiu+~luZURVTkYc?A;^0(&D`GcnnirSZN_IMotb%Dg_fI>^pb>W-5(zI)$v6 z^%of@rEMevBooK}=d<8*GdMO=#$3J(gTm2FGAe~IQn_(ly4!@AdIXVZ46!&v8w1d^ zP%zpcoy0(RLsvhL+1>*$b^O{G5ck8;-FA@MN`lD@y|@SrB-AY{`(MoFy;px~t`{HC z&~oEwh6aIsFQIVsU?Ak|2yPIWD=^{Uc;d$)v(wO#O=OVCWsyp!z)B@?%!^h9PGZrx>K z`Ti%c^?@hQTC)v{ZWLN8n# z=rf;(lm11RnV-j?z6IgvfPd?Pz*HuSseAWe<8gy9j{@-Gf!{g0p9A@r9*NU4sGxW~ zWEdL3KvMAL)yxATJP`rb0E38NaKl#U>kZ_7bqs~+85l+ahLJ)hlfw%y9Kg<!(oW1*NGWq+?~o#0d2km#^4zBpqpqN!6%!CKLD9?aaEvU)P{${_zf%Z=Xy76w z=XAl}SDNTygz^C-uk>Ja&r=A>o9wK%(GE35tI?V;wFyOmt#NGI`2g;D@IIvU6v}1- z`^P85@fj855xH6w2+L&+RXl*-U2OcpP^<@+3BG*wQVO(*pqRH!D@}vBw`` zz3}NdR}F$`BuMU>*CVFXvF8a80@kk+@vrV==uX~j)Ui~*ifiwk#B%i-2G$Q@!^XR@ z;qGnNZfwD}T@PVyZW0H^_X}C;r&gBG2{$qDvCktmv<^3xS5PWjn4Fr#p(97(RIKho18)E94CSyO z^0no%ja1seF0QO`h#S_O+sFuu| zDn$$9aGV+{!h6&)nl?}<*HA?QZR0-F*#?nu^GClIdnd1!-+?SEG}Xr^-Tq?=C-4_exisiuY4W97+FAKScj3yiTkbOXYtQ| z|6ilt=|-tad)Y~Cw5i&9o7~EWQF$)QR*(qp=oiv3~7#s#Q?&2)Z!`%ZsP+ zv2VYE-1Aw~N_mv>TzI+1RK*sBa8r3%Xr4`FvH$P^4DZ|t96BVv8`X8_2?K|}bsR=Q zinoK~IhffT3dJ(AnG}iz3scjR;`qad4`VK$2eS** zJW(yvo(ZKZWR&T~+GX(g1|RV7{D9kfKL|_Icg4KC6+}278g9dlOPLz4R`A@cg+Dm* z680a;pqMXUgrbOg0%pd9t|w8-&x_R*3deC^|6XJ*j(uYcQ<-5HhhIWAGb~{9!V5?6 z;)@6I!hul?Pk%w2n@X9&M;IN=;o$Rm%l^Rxb#FNiUpjGA+HRpgtTKVt>%vYv>SH6aGd(YvX zXT}iUuoaxlCtklj@1f#24(B4r((3)$Yg3i`I(QvQ%dHx&HkROW+xNcc|Inr_cyr{V zi06-EEJsvgp+vF!IjWnnP$=Y4E?WZo$)t&K(-cnE;p|@Ik{tU)!Q@^{4$J=#ODDBXY%Lx{6#txg;pMB2s8IBn?SnFw@dx>yf)&BoU~T zYvP=wDZill)P;(PvU3axHqu)tKq?}UR=BGIiD6lB#JuDw;b20Ty2i{5-o0sK`-4wo z;DJXlNL5^MuDDWKF2a9xY}8l+jruZLt!5YUe&|gB-;+XgNW)hoHI=fiVKp{@_irv^ zy;X(f=z`~plhc@l(=`W_2W%KRQsZODa~np<4&b~dJeJ&e7WwI87@s&SZ#tPm%CbZ} ze{$+5s&*AGO}&Kiy?eWsMk+1J#{JZvT~P|o?us8z_LDrZOTtH>WRU>ATBdF=7$QPz zqJoMaJ|Jc=$(th4LBvND7qnj17gQI%j1Fe*#r?0$2yQs_ODC}TiO+!<>w!A=eFd&U zFyK`zH#lm|T2};hQ}DeBnOd!doAo*xqGm=KijAAsasIWh;cM$JAa5oxHB}aMI(f>a zCX=un2T7KMlL0D)F~FY1p~FY9H#aIW-1En#ftfPME#sys3bBlM8Kuc76cs?rrIG-| zKB2UwUYVYmQ2_Ny%Pgt%i6Tu?g(R~9oxr=^vdvL(Y7zvTif9v9u)Ci0Fp{XKsscaG z&!|qdCUR~5;CCo1Q6~@*$XCDrtCO&|?ZCj+XAoyYJ+2dH39-yZj3MF`hq|guMml2N zti5?LE~<#-R5#DRjjuKexcHHuM`rjP0s5nM9BD&GsZh=0im6b8BkEjWm8+`q4Hz{Q_n8UgOBM{(Z&Op*VFFR5%w;BnTi~?{n7EdX z4;lx3Q`o{BE8yj~bj0u8jrvdsEUx(}N+wF>fm=Zi2&BLw!F{1sSp001BWNklfi~(o*!YC?_m|KWxY{K3yemnV0r- z$Q0F4fs82;ibzM;!fKUaO%~TxkAX+A2_N`+HX~l-ldxYR8T^(w{k-EJ)C z4$hjl>6RupW^?`6^aqXD=56@uz7<2}tDro{fm8`5pGG>B zLT+LV#;7Sm5yr47oz$d(1>L}OnTbNGsfkHZ2|b?XB0RmvvJ~Q_6rL=}R~0hrgyOse zG$~0!2ARc!ep^20NIKIm=g@0 z#6=Mcw+k32&L+THy&k@YgngM={L|Ow&^UbpZl}{r!5$I<`;&QMDB|{QRd=T`G`JR_ zO?TnJgpNT|W{$=t#=wrr*?HN)*eJ);oYYoiMzUkGs^COYpJB=#6cQT+U2Zv`Gme8P z*+`K!s2+!5PhuETPF@_l_oY98nH|PNHiy}K72~-Cl7xgrz!SC|p=@nSmcV39vQU!J zn(+oXaF&I+Jdgv`99gLFnxB{87V}Hx<3b16!t|tS4b!%eVm8uy#!)&xjr4E;33mt( zuB_fb#HBsz+J5XyF!q47FwwV*Ss*F@!5mPJ#NZ%=I%5badwcfSEEWny#1ThTuVHqM z;b<|1B#N-?8KAfqR%tdcix&%x!w{9e4)&)Ql7_0drD9!^Vn`DBmY%}o^Un)!o3ufZ zo1zGR)Zk!7ObG{IP*dzrm0w$m}f$I^M@;wIE4KY36RR3^Z|H-aj%@mVC@>%rX--nWp@Gt z+ShI%?#Cj!`}0LS@#AY{5;^^%D;!2^(_L5^h~w;us;tgcK&`Pj61fZ(3cyGrBWi)H z`DtL}IGB|MSOJ!03t-7|Hu9^g$mz1nMEEzl2%do1z(`8f?w39PLDq66l4GLc;%I3S z$&w>lo2sg#lG2`(Tt_OaGUfiMLVjD5hfyjgZ~!@2utZ6UPUaz(T{&e@%VUD+l)N!v zRtlm)u#75<)P$I5?^FgU7EJZ1OBiuD`594>fyy5I<5$0q?>zJ@)^E5Q^&wdZ%oR+d zJvlK5J_vcONgt*I1l`_c;y-U27Iy8hU4gw|VK|$`{E@sUkS)zUhvD=H(us_)D%gAm zMJ&M7brgzu5p=6Lws6uaPDP{#1?5xdcvzaIqSZuaA}o-CBO3L_Qvn;qDGQDeaW|HO z!3^O}3DcJxK4JwgX-^>v+d=-&5zNn-H~^WhoTZ`|b6nJI466u6Rg{*ff|9s_DoY4t zo2d!txhzUEGCs9eA4NL1mpTo5V56HRsIDTd{D-SI&!OtB!r@g|)c;A27&w-cQuiwn zML7CL+^{LKHi31+KZnTm1?;%8fa6wCxb?Z=5lkPNhB=?stGOi%%<0c+|I=H^TxY9=rW2NotVkE%)4b|xHN_I){9Wm$yV$#kT+36p-zWr0E& zGZZ^AU&6GW!F0JQjyvp~EX(TzbC)gIe$r5V%t8;Sy)Ss6+O4Z|wI6S{l=xjck-z7o zcws$9?yWPJQ>{MZ=^P3(We8$rb0|AyQFA$#9YxtL2_zNDc{tn#cQ{_qyFFGSq)_w9 z?YJLK7)}B?+vygAaa)FdM1QUc#>tr~!{$0NBrvQb@{~t7RzejeB#_29hQ&E~ke^XS zB{>RR&x$A~nVHGp-V;nZcN93QQpO;e77c~7j8sN8*jScuY$Kticz z0nMPnf2V9tphv8m9FTwdeT86*D@t7OR1UvWjNw7&_mHqHSb74-;Yi>Ld~l4?9u6rJ zr9w#rwT_j9xr7NOy;3T$)lIdqYF`8s(uYr~j`P`)tTD2MCa{o7FchjOd9Bn7fb}A# zQNpOG>rV^SS{29Jpd_cL!ZXLgSjw+}lfP1Pp0spio=0_8tU0f{U)sVOvutVBmC5}c;~Ji zz~!^pxOfiRU;PID!mpr^)n(a|E%)wGeY3-c4Ed6XX2~v9@Jerj3o7X)q>(Ktz9=fR zZD9>{z19>saf|r^Shb9NWfo99klYJXCrI36dn^iGIts9=xXzR%Iav6^EFt%oa7rTV z{1QrVm?`2tGA|H-hrn3!1E?FK(YwETu!pzNN217m^XsD0fkewx-bPBVAe&$?l3a%D1BtAD;1fW-IGLf!cv7Z} zP?B|VyezFGYQ{5cm1`x7B*BDe5OvM*-W{|E@WQGQnW>sgl30_NLmnd(oKpldSyp{q z;w(Z;S>&mSnwh!3TZR%OMB!OiWZ|VfC6N>y`UY?<)D<*Tz#I$I0CihasYR)Gzc@m` zQXN?9+@T3On26>f)jnzB^2K31y8Ex8*ErH?9cc<|*$ld>@VyQ2O5zCMS7aD~TK}2q z_&)q11V^PgNX{7MLcn zsi(o5k_=IZ@Wdg(MO@9n{eG;94+`#Bz5QSI9DeXg9qaGjEpx{RP(&jTXA8hP;`SxP znoWQ&1FiLxOpqcv-jnJ>--w|d)zNeZU^zE&XtM0pKVh;gZ_*?=u5+>ZhoSd6sa3TZ zNP5JCIc#Ejs-UP=g?FmJFz4`ge<+ZQccx$@4uk2#fwH|?4~@v7zULLp@j2`t$ss+l z50hVbUd%`J7yE-ZQ(cgIQJ4p$Jm*za0$B9{-#jMIQDwh^L#dN#~Y&xP^kxVAKD6_dN z4!-mfCK<4>upsggWW5|tFqn=7Gr1o|a<2$jn~3|?8Z$;jh+2fHy&081KuD}b7Nj*M z;^kUv36E^;sAS17#>XAJG+7V2@*hyGWiRZwG3#;ph>Q6docXf-$72KLZ6HP=#c&4qu z6|nY#(*^Wyw=m25Q8*Ee-ZMO5R_&I_#Z|PN_GxG|>)0A?tKeT1$5{HTEu(KnosW$vae z9J!-&d1UPgjEs+~$ra?|s-Bz<&F1h@!NOeW7{;HM34U7EapMTe)iMb6Chg=^RpD*F zB3IqJ2`{scBf@S<;E>&4eAYs(#-T;p0j(sf|1eNT)06LkEMzG73>d*BttMDq0#-%C z${;<3H*w; zM;wV6Afs~R$L2T^*)&EdK0)P)WS>%!p0Z=PQ5={^VIeV%*{Mmus>x$~zK1Ua^3J@_ zN#9CIZ=4H@D=n^{GP2$9GDSOS?jW~YMcVOCzPJSZVWU4B9r2MaMYD$mE?Z=J++0rw zc>PK}DKQQV_I4n|ePvKnlwT7H6E*QL7kMZtCGW<`rB@Ac6Q&e3Wm^{#BEz!CnK?W! z+T?VR{&So;%wbkoB|6#rabRQwn3@CPsT9V%eJQCgDWQt95-OUO%3y-h&~^cna|IZs zG}1c7bF$I{WDKRbY2p9UPGE!|qnyMjDmYd?iV-6RlR^(vKW+|piEFr<78MAvirvpj zoO(z&W*6`(9+4t&ZM%1KAg{T)FWn1I2WW191@3ed?|bhX*9`8!EkxUHpfs#&^iw%F z>*hm5fQ_6_>gP=*GDwY%`Oe0^f`LON5vxR6HHduSn2wy85IF#OzEw z%pS1n0`?oEoJ%N_<}fvX492{PTyg}{&Wvb76`nQarz!4_6h@R-u_~0!Go{l)oBfcO zF_pbciy@8(BEWke&}&*tLtU6DQ5n`yWx8_20zeGLg1pBob-%ge@U3mu$K8AYolZkJ zTfHu$WjQ`N$kWYcWp9$rDk#*Bz?v>#)Z8y+O~ycx{{g1ThcM4&Ss>NpQem_njPdsq zfj6i+!Wb4vVkw4P#zxMTmQtZy6cJR{0bZx{a)tQ(UR=Xv{AuMlPCzQv-7JCh`cEQV zeHw%MPH4k}(6|PTx>b0}+w-euxK>d=Dx8TDoxOp8gVX>~N}13;?_ zTu<)`N9?vp^lcfLF3@{)6O)geqC}6_l8*;%t{QAxCOk+o@q#=%m($_o<5;k4WU>WJ z7A)*HrbI44&ko}NRTvZtC|71M$>))$O*~RYx0RF}BBQ?p8U9u`BDqshg;lyl#f9(8cnDr;Iulg(4tUrwK zLu(K+YS4Hu7ZBL!DNhZwu_rc$l{fwizN|lh4n`1*g;0wQfJNJ=H^RcQ3|2*Wdx!el zR{B_os=oRl0(wXu-F|)gzU3ku?cAPHCLO@5-CeTC;UWGvQ%DsWc`JBX|X2r(pRBPh}C0g1~Zbb+P2cy0bV#X z4h%4$lL+2dU%@*Iyl-j@7Kk`;&H@sMp~jZTc11j_n&{%P)(oP>SEmhn)E2mE0-{O^Pnc?N zTQh^PQ47cBipZC0$fYtON@tO2sLOqq^A2z@!#M!f#@!FXR{>e)x)FVxL*_OgFjnx%gIe!ALzj6%U{_8)&W1C`l=AH(=TpGha zJolT}^3k7zX5Nd|nIFLE)bLjQ3jT8SG~C@9UjB`Lf`@nCg^Lvjzx$={;=jI?$Le4h zF`dB;clyvu5G$1LxOZ+>l@EKi4|eCBb1ifS;?a3F(Y^qz%60+UP?=SoM23mHsJ z(mW6k7gf#zGt~2Cf|o4`z*H8aDFYR~1dA#SxNL3B7)%%-)WJ@ikS|nZ2%|i&YJ;3W zkSri42@y`$o2ADfHk&P6zg0)|<_eY@ArTx~p)P-}sTZ(Zb5YmUK)?4%{K6N07axEA z%Xr<|BJb?N$dvLkAj3U2`%R@`}_lG}?M;=%Ut+Rw3Tf+F= z7oNov8*ZU<@^!SYo(CFBhy-^?_ruXzf4Q{e0M^%V;7cK2BuN%$S{2H343v&bk2f9+sfxWYNnBX|_9Eo%Qg6Xru_zk5lU$jMmh^`V6{4OhSlCldVuWHh zrXxyC1S0x(_oh)%95J*Rt#$|XIz3gdgKz)I5d=dp{?jOFyW&U$$z4xl(|u22@3_pXf~(&=FF%&XWq@&s1-Dy&^5PQCUWJoBu9O>vGJi%a;**WSmcKDG__ z-?Ik4GI}rG_|h4~uAV|K#8M=)3YZ7j~ehAO{_Q_fjj0LQ03GK6NW zg8%kc?|_9J9RJq4Xw|Ob>4(Eu+qe$*+-Werh)DZZkGPY2MRW@l)o5Y>4FzECmv{H< zYs5WW%mp?>suV=`wokED3XcL+;sFbC=fV=@PDMDQCV|CNi#b-!O`?WJ z%{p4OE3htH!}zBLF%VwG*>jh$KIY)*ht~)zOuKOjF}@<#gRar@!4Got7$ETXHquh< zfU&`i`18mH7_}JEB-hh2zCvOqWg4hhw%DtO;yps-5aMY6GnJdAjhLt_o|>m^Dm@V! zEOC70LIU4^>~mP#X`}qkJDy}if;p&~hfuZ{j!qxNST+gMaJmUtT{eQq`V~U*GF&%? zW~&9>XyM9ILu9P@#qXnWZ2_9*RWpY$^uT8kiYMT%-;FEQ+Zf!n4ei0ZQR@JI@~zAG zJ$@kQ(UD>z`zjf{{{0mW?V1ZEpzv>`C zg;-@KxrHkQsjFUoLI~~AL%_G>)d&f+m9br8xTLK??7>G6x_L_|bGs_T+GN_Ux+k!~ z+zZR%n9LWDF>H*aiZDgNk)ifiW-@LcT7yoMqumGzPHs1uXZ9H^$ z7_CMf4{UQW|5gXBdKgdc0@k{9aC;F08#gNWcf`Z2{Rg=PIiPj*I+oX57w?72;4!$Y zA*w23>e~hedLkQQgrjI|*@a&}y@KCdzKosDG6quXvEB^fTC;_-w>nsC0%xu*iw7ZK zc^SA#I|MecwA8@mS{=oU99tUKuxaN2{>7OsIQRGy*jT6MzlHI}!@yln;nqb5e|5Qz?RQ^=du0)5uLD>U2sMD48tQ`$T)f%AQeDbmdRQFE z;C48UfqQ=ep&`SEfOuvr=cr$K2ineGLZ{V1y?Oz)nhWh0KaNe?H{s3K-o*9lbr@Sa zc<9~+=waQL7d7npNE>e372DFRi34XYwqV|+VdNnVubjT_o1tV7!~{3Ex3?(q>lIYn zMMN%d#InlZbmbI12e^e+B%;2%z2hJh(eQs=Y-7ZF4_g)n5Z)~6#qqn}KLc}P3%~WB zzKi=Gxf|fOKr65FHr!h-&Q+UeE!S{04&1oW#$xRjn$=}Er`{CvwpVMYwA*-hg&GNg zGwoGeul_f=_%(pmT#qB)b8y$Xo499l5s3|JfwgOaRus)x2vy$3NkD`?+1fySw?A$HHF5Q=XS2e!_C2RA94eqsTUGpA6$xr~+No7nR#5D5eCUC^*; zy^B~BSag8R^w6H2K=CwS-sK80H21pWKO&&jY#Y_M?^M-J4!=bS35%abxXw(;b9%b($kgUH``Jxs`uesebyXU!n z4a{v#AU$cgz#N+EZ{jN-_tgElcOBhlyZafwo~Hq-?SWkvw`w(_GW-+1)VNAZvT(J$i@pZGY=pFfYOsW0Q=sXS8m z$P6w;diU-CuH6K_`F$Y!kcLmDU2IyX;lz1Y9QUzDG@QQqD8Bf`FJg6d1#8!=L1-X? zP){643kAA2wBFVYx98TB@1Xe>tb8D-`o({kz2C$E79uJ9V#;FUy)`W|22zdR3hFaalcixm8GLPNwqIgPP^SLK9T)1!% zCr_Qi_3Jm#Xf;KMB;+kzx&z%Uj3sOo@OnwGhj3kQ_c;$;9xj8vg%&v9d+d|zpQfnT zdyszDFVx`na81uU!7b?7cDaiv^+b@sHaxvM0^H64jgzx*8_Ni9OhFq=qH*T9IF3E} zzri|t4)4A99^QTTUD3;Y@xnQL{Bb#X@wA4=?~`-B`F;qo2=M+TjT+~%dk3&sm1*|J z?(1MEd>toGyoXDdE}>rIaLF2S6%Tul^VPijal1Dc+*w!i3|Q|50wTuk-+1D7lm%d* z-nji#srAIjf*qVbhJ)8}163VD2Z=v0469gpnX;x~hX)JifI@U-qci?vvo$;GVl(G3+DJ7a&1^2LPyPeq0<~iPv+6 z+jH#zM`&FU;<~rv+4aws>koxP2!})dujr?fPy}xMChBi~3Gt8oABYW)WA&9^M|9Wc z5Ls^u-SGPBUlJnbnMdWdOQ(R3J}l?@kADuV)I>K|&mbk;b~SW5E*{?LV&l+Ffy66U zufp7E2K@ldrw~sb`}ty-HuJf{=Kv27!Mh14KwnY>#F>w%pn``tUvJN*7C^eERDyac z2*4n>bl-c3)ew!wuy*ZQtXsFvYme?t2WY_H;2>7teHpO_|9gb>`w+YDv#7uICB&b8 z0qoH)qQ3BFc+{-o-mOyEUSHDizz*OnMZUE#{?A`+qj863>~P3c4{MO7>*?hc+`4rO zolZwtK|Z@&M?xz7O77Jr)XD0|5>RUR0bC z4r6dIjvYI8VEgv%^4XB^I;7>X(I`bbAHpN4`@rA$f8}@g{}MV&=h3?MF0}YYgdX{4 zc=mC5=GzvqZL^%A@GfxUmV9nKaY+A*5a2EO*);iw>ktly#co_$vvJ++-rOB{IUq!Q z%F==a-Al>7)#3w6>!0d&KnE209e(ZA7wA5AOS{84{r(1hZns)kT3W{IuNN`*&2Qp+ z-}@eJ+_)jkO9BJ|WXF!}xbMDQXt&#V@5Bk%m5SJ2Agp9cBoaX^788~W=XLQLU7voB zMx)}qrKKgTtgN6`t0APy(>qET&@me}Y!I11+8_1PpZ+vbsZ=1!5WKknD1D;UwA)Y< zta0r5tsl@n1-o6K1+6WG1z&yo5Jop&>T12n*5JGLy&9tnc#jT9{>S5SJn-NyXra&G zfd}r#;^H+l8g&8K_3PKe*qX#vBPkLkwq3!MD_5{g@hV7jm)7k$hJ?_L_egTuwlf+* ztJT7-l@;MH5OM*)06+g|9z0muEdT%jqDe$SR60i37@-hiu_zLW4T1|Fe)wT*+qO+0 zRB=E*-D!8=ZY|*8^rE8IS`XZL52UqTlfC!gzQ2KM^qaN{>0~WQoz#EXuBGOYl&ITj zchG1y#db85;j7o1f@(ur2+>$n0EnoR&Y)OLz0njvB?=}{A?}jWuXJ4sCyS?Ilc_0v z68fHwr#b26BY+SW3JFBfH3kQVFf=qILJ`qu6#qYrOFOEurm4UH0000{WxG-&Fb{MmKA z_wpE*j&SAC)vAN{PM*Qt+TUPs&00jFVT80WLg6qFWr#(G5Me_IhX)ag#GoN``%1hE z^nK@|Bi169uZhL9+by)~H_=#i&~DezX}18kBUTk0Z(iMv2Or#pO`A8$Ic~c6dB5;R*kQ^Ipd;f ze;RyBf=}%pHfceEqI<6EQG0j!uI55>k* z;JRUG9SvG1NYO6ZZbu=vBW_5ek6KvHDsHarBZYnp5prn04t?2#7AE9s=!C-PbX>6} z2@w~ab{n-@HNh=f&%MYy)?6(>aFVFHH?Q@Az~>*p?ftqJynWIn5}YhPbl+_l{Yj5E zzWP6*v8IU#!hjp<0Bd5iA|AQQ0KZd(8oT39Y!AjCymP=5>PbO1uA z;E*=jtrpyN1MPMbuGSX!+!37D5y)6wt>X*-<8S=b@40_88`pi9NBU)d=)uoI+prVb z+Pi+TSLHX+an7L=iNI~Q(QGxOOl$+4mWD_ygiZ)>TP=hlO@!zNt%FXxiB7AHcBiSh z5zs;*gtVyOgs>~cP$%TVZFhty3Tg6qLRzQoqE)Y>)ox;CwSg8P1#MKW)iFC?Mfiy? zKwE17v7x`iP2GVTKIq8h%W!X;LFc`1^n4%bKbe3Z-t{SH8+ZL37W5&bb_3eAlbCz! zHGK5G8a8im5k?aoH-b>Ofk?EDa4d#MD2jnl2Q94yUgub?x3Roj$MOotty&$e77z}H z5RK7!5rjiAAsR`S$3g&$X<#gbm_}UD#O1{%UO#mcKRnw+Wm!WD5p=W&F0QV_^-v1o zhltpcKy>gYd%u0dy?z?)(|@VH)O^_#=|7MtpMbAzdhjQ^g8DMF_y)YVkbpaX5iY+e z$=@Gjr8K%)%Ufut4R^`L1GTqs|HTDFqAi?mt;K3*5GxxtV0F_j+zM@k7Eb`NwLmzc z#Fh($2BC!qfY<{-Yz+`&04d}s12(RO7T*YMXcG`!BhULO5ADi3T{tVf8Mx}-&PIQ) z5n%|e*$Ov208PIKZmTW<6&(Gan>D!CPh#Z#V|Zfq0-oEgLHoHB@TP@pmlkp6+9J+h zJC6%&Jt{jN!FxlWKq#>jAfOW9Lm_CPs4#QI=WvYV7Z8p@3r7Vq{O^8-gDff6m8w3{ zCAK@**gwe;iUJ@zV9I*S;TR8XBDBc?S6@)h42hg<$xWaS{DL`voGg|v86Ws?4 z*RzCNr2{mr-#z&$3{6@u2!(s+rq$G!(7ACMu_X)jmJ75Scxd_i_|+eN31b-!WJiFa z1)RJoJQv53r!oM$>vi$|!R4E<81S99{sNp0;?$ZXw2k-w%&GfFADXagg$QzcZ2zC( zXs*I_&LeVZ9v^+@%eeQ%>jJ1ZKJ|HQIQ6z#M-nKOfjkEcz$tTpG4TsmNT9!QaG0Dv zRS^E`Kf{Ia4)B3>(!%*k4A=e1a*UcU;)@>lXNUn(thMWKFTIW@&&}Z8AO2U2->edR zQ3O!>%Rd!B&7}a?9N-@Cp@7f9!F=F*!$X3_mhj8xzJZrD1~;`A+R)~|-+Em)5P-SU z?;WzG<$Dsfe;d~Y;x;{w*w19NI9%r()?WA)p84TnY`C(10Q|g*rAb_C;;GoV43!o29MgC4m z5@LqIKZE#y4kI+_0s+J<95!btzxf9C#s=`s;sx+ckD{~gZfRySUE2MBSA=+gSFd=q zg<2yf=L`J^I>+sXJA5v#P4a@`X*oi^gJ4r;9^YV83a^1+m^>%b%Hfvq9n5C76LL!~Dm5un{U()$w|B=fJG z#Ajan=K}bjbF0Xi0GlA|hQy2wr|bw(FMvisb>zj%LL4!ql#pQoy4@A5TdK#Z3sPHJNnaJ^=9EI)@X$r*+`! zHE$k|;8ig0LtTJ=P4{;gF0W$k;t#NTxrSe?RRz_v@eyFUEM&aJC7`_v62MF)a;oAR zE<{Uk5KZ2`Gn^N4cI{}|bQE2FZnUMAa5nE~q_~Exa_{&JIbi}m3#lre~0$))7 zjrZ~B52mnXwF*-QbP_o;CGaxGoDXOn4kXaxg5sqLV2p!Y0p=@b31G+L2+qJ6lN_KF zG#zaAFFn8wj4|ltBGN;DfgfJn3T?|UaP0)1JpZTI{pK`Y{>-02yYD%%b`dTisvoKY z^$@D9IFf6kFcTq^D^mO^xch&}dK)Jqivzp{B;vr^?*cVtC}~=s^g~B;73*#;Aa?B>GGrza$Cqso*?Yh*Lq`pcqID?6>L4uuCM?jN zL0qu_&lez_p%%v!3y{cRx37+?V+aWu#&G4*NhAiof^WTl7c$x<{CB0lfaTql>msbR zFc7N4r8pG_s+|GoYod7mqai^^B>t=_kS_yeN5aHl68J>*%77DNvEE&W>j@z8gk3N7 zru=}l6fuYasRXcpL}GEW0L&^Gp`*)YG%CCg5q*eqSFdApkM`= z4nr;c_wU1p7Z4LRtq(js$kb1ojRCc?*~>LJ$~H zJORI41&lb5)Pdp6z><=qzE2?>F+Xo9IpD6f!1^r`gG}BbG6qnvByeets=9f)ktFLw zLh#PX+^Sv2hVyR4x31zJ|IPo7m!JMOLJS#0 zVN7HsJgPMyWk}%aj)Vg#dolv{rGQjYu7?0lMg+l!+j3dk*GcK(4b2xpLIM5vW&m+JSVfCXE!8VyIuAl}ab!O^aRt=dAX(s|$eBjg*93 zmlT;M+mh=7Xtv@2GDR(QU9ON~NOu8o-VIYgd3Yld!F3#7IKW*n$0C88$*y9QWs2$@{tAEKKBBFJs7VsPaY9=>(Uiy)xl zbPtsQ1s$gDz)a{c%mfUpih|`}ln%%y;mlP8wa$WJ3>+B%Gh7lydPIjkUlEAW)kSMu ziX)3Lm`d@+m7m}+E)Wcb$T39#WQA22@N4H@6&ziB<}(<3#zbVRr23LA0ZRZRco+#n zth`s^0)qpEs?-M_4Ga_f9Qj>FDY5EOm;SvG@gk!hOT;6rs zL;z#mi>dqcIl)KH>J6-|l%ZEFVU-N`;VPw+t!e1UWliX20wXmOGcOj9PRUtF)XXvl zn@m%kL3gD7$fk9SW=$L|IfC*_0;p0W5HM}UnVteCD=DtH*-~suqCRt^MlN_aSp zjoa=;e2u(60&>-s_a#JLysLoY=oP=76KGc@$2*ExFE0X1Jya`ouQXxDrUyLFFGx_H!tAfv)@3RNjsj9Q0PH{6d#6RKu;1`rGVj- z!cG!o=Mj6SO&vKE=aCm?$PkOBhH>CP7DYl3I2ORgP18AfLESP;;k(WXIOIFfRnjE( zgq6hvQcElW`;3C|aMcnk3H?Z7EpDjtt|NZwTvU4UC^0X*P+A_#ovJT}~zM@VBBQCRU6 zrn(bP2Uxa^5kdtsd>dX+e_2ksKbOE{xgwPwIbR~y10)kBV3;@phN;;02(1L7vNX5kh3t*JaFGxIZW-~4l|Sv`*{H#I?U^s?^$)@jy_Wb%n{(Fd0`Xt9!gP^uR;sbQt{aWqvKgjAIb}* zZILNab->aYjE01l z2{A&5$(V|+N@6e-*A&Q}BFg0)*Ve7aj>sBe^>|{0u>kOyjDtH&N`xPIcoN5TMOkK# zS#+ZYG?exx1wt?;=|BR)sVQIwMAH5&Ft-=@!%ttt=T`n0pFRB_@P+L*V5ES236%=# z1AcGZ1S$uRB5hAfkk!CaDPcwy$$qCBEC~++V+Y5O&83A&Dk$CIDDetrDae+lh*t*b zi3#NP?Z-mJL8V$n+KeNcGce-0?n?H14p~tx&QQ9C6#bl9)5VeJux0aIz6s5hTz5QL zQSk8$kPj0_^`1|vtdeSCyHz+62~>Y}GvGATltljUP zq~b~8I`erhLI+8u=+HG3R18SIYTziBIV$-)DFlItgZs0vnY`FEMNMr>u%ek{sObz- zDlCy#^Oj0wg;=XpYe*SP#-NliPQnr5B&DLGLCBFOp5)RvxGx&P zt#HJ5`l`wo2!_PFXq7N>ct5wxG0^kL^=q?2cc^pj9qKB+dJK}Ux)7CqU%h%6C`}_3 zXQ&h^LW!0Xmw3?kfbS_v&rBq$o6cJ}d^C^epP$3j!6`6<;qZ}tLY@~K2eXrTp#f)R zrD=3@B85y+ii?T;6F76`49ev)N^^OPj^)5oS&`QCDA!0ZWE4Uz=mL3;0=T7a#!vz& z0SBA6Wzc-+Bfy&VJ^~Vo@cesW(mW?+>nYmmkH8I@D%%(N0Jo>gUm8Ju{L(wr#3a|f z3pc33czIb`9(j2{iFc{q8@8f+hj(K;mM}%(<+{X}D_h7Pw2(`i7#&N4=Pk^XEa-Cu z>=`wYOfV!zGQjaNCPw#TdTI)Vd_l}|cybcQM{_U}H8|!lY`ci0AstIX0$n_=!V(m7 zG6fd|jaM!>{=(x=VJMly!s2?c0T;s?v>t25U#%l`fvyn3`q|?SVdHL>g^P&R^R>vC zV;R!kM$o2(G&jA$P>MWr`iRu9*6SA{poz*E!Tl%?r{KuIbp8_L7^hj1-OoGxZ#cnRbhygb`1K? zhfv=AX_(g6RPaoS7cWLr4#+NLJPF_vr51G)2lns7i!Z*2Gsn+hc;_&tb196EXTXSb zN#Bg_L28r&QkEa4CCaX4$1pKwVS08_Tq&JS3*I8pS1^+p4v?f_){v>{m^eHE%*}}J zM#oYp&z8knJelggk8!D3d^JKmk91Nnfl5WuS64!fRq^uYUkAAA@ar)GyB_^KV`O-BDsF zsbnqVRiu+~luZURVTkYc?A;^0(&D`GcnnirSZN_IMotb%Dg_fI>^pb>W-5(zI)$v6 z^%of@rEMevBooK}=d<8*GdMO=#$3J(gTm2FGAe~IQn_(ly4!@AdIXVZ46!&v8w1d^ zP%zpcoy0(RLsvhL+1>*$b^O{G5ck8;-FA@MN`lD@y|@SrB-AY{`(MoFy;px~t`{HC z&~oEwh6aIsFQIVsU?Ak|2yPIWD=^{Uc;d$)v(wO#O=OVCWsyp!z)B@?%!^h9PGZrx>K z`Ti%c^?@hQTC)v{ZWLN8n# z=rf;(lm11RnV-j?z6IgvfPd?Pz*HuSseAWe<8gy9j{@-Gf!{g0p9A@r9*NU4sGxW~ zWEdL3KvMAL)yxATJP`rb0E38NaKl#U>kZ_7bqs~+85l+ahLJ)hlfw%y9Kg<!(oW1*NGWq+?~o#0d2km#^4zBpqpqN!6%!CKLD9?aaEvU)P{${_zf%Z=Xy76w z=XAl}SDNTygz^C-uk>Ja&r=A>o9wK%(GE35tI?V;wFyOmt#NGI`2g;D@IIvU6v}1- z`^P85@fj855xH6w2+L&+RXl*-U2OcpP^<@+3BG*wQVO(*pqRH!D@}vBw`` zz3}NdR}F$`BuMU>*CVFXvF8a80@kk+@vrV==uX~j)Ui~*ifiwk#B%i-2G$Q@!^XR@ z;qGnNZfwD}T@PVyZW0H^_X}C;r&gBG2{$qDvCktmv<^3xS5PWjn4Fr#p(97(RIKho18)E94CSyO z^0no%ja1seF0QO`h#S_O+sFuu| zDn$$9aGV+{!h6&)nl?}<*HA?QZR0-F*#?nu^GClIdnd1!-+?SEG}Xr^-Tq?=C-4_exisiuY4W97+FAKScj3yiTkbOXYtQ| z|6ilt=|-tad)Y~Cw5i&9o7~EWQF$)QR*(qp=oiv3~7#s#Q?&2)Z!`%ZsP+ zv2VYE-1Aw~N_mv>TzI+1RK*sBa8r3%Xr4`FvH$P^4DZ|t96BVv8`X8_2?K|}bsR=Q zinoK~IhffT3dJ(AnG}iz3scjR;`qad4`VK$2eS** zJW(yvo(ZKZWR&T~+GX(g1|RV7{D9kfKL|_Icg4KC6+}278g9dlOPLz4R`A@cg+Dm* z680a;pqMXUgrbOg0%pd9t|w8-&x_R*3deC^|6XJ*j(uYcQ<-5HhhIWAGb~{9!V5?6 z;)@6I!hul?Pk%w2n@X9&M;IN=;o$Rm%l^Rxb#FNiUpjGA+HRpgtTKVt>%vYv>SH6aGd(YvX zXT}iUuoaxlCtklj@1f#24(B4r((3)$Yg3i`I(QvQ%dHx&HkROW+xNcc|Inr_cyr{V zi06-EEJsvgp+vF!IjWnnP$=Y4E?WZo$)t&K(-cnE;p|@Ik{tU)!Q@^{4$J=#ODDBXY%Lx{6#txg;pMB2s8IBn?SnFw@dx>yf)&BoU~T zYvP=wDZill)P;(PvU3axHqu)tKq?}UR=BGIiD6lB#JuDw;b20Ty2i{5-o0sK`-4wo z;DJXlNL5^MuDDWKF2a9xY}8l+jruZLt!5YUe&|gB-;+XgNW)hoHI=fiVKp{@_irv^ zy;X(f=z`~plhc@l(=`W_2W%KRQsZODa~np<4&b~dJeJ&e7WwI87@s&SZ#tPm%CbZ} ze{$+5s&*AGO}&Kiy?eWsMk+1J#{JZvT~P|o?us8z_LDrZOTtH>WRU>ATBdF=7$QPz zqJoMaJ|Jc=$(th4LBvND7qnj17gQI%j1Fe*#r?0$2yQs_ODC}TiO+!<>w!A=eFd&U zFyK`zH#lm|T2};hQ}DeBnOd!doAo*xqGm=KijAAsasIWh;cM$JAa5oxHB}aMI(f>a zCX=un2T7KMlL0D)F~FY1p~FY9H#aIW-1En#ftfPME#sys3bBlM8Kuc76cs?rrIG-| zKB2UwUYVYmQ2_Ny%Pgt%i6Tu?g(R~9oxr=^vdvL(Y7zvTif9v9u)Ci0Fp{XKsscaG z&!|qdCUR~5;CCo1Q6~@*$XCDrtCO&|?ZCj+XAoyYJ+2dH39-yZj3MF`hq|guMml2N zti5?LE~<#-R5#DRjjuKexcHHuM`rjP0s5nM9BD&GsZh=0im6b8BkEjWm8+`q4Hz{Q_n8UgOBM{(Z&Op*VFFR5%w;BnTi~?{n7EdX z4;lx3Q`o{BE8yj~bj0u8jrvdsEUx(}N+wF>fm=Zi2&BLw!F{1sSp001BWNklfi~(o*!YC?_m|KWxY{K3yemnV0r- z$Q0F4fs82;ibzM;!fKUaO%~TxkAX+A2_N`+HX~l-ldxYR8T^(w{k-EJ)C z4$hjl>6RupW^?`6^aqXD=56@uz7<2}tDro{fm8`5pGG>B zLT+LV#;7Sm5yr47oz$d(1>L}OnTbNGsfkHZ2|b?XB0RmvvJ~Q_6rL=}R~0hrgyOse zG$~0!2ARc!ep^20NIKIm=g@0 z#6=Mcw+k32&L+THy&k@YgngM={L|Ow&^UbpZl}{r!5$I<`;&QMDB|{QRd=T`G`JR_ zO?TnJgpNT|W{$=t#=wrr*?HN)*eJ);oYYoiMzUkGs^COYpJB=#6cQT+U2Zv`Gme8P z*+`K!s2+!5PhuETPF@_l_oY98nH|PNHiy}K72~-Cl7xgrz!SC|p=@nSmcV39vQU!J zn(+oXaF&I+Jdgv`99gLFnxB{87V}Hx<3b16!t|tS4b!%eVm8uy#!)&xjr4E;33mt( zuB_fb#HBsz+J5XyF!q47FwwV*Ss*F@!5mPJ#NZ%=I%5badwcfSEEWny#1ThTuVHqM z;b<|1B#N-?8KAfqR%tdcix&%x!w{9e4)&)Ql7_0drD9!^Vn`DBmY%}o^Un)!o3ufZ zo1zGR)Zk!7ObG{IP*dzrm0w$m}f$I^M@;wIE4KY36RR3^Z|H-aj%@mVC@>%rX--nWp@Gt z+ShI%?#Cj!`}0LS@#AY{5;^^%D;!2^(_L5^h~w;us;tgcK&`Pj61fZ(3cyGrBWi)H z`DtL}IGB|MSOJ!03t-7|Hu9^g$mz1nMEEzl2%do1z(`8f?w39PLDq66l4GLc;%I3S z$&w>lo2sg#lG2`(Tt_OaGUfiMLVjD5hfyjgZ~!@2utZ6UPUaz(T{&e@%VUD+l)N!v zRtlm)u#75<)P$I5?^FgU7EJZ1OBiuD`594>fyy5I<5$0q?>zJ@)^E5Q^&wdZ%oR+d zJvlK5J_vcONgt*I1l`_c;y-U27Iy8hU4gw|VK|$`{E@sUkS)zUhvD=H(us_)D%gAm zMJ&M7brgzu5p=6Lws6uaPDP{#1?5xdcvzaIqSZuaA}o-CBO3L_Qvn;qDGQDeaW|HO z!3^O}3DcJxK4JwgX-^>v+d=-&5zNn-H~^WhoTZ`|b6nJI466u6Rg{*ff|9s_DoY4t zo2d!txhzUEGCs9eA4NL1mpTo5V56HRsIDTd{D-SI&!OtB!r@g|)c;A27&w-cQuiwn zML7CL+^{LKHi31+KZnTm1?;%8fa6wCxb?Z=5lkPNhB=?stGOi%%<0c+|I=H^TxY9=rW2NotVkE%)4b|xHN_I){9Wm$yV$#kT+36p-zWr0E& zGZZ^AU&6GW!F0JQjyvp~EX(TzbC)gIe$r5V%t8;Sy)Ss6+O4Z|wI6S{l=xjck-z7o zcws$9?yWPJQ>{MZ=^P3(We8$rb0|AyQFA$#9YxtL2_zNDc{tn#cQ{_qyFFGSq)_w9 z?YJLK7)}B?+vygAaa)FdM1QUc#>tr~!{$0NBrvQb@{~t7RzejeB#_29hQ&E~ke^XS zB{>RR&x$A~nVHGp-V;nZcN93QQpO;e77c~7j8sN8*jScuY$Kticz z0nMPnf2V9tphv8m9FTwdeT86*D@t7OR1UvWjNw7&_mHqHSb74-;Yi>Ld~l4?9u6rJ zr9w#rwT_j9xr7NOy;3T$)lIdqYF`8s(uYr~j`P`)tTD2MCa{o7FchjOd9Bn7fb}A# zQNpOG>rV^SS{29Jpd_cL!ZXLgSjw+}lfP1Pp0spio=0_8tU0f{U)sVOvutVBmC5}c;~Ji zz~!^pxOfiRU;PID!mpr^)n(a|E%)wGeY3-c4Ed6XX2~v9@Jerj3o7X)q>(Ktz9=fR zZD9>{z19>saf|r^Shb9NWfo99klYJXCrI36dn^iGIts9=xXzR%Iav6^EFt%oa7rTV z{1QrVm?`2tGA|H-hrn3!1E?FK(YwETu!pzNN217m^XsD0fkewx-bPBVAe&$?l3a%D1BtAD;1fW-IGLf!cv7Z} zP?B|VyezFGYQ{5cm1`x7B*BDe5OvM*-W{|E@WQGQnW>sgl30_NLmnd(oKpldSyp{q z;w(Z;S>&mSnwh!3TZR%OMB!OiWZ|VfC6N>y`UY?<)D<*Tz#I$I0CihasYR)Gzc@m` zQXN?9+@T3On26>f)jnzB^2K31y8Ex8*ErH?9cc<|*$ld>@VyQ2O5zCMS7aD~TK}2q z_&)q11V^PgNX{7MLcn zsi(o5k_=IZ@Wdg(MO@9n{eG;94+`#Bz5QSI9DeXg9qaGjEpx{RP(&jTXA8hP;`SxP znoWQ&1FiLxOpqcv-jnJ>--w|d)zNeZU^zE&XtM0pKVh;gZ_*?=u5+>ZhoSd6sa3TZ zNP5JCIc#Ejs-UP=g?FmJFz4`ge<+ZQccx$@4uk2#fwH|?4~@v7zULLp@j2`t$ss+l z50hVbUd%`J7yE-ZQ(cgIQJ4p$Jm*za0$B9{-#jMIQDwh^L#dN#~Y&xP^kxVAKD6_dN z4!-mfCK<4>upsggWW5|tFqn=7Gr1o|a<2$jn~3|?8Z$;jh+2fHy&081KuD}b7Nj*M z;^kUv36E^;sAS17#>XAJG+7V2@*hyGWiRZwG3#;ph>Q6docXf-$72KLZ6HP=#c&4qu z6|nY#(*^Wyw=m25Q8*Ee-ZMO5R_&I_#Z|PN_GxG|>)0A?tKeT1$5{HTEu(KnosW$vae z9J!-&d1UPgjEs+~$ra?|s-Bz<&F1h@!NOeW7{;HM34U7EapMTe)iMb6Chg=^RpD*F zB3IqJ2`{scBf@S<;E>&4eAYs(#-T;p0j(sf|1eNT)06LkEMzG73>d*BttMDq0#-%C z${;<3H*w; zM;wV6Afs~R$L2T^*)&EdK0)P)WS>%!p0Z=PQ5={^VIeV%*{Mmus>x$~zK1Ua^3J@_ zN#9CIZ=4H@D=n^{GP2$9GDSOS?jW~YMcVOCzPJSZVWU4B9r2MaMYD$mE?Z=J++0rw zc>PK}DKQQV_I4n|ePvKnlwT7H6E*QL7kMZtCGW<`rB@Ac6Q&e3Wm^{#BEz!CnK?W! z+T?VR{&So;%wbkoB|6#rabRQwn3@CPsT9V%eJQCgDWQt95-OUO%3y-h&~^cna|IZs zG}1c7bF$I{WDKRbY2p9UPGE!|qnyMjDmYd?iV-6RlR^(vKW+|piEFr<78MAvirvpj zoO(z&W*6`(9+4t&ZM%1KAg{T)FWn1I2WW191@3ed?|bhX*9`8!EkxUHpfs#&^iw%F z>*hm5fQ_6_>gP=*GDwY%`Oe0^f`LON5vxR6HHduSn2wy85IF#OzEw z%pS1n0`?oEoJ%N_<}fvX492{PTyg}{&Wvb76`nQarz!4_6h@R-u_~0!Go{l)oBfcO zF_pbciy@8(BEWke&}&*tLtU6DQ5n`yWx8_20zeGLg1pBob-%ge@U3mu$K8AYolZkJ zTfHu$WjQ`N$kWYcWp9$rDk#*Bz?v>#)Z8y+O~ycx{{g1ThcM4&Ss>NpQem_njPdsq zfj6i+!Wb4vVkw4P#zxMTmQtZy6cJR{0bZx{a)tQ(UR=Xv{AuMlPCzQv-7JCh`cEQV zeHw%MPH4k}(6|PTx>b0}+w-euxK>d=Dx8TDoxOp8gVX>~N}13;?_ zTu<)`N9?vp^lcfLF3@{)6O)geqC}6_l8*;%t{QAxCOk+o@q#=%m($_o<5;k4WU>WJ z7A)*HrbI44&ko}NRTvZtC|71M$>))$O*~RYx0RF}BBQ?p8U9u`BDqshg;lyl#f9(8cnDr;Iulg(4tUrwK zLu(K+YS4Hu7ZBL!DNhZwu_rc$l{fwizN|lh4n`1*g;0wQfJNJ=H^RcQ3|2*Wdx!el zR{B_os=oRl0(wXu-F|)gzU3ku?cAPHCLO@5-CeTC;UWGvQ%DsWc`JBX|X2r(pRBPh}C0g1~Zbb+P2cy0bV#X z4h%4$lL+2dU%@*Iyl-j@7Kk`;&H@sMp~jZTc11j_n&{%P)(oP>SEmhn)E2mE0-{O^Pnc?N zTQh^PQ47cBipZC0$fYtON@tO2sLOqq^A2z@!#M!f#@!FXR{>e)x)FVxL*_OgFjnx%gIe!ALzj6%U{_8)&W1C`l=AH(=TpGha zJolT}^3k7zX5Nd|nIFLE)bLjQ3jT8SG~C@9UjB`Lf`@nCg^Lvjzx$={;=jI?$Le4h zF`dB;clyvu5G$1LxOZ+>l@EKi4|eCBb1ifS;?a3F(Y^qz%60+UP?=SoM23mHsJ z(mW6k7gf#zGt~2Cf|o4`z*H8aDFYR~1dA#SxNL3B7)%%-)WJ@ikS|nZ2%|i&YJ;3W zkSri42@y`$o2ADfHk&P6zg0)|<_eY@ArTx~p)P-}sTZ(Zb5YmUK)?4%{K6N07axEA z%Xr<|BJb?N$dvLkAj3U2`%R@`}_lG}?M;=%Ut+Rw3Tf+F= z7oNov8*ZU<@^!SYo(CFBhy-^?_ruXzf4Q{e0M^%V;7cK2BuN%$S{2H343v&bk2f9+sfxWYNnBX|_9Eo%Qg6Xru_zk5lU$jMmh^`V6{4OhSlCldVuWHh zrXxyC1S0x(_oh)%95J*Rt#$|XIz3gdgKz)I5d=dp{?jOFyW&U$$z4xl(|u22@3_pXf~(&=FF%&XWq@&s1-Dy&^5PQCUWJoBu9O>vGJi%a;**WSmcKDG__ z-?Ik4GI}rG_|h4~uAV|K#8M=)3YZ7j~ehAO{_Q_fjj0LQ03GK6NW zg8%kc?|_9J9RJq4Xw|Ob>4(Eu+qe$*+-Werh)DZZkGPY2MRW@l)o5Y>4FzECmv{H< zYs5WW%mp?>suV=`wokED3XcL+;sFbC=fV=@PDMDQCV|CNi#b-!O`?WJ z%{p4OE3htH!}zBLF%VwG*>jh$KIY)*ht~)zOuKOjF}@<#gRar@!4Got7$ETXHquh< zfU&`i`18mH7_}JEB-hh2zCvOqWg4hhw%DtO;yps-5aMY6GnJdAjhLt_o|>m^Dm@V! zEOC70LIU4^>~mP#X`}qkJDy}if;p&~hfuZ{j!qxNST+gMaJmUtT{eQq`V~U*GF&%? zW~&9>XyM9ILu9P@#qXnWZ2_9*RWpY$^uT8kiYMT%-;FEQ+Zf!n4ei0ZQR@JI@~zAG zJ$@kQ(UD>z`zjf{{{0mW?V1ZEpzv>`C zg;-@KxrHkQsjFUoLI~~AL%_G>)d&f+m9br8xTLK??7>G6x_L_|bGs_T+GN_Ux+k!~ z+zZR%n9LWDF>H*aiZDgNk)ifiW-@LcT7yoMqumGzPHs1uXZ9H^$ z7_CMf4{UQW|5gXBdKgdc0@k{9aC;F08#gNWcf`Z2{Rg=PIiPj*I+oX57w?72;4!$Y zA*w23>e~hedLkQQgrjI|*@a&}y@KCdzKosDG6quXvEB^fTC;_-w>nsC0%xu*iw7ZK zc^SA#I|MecwA8@mS{=oU99tUKuxaN2{>7OsIQRGy*jT6MzlHI}!@yln;nqb5e|5Qz?RQ^=du0)5uLD>U2sMD48tQ`$T)f%AQeDbmdRQFE z;C48UfqQ=ep&`SEfOuvr=cr$K2ineGLZ{V1y?Oz)nhWh0KaNe?H{s3K-o*9lbr@Sa zc<9~+=waQL7d7npNE>e372DFRi34XYwqV|+VdNnVubjT_o1tV7!~{3Ex3?(q>lIYn zMMN%d#InlZbmbI12e^e+B%;2%z2hJh(eQs=Y-7ZF4_g)n5Z)~6#qqn}KLc}P3%~WB zzKi=Gxf|fOKr65FHr!h-&Q+UeE!S{04&1oW#$xRjn$=}Er`{CvwpVMYwA*-hg&GNg zGwoGeul_f=_%(pmT#qB)b8y$Xo499l5s3|JfwgOaRus)x2vy$3NkD`?+1fySw?A$HHF5Q=XS2e!_C2RA94eqsTUGpA6$xr~+No7nR#5D5eCUC^*; zy^B~BSag8R^w6H2K=CwS-sK80H21pWKO&&jY#Y_M?^M-J4!=bS35%abxXw(;b9%b($kgUH``Jxs`uesebyXU!n z4a{v#AU$cgz#N+EZ{jN-_tgElcOBhlyZafwo~Hq-?SWkvw`w(_GW-+1)VNAZvT(J$i@pZGY=pFfYOsW0Q=sXS8m z$P6w;diU-CuH6K_`F$Y!kcLmDU2IyX;lz1Y9QUzDG@QQqD8Bf`FJg6d1#8!=L1-X? zP){643kAA2wBFVYx98TB@1Xe>tb8D-`o({kz2C$E79uJ9V#;FUy)`W|22zdR3hFaalcixm8GLPNwqIgPP^SLK9T)1!% zCr_Qi_3Jm#Xf;KMB;+kzx&z%Uj3sOo@OnwGhj3kQ_c;$;9xj8vg%&v9d+d|zpQfnT zdyszDFVx`na81uU!7b?7cDaiv^+b@sHaxvM0^H64jgzx*8_Ni9OhFq=qH*T9IF3E} zzri|t4)4A99^QTTUD3;Y@xnQL{Bb#X@wA4=?~`-B`F;qo2=M+TjT+~%dk3&sm1*|J z?(1MEd>toGyoXDdE}>rIaLF2S6%Tul^VPijal1Dc+*w!i3|Q|50wTuk-+1D7lm%d* z-nji#srAIjf*qVbhJ)8}163VD2Z=v0469gpnX;x~hX)JifI@U-qci?vvo$;GVl(G3+DJ7a&1^2LPyPeq0<~iPv+6 z+jH#zM`&FU;<~rv+4aws>koxP2!})dujr?fPy}xMChBi~3Gt8oABYW)WA&9^M|9Wc z5Ls^u-SGPBUlJnbnMdWdOQ(R3J}l?@kADuV)I>K|&mbk;b~SW5E*{?LV&l+Ffy66U zufp7E2K@ldrw~sb`}ty-HuJf{=Kv27!Mh14KwnY>#F>w%pn``tUvJN*7C^eERDyac z2*4n>bl-c3)ew!wuy*ZQtXsFvYme?t2WY_H;2>7teHpO_|9gb>`w+YDv#7uICB&b8 z0qoH)qQ3BFc+{-o-mOyEUSHDizz*OnMZUE#{?A`+qj863>~P3c4{MO7>*?hc+`4rO zolZwtK|Z@&M?xz7O77Jr)XD0|5>RUR0bC z4r6dIjvYI8VEgv%^4XB^I;7>X(I`bbAHpN4`@rA$f8}@g{}MV&=h3?MF0}YYgdX{4 zc=mC5=GzvqZL^%A@GfxUmV9nKaY+A*5a2EO*);iw>ktly#co_$vvJ++-rOB{IUq!Q z%F==a-Al>7)#3w6>!0d&KnE209e(ZA7wA5AOS{84{r(1hZns)kT3W{IuNN`*&2Qp+ z-}@eJ+_)jkO9BJ|WXF!}xbMDQXt&#V@5Bk%m5SJ2Agp9cBoaX^788~W=XLQLU7voB zMx)}qrKKgTtgN6`t0APy(>qET&@me}Y!I11+8_1PpZ+vbsZ=1!5WKknD1D;UwA)Y< zta0r5tsl@n1-o6K1+6WG1z&yo5Jop&>T12n*5JGLy&9tnc#jT9{>S5SJn-NyXra&G zfd}r#;^H+l8g&8K_3PKe*qX#vBPkLkwq3!MD_5{g@hV7jm)7k$hJ?_L_egTuwlf+* ztJT7-l@;MH5OM*)06+g|9z0muEdT%jqDe$SR60i37@-hiu_zLW4T1|Fe)wT*+qO+0 zRB=E*-D!8=ZY|*8^rE8IS`XZL52UqTlfC!gzQ2KM^qaN{>0~WQoz#EXuBGOYl&ITj zchG1y#db85;j7o1f@(ur2+>$n0EnoR&Y)OLz0njvB?=}{A?}jWuXJ4sCyS?Ilc_0v z68fHwr#b26BY+SW3JFBfH3kQVFf=qILJ`qu6#qYrOFOEurm4UH0000KxIHMmI7@fCRxLQlc1SNtR`4Y>&rjjy=xyI_!96cFvCHc#n6^ zPWBnuUWXl7wvTMdlBk>|W&$Kg0z{6D20Dkz;nmA~e!uD_0Lp*v7EYh;E_7ABcYim2 z@AqECXBif`N|yQ$_bL` z47#DADjKS$fnj4BDReu9rX^8z69x4LuVniJ-t}BeB(J4=`HH-lFboLY8eY3f7&=5@ z0C6O*>dwd8>${nqou;?1*nN*5xI5*xT(<6U`(xgDKED0?Z7FU2q-?!Qy#0EmE6T0M z9e26?Yz*(dPv!PyZNKRc99DeCGvZIzjn3xCjqIA++uVsY2W;sIl68 zlc;-qU116F#zgVuU$3g^Mosl9{x-wDjewqI6m+_7!@s74{ zpQgAVsnK_R?zXnyzWi8;QR40gcHcS1^F11kCVr2L5+=Y<2$dK^RZta`IMz@i1tq#u zqhrE2+B)1w9z-0(_+gCe1_WV56b1M}NEF5>YJ@H>N7c|&6Z3+odyRuFlZ`_875Y9M-^23*YV{7Qn;lwhm)Liyv|Q=7 z2whB5q1AF3=*^NaVk|>N(|l|j3{A(>R4h}KG7y^o3%~eV|G(e!yC1$+dPnB^yM6zG zJ);!zNzy436iq(ox*ocrqiZUrWuWT@q3;pLF{;|VnIH`0@8Y4U8etd_M=_?Q%jca= zz|wLBsiI+sA9!6w2q6j-bWT+-PE}Z5 z-N4XdHY+VIUcJiULkB73GF-bc&!PP@4ENbI+7Y9DX)L8gw$M-3Y?I3xI8MOpXBYXQ zC-%@&Op}n;*>#Ct5K60RJ1{mni6SjDA_!wjj-V(J ziWU-vA%=;zsAp=&yts$kn1imFg9H|fcxdHLi5NA?X80bi zflCy^g-hpgUC3vX1YW?%$S5l-t9<;UPt$H(r_j?&!isqEy|ZL8CZ=J?coKRsUI-l# zV?2YIo%<01DvTmxRU<-0Lm`ZzvRY+nX%R0B@LHQ3y>~C|MxDrXQB@twPT>VH%PX6# zu3x9#=xj+@x$WL>XF**T^r2_&;eq>R=djyKtR&6QOyGNdK=eI^5&@vGMj3*>txeutb~Oxq^w3#O9uyssBEstd-MH> z{=Nasgw3s63o^jFo-40q*Yqw{msj}h-}!0wPuDOL3F*Gvc84g^h!mUU)d~aslZ*{d zN@1&piHHq97(#V=i4f&)V_=jZ%s6*%>xAHhAUL6P&+z1r&>7|2T%7 z<<*y7!}rSXga-Y#?sqLgT%hOqGT<1N&EU`=x?$k?emB*Ow!cJx4CVJ!B2BC5VB1MN z*C&xOq(*gI@fwRD2&vZFRBBC%J!xF0%8v1IlD3JWLOPwqFjeaHI?D?S96d6LrUYbj z*euui?O*#K#ngh#t{P33R=rODzF}0& zkoOye;xjbja+BA-|1t^1B)@lxk%M~(RhZegk3D;LET6%>Cj@?ft*Td;^ zbG&lmbXU?MyNbJ^UcVi(w-T-`KQ3-sxEI&&$SeUFG!?=i#1TG_7)xlVs?zCntwGmK zEGvO3q!HWLi9A=X&e8E4dW*e0{OE(Is=?;wCU3oVlD#wcVw<|O6io-WFNsFT&WT=J zPvx^;y~=?D`+4Kd*9ijQ@?46=B8}Q6*>sMCY0+_7vX)4t(=wy#v>OZ#4oLO#IxR}# z{}qklp*|_xv4i_$n!0#vfm*rDx4-?O2tz#k)lq)sXC}aHkjZ37rRvzJBvBBdS(dag z%ZWMt+;J+Wu2AblsM#c=JH}YMK2IincZ`cTl0&&_10OI7dGhY z8R7~zyNQ(4=B*eY(z5My&@=_Z)MfB=gAmKMrErC&Cv023*wSqRzlE+VxNe6a@Vbdi zV8{dPG$S@k>y#U9?tkDIeFHsGfWo>o;VSxjrEk`hh*Z)dnX+W?@**8QR(S1no3j@; zD3xpE@_G6B8>J2D?!;k>N3&TYaNAN*1_uUk9S4y*2}^1=s$G|A3Lo4N{zD$Ls0oOD zOhc8yI+@K7Yo^SGzW3ZK?3y0sk^B45wGP=_7R%C6Z38cgrOR|`P1fe-NhvB`Pm=zT zLFP}s&6#h!fEpKH@R`qig;(zII3lLXLM+~@ z9=CrELLW_23EgfEZs-=Oa3!un=!JNGTfS1Hl3J*duyYtzfsL}y*|Q5=xVpfOU3+-{ z(@)bk&?}1~Q#WNb8p-!o*tu(()zvk0)5H&aDHwy0(dk|M*Z=W(T5XTn+1+ezY_Pnt zEVXoXbqU9*%l8xce-uX;x=1T63|&W4G*XEaf$Pezp56kz#Xg*7jq=8_%&;P1*$O0+ zCi!%RR5C@WRHD;y`GY_F1i$*bpJln+Lpqx!^a4CZWO6n=T7t#X7l|4^PN2{V0&=N5 zw@zQjGE!u*XfCXA<;0tO*u$?Rw;Kh^#P- z2!dGV+rHvr>Nai9q0{ORhfuH8FboAdS->}8eZ5Z8aflQs_V)AW6Ys&$OjKQDH>%8( zWQOE*X>o_+R<)az9Y%V1<^Kpuwc z_%xdiNfrDMY(u48tCK4fq=jn4GDdV92d7a-(+x7|3{jNCG<504T8%1E6yiq#X0DH^ zsVUah)}-sXeB~P7f8hc@@v%dAaX?V7l1TO7ZB$q~bpex@4grQ{NUJCbCDJt1jLFQt zz1)2L9C5i#?baGESL?j@gHLkl!UalB2e;DLQhw!*1GpmqOW*H7spg?u0oAsPt~rFB zPhZb~46v#pv|VFixk9N@=FowI>>V4$w#{zQBr*`sM~OmN^a%GM+=S3jApqfa0#6i1 z2C5q3c`cdNiW)=FbeZuy{`jL?!mpF>$Cw6@TXG6M- zI1K1CJM{GCN!m7>>uWL>-?eLoYPl+F6_Fa(t5vDhzU#5MzKL#G@(_e2RI62<{n9sR zG+O-TFMgPG#-P!vQCeR_&)VeESr!*p=-)BI{Dq6;Y@41#vrHU5K-}(7`tD2g_YD&1 zIz!VtIQ8PIRBkNMXt*r5>+ec={*gN1^qH$Ht(2tiMc!zdIP|$?EO2w~hAi*zxo00E zqx~Fx;3&E-GIx!jE#g3knX=InIvwE#M1Jh}By39xJ=P$Ied#hp1-5f$C(HBK*f}$U zs_FdxfBXu)Lu1&sEz`|(IwhfkZN$n-*i>pYtW=i5;4pR1$Ei0VaEW7|&=0WEI)M_% z0GjLTK~r@M(>FG&v^u7b6Q#OVg zqXY_Spb)oQu3x*36Li@B;9*$_T9zq`7EzFi%GnKs*^0vw6}7;Bbo5M?TD6L88LZc0 zv}A!!C*Ygk`WDHgh3hmZ7JI0->on?BGO09??^1Uyt}Sh%C3{h^XjPYq6`wHZP~LQL z+$>`gQzViJ>56KN60xSB=nA34rF=X;B34wH;U%puZsfLWWNnk6-KOpPIDUX`b_+d3 zDz3oJ#~)-OhzOhx3wHvpv{FrvNimOHpPVazM z-`q+=6^T0O+tT00n3k7I2yifpVy1Q!nVKA=kWVvuaF%=~4Utde`Gg{v1v+oN^d{~` zUFQ8^N&`2hqqU`piz-mm6vE|+f=Q&PY(cP5D1JAY-9JsWQsVEva*ea6&(Yi0E7M;Q ziv&Vy*(M{2UTPZ)_^w03jfngzDlU}`FcJoaq2hQRs-aU~tdrYe5!OP|$+S#wo6Wj> zt%y?r0ZzC<7;7Xm1u~|nls)Mx1w5jQOliyF{_}tOO9uOXg~7foXh}39MW8`w3M5tK zz8`u&tvEt8ZPZ2!$Llcl(7mWb1)79hJ9&zvY2rF<(o=)flgTX$;2rQ!zoP_@kEE^9 zlT$fz-vM?{jbmAn#5_Vbl>b`czA0E*w9_k%Nb+Etk=oKFO?(7%g)=f>OxdJ2+RrT=b6yN;bC6?DaeDEV5=JcskOz)iJ{MmCPE$|vO30q`( z@=S~k%GcdmTxYXVmQ|@hLOe&fr!<9Z4u8WzX?duQOQl{RQ_Nx;B49dLc7nFsMlmA_ z*I(gl(VVRjgCXLQp2=_ zmE~ww+tfE#=KldUR&#qybCWE8B96Iu# zbfcC?4`UxJMaoiuZ-!}b&(D68v}w?`BMKzA{Oy;wlAzlFsM^*3+np_;l>+h1X$DrH zU}`3c8}iz>pXb`?i`=@oNIGATr`%XuXLw|UKeh0G7Z&Dh_s_QeLg#Hv@)tO;BH2W9rx;G*QVqp(us9a^V8Q`zO#-2_m(N zp9p6z3OkXWI*v;mhHS1b<2LI2_fNjgGaq_}TMJ7pE-YdtEo!woDJwyQivf%b4A9?` z#f&>BZjFQzF*Q`A|A#-s*p3zumX&+Q6;z zS2?_An$6WRVWlat{Yca49~fl4a*LqaX72PQrtaCz`775Xk~zF2}8>_3*Lca9H@A5nU%g?fN&t9JSfXOHS`s?U+l5)8!Tb06A6jjBF zRAR4%CO|*o=sg!rv@;{0gy=~Sad6Kh|NLivf=~a=Uvcqbm7C!TYBo!$6%%VIB7wzk zuHsZTWU$a8C}fK4KfH^Pv2jAhW&Y+(*-x-j15AvLva(sF*-BB38f