From 5997849f7533b18c644e84092b19b978811ce16b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=A4=D0=B5=D0=B4=D0=BE?= =?UTF-8?q?=D1=81=D0=B5=D0=B5=D0=B2?= Date: Tue, 13 Oct 2026 22:28:14 +0300 Subject: [PATCH] refactor(cleanup): remove legacy terminal implementations of ported 3D games --- build/graphics/poker.exe | Bin 878592 -> 863744 bytes casino3d.inc | 10998 ++++++++++++++++++------------------- poker.asm | 2834 +--------- poker.exe | Bin 878592 -> 863744 bytes poker.obj | Bin 1072156 -> 1040682 bytes 5 files changed, 5484 insertions(+), 8348 deletions(-) diff --git a/build/graphics/poker.exe b/build/graphics/poker.exe index 2f4481cf9e97411dbcb595f8f7a95ec87ab815b8..bdeacf0d6b161ea076976d964c75eb36c3f7e746 100644 GIT binary patch delta 138086 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∨8TIShPU)2pSaA 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 ^xjTv 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
5GTryIY_hrZ@%QkE@0mR;a=6c6FNMQ6 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 z(dy0WIOk+F5^@^kOvreM7jiyiI^;UY&5*@%eitTI}SCoN)8BT9L# zQ)+SHw`FsLkKYobRT!EU8;P4Vd+EG|izb0UiLum;aq&O#X96(Y4>{N-?Uow}kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ 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 Wm)%TRgALOfK0fIG|Mmae7x*6t2Ed2_ diff --git a/casino3d.inc b/casino3d.inc index 72afffe..6b3dab5 100644 --- a/casino3d.inc +++ b/casino3d.inc @@ -1,5614 +1,5384 @@ - -; ============================================================================== -; CASINO 2.5D - MASM32 SOFTWARE RAYCASTER (CP1251) -; Graphical migration; this is not id Software's Doom engine. -; ============================================================================== - -includelib gdi32.lib -includelib winmm.lib - -CreateWindowExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD -RegisterClassExA PROTO :DWORD -DefWindowProcA PROTO :DWORD,:DWORD,:DWORD,:DWORD -ShowWindow PROTO :DWORD,:DWORD -UpdateWindow PROTO :DWORD -GetDC PROTO :DWORD -ReleaseDC PROTO :DWORD,:DWORD -StretchDIBits PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD -PeekMessageA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD -TranslateMessage PROTO :DWORD -DispatchMessageA PROTO :DWORD -PostQuitMessage PROTO :DWORD -DestroyWindow PROTO :DWORD -SetWindowTextA PROTO :DWORD,:DWORD -SetForegroundWindow PROTO :DWORD -GetConsoleWindow PROTO -GetSystemMetrics PROTO :DWORD -CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD -ReadFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD -CloseHandle PROTO :DWORD -GetAsyncKeyState PROTO :DWORD -PlaySoundA PROTO :DWORD,:DWORD,:DWORD -GetModuleFileNameA PROTO :DWORD,:DWORD,:DWORD -CopyFileA PROTO :DWORD,:DWORD,:DWORD -lstrcmpiA PROTO :DWORD,:DWORD -GetFileSize PROTO :DWORD,:DWORD -Sleep PROTO :DWORD -CreateThread PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD -CreateEventA PROTO :DWORD,:DWORD,:DWORD,:DWORD -SetEvent PROTO :DWORD -WaitForSingleObject PROTO :DWORD,:DWORD - -C3D_POINT STRUCT - x dd ? - y dd ? -C3D_POINT ENDS - -C3D_MSG STRUCT - hwnd dd ? - message dd ? - wParam dd ? - lParam dd ? - time dd ? - pt C3D_POINT <> -C3D_MSG ENDS - -C3D_WNDCLASSEX STRUCT - cbSize dd ? - style dd ? - lpfnWndProc dd ? - cbClsExtra dd ? - cbWndExtra dd ? - hInstance dd ? - hIcon dd ? - hCursor dd ? - hbrBackground dd ? - lpszMenuName dd ? - lpszClassName dd ? - hIconSm dd ? -C3D_WNDCLASSEX ENDS - -C3D_BITMAPINFOHEADER STRUCT - biSize dd ? - biWidth dd ? - biHeight dd ? - biPlanes dw ? - biBitCount dw ? - biCompression dd ? - biSizeImage dd ? - biXPelsPerMeter dd ? - biYPelsPerMeter dd ? - biClrUsed dd ? - biClrImportant dd ? -C3D_BITMAPINFOHEADER ENDS - -C3D_BITMAPINFO STRUCT - bmiHeader C3D_BITMAPINFOHEADER <> - bmiColors dd ? -C3D_BITMAPINFO ENDS - -SpriteObject STRUCT - posX dd ? - posY dd ? - baseTexId dd ? - frameCount dd ? - curFrame dd ? - animTimer dd ? - animSpeed dd ? - interactId dd ? - promptPtr dd ? - distSq dd ? -SpriteObject ENDS - -SCREEN_W equ 640 -SCREEN_H equ 480 -HALF_W equ 320 -HALF_H equ 240 -SCREEN_SIZE equ (SCREEN_W * SCREEN_H) -WIN_SCALE equ 1 -WINDOW_W equ (SCREEN_W * WIN_SCALE) -WINDOW_H equ (SCREEN_H * WIN_SCALE) - -FP_1 equ 65536 -FP_HALF equ 32768 -CHROMA_KEY equ 00FF00FFh - -MODE_WALK equ 0 -MODE_SLOTS equ 1 -MODE_BLACKJACK equ 2 -MODE_ROULETTE equ 3 -MODE_SHOP equ 4 -MODE_ATM equ 5 -MODE_COIN equ 6 -MODE_DICE equ 7 -MODE_SKULLS equ 8 -MODE_SKILL equ 9 - -WS_OVERLAPPEDWINDOW equ 00CF0000h -SW_SHOW equ 5 -SW_HIDE equ 0 -PM_REMOVE equ 1 -WM_DESTROY equ 0002h -WM_CLOSE equ 0010h -WM_QUIT equ 0012h -CS_HREDRAW equ 2 -CS_VREDRAW equ 1 -DIB_RGB_COLORS equ 0 -SRCCOPY equ 00CC0020h -INVALID_FILE_HANDLE equ -1 - -include casino3d_data.inc -include font8x8.inc -include src_graphics\platform_data.inc -include src_graphics\casino_actions_data.inc -include src_graphics\audio_data.inc -include src_graphics\startup_data.inc -include src_graphics\card_tables_data.inc -include src_graphics\native_durak_data.inc -include src_graphics\scene_animation_data.inc -include src_graphics\arrival_data.inc -include src_graphics\city_arrival_data.inc -include src_graphics\merchant_data.inc -include src_graphics\hall_data.inc -include src_graphics\npc_mind_data.inc -include src_graphics\npc_life_data.inc -include src_graphics\native_wheel_data.inc -include src_graphics\billiards_data.inc -include src_graphics\buckshot_data.inc -include src_graphics\russian_view_data.inc -include src_graphics\unavailable_data.inc -include src_graphics\native_slots_data.inc -include src_graphics\native_clover_data.inc -include src_graphics\native_coin_data.inc - -.data -ALIGN 4 -h3DInst dd 0 -h3DWnd dd 0 -h3DDC dd 0 -hCasinoConsole dd 0 - -ALIGN 4 -hRaycastThread dd 0 -hRaycastStartEvent dd 0 -hRaycastDoneEvent dd 0 -bRaycastQuit dd 0 -raycastThreadId dd 0 - -bmi3D C3D_BITMAPINFO <> -msg3D C3D_MSG <> -wc3D C3D_WNDCLASSEX <> - -sz3DClassName db "Casino3DRetroClass",0 -sz3DWindowTitle db 192,241,241,229,236,225,235,229,240,32,202,224,231,232,237,238,32,45,32,50,46,53,68,0 -szTexturesRelPath db "assets\textures\casino3d-hd.bin",0 -szTexturesFullPath db 260 dup(0) - - -playerX dd (16 * FP_1 + FP_HALF) -playerY dd (16 * FP_1 + FP_HALF) -playerAngle dd 384 -playerDirX dd 0 -playerDirY dd -FP_1 -playerPlaneX dd (FP_1 * 66 / 100) -playerPlaneY dd 0 - -engineMode dd 0 -interactTargetId dd 0 -interactPromptPtr dd 0 -dancerLuckBuff dd 0 -flashTimer dd 0 -flashMessage db 128 dup(0) - -promptDancer db "[E] ÊÀÁÀÐÅ - ×ÀÅÂÛÅ $100",0 -promptBlackjack db "[E] ÁËÝÊÄÆÅÊ (21)",0 -promptPoker db 91,69,93,32,207,206,202,197,208,32,40,210,197,213,192,209,209,202,200,201,32,213,206,203,196,197,204,41,0 -promptDurak db "[E] ÊÀÐÒÛ: ÏÎÄÊÈÄÍÎÉ ÄÓÐÀÊ",0 -promptCasinoRoulette db "[E] ÅÂÐÎÏÅÉÑÊÀß ÐÓËÅÒÊÀ",0 -promptClassicSlot db "[E] ÊËÀÑÑÈ×ÅÑÊÈÅ ÑËÎÒÛ 777",0 -promptCloverSlot db "[E] ÑËÎÒÛ CLOVERPIT (5x3)",0 -promptDice db 91,69,93,32,200,195,208,192,32,194,32,202,206,209,210,200,0 -promptSkulls db "[E] ÍÀϨÐÑÒÊÈ (×ÅÐÅÏÀ)",0 -promptCoin db "[E] ÌÎÍÅÒÊÀ (ÎШË/ÐÅØÊÀ)",0 -promptSkillCheck db "[E] ÒÐÅÍÈÐÎÂÊÀ ÐÅÀÊÖÈÈ",0 -promptBuckshot db 91,69,93,32,193,192,202,216,206,210,32,208,211,203,197,210,202,192,0 -promptRussianRoulette db "[E] ÐÓÑÑÊÀß ÐÓËÅÒÊÀ (VIP)",0 -promptOnlineRR db "[E] ÑÅÒÅÂÀß ÐÓËÅÒÊÀ (NET)",0 -promptUmamusume db "[E] ÑÊÀ×ÊÈ ÓÌÀÌÓÑÓÌÝ",0 -promptHellTower db "[E] ÁÀØÍß ÀÄÀ (10 ÝÒÀÆÅÉ)",0 -promptShop db "[E] ÁÓÒÈÊ È ÒÀËÈÑÌÀÍÛ",0 -promptATM db "[E] ÁÀÍÊÎÌÀÒ È ÁÀËÀÍÑ",0 -promptPlayerTerminal db "[E] ÒÅÐÌÈÍÀË: ÑÒÀÒÛ È À×ÈÂÊÈ",0 -promptObserver db "[E] ÐÅÆÈÌ ÍÀÁËÞÄÀÒÅËß (ÈÈ)",0 - -szTitleBlackjack db 202,192,199,200,202,32,51,68,32,45,32,193,203,221,202,196,198,197,202,32,40,50,49,41,0 -szTitlePoker db 202,192,199,200,202,32,51,68,32,45,32,207,206,202,197,208,32,40,210,197,213,192,209,209,202,200,201,32,213,206,203,196 - db 197,204,41,0 -szTitleDurak db 202,192,199,200,202,32,51,68,32,45,32,207,197,208,197,194,206,196,205,206,201,32,196,211,208,192,202,0 -szTitleCasinoRoulette db 202,192,199,200,202,32,51,68,32,45,32,197,194,208,206,207,197,201,209,202,192,223,32,208,211,203,197,210,202,192,0 -szTitleClassicSlot db 202,192,199,200,202,32,51,68,32,45,32,192,194,210,206,204,192,210,32,55,55,55,0 -szTitleCloverSlot db 202,192,199,200,202,32,51,68,32,45,32,202,203,197,194,197,208,205,192,223,32,223,204,192,32,40,53,120,51,41,0 -szTitleDice db 202,192,199,200,202,32,51,68,32,45,32,200,195,208,192,32,194,32,202,206,209,210,200,0 -szTitleSkulls db 202,192,199,200,202,32,51,68,32,45,32,205,192,207,168,208,209,210,202,200,0 -szTitleCoin db 202,192,199,200,202,32,51,68,32,45,32,204,206,205,197,210,202,192,32,40,206,208,168,203,47,208,197,216,202,192,41,0 -szTitleSkillCheck db 202,192,199,200,202,32,51,68,32,45,32,207,208,206,194,197,208,202,192,32,205,192,194,219,202,192,0 -szTitleBuckshot db 202,192,199,200,202,32,51,68,32,45,32,193,192,202,216,206,210,32,208,211,203,197,210,202,192,0 -szTitleRussianRoulette db 202,192,199,200,202,32,51,68,32,45,32,208,211,209,209,202,192,223,32,208,211,203,197,210,202,192,0 -szTitleOnlineRR db 202,192,199,200,202,32,51,68,32,45,32,209,197,210,197,194,192,223,32,208,211,209,209,202,192,223,32,208,211,203,197,210 - db 202,192,0 -szTitleUmamusume db 202,192,199,200,202,32,51,68,32,45,32,195,206,205,202,200,32,211,204,192,204,211,209,211,204,197,0 -szTitleHellTower db 202,192,199,200,202,32,51,68,32,45,32,192,196,209,202,192,223,32,193,192,216,205,223,0 -szTitleShop db 202,192,199,200,202,32,51,68,32,45,32,202,192,208,210,219,32,200,32,210,192,203,200,209,204,192,205,219,0 -szTitleATM db 202,192,199,200,202,32,51,68,32,45,32,193,192,205,202,206,204,192,210,0 -szTitleTerminal db 202,192,199,200,202,32,51,68,32,45,32,203,206,202,192,203,220,205,219,197,32,207,208,206,212,200,203,200,0 -szTitleObserver db 202,192,199,200,202,32,51,68,32,45,32,205,192,193,203,222,196,192,210,197,203,220,32,40,200,200,41,0 -textCabinetFooter db "[ ÂÛÕÎÄ: ÂÂÅÄÈÒÅ 0 / ÂÛÁÅÐÈÒÅ 'N' ÄËß ÂÎÇÂÐÀÒÀ  ÇÀË ]",0 - -msgDancerTipped db "Âû áðîñèëè $100 òàíöîâùèöå! ÓÄÀ×À ÀÊÒÈÂÈÐÎÂÀÍÀ!",0 -msgNeedMoney db "Íåäîñòàòî÷íî äåíåã â êîøåëüêå!",0 -statusHUDFormat db "ÁÀÍÊÐÎËË: $",0 -targetHUDFormat db " ÖÅËÜ: $",0 -luckHUDFormat db " ÓÄÀ×À: +",0 -controlsHUD db "WASD/Ñòðåëêè: Õîäüáà | E: Äåéñòâèå | ESC: Ìåíþ",0 - -NUM_SPRITES equ 22 - -INTERACT_NONE equ 0 -INTERACT_BLACKJACK equ 1 -INTERACT_POKER equ 2 -INTERACT_SLOTS_777 equ 3 -INTERACT_ROULETTE equ 4 -INTERACT_SKULLS equ 5 -INTERACT_SHOP equ 6 -INTERACT_ATM equ 7 -INTERACT_DANCER equ 8 -INTERACT_HELL_TOWER equ 9 -INTERACT_DURAK equ 10 -INTERACT_BUCKSHOT equ 11 -INTERACT_COIN equ 12 -INTERACT_DICE equ 13 -INTERACT_SLOTS_CLOVER equ 14 -INTERACT_UMAMUSUME equ 15 -INTERACT_OBSERVER equ 16 -INTERACT_TERMINAL equ 17 -INTERACT_ONLINE_RR equ 18 -INTERACT_RUSSIAN_ROULETTE equ 19 -INTERACT_SKILL_CHECK equ 20 -ALIGN 4 -casinoSprites SpriteObject NUM_SPRITES dup(<>) -sortedSprites dd NUM_SPRITES dup(0) - -rowDistTable dd 120 dup(0) -rngSeed3D dd 12345678h - -slotBet dd 50 -slotReel1 dd 0 -slotReel2 dd 1 -slotReel3 dd 2 -slotSpinState dd 0 -slotSpinTimer dd 0 -slotWinAmount dd 0 -slotWinMsg db 64 dup(0) - -bjState dd 0 -bjBet dd 100 -bjPlayerCards dd 10 dup(0) -bjPlayerCardCount dd 0 -bjPlayerScore dd 0 -bjDealerCards dd 10 dup(0) -bjDealerCardCount dd 0 -bjDealerScore dd 0 -bjDealerHideHole dd 1 -bjOutcomeMsg db 64 dup(0) - -roulState dd 0 -roulBetType dd 1 -roulBetAmount dd 100 -roulWheelAngle dd 0 -roulBallAngle dd 0 -roulSpinTimer dd 0 -roulWinningNum dd 0 -roulPayout dd 0 -roulOutcomeMsg db 64 dup(0) - -coinRxAnimTable db 26, 22, 16, 6, 16, 22, 26, 22, 16, 6 - -; --- Native 2.5D Coin Flip --- -coin3d_bet dd 50 -coin3d_choice dd 1 ; 1 = Îð¸ë, 2 = Ðåøêà -coin3d_state dd 0 ; 0 = Idle, 1 = Flipping, 2 = Result -coin3d_timer dd 0 -coin3d_result dd 1 ; 1 = Îð¸ë, 2 = Ðåøêà -coin3d_streak dd 0 -coin3d_win dd 0 - -textCoinTitle db "* * * Ç Î Ë Î Ò À ß Ì Î Í Å Ò À * * *",0 -textCoinHeads db "ÎШË",0 -textCoinTails db "ÐÅØÊÀ",0 -textCoinSide1 db "[1] ÎШË",0 -textCoinSide2 db "[2] ÐÅØÊÀ",0 -textCoinFlipping db "ÌÎÍÅÒÀ  ÏÎ˨ÒÅ...",0 -textCoinWin db "ÏÎÁÅÄÀ: +$",0 -textCoinLose db "ÍÅ ÓÃÀÄÀËÈ!",0 -textCoinStreakFmt db "ÑÅÐÈß ÏÎÁÅÄ: x",0 -textCoinSelected db "ÂÛÁÐÀÍÎ",0 -textCoinKey1 db "[1] ÎШË",0 -textCoinKey2 db "[2] ÐÅØÊÀ",0 -textCoinKeySpace db "[SPACE]",0 - -; --- Native 2.5D Dice Game --- -dice3d_bet dd 50 -dice3d_choice dd 1 ; 1 = ׸ò, 2 = Íå÷åò -dice3d_state dd 0 ; 0 = Idle, 1 = Rolling, 2 = Result -dice3d_timer dd 0 -dice3d_val1 dd 4 -dice3d_val2 dd 6 -dice3d_sum dd 10 -dice3d_win dd 0 - -textDiceTitle db 200,195,208,192,32,194,32,202,206,209,210,200,0 -textDiceEven db "[1] רÒ",0 -textDiceOdd db "[2] ÍÅ×ÅÒ",0 -textDiceEvenNums db "2 4 6 ...",0 -textDiceOddNums db "3 5 7 ...",0 -textDiceSumHdr db "ÑÓÌÌÀ: ",0 -textDicePlus db " + ",0 -textDiceEqual db " = ",0 -textDiceEvenResult db " (רÒ)",0 -textDiceOddResult db " (ÍÅ×ÅÒ)",0 -textDiceRolling db "ÊÎÑÒÈ ËÅÒßÒ ÏÎ ÑÓÊÍÓ...",0 -textDiceWin db "ÂÛÈÃÐÛØ: +$",0 -textDiceWinMult db "! (x2)",0 -textDiceLose db "ÏÐÎÈÃÐÛØ!",0 -textDiceKey1 db "[1] רÒ",0 -textDiceKey2 db "[2] ÍÅ×ÅÒ",0 -textDiceKeySpace db "[SPACE]",0 - -; --- Native 2.5D Skulls Game --- -skulls3d_bet dd 50 -skulls3d_state dd 0 ; 0 = Idle, 1 = Show ball, 2 = Shuffle, 3 = Pick, 4 = Reveal -skulls3d_timer dd 0 -skulls3d_ballPos dd 1 ; 0, 1, 2 -skulls3d_choice dd 1 ; 0, 1, 2 -skulls3d_win dd 0 -skulls3d_swapPair0 dd 0 -skulls3d_swapPair1 dd 1 -skulls3d_swapPair2 dd 2 -skulls3d_cup0 dd 0 -skulls3d_cup1 dd 1 -skulls3d_cup2 dd 2 - -textSkullsTitle db "* * * Í À Ï ¨ Ð Ñ Ò Ê È * * *",0 -textSkullsPhase0 db "ÄÅËÀÉ ÑÒÀÂÊÓ È ÆÌÈ [ÏÐÎÁÅË]",0 -textSkullsPhase1 db "ÑÌÎÒÐÈ, ÃÄÅ ÇÎËÎÒÎÉ ØÀÐ...",0 -textSkullsPhase2 db "ÊÐÓ×Ó, ÂÅÐ×Ó, ÇÀÏÓÒÀÒÜ ÕÎ×Ó...",0 -textSkullsPhase3 db "ÃÄÅ ØÀÐ? ÂÛÁÈÐÀÉ: [1], [2] ÈËÈ [3]!",0 -textSkullsWin db "ÂÛÈÃÐÛØ: +$",0 -textSkullsWinMult db "! (x3) ÂÛ ÓÃÀÄÀËÈ!",0 -textSkullsLose db "ÌÈÌÎ! ØÀÐ ÁÛË Â ÄÐÓÃÎÌ ÌÅÑÒÅ!",0 -textSkullsAgain db "[ÏÐÎÁÅË] - ÑÛÃÐÀÒÜ ÅÙ¨ ÐÀÇ",0 -textSkullsKey1 db "[1]",0 -textSkullsKey2 db "[2]",0 -textSkullsKey3 db "[3]",0 -textSkullsKeySpace db "[SPACE] ÑÒÀÐÒ",0 - -; --- Native 2.5D Skill Check (Dead by Daylight Survivor Check) --- -skill3d_bet dd 50 -skill3d_state dd 0 ; 0=Ready, 1=Active, 2=Hit Result, 3=Miss Result, 4=Escaped, 5=Defeated -skill3d_timer dd 0 -skill3d_needle dd 55 ; Needle X (52..268) -skill3d_speed dd 4 -skill3d_dir dd 1 ; 1=Right, -1=Left -skill3d_zone_start dd 140 -skill3d_zone_width dd 48 -skill3d_great_start dd 176 -skill3d_great_width dd 12 -skill3d_hits dd 0 -skill3d_misses dd 0 -skill3d_last_result dd 0 -skill3d_win_amount dd 0 - -textSkillTitle db 61,61,61,32,207,208,206,194,197,208,202,192,32,205,192,194,219,202,192,32,61,61,61,0 -textSkillHitsHdr db "ÕÈÒ: ",0 -textSkillMissHdr db "ÏÐÎÌÀÕ: ",0 -textSkillReadyMsg db "ÍÀÆÌÈÒÅ [ÏÐÎÁÅË] ÄËß ÑÒÀÐÒÀ",0 -textSkillPrompt db "ÍÀÆÌÈÒÅ [ÏÐÎÁÅË]  ÇÎÍÅ!",0 -textSkillHitMsg db "ÕÈÒ! ÒÎ×ÍÎÅ ÏÎÏÀÄÀÍÈÅ!",0 -textSkillGreatMsg db 206,210,203,200,215,205,206,33,32,43,193,206,205,211,209,33,0 -textSkillMissMsg db "ÏÐÎÌÀÕ! ÒÐÅÂÎÃÀ!",0 -textSkillEscape db "ÏÎÁÅà ÓÑÏÅØÅÍ! ÂÛÈÃÐÛØ: +$",0 -textSkillLost db "ÂÛ ÏÎÉÌÀÍÛ! ÏÐÎÈÃÐÛØ ÑÒÀÂÊÈ!",0 -textSkillKeySpace db "[SPACE] ÐÅÀÊÖÈß",0 -textSkillKeyBet db "[ÂÂÅÐÕ/ÂÍÈÇ]",0 - -; --- Shared UI Strings --- -textKeyEsc db "[ESC]",0 -textBankPrompt db "ÁÀÍÊ: $",0 -textBetPrompt db "ÑÒÀÂÊÀ: $",0 -textBetHint db " [W/S]",0 - -shopMsg db 128 dup(0) -atmMsg db 128 dup(0) - -strWin db "ÏÎÁÅÄÀ! +$",0 -strLose db "ÏÐÎÈÃÐÛØ",0 -strJackpot db "ÄÆÅÊÏÎÒ! +$",0 -strPush db 205,200,215,220,223,0 -strDealerBust db "ÄÈËÅÐ ÏÅÐÅÁÐÀË! ÏÎÁÅÄÀ! +$",0 -strPlayerBust db "ÏÅÐÅÁÎÐ (>21)! ÏÐÎÈÃÐÛØ",0 - -sym7 db " 777 ",0 -symBar db " BAR ",0 -symBell db 32,199,194,206,205,0 -symCherry db 194,200,216,205,223,0 -symClover db 202,203,197,194,197,208,0 -symGem db 192,203,204,192,199,0 -symCrown db 202,206,208,206,205,192,0 - -cardRankStr db "A ",0,"2 ",0,"3 ",0,"4 ",0,"5 ",0,"6 ",0,"7 ",0,"8 ",0,"9 ",0,"10",0,"J ",0,"Q ",0,"K ",0 - -.data? -ALIGN 4 -screenBuffer dd SCREEN_SIZE dup(?) -ALIGN 4 -zBuffer dd SCREEN_W dup(?) -ALIGN 4 -texturesBuffer dd (104 * 128 * 128) dup(?) - -hudNumBuffer db 32 dup(?) - -.code - -; --- 3D Window Procedure --- -Casino3DWndProc PROC hwnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD - invoke WindowEvents3D, hwnd, uMsg, wParam, lParam - ret -Casino3DWndProc ENDP - -; --- Random Generator --- -RandomRange3D PROC maxVal:DWORD - mov eax, rngSeed3D - imul eax, 1103515245 - add eax, 12345 - mov rngSeed3D, eax - shr eax, 16 - and eax, 7FFFh - xor edx, edx - div maxVal - mov eax, edx - ret -RandomRange3D ENDP - -; --- Copy String --- -CopyString3D PROC src:DWORD, dst:DWORD - push esi - push edi - mov esi, src - mov edi, dst -@@: - mov al, [esi] - mov [edi], al - test al, al - jz @F - inc esi - inc edi - jmp @B -@@: - pop edi - pop esi - ret -CopyString3D ENDP - -; --- Format Number to Decimal String --- -FormatNumber PROC num:DWORD, buf:DWORD - push ebx - push esi - push edi - mov eax, num - mov edi, buf - test eax, eax - jns fn_pos - mov BYTE PTR [edi], '-' - inc edi - neg eax -fn_pos: - mov ebx, 10 - push 0 -fn_div: - xor edx, edx - div ebx - add dl, '0' - push edx - test eax, eax - jnz fn_div -fn_pop: - pop eax - test al, al - jz fn_done - mov [edi], al - inc edi - jmp fn_pop -fn_done: - mov BYTE PTR [edi], 0 - pop edi - pop esi - pop ebx - ret -FormatNumber ENDP - -; --- Fast 2D Drawing Primitives --- -DrawBox PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD - -DrawPixel PROC x:DWORD, y:DWORD, color:DWORD - invoke DrawBox, x, y, 1, 1, color - ret -DrawPixel ENDP - -DrawBox PROC x:DWORD, y:DWORD, w:DWORD, h:DWORD, color:DWORD - shl x, 1 - shl y, 1 - shl w, 1 - shl h, 1 - push ebx - push esi - push edi - mov edi, y -box_row_loop: - mov eax, y - add eax, h - cmp edi, eax - jge box_done - cmp edi, 0 - jl next_box_row - cmp edi, SCREEN_H - jge box_done - - mov esi, x -box_col_loop: - mov eax, x - add eax, w - cmp esi, eax - jge next_box_row - cmp esi, 0 - jl next_box_col - cmp esi, SCREEN_W - jge next_box_row - - mov ecx, edi - imul ecx, SCREEN_W - add ecx, esi - mov edx, color - mov [screenBuffer + ecx*4], edx - -next_box_col: - inc esi - jmp box_col_loop - -next_box_row: - inc edi - jmp box_row_loop - -box_done: - pop edi - pop esi - pop ebx - ret -DrawBox ENDP - -DrawBoxBorder PROC uses ebx x:DWORD, y:DWORD, w:DWORD, h:DWORD, fillColor:DWORD, borderColor:DWORD, bWidth:DWORD - invoke DrawBox, x, y, w, h, borderColor - mov eax, x - add eax, bWidth - mov edx, y - add edx, bWidth - mov ecx, w - sub ecx, bWidth - sub ecx, bWidth - mov ebx, h - sub ebx, bWidth - sub ebx, bWidth - invoke DrawBox, eax, edx, ecx, ebx, fillColor - ret -DrawBoxBorder ENDP - -DrawCircle PROC cxVal:DWORD, cyVal:DWORD, radius:DWORD, color:DWORD - push ebx - push esi - push edi - mov eax, radius - neg eax - mov edi, eax -circ_y: - cmp edi, radius - jg circ_done - mov eax, radius - neg eax - mov esi, eax -circ_x: - cmp esi, radius - jg next_circ_y - - mov eax, esi - imul eax, eax - mov ebx, edi - imul ebx, ebx - add eax, ebx - mov edx, radius - imul edx, edx - cmp eax, edx - jg next_circ_x - - mov eax, cxVal - add eax, esi - mov ecx, cyVal - add ecx, edi - invoke DrawPixel, eax, ecx, color - -next_circ_x: - inc esi - jmp circ_x -next_circ_y: - inc edi - jmp circ_y -circ_done: - pop edi - pop esi - pop ebx - ret -DrawCircle ENDP - -DrawChar8x8 PROC uses ebx esi edi x:DWORD, y:DWORD, chVal:DWORD, color:DWORD - local column:DWORD - mov eax, chVal - and eax, 255 - lea esi, [font8x8 + eax*8] - xor edi, edi -glyph_row: - movzx ebx, BYTE PTR [esi+edi] - mov column, 0 -glyph_col: - test ebx, 80h - jz glyph_next - mov eax, x - add eax, column - mov edx, y - add edx, edi - invoke DrawPixel, eax, edx, color -glyph_next: - shl ebx, 1 - inc column - cmp column, 8 - jl glyph_col - inc edi - cmp edi, 8 - jl glyph_row - ret -DrawChar8x8 ENDP - -DrawString8x8 PROC x:DWORD, y:DWORD, strPtr:DWORD, color:DWORD - push ebx - push esi - mov esi, strPtr - mov ebx, x -str_loop: - movzx eax, BYTE PTR [esi] - test al, al - jz str_done - invoke DrawChar8x8, ebx, y, eax, color - add ebx, 8 - inc esi - jmp str_loop -str_done: - pop esi - pop ebx - ret -DrawString8x8 ENDP - -; --- True 3D Perspective Floor & Ceiling Rendering --- - -; --- DDA Raycasting Walls --- -RenderWallsRange PROC colStart:DWORD, colLimit:DWORD - local col:DWORD - local originalStart:DWORD - local camX:DWORD - local rayDirX:DWORD - local rayDirY:DWORD - local mapX:DWORD - local mapY:DWORD - local deltaDistX:DWORD - local deltaDistY:DWORD - local stepX:DWORD - local stepY:DWORD - local sideDistX:DWORD - local sideDistY:DWORD - local side:DWORD - local perpWallDist:DWORD - local lineH:DWORD - local drawStart:DWORD - local drawEnd:DWORD - local wallHit:DWORD - local texX:DWORD - local texXHD:DWORD - local pixelMaterial:DWORD - local texId:DWORD - local shade:DWORD - - push ebx - push esi - push edi - - mov eax, playerAngle - and eax, 511 - mov ebx, [tableCos + eax*4] - mov playerDirX, ebx - mov ebx, [tableSin + eax*4] - mov playerDirY, ebx - - mov eax, ebx - imul eax, -66 - cdq - mov ecx, 100 - idiv ecx - mov playerPlaneX, eax - - mov eax, playerDirX - imul eax, 66 - cdq - idiv ecx - mov playerPlaneY, eax - - mov eax, colStart - mov col, eax -col_loop: - mov eax, colLimit - cmp col, eax - jge walls_done - - mov eax, col - shl eax, 1 - sub eax, SCREEN_W - imul eax, FP_1 - cdq - mov ecx, SCREEN_W - idiv ecx - mov camX, eax - - mov eax, playerPlaneX - imul camX - shrd eax, edx, 16 - add eax, playerDirX - mov rayDirX, eax - - mov eax, playerPlaneY - imul camX - shrd eax, edx, 16 - add eax, playerDirY - mov rayDirY, eax - - mov eax, playerX - sar eax, 16 - mov mapX, eax - mov eax, playerY - sar eax, 16 - mov mapY, eax - - mov eax, rayDirX - test eax, eax - jnz calc_delta_x - mov deltaDistX, 7FFFFFFFh - jmp calc_delta_y -calc_delta_x: - test eax, eax - jns @F - neg eax -@@: - mov ebx, eax - cmp ebx, 4 - jbe delta_x_clamp - xor eax, eax - mov edx, 1 - div ebx - mov deltaDistX, eax - jmp calc_delta_y -delta_x_clamp: - mov deltaDistX, 7FFFFFFFh - -calc_delta_y: - mov eax, rayDirY - test eax, eax - jnz calc_delta_y_ok - mov deltaDistY, 7FFFFFFFh - jmp check_step -calc_delta_y_ok: - test eax, eax - jns @F - neg eax -@@: - mov ebx, eax - cmp ebx, 4 - jbe delta_y_clamp - xor eax, eax - mov edx, 1 - div ebx - mov deltaDistY, eax - jmp check_step -delta_y_clamp: - mov deltaDistY, 7FFFFFFFh - -check_step: - cmp rayDirX, 0 - jge step_x_pos - mov stepX, -1 - mov eax, playerX - mov edx, mapX - shl edx, 16 - sub eax, edx - imul deltaDistX - shrd eax, edx, 16 - mov sideDistX, eax - jmp check_step_y -step_x_pos: - mov stepX, 1 - mov eax, mapX - inc eax - shl eax, 16 - sub eax, playerX - imul deltaDistX - shrd eax, edx, 16 - mov sideDistX, eax - -check_step_y: - cmp rayDirY, 0 - jge step_y_pos - mov stepY, -1 - mov eax, playerY - mov edx, mapY - shl edx, 16 - sub eax, edx - imul deltaDistY - shrd eax, edx, 16 - mov sideDistY, eax - jmp dda_start -step_y_pos: - mov stepY, 1 - mov eax, mapY - inc eax - shl eax, 16 - sub eax, playerY - imul deltaDistY - shrd eax, edx, 16 - mov sideDistY, eax - -dda_start: - xor ecx, ecx -dda_step_loop: - inc ecx - cmp ecx, 64 - jge wall_map_boundary - - mov eax, sideDistX - cmp eax, sideDistY - jge step_in_y - - mov eax, deltaDistX - add sideDistX, eax - mov eax, stepX - add mapX, eax - mov side, 0 - jmp check_tile - -step_in_y: - mov eax, deltaDistY - add sideDistY, eax - mov eax, stepY - add mapY, eax - mov side, 1 - -check_tile: - cmp mapX, 0 - jl wall_map_boundary - cmp mapX, MAP_WIDTH - jge wall_map_boundary - cmp mapY, 0 - jl wall_map_boundary - cmp mapY, MAP_HEIGHT - jge wall_map_boundary - - mov eax, mapY - shl eax, 5 - add eax, mapX - mov edx, worldMap3D - movzx eax, BYTE PTR [edx + eax] - test eax, eax - jnz hit_wall - jmp dda_step_loop - -wall_map_boundary: - cmp outdoorRender3D, 0 - je hit_wall - mov eax, col - mov zBuffer[eax*4], 7FFFFFFFh - jmp next_col - -hit_wall: - cmp side, 0 - jne perp_y - mov eax, sideDistX - sub eax, deltaDistX - mov perpWallDist, eax - jmp perp_done -perp_y: - mov eax, sideDistY - sub eax, deltaDistY - mov perpWallDist, eax - -perp_done: - cmp perpWallDist, 2048 - jge @F - mov perpWallDist, 2048 -@@: - mov eax, col - mov edx, perpWallDist - mov [zBuffer + eax*4], edx - - ; Unit projection is shared by indoor room height and outdoor storeys. - mov eax, SCREEN_H - imul eax, FP_1 - cdq - idiv perpWallDist - mov lineH, eax - - mov eax, lineH - imul viewEye3D - shrd eax, edx, 16 - add eax, viewHorizon3D - mov drawEnd, eax - mov ebx, lineH - mov eax, viewCeiling3D - cmp outdoorRender3D, 0 - je @F - mov eax, CITY_STOREY_HEIGHT -@@: - imul ebx - shrd eax, edx, 16 - mov ebx, eax - mov lineH, ebx - mov eax, drawEnd - sub eax, ebx - mov drawStart, eax - cmp outdoorRender3D, 0 - je wall_store_original_start - ; Floor height is independent of storey height. - mov eax, drawEnd - sub eax, lineH - mov drawStart, eax - mov eax, mapY - shl eax, 5 - add eax, mapX - mov edx, worldMap3D - movzx eax, BYTE PTR [edx+eax] -wall_exterior_tall: - ; Roof projection and texture sampling use the same storey count. - mov eax, lineH - imul eax, CITY_BUILDING_STOREYS-1 - sub drawStart, eax - mov eax, lineH - imul eax, CITY_BUILDING_STOREYS - mov lineH, eax -wall_store_original_start: - mov eax, drawStart - mov originalStart, eax - - cmp side, 0 - jne hit_side_y - mov eax, perpWallDist - imul rayDirY - shrd eax, edx, 16 - add eax, playerY - mov wallHit, eax - jmp calc_tex_x -hit_side_y: - mov eax, perpWallDist - imul rayDirX - shrd eax, edx, 16 - add eax, playerX - mov wallHit, eax - -calc_tex_x: - ; MASK WITH 0FFFFh to prevent texture scrambling! - mov eax, wallHit - and eax, 0FFFFh - mov texXHD, eax - shr eax, 9 - and eax, 127 - mov texX, eax - - cmp side, 0 - jne @F - cmp rayDirX, 0 - jle @F - mov eax, 127 - sub eax, texX - mov texX, eax - xor texXHD, 0FFFFh -@@: - cmp side, 1 - jne select_tex - cmp rayDirY, 0 - jge select_tex - mov eax, 127 - sub eax, texX - mov texX, eax - xor texXHD, 0FFFFh - -select_tex: - mov eax, mapY - shl eax, 5 - add eax, mapX - mov edx, worldMap3D - movzx eax, BYTE PTR [edx + eax] - mov texId, eax - cmp texId, 0 - jne @F - mov texId, 1 -@@: - - mov eax, perpWallDist - shr eax, 13 - mov edx, 256 - sub edx, eax - cmp edx, 75 - jge @F - mov edx, 75 -@@: - cmp side, 1 - jne @F - imul edx, 3 - shr edx, 2 -@@: - mov shade, edx - - cmp drawStart, 0 - jge @F - mov drawStart, 0 -@@: - cmp drawEnd, SCREEN_H - jl @F - mov drawEnd, SCREEN_H - 1 -@@: - - mov eax, lineH - cmp eax, 1 - jge @F - mov eax, 1 - mov lineH, eax -@@: - - mov eax, 128 * FP_1 - cdq - idiv lineH - mov esi, eax ; stepY - - mov eax, drawStart - sub eax, originalStart - imul eax, esi - mov edi, eax ; texPos - - mov ecx, drawStart -draw_stripe_loop: - cmp ecx, drawEnd - jg next_col - - mov eax, edi - shr eax, 16 - and eax, 127 - mov edx, texId - cmp outdoorRender3D, 0 - je wall_sample_material - imul eax, CITY_BUILDING_STOREYS - cmp eax, 128*(CITY_BUILDING_STOREYS-1) - jae wall_lower_storey - push eax - shr eax, 7 - add eax, mapX - add eax, mapY - xor edx, edx - mov ebx, 3 - div ebx - add edx, 65 - pop eax - and eax, 127 - jmp wall_sample_material -wall_lower_storey: - sub eax, 128*(CITY_BUILDING_STOREYS-1) -wall_sample_material: - mov pixelMaterial, edx - cmp outdoorRender3D, 0 - je wall_sample_indoor_hd - cmp hallCityDetail3D.pixels, 0 - je wall_sample_standard - cmp edx, 57 - jb wall_sample_standard - cmp edx, 72 - ja wall_sample_standard - cmp perpWallDist, 6*FP_1 - ja wall_sample_standard - ; Preserve subtexel detail near facades; retain the 128px mip at distance. - push edx - mov eax, edi - shr eax, 15 - imul eax, CITY_BUILDING_STOREYS - and eax, 255 - shl eax, 8 - mov ebx, texXHD - shr ebx, 8 - add eax, ebx - pop edx - sub edx, 57 - shl edx, 16 - add eax, edx - mov ebx, hallCityDetail3D.pixels - mov eax, [ebx+eax*4] - jmp wall_shade_pixel -wall_sample_indoor_hd: - cmp edx, 80 - jb wall_sample_standard - cmp edx, 103 - ja wall_sample_standard - mov ebx, hallRoomHD3D.pixels - cmp edx, 92 - jb wall_sample_room_hd - mov ebx, hallArchitectureHD3D.pixels - sub edx, 12 -wall_sample_room_hd: - test ebx, ebx - jz wall_sample_standard_restore - sub edx, 80 - shl edx, 18 - add ebx, edx - mov eax, edi - shr eax, 15 - and eax, 255 - shl eax, 8 - mov edx, texXHD - shr edx, 8 - add eax, edx - mov eax, [ebx+eax*4] - jmp wall_shade_pixel -wall_sample_standard_restore: - mov edx, texId - mov eax, edi - shr eax, 16 - and eax, 127 -wall_sample_standard: - shl eax, 7 - add eax, texX - - shl edx, 14 - add eax, edx - mov eax, [texturesBuffer + eax*4] - - ; Shade wall pixel -wall_shade_pixel: - mov ebx, shade - cmp outdoorRender3D, 0 - je wall_ambient_shade - push eax - push ecx - invoke IsCityEmissive3D, eax, pixelMaterial - pop ecx - test eax, eax - pop eax - jz wall_ambient_shade - mov ebx, 256 -wall_ambient_shade: - cmp hallLevel3D, 0 - je @F - imul ebx, 7 - shr ebx, 3 -@@: - movzx edx, al - imul edx, ebx - shr edx, 8 - push edx - - movzx edx, ah - imul edx, ebx - shr edx, 8 - shl edx, 8 - - shr eax, 16 - movzx eax, al - imul eax, ebx - shr eax, 8 - shl eax, 16 - or eax, edx - pop edx - or eax, edx - - mov edx, ecx - imul edx, SCREEN_W - add edx, col - mov [screenBuffer + edx*4], eax - - add edi, esi - inc ecx - jmp draw_stripe_loop - -next_col: - inc col - jmp col_loop - -walls_done: - pop edi - pop esi - pop ebx - ret -RenderWallsRange ENDP - -; --- Raycasting Background Worker Thread --- -RaycastWorkerProc PROC uses ebx esi edi lpParam:DWORD -worker_loop: - invoke WaitForSingleObject, hRaycastStartEvent, 0FFFFFFFFh - cmp bRaycastQuit, 1 - je worker_exit - invoke RenderWallsRange, 320, 640 - invoke SetEvent, hRaycastDoneEvent - jmp worker_loop -worker_exit: - xor eax, eax - ret -RaycastWorkerProc ENDP - -; --- Multi-Threaded DDA Raycasting Walls Dispatcher --- -RenderWalls PROC - push ebx - push esi - push edi - - mov eax, playerAngle - and eax, 511 - mov ebx, [tableCos + eax*4] - mov playerDirX, ebx - mov ebx, [tableSin + eax*4] - mov playerDirY, ebx - - mov eax, ebx - imul eax, -66 - cdq - mov ecx, 100 - idiv ecx - mov playerPlaneX, eax - - mov eax, playerDirX - imul eax, 66 - cdq - idiv ecx - mov playerPlaneY, eax - - cmp hRaycastStartEvent, 0 - je single_thread_fallback - - ; Signal background worker to render columns [320..640) - invoke SetEvent, hRaycastStartEvent - - ; Main thread processes columns [0..320) in parallel - invoke RenderWallsRange, 0, 320 - - ; Synchronize with worker completion - invoke WaitForSingleObject, hRaycastDoneEvent, 0FFFFFFFFh - jmp walls_finished - -single_thread_fallback: - invoke RenderWallsRange, 0, SCREEN_W - -walls_finished: - pop edi - pop esi - pop ebx - ret -RenderWalls ENDP - -; --- Render 3D Billboard Sprites --- - -; --- HUD & Minimap Radar --- -RenderHUD PROC uses ebx esi edi - invoke DrawBox, 0, 0, 320, 16, 0014191Dh - invoke DrawString8x8, 8, 4, OFFSET textBank3D, 00D8BC6Ah - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - invoke DrawString8x8, 64, 4, OFFSET hudNumBuffer, 00FFFFFFh - invoke DrawString8x8, 176, 4, OFFSET textWindowKeys3D, 00A8B6BBh - invoke DrawBox, 0, 226, 320, 14, 0014191Dh - invoke DrawString8x8, 12, 230, OFFSET textWalkKeys3D, 00A8B6BBh - invoke DrawBox, 159, 118, 2, 5, 00E7DFC8h - invoke DrawBox, 157, 120, 6, 1, 00E7DFC8h - cmp interactPromptPtr, 0 - je @F - invoke DrawBoxBorder, 4, 199, 312, 18, 0014191Dh, 00D8BC6Ah, 1 - invoke DrawString8x8, 10, 204, interactPromptPtr, 00F5E2B0h -@@: - cmp flashTimer, 0 - je hud_finished - dec flashTimer - invoke DrawBox, 4, 22, 312, 16, 0014191Dh - invoke DrawString8x8, 10, 26, OFFSET flashMessage, 00FFFFFFh -hud_finished: - ret -RenderHUD ENDP - -RenderMinimap PROC uses ebx esi edi - local radarX:DWORD - local radarY:DWORD - local radarSize:DWORD - - mov radarX, 320 - 48 - mov radarY, 20 - mov radarSize, 44 - - invoke DrawBoxBorder, radarX, radarY, radarSize, radarSize, 00101510h, 00FFD700h, 1 - - ; Draw Sprites on radar - cmp hallLevel3D, 0 - jne draw_player_radar - xor esi, esi -radar_spr_loop: - cmp esi, NUM_SPRITES - jge draw_player_radar - mov eax, esi - imul eax, SIZEOF SpriteObject - mov eax, [casinoSprites + eax].posX - sar eax, 16 - imul eax, radarSize - shr eax, 5 - add eax, radarX - mov ebx, eax - - mov eax, esi - imul eax, SIZEOF SpriteObject - mov eax, [casinoSprites + eax].posY - sar eax, 16 - imul eax, radarSize - shr eax, 5 - add eax, radarY - - invoke DrawPixel, ebx, eax, 00FFAA00h - inc esi - jmp radar_spr_loop - -draw_player_radar: - mov eax, playerX - sar eax, 16 - imul eax, radarSize - shr eax, 5 - add eax, radarX - mov ebx, eax - - mov eax, playerY - sar eax, 16 - imul eax, radarSize - shr eax, 5 - add eax, radarY - - invoke DrawCircle, ebx, eax, 2, 00FF2020h - ret -RenderMinimap ENDP - -; ============================================================================== -; IN-ENGINE 2.5D MINI-GAME: SLOTS 777 -; ============================================================================== -HandleSlotsInput PROC - cmp slotSpinState, 1 - je slots_input_done - - invoke Pressed3D, 20h ; SPACE -> Spin - test ah, 80h - jz check_bet_adjust - mov eax, bankroll - cmp eax, slotBet - jl @F - sub eax, slotBet - mov bankroll, eax - mov slotSpinState, 1 - mov slotSpinTimer, 0 - mov slotWinAmount, 0 - invoke PlayCasinoSound3D, OFFSET soundSlotSpin, 0, 1 - jmp slots_input_done -@@: - invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage - mov flashTimer, 60 - -check_bet_adjust: - invoke Pressed3D, 26h ; UP / W - test ah, 80h - jnz inc_bet - invoke Pressed3D, 57h - test ah, 80h - jz check_bet_down -inc_bet: - cmp slotBet, 500 - jge slots_input_done - cmp slotBet, 100 - jge @F - cmp slotBet, 50 - jge set_100 - mov slotBet, 50 - jmp slots_input_done -set_100: - mov slotBet, 100 - jmp slots_input_done -@@: - mov slotBet, 500 - jmp slots_input_done - -check_bet_down: - invoke Pressed3D, 28h ; DOWN / S - test ah, 80h - jnz dec_bet - invoke Pressed3D, 53h - test ah, 80h - jz slots_input_done -dec_bet: - cmp slotBet, 50 - jle set_10 - cmp slotBet, 100 - jle set_50 - mov slotBet, 100 - jmp slots_input_done -set_50: - mov slotBet, 50 - jmp slots_input_done -set_10: - mov slotBet, 10 - -slots_input_done: - ret -HandleSlotsInput ENDP - -RenderSlotsGame PROC uses ebx esi edi - ; Cabinet Background (Dark Cherry Wood & Gold) - invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A10h - invoke DrawBoxBorder, 10, 10, 300, 220, 00251015h, 00FFD700h, 3 - - ; Illuminated Top Marquee - invoke DrawBoxBorder, 25, 20, 270, 32, 000A0505h, 00FFFF00h, 2 - invoke DrawString8x8, 55, 32, OFFSET textSlots3D, 00FFD700h - - ; Spinning Animation Logic - cmp slotSpinState, 1 - jne draw_reels - inc slotSpinTimer - - cmp slotSpinTimer, 22 - jge @F - invoke RandomRange3D, 7 - mov slotReel1, eax -@@: - cmp slotSpinTimer, 36 - jge @F - invoke RandomRange3D, 7 - mov slotReel2, eax -@@: - cmp slotSpinTimer, 50 - jge @F - invoke RandomRange3D, 7 - mov slotReel3, eax -@@: - cmp slotSpinTimer, 50 - jl draw_reels - - ; Spin finished! Check outcome! - mov slotSpinState, 0 - mov eax, slotReel1 - cmp eax, slotReel2 - jne check_pairs - cmp eax, slotReel3 - jne check_pairs - - ; 3 Matching! - cmp eax, 0 ; 777! - jne @F - mov eax, slotBet - imul eax, 25 - mov slotWinAmount, eax - add bankroll, eax - invoke PlayCasinoSound3D, OFFSET soundJackpot, 0, 1 - jmp draw_reels -@@: - cmp eax, 6 ; CROWN! - jne @F - mov eax, slotBet - imul eax, 50 - mov slotWinAmount, eax - add bankroll, eax - invoke PlayCasinoSound3D, OFFSET soundJackpot, 0, 1 - jmp draw_reels -@@: - mov eax, slotBet - imul eax, 10 - mov slotWinAmount, eax - add bankroll, eax - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - jmp draw_reels - -check_pairs: - mov eax, slotReel1 - cmp eax, slotReel2 - je pair_win - mov eax, slotReel2 - cmp eax, slotReel3 - je pair_win - mov eax, slotReel1 - cmp eax, slotReel3 - je pair_win - jmp draw_reels -pair_win: - mov eax, slotBet - imul eax, 2 - mov slotWinAmount, eax - add bankroll, eax - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - -draw_reels: - ; Reels Window - invoke DrawBoxBorder, 30, 62, 260, 95, 000F0F12h, 0000A5FFh, 2 - - ; Reel 1 (45..105) - invoke DrawBoxBorder, 45, 68, 65, 82, 00F0F0F5h, 00505050h, 2 - mov eax, slotReel1 - call DrawReelSymbolAt1 - - ; Reel 2 (128..188) - invoke DrawBoxBorder, 128, 68, 65, 82, 00F0F0F5h, 00505050h, 2 - mov eax, slotReel2 - call DrawReelSymbolAt2 - - ; Reel 3 (210..270) - invoke DrawBoxBorder, 210, 68, 65, 82, 00F0F0F5h, 00505050h, 2 - mov eax, slotReel3 - call DrawReelSymbolAt3 - - ; Bottom Control Panel - invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 00FFD700h, 1 - - invoke DrawString8x8, 28, 172, OFFSET textBank3D, 00FFD700h - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 00FFFF00h - - invoke DrawString8x8, 175, 172, OFFSET textBet3D, 00FFD700h - invoke FormatNumber, slotBet, OFFSET hudNumBuffer - invoke DrawString8x8, 240, 172, OFFSET hudNumBuffer, 0050FF50h - - cmp slotWinAmount, 0 - jle draw_slot_ctrls - invoke DrawString8x8, 28, 187, OFFSET strWin, 00FFFF00h - invoke FormatNumber, slotWinAmount, OFFSET hudNumBuffer - invoke DrawString8x8, 110, 187, OFFSET hudNumBuffer, 00FFFF00h - -draw_slot_ctrls: - invoke DrawString8x8, 28, 204, OFFSET textSlotsKeys3D, 00A0A0A0h - ret -RenderSlotsGame ENDP - -DrawReelSymbolAt1 PROC - cmp eax, 0 - jne @F - invoke DrawString8x8, 52, 105, OFFSET sym7, 00FF2020h - ret -@@: - cmp eax, 1 - jne @F - invoke DrawString8x8, 52, 105, OFFSET symBar, 00FFAA00h - ret -@@: - cmp eax, 2 - jne @F - invoke DrawString8x8, 52, 105, OFFSET symBell, 00FFD700h - ret -@@: - cmp eax, 3 - jne @F - invoke DrawString8x8, 48, 105, OFFSET symCherry, 000000D0h - ret -@@: - cmp eax, 4 - jne @F - invoke DrawString8x8, 48, 105, OFFSET symClover, 0000A000h - ret -@@: - cmp eax, 5 - jne @F - invoke DrawString8x8, 52, 105, OFFSET symGem, 00FFFF00h - ret -@@: - invoke DrawString8x8, 52, 105, OFFSET symCrown, 00FFD700h - ret -DrawReelSymbolAt1 ENDP - -DrawReelSymbolAt2 PROC - cmp eax, 0 - jne @F - invoke DrawString8x8, 135, 105, OFFSET sym7, 00FF2020h - ret -@@: - cmp eax, 1 - jne @F - invoke DrawString8x8, 135, 105, OFFSET symBar, 00FFAA00h - ret -@@: - cmp eax, 2 - jne @F - invoke DrawString8x8, 135, 105, OFFSET symBell, 00FFD700h - ret -@@: - cmp eax, 3 - jne @F - invoke DrawString8x8, 131, 105, OFFSET symCherry, 000000D0h - ret -@@: - cmp eax, 4 - jne @F - invoke DrawString8x8, 131, 105, OFFSET symClover, 0000A000h - ret -@@: - cmp eax, 5 - jne @F - invoke DrawString8x8, 135, 105, OFFSET symGem, 00FFFF00h - ret -@@: - invoke DrawString8x8, 135, 105, OFFSET symCrown, 00FFD700h - ret -DrawReelSymbolAt2 ENDP - -DrawReelSymbolAt3 PROC - cmp eax, 0 - jne @F - invoke DrawString8x8, 218, 105, OFFSET sym7, 00FF2020h - ret -@@: - cmp eax, 1 - jne @F - invoke DrawString8x8, 218, 105, OFFSET symBar, 00FFAA00h - ret -@@: - cmp eax, 2 - jne @F - invoke DrawString8x8, 218, 105, OFFSET symBell, 00FFD700h - ret -@@: - cmp eax, 3 - jne @F - invoke DrawString8x8, 214, 105, OFFSET symCherry, 000000D0h - ret -@@: - cmp eax, 4 - jne @F - invoke DrawString8x8, 214, 105, OFFSET symClover, 0000A000h - ret -@@: - cmp eax, 5 - jne @F - invoke DrawString8x8, 218, 105, OFFSET symGem, 00FFFF00h - ret -@@: - invoke DrawString8x8, 218, 105, OFFSET symCrown, 00FFD700h - ret -DrawReelSymbolAt3 ENDP - -; ============================================================================== -; IN-ENGINE 2.5D MINI-GAME: BLACKJACK (21) -; ============================================================================== -HandleBlackjackInput PROC uses ebx - cmp bjState, 0 ; Need Deal - jne check_bj_player_turn - invoke Pressed3D, 20h ; SPACE -> Deal - test ah, 80h - jz check_bj_bet_change - mov eax, bankroll - cmp eax, bjBet - jl bj_need_cash - sub eax, bjBet - mov bankroll, eax - - ; Deal 2 cards to player, 2 cards to dealer - mov bjPlayerCardCount, 0 - mov bjDealerCardCount, 0 - mov bjDealerHideHole, 1 - - ; Player Card 1 - invoke RandomRange3D, 13 - inc eax - mov ebx, bjPlayerCardCount - mov [bjPlayerCards + ebx*4], eax - inc bjPlayerCardCount - - ; Dealer Card 1 - invoke RandomRange3D, 13 - inc eax - mov ebx, bjDealerCardCount - mov [bjDealerCards + ebx*4], eax - inc bjDealerCardCount - - ; Player Card 2 - invoke RandomRange3D, 13 - inc eax - mov ebx, bjPlayerCardCount - mov [bjPlayerCards + ebx*4], eax - inc bjPlayerCardCount - - ; Dealer Card 2 (Hole card) - invoke RandomRange3D, 13 - inc eax - mov ebx, bjDealerCardCount - mov [bjDealerCards + ebx*4], eax - inc bjDealerCardCount - - invoke PlayCasinoSound3D, OFFSET soundCards, 0, 1 - - ; Calc Player Score - call CalcPlayerBJScore - cmp bjPlayerScore, 21 - jne set_bj_turn - ; Instant Blackjack! - mov bjDealerHideHole, 0 - mov eax, bjBet - imul eax, 5 - shr eax, 1 - add bankroll, eax - invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - mov bjState, 2 - ret -set_bj_turn: - mov bjState, 1 - mov BYTE PTR [bjOutcomeMsg], 0 - ret - -bj_need_cash: - invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage - mov flashTimer, 60 - ret - -check_bj_player_turn: - cmp bjState, 1 - jne check_bj_round_over - - invoke Pressed3D, 48h ; 'H' -> Hit - test ah, 80h - jz check_bj_stand - invoke RandomRange3D, 13 - inc eax - mov ebx, bjPlayerCardCount - cmp ebx, 8 - jge @F - mov [bjPlayerCards + ebx*4], eax - inc bjPlayerCardCount -@@: - invoke PlayCasinoSound3D, OFFSET soundCards, 0, 1 - call CalcPlayerBJScore - cmp bjPlayerScore, 21 - jle bj_input_done - ; Bust! - invoke CopyString3D, OFFSET strPlayerBust, OFFSET bjOutcomeMsg - mov bjDealerHideHole, 0 - mov bjState, 2 - ret - -check_bj_stand: - invoke Pressed3D, 53h ; 'S' -> Stand - test ah, 80h - jz bj_input_done - - ; Dealer Turn - mov bjDealerHideHole, 0 -dealer_loop: - call CalcDealerBJScore - cmp bjDealerScore, 17 - jge dealer_finished - invoke RandomRange3D, 13 - inc eax - mov ebx, bjDealerCardCount - cmp ebx, 8 - jge dealer_finished - mov [bjDealerCards + ebx*4], eax - inc bjDealerCardCount - jmp dealer_loop - -dealer_finished: - cmp bjDealerScore, 21 - jle compare_scores - ; Dealer Bust! - mov eax, bjBet - shl eax, 1 - add bankroll, eax - invoke CopyString3D, OFFSET strDealerBust, OFFSET bjOutcomeMsg - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - mov bjState, 2 - ret - -compare_scores: - mov eax, bjPlayerScore - cmp eax, bjDealerScore - jle check_dealer_won - ; Player Won! - mov eax, bjBet - shl eax, 1 - add bankroll, eax - invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - mov bjState, 2 - ret -check_dealer_won: - cmp eax, bjDealerScore - jl dealer_wins - ; Push (Tie) - mov eax, bjBet - add bankroll, eax - invoke CopyString3D, OFFSET strPush, OFFSET bjOutcomeMsg - mov bjState, 2 - ret -dealer_wins: - invoke CopyString3D, OFFSET strLose, OFFSET bjOutcomeMsg - mov bjState, 2 - ret - -check_bj_round_over: - invoke Pressed3D, 20h ; SPACE -> Next Hand - test ah, 80h - jz bj_input_done - mov bjState, 0 - ret - -check_bj_bet_change: - invoke Pressed3D, 26h ; UP - test ah, 80h - jz @F - cmp bjBet, 500 - jge bj_input_done - add bjBet, 50 - ret -@@: - invoke Pressed3D, 28h ; DOWN - test ah, 80h - jz bj_input_done - cmp bjBet, 50 - jle bj_input_done - sub bjBet, 50 - -bj_input_done: - ret -HandleBlackjackInput ENDP - -CalcPlayerBJScore PROC uses ebx esi - xor eax, eax - xor ebx, ebx - xor esi, esi -calc_p_loop: - cmp esi, bjPlayerCardCount - jge calc_p_done - mov edx, [bjPlayerCards + esi*4] - cmp edx, 10 - jle @F - mov edx, 10 -@@: - cmp edx, 1 - jne add_p_val - inc ebx ; count Aces - add eax, 11 - jmp next_p_card -add_p_val: - add eax, edx -next_p_card: - inc esi - jmp calc_p_loop -calc_p_done: - ; Soft Ace reduction -reduce_p_ace: - cmp eax, 21 - jle store_p_score - test ebx, ebx - jz store_p_score - sub eax, 10 - dec ebx - jmp reduce_p_ace -store_p_score: - mov bjPlayerScore, eax - ret -CalcPlayerBJScore ENDP - -CalcDealerBJScore PROC uses ebx esi - xor eax, eax - xor ebx, ebx - xor esi, esi -calc_d_loop: - cmp esi, bjDealerCardCount - jge calc_d_done - mov edx, [bjDealerCards + esi*4] - cmp edx, 10 - jle @F - mov edx, 10 -@@: - cmp edx, 1 - jne add_d_val - inc ebx - add eax, 11 - jmp next_d_card -add_d_val: - add eax, edx -next_d_card: - inc esi - jmp calc_d_loop -calc_d_done: -reduce_d_ace: - cmp eax, 21 - jle store_d_score - test ebx, ebx - jz store_d_score - sub eax, 10 - dec ebx - jmp reduce_d_ace -store_d_score: - mov bjDealerScore, eax - ret -CalcDealerBJScore ENDP - -RenderBlackjackGame PROC uses ebx esi edi - ; Emerald Felt Table Background - invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 000A3015h - invoke DrawBoxBorder, 10, 10, 300, 220, 000D4018h, 00FFD700h, 3 - - ; Dealer Area Top - invoke DrawString8x8, 25, 20, OFFSET textBJ3D, 00FFD700h - invoke DrawString8x8, 25, 35, OFFSET textDealer3D, 00FFFFFFh - invoke FormatNumber, bjDealerScore, OFFSET hudNumBuffer - invoke DrawString8x8, 120, 35, OFFSET hudNumBuffer, 00FFFF00h - - ; Dealer Cards - xor esi, esi -draw_dealer_cards: - cmp esi, bjDealerCardCount - jge draw_player_bj_area - mov eax, esi - imul eax, 45 - add eax, 25 - mov ebx, eax - - cmp esi, 1 - jne draw_dealer_face - cmp bjDealerHideHole, 1 - jne draw_dealer_face - ; Face Down Card - mov eax, selectedBack3D - mov eax, cardBackColors3D[eax*4] - invoke DrawBoxBorder, ebx, 48, 38, 52, eax, 00FFFFFFh, 2 - jmp next_dealer_card_draw - -draw_dealer_face: - invoke DrawBoxBorder, ebx, 48, 38, 52, 00F0F0F5h, 00000000h, 2 - mov eax, [bjDealerCards + esi*4] - dec eax - imul eax, 3 - lea edx, [cardRankStr + eax] - mov eax, ebx - add eax, 8 - invoke DrawString8x8, eax, 68, edx, 00000000h - -next_dealer_card_draw: - inc esi - jmp draw_dealer_cards - -draw_player_bj_area: - ; Player Area Bottom - invoke DrawString8x8, 25, 110, OFFSET textPlayer3D, 00FFFFFFh - invoke FormatNumber, bjPlayerScore, OFFSET hudNumBuffer - invoke DrawString8x8, 120, 110, OFFSET hudNumBuffer, 0050FF50h - - ; Player Cards - xor esi, esi -draw_player_cards: - cmp esi, bjPlayerCardCount - jge draw_bj_footer - mov eax, esi - imul eax, 45 - add eax, 25 - mov ebx, eax - - invoke DrawBoxBorder, ebx, 124, 38, 52, 00F0F0F5h, 00000000h, 2 - mov eax, [bjPlayerCards + esi*4] - dec eax - imul eax, 3 - lea edx, [cardRankStr + eax] - mov eax, ebx - add eax, 8 - invoke DrawString8x8, eax, 144, edx, 00000000h - - inc esi - jmp draw_player_cards - -draw_bj_footer: - ; Footer Status & Controls - invoke DrawBoxBorder, 20, 182, 280, 42, 00102010h, 00FFD700h, 1 - cmp BYTE PTR [bjOutcomeMsg], 0 - je draw_bj_controls - invoke DrawString8x8, 28, 188, OFFSET bjOutcomeMsg, 00FFFF00h - invoke DrawString8x8, 28, 204, OFFSET textNext3D, 00A0A0A0h - ret - -draw_bj_controls: - invoke DrawString8x8, 28, 188, OFFSET textBJKeys3D, 00FFFFFFh - invoke DrawString8x8, 28, 204, OFFSET textDeal3D, 00A0A0A0h - ret -RenderBlackjackGame ENDP - -; ============================================================================== -; IN-ENGINE 2.5D MINI-GAME: ROULETTE -; ============================================================================== -HandleRouletteInput PROC uses ebx - cmp roulState, 1 - je roul_input_done - - invoke Pressed3D, 31h ; '1' -> RED - test ah, 80h - jz @F - mov roulBetType, 1 -@@: - invoke Pressed3D, 32h ; '2' -> BLACK - test ah, 80h - jz @F - mov roulBetType, 2 -@@: - invoke Pressed3D, 33h ; '3' -> ZERO (0) - test ah, 80h - jz @F - mov roulBetType, 3 -@@: - invoke Pressed3D, 34h ; '4' -> EVEN - test ah, 80h - jz @F - mov roulBetType, 4 -@@: - invoke Pressed3D, 35h ; '5' -> ODD - test ah, 80h - jz check_roul_spin - mov roulBetType, 5 - -check_roul_spin: - invoke Pressed3D, 20h ; SPACE -> Spin - test ah, 80h - jz roul_input_done - mov eax, bankroll - cmp eax, roulBetAmount - jl roul_no_cash - sub eax, roulBetAmount - mov bankroll, eax - mov roulState, 1 - mov roulSpinTimer, 50 - mov roulPayout, 0 - invoke PlayCasinoSound3D, OFFSET soundRoulette, 0, 1 - ret - -roul_no_cash: - invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage - mov flashTimer, 60 - -roul_input_done: - ret -HandleRouletteInput ENDP - -RenderRouletteGame PROC uses ebx esi edi - ; Table felt background - invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00151525h - invoke DrawBoxBorder, 10, 10, 300, 220, 00201525h, 00FFD700h, 3 - - ; 2.5D Rotating Wheel on Left - invoke DrawCircle, 85, 110, 65, 00102550h - invoke DrawCircle, 85, 110, 60, 00FFD700h - invoke DrawCircle, 85, 110, 52, 00101010h - invoke DrawCircle, 85, 110, 22, 00FFD700h ; Center brass turret - - ; Spinning Wheel / Ball Logic - cmp roulState, 1 - jne draw_roul_ball - dec roulSpinTimer - add roulWheelAngle, 8 - sub roulBallAngle, 14 - cmp roulSpinTimer, 0 - jg draw_roul_ball - - ; Wheel stopped! Determine result! - mov roulState, 2 - invoke RandomRange3D, 37 - mov roulWinningNum, eax - - ; Check bet - cmp roulBetType, 1 ; RED - jne check_ro_black - call IsNumberRed - test eax, eax - jz ro_lost - mov eax, roulBetAmount - shl eax, 1 - mov roulPayout, eax - add bankroll, eax - invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - jmp draw_roul_ball - -check_ro_black: - cmp roulBetType, 2 ; BLACK - jne check_ro_zero - cmp roulWinningNum, 0 - je ro_lost - call IsNumberRed - test eax, eax - jnz ro_lost - mov eax, roulBetAmount - shl eax, 1 - mov roulPayout, eax - add bankroll, eax - invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - jmp draw_roul_ball - -check_ro_zero: - cmp roulBetType, 3 ; ZERO - jne check_ro_even - cmp roulWinningNum, 0 - jne ro_lost - mov eax, roulBetAmount - imul eax, 36 - mov roulPayout, eax - add bankroll, eax - invoke CopyString3D, OFFSET strJackpot, OFFSET roulOutcomeMsg - invoke PlayCasinoSound3D, OFFSET soundJackpot, 0, 1 - jmp draw_roul_ball - -check_ro_even: - cmp roulBetType, 4 ; EVEN - jne check_ro_odd - mov eax, roulWinningNum - test eax, eax - jz ro_lost - test al, 1 - jnz ro_lost - mov eax, roulBetAmount - shl eax, 1 - mov roulPayout, eax - add bankroll, eax - invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - jmp draw_roul_ball - -check_ro_odd: - mov eax, roulWinningNum - test eax, eax - jz ro_lost - test al, 1 - jz ro_lost - mov eax, roulBetAmount - shl eax, 1 - mov roulPayout, eax - add bankroll, eax - invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - jmp draw_roul_ball - -ro_lost: - invoke CopyString3D, OFFSET strLose, OFFSET roulOutcomeMsg - -draw_roul_ball: - ; Draw White Ball on Rim - mov eax, roulBallAngle - and eax, 511 - mov ebx, [tableCos + eax*4] - imul ebx, 42 - sar ebx, 16 - add ebx, 85 - - mov eax, roulBallAngle - and eax, 511 - mov edx, [tableSin + eax*4] - imul edx, 42 - sar edx, 16 - add edx, 110 - invoke DrawCircle, ebx, edx, 3, 00FFFFFFh - - ; Right Betting Board - invoke DrawBoxBorder, 175, 25, 125, 28, 001010C0h, 00FFFFFFh, 2 ; [1] RED - invoke DrawString8x8, 190, 35, OFFSET textRed3D, 00FFFFFFh - - invoke DrawBoxBorder, 175, 60, 125, 28, 00151515h, 00FFFFFFh, 2 ; [2] BLACK - invoke DrawString8x8, 190, 70, OFFSET textBlack3D, 00FFFFFFh - - invoke DrawBoxBorder, 175, 95, 125, 28, 00106010h, 00FFFFFFh, 2 ; [3] ZERO - invoke DrawString8x8, 190, 105, OFFSET textZero3D, 00FFFFFFh - - invoke DrawBoxBorder, 175, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [4] EVEN - invoke DrawString8x8, 185, 139, OFFSET textEven3D, 00FFFFFFh - - invoke DrawBoxBorder, 240, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [5] ODD - invoke DrawString8x8, 250, 139, OFFSET textOdd3D, 00FFFFFFh - - ; Highlight Active Bet - cmp roulBetType, 1 - jne @F - invoke DrawBoxBorder, 173, 23, 129, 32, 0, 00FFFF00h, 2 -@@: - cmp roulBetType, 2 - jne @F - invoke DrawBoxBorder, 173, 58, 129, 32, 0, 00FFFF00h, 2 -@@: - cmp roulBetType, 3 - jne @F - invoke DrawBoxBorder, 173, 93, 129, 32, 0, 00FFFF00h, 2 -@@: - cmp roulBetType, 4 - jne @F - invoke DrawBoxBorder, 173, 128, 64, 30, 0, 00FFFF00h, 2 -@@: - cmp roulBetType, 5 - jne draw_ro_footer - invoke DrawBoxBorder, 238, 128, 64, 30, 0, 00FFFF00h, 2 - -draw_ro_footer: - invoke DrawBoxBorder, 20, 180, 280, 42, 00101015h, 00FFD700h, 1 - - cmp roulState, 2 - jne @F - invoke DrawString8x8, 28, 186, OFFSET textResult3D, 00FFD700h - invoke FormatNumber, roulWinningNum, OFFSET hudNumBuffer - invoke DrawString8x8, 85, 186, OFFSET hudNumBuffer, 00FFFF00h - invoke DrawString8x8, 130, 186, OFFSET roulOutcomeMsg, 0050FF50h -@@: - invoke DrawString8x8, 28, 202, OFFSET textSpin3D, 00A0A0A0h - ret -RenderRouletteGame ENDP - -IsNumberRed PROC - mov eax, roulWinningNum - cmp eax, 1 - je red_yes - cmp eax, 3 - je red_yes - cmp eax, 5 - je red_yes - cmp eax, 7 - je red_yes - cmp eax, 9 - je red_yes - cmp eax, 12 - je red_yes - cmp eax, 14 - je red_yes - cmp eax, 16 - je red_yes - cmp eax, 18 - je red_yes - cmp eax, 19 - je red_yes - cmp eax, 21 - je red_yes - cmp eax, 23 - je red_yes - cmp eax, 25 - je red_yes - cmp eax, 27 - je red_yes - cmp eax, 30 - je red_yes - cmp eax, 32 - je red_yes - cmp eax, 34 - je red_yes - cmp eax, 36 - je red_yes - xor eax, eax - ret -red_yes: - mov eax, 1 - ret -IsNumberRed ENDP - -; ============================================================================== -; IN-ENGINE 2.5D MINI-GAME: BAR & SHOP -; ============================================================================== -HandleShopInput PROC uses ebx esi - xor esi, esi -shop_choice: - inc esi - lea eax, [esi+30h] - invoke Pressed3D, eax - test eax, eax - jnz shop_chosen - cmp esi, 3 - jb shop_choice - ret -shop_chosen: - bt ownedBacks3D, esi - jc shop_equip - mov ebx, 1500 - cmp esi, 1 - jne @F - mov ebx, 1000 -@@: - cmp bankroll, ebx - jb shop_no_money - sub bankroll, ebx - bts ownedBacks3D, esi -shop_equip: - mov selectedBack3D, esi - invoke CopyString3D, OFFSET textBought3D, OFFSET shopMsg - call SaveProgress3D - ret -shop_no_money: - invoke CopyString3D, OFFSET textNoCash3D, OFFSET shopMsg - ret -HandleShopInput ENDP - -RenderShopGame PROC - invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A0Ah - invoke DrawBoxBorder, 10, 10, 300, 220, 00251515h, 00FFD700h, 3 - invoke DrawString8x8, 25, 20, OFFSET textShop3D, 00FFD700h - - invoke DrawBoxBorder, 20, 40, 280, 32, 001A1010h, 00FFFFFFh, 1 - invoke DrawString8x8, 28, 46, OFFSET textItem1_3D, 00FFFF00h - invoke DrawString8x8, 28, 58, OFFSET textShopHint3D, 00A0A0A0h - - invoke DrawBoxBorder, 20, 80, 280, 32, 001A1010h, 00FFFFFFh, 1 - invoke DrawString8x8, 28, 86, OFFSET textItem2_3D, 00FFFF00h - invoke DrawString8x8, 28, 98, OFFSET textShopHint3D, 00A0A0A0h - - invoke DrawBoxBorder, 20, 120, 280, 32, 001A1010h, 00FFFFFFh, 1 - invoke DrawString8x8, 28, 126, OFFSET textItem3_3D, 00FFFF00h - invoke DrawString8x8, 28, 138, OFFSET textShopHint3D, 00A0A0A0h - - invoke DrawBoxBorder, 20, 165, 280, 55, 00100A0Ah, 00FFD700h, 1 - invoke DrawString8x8, 28, 172, OFFSET textBank3D, 00FFD700h - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 00FFFF00h - - cmp BYTE PTR [shopMsg], 0 - je @F - invoke DrawString8x8, 28, 188, OFFSET shopMsg, 0050FF50h -@@: - invoke DrawString8x8, 28, 204, OFFSET textBack3D, 00A0A0A0h - ret -RenderShopGame ENDP - -; ============================================================================== -; IN-ENGINE 2.5D MINI-GAME: ATM TERMINAL -; ============================================================================== -HandleATMInput PROC - ret -HandleATMInput ENDP - -RenderATMGame PROC - invoke DrawBox, 0, 0, 320, 240, 00172120h - invoke DrawString8x8, 24, 30, OFFSET textATM3D, 00D8BC6Ah - invoke DrawString8x8, 24, 70, OFFSET textBank3D, 00FFFFFFh - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - invoke DrawString8x8, 96, 70, OFFSET hudNumBuffer, 0089DAB2h - invoke DrawString8x8, 24, 115, OFFSET textATMNote3D, 00B7C8C1h - invoke DrawString8x8, 24, 140, OFFSET textATMNote2_3D, 00B7C8C1h - invoke DrawString8x8, 24, 208, OFFSET textBack3D, 00D8BC6Ah - ret -RenderATMGame ENDP - -; ============================================================================== -; ============================================================================== -; ============================================================================== -; SHARED RICH UI PROCEDURES -; ============================================================================== -DrawKeycap3D PROC uses ebx esi edi, x:DWORD, y:DWORD, strPtr:DWORD, isActive:DWORD - local keyW:DWORD - mov esi, strPtr - xor ecx, ecx -keycap_len: - mov al, [esi+ecx] - test al, al - jz keycap_len_done - inc ecx - jmp keycap_len -keycap_len_done: - shl ecx, 3 - add ecx, 8 - mov keyW, ecx - - ; Drop shadow - mov eax, y - add eax, 2 - invoke DrawBox, x, eax, keyW, 13, 0008080Ch - - ; Border and Fill - cmp isActive, 0 - je keycap_inactive - mov eax, 00FFFF00h ; Bright Yellow active border - mov edx, 001B4B22h ; Casino Green active fill - mov ebx, 00FFFF00h ; Bright Yellow active text - jmp keycap_draw_box -keycap_inactive: - mov eax, 00606870h ; Slate inactive border - mov edx, 001A1C22h ; Charcoal inactive fill - mov ebx, 00D0D8E0h ; Silver inactive text - -keycap_draw_box: - push ebx - invoke DrawBoxBorder, x, y, keyW, 13, edx, eax, 1 - pop ebx - - ; Text label - mov eax, x - add eax, 4 - mov edx, y - add edx, 3 - invoke DrawString8x8, eax, edx, strPtr, ebx - - mov eax, keyW - add eax, 4 - ret -DrawKeycap3D ENDP - -DrawChipStack PROC uses ebx esi edi, x:DWORD, y:DWORD, chipCount:DWORD - mov edi, chipCount - xor esi, esi -chip_loop: - cmp esi, edi - jge chip_done - mov eax, esi - shl eax, 2 - mov edx, y - sub edx, eax - - ; Shadow - mov eax, x - add eax, 2 - mov ecx, edx - add ecx, 5 - invoke DrawBox, eax, ecx, 20, 2, 00061004h - - ; Red Clay Chip body with white rim - invoke DrawBoxBorder, x, edx, 24, 6, 00B81515h, 00FFFFFFh, 1 - - ; White stripe inlays - mov eax, x - add eax, 4 - mov ecx, edx - add ecx, 1 - invoke DrawBox, eax, ecx, 3, 4, 00FFFFFFh - - mov eax, x - add eax, 17 - mov ecx, edx - add ecx, 1 - invoke DrawBox, eax, ecx, 3, 4, 00FFFFFFh - - inc esi - jmp chip_loop -chip_done: - ret -DrawChipStack ENDP - -DrawDetailedCoin PROC uses ebx esi edi, cxVal:DWORD, cyVal:DWORD, rxVal:DWORD, ryVal:DWORD, outerColor:DWORD, innerColor:DWORD, reliefType:DWORD - local rxSq:DWORD - local rySq:DWORD - local rxRySq:DWORD - local threshSq:DWORD - local curDy:DWORD - local curDx:DWORD - local curX:DWORD - local curY:DWORD - - mov eax, rxVal - cmp eax, 0 - jle coin_draw_done - mov eax, ryVal - cmp eax, 0 - jle coin_draw_done - - mov eax, rxVal - imul eax, rxVal - mov rxSq, eax - - mov eax, ryVal - imul eax, ryVal - mov rySq, eax - - imul eax, rxSq - mov rxRySq, eax - - ; 3/4 threshold for rim bevel - mov ecx, 3 - imul eax, ecx - shr eax, 2 - mov threshSq, eax - - ; Scan rows - mov eax, ryVal - neg eax - mov curDy, eax -coin_row_loop: - mov eax, curDy - cmp eax, ryVal - jg coin_relief_check - - mov edx, cyVal - add edx, curDy - mov curY, edx - - ; Scan columns - mov eax, rxVal - neg eax - mov curDx, eax -coin_col_loop: - mov eax, curDx - cmp eax, rxVal - jg coin_col_next_row - - mov ecx, cxVal - add ecx, curDx - mov curX, ecx - - ; val = dx*dx*rySq + dy*dy*rxSq - mov eax, curDx - imul eax, curDx - imul eax, rySq - mov ebx, eax - - mov eax, curDy - imul eax, curDy - imul eax, rxSq - add eax, ebx - - cmp eax, rxRySq - ja coin_pixel_outside - - cmp eax, threshSq - jb coin_draw_inner - invoke DrawPixel, curX, curY, outerColor - jmp coin_pixel_outside -coin_draw_inner: - invoke DrawPixel, curX, curY, innerColor - -coin_pixel_outside: - inc curDx - jmp coin_col_loop - -coin_col_next_row: - inc curDy - jmp coin_row_loop - -coin_relief_check: - cmp rxVal, 14 - jl coin_draw_done - - cmp reliefType, 1 - je coin_draw_eagle - cmp reliefType, 2 - je coin_draw_numeral - jmp coin_draw_done - -coin_draw_eagle: - ; Imperial Eagle relief (Dark Gold 009A7A00h / Bright 00FFD700h) - mov eax, cxVal - sub eax, 3 - mov edx, cyVal - sub edx, 14 - invoke DrawBox, eax, edx, 7, 2, 009A7A00h - - mov eax, cxVal - sub eax, 4 - mov edx, cyVal - sub edx, 12 - invoke DrawBox, eax, edx, 9, 2, 009A7A00h - - mov eax, cxVal - sub eax, 2 - mov edx, cyVal - sub edx, 9 - invoke DrawBox, eax, edx, 5, 12, 009A7A00h - - mov eax, cxVal - sub eax, 1 - mov edx, cyVal - sub edx, 8 - invoke DrawBox, eax, edx, 3, 10, 00FFD700h - - mov eax, cxVal - sub eax, 10 - mov edx, cyVal - sub edx, 8 - invoke DrawBox, eax, edx, 7, 3, 009A7A00h - - mov eax, cxVal - sub eax, 13 - mov edx, cyVal - sub edx, 5 - invoke DrawBox, eax, edx, 10, 3, 009A7A00h - - mov eax, cxVal - sub eax, 11 - mov edx, cyVal - sub edx, 2 - invoke DrawBox, eax, edx, 7, 3, 009A7A00h - - mov eax, cxVal - add eax, 4 - mov edx, cyVal - sub edx, 8 - invoke DrawBox, eax, edx, 7, 3, 009A7A00h - - mov eax, cxVal - add eax, 4 - mov edx, cyVal - sub edx, 5 - invoke DrawBox, eax, edx, 10, 3, 009A7A00h - - mov eax, cxVal - add eax, 5 - mov edx, cyVal - sub edx, 2 - invoke DrawBox, eax, edx, 7, 3, 009A7A00h - - mov eax, cxVal - sub eax, 4 - mov edx, cyVal - add edx, 4 - invoke DrawBox, eax, edx, 9, 3, 009A7A00h - - mov eax, cxVal - sub eax, 3 - mov edx, cyVal - add edx, 7 - invoke DrawBox, eax, edx, 7, 3, 009A7A00h - jmp coin_draw_done - -coin_draw_numeral: - ; Roman numeral 'I' & laurel - mov eax, cxVal - sub eax, 5 - mov edx, cyVal - sub edx, 10 - invoke DrawBox, eax, edx, 11, 3, 009A7A00h - - mov eax, cxVal - sub eax, 2 - mov edx, cyVal - sub edx, 7 - invoke DrawBox, eax, edx, 5, 14, 009A7A00h - - mov eax, cxVal - sub eax, 1 - mov edx, cyVal - sub edx, 6 - invoke DrawBox, eax, edx, 3, 12, 00FFD700h - - mov eax, cxVal - sub eax, 6 - mov edx, cyVal - add edx, 7 - invoke DrawBox, eax, edx, 13, 3, 009A7A00h - - ; Laurel dots - mov eax, cxVal - sub eax, 12 - mov edx, cyVal - sub edx, 8 - invoke DrawBox, eax, edx, 2, 2, 009A7A00h - - mov eax, cxVal - add eax, 11 - mov edx, cyVal - sub edx, 8 - invoke DrawBox, eax, edx, 2, 2, 009A7A00h - - mov eax, cxVal - sub eax, 12 - mov edx, cyVal - invoke DrawBox, eax, edx, 2, 2, 009A7A00h - - mov eax, cxVal - add eax, 11 - mov edx, cyVal - invoke DrawBox, eax, edx, 2, 2, 009A7A00h - - mov eax, cxVal - sub eax, 12 - mov edx, cyVal - add edx, 8 - invoke DrawBox, eax, edx, 2, 2, 009A7A00h - - mov eax, cxVal - add eax, 11 - mov edx, cyVal - add edx, 8 - invoke DrawBox, eax, edx, 2, 2, 009A7A00h - -coin_draw_done: - ret -DrawDetailedCoin ENDP - -; ============================================================================== -; IN-ENGINE 2.5D MINI-GAME: COIN FLIP -; ============================================================================== -InitCoinGame PROC - call InitNativeCoin3D - ret -InitCoinGame ENDP - -HandleCoinInput PROC - call HandleNativeCoin3D - ret -; Retained legacy frame-count prototype, excluded from the executable. -IF 0 - cmp coin3d_state, 0 - je coin_handle_idle - cmp coin3d_state, 1 - je coin_handle_flipping - cmp coin3d_state, 2 - je coin_handle_result - ret - -coin_handle_idle: - invoke Pressed3D, 26h ; UP - test eax, eax - jnz coin_bet_up - invoke Pressed3D, 57h ; 'W' - test eax, eax - jnz coin_bet_up - invoke Pressed3D, 28h ; DOWN - test eax, eax - jnz coin_bet_down - invoke Pressed3D, 53h ; 'S' - test eax, eax - jnz coin_bet_down - invoke Pressed3D, 31h ; '1' - test eax, eax - jnz coin_pick_1 - invoke Pressed3D, 32h ; '2' - test eax, eax - jnz coin_pick_2 - invoke Pressed3D, 20h ; SPACE - test eax, eax - jnz coin_start_flip - ret - -coin_bet_up: - mov eax, coin3d_bet - add eax, 50 - cmp eax, bankroll - jle @F - mov eax, bankroll -@@: - cmp eax, 5000 - jle @F - mov eax, 5000 -@@: - mov coin3d_bet, eax - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -coin_bet_down: - mov eax, coin3d_bet - sub eax, 50 - cmp eax, 50 - jge @F - mov eax, 50 -@@: - mov coin3d_bet, eax - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -coin_pick_1: - mov coin3d_choice, 1 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -coin_pick_2: - mov coin3d_choice, 2 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -coin_start_flip: - mov eax, coin3d_bet - cmp eax, bankroll - jle @F - mov eax, bankroll - mov coin3d_bet, eax - test eax, eax - jz coin_done -@@: - mov eax, coin3d_bet - sub bankroll, eax - mov coin3d_state, 1 - mov coin3d_timer, 40 - invoke PlayCasinoSound3D, OFFSET soundCoin, 0, 1 - ret - -coin_handle_flipping: - dec coin3d_timer - cmp coin3d_timer, 0 - jg coin_done - invoke RandomRange3D, 2 - inc eax - mov coin3d_result, eax - mov edx, coin3d_choice - cmp eax, edx - jne coin_flip_lost - - ; Won! - inc coin3d_streak - mov eax, coin3d_bet - shl eax, 1 - add bankroll, eax - mov coin3d_win, eax - mov coin3d_state, 2 - invoke PlayCasinoSound3D, OFFSET soundCoinDing, 0, 1 - ret - -coin_flip_lost: - mov coin3d_streak, 0 - mov coin3d_win, 0 - mov coin3d_state, 2 - invoke PlayCasinoSound3D, OFFSET soundLose, 0, 1 - ret - -coin_handle_result: - invoke Pressed3D, 20h - test eax, eax - jz coin_done - mov coin3d_state, 0 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 -coin_done: - ret -ENDIF -HandleCoinInput ENDP - -RenderCoinGame PROC uses ebx esi edi - local cyVal:DWORD - local rxVal:DWORD - local kx:DWORD - - call RenderNativeCoin3D - ret -IF 0 - ; Background & Cabinet border - invoke DrawBox, 0, 0, 320, 240, 00140906h - invoke DrawBoxBorder, 6, 6, 308, 228, 0022150Fh, 00482E1Bh, 3 - - ; Header - invoke DrawBoxBorder, 20, 12, 280, 26, 001C100Ah, 00FFD700h, 2 - invoke DrawString8x8, 44, 21, OFFSET textCoinTitle, 00FFFF00h - - ; Corner rivets - invoke DrawBox, 12, 12, 3, 3, 00FFD700h - invoke DrawBox, 306, 12, 3, 3, 00FFD700h - invoke DrawBox, 12, 226, 3, 3, 00FFD700h - invoke DrawBox, 306, 226, 3, 3, 00FFD700h - - ; Status meters - invoke DrawBoxBorder, 20, 44, 110, 18, 000E1A0Ah, 00224B1Ah, 1 - invoke DrawString8x8, 24, 49, OFFSET textBankPrompt, 003CFF3Ch - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - invoke DrawString8x8, 72, 49, OFFSET hudNumBuffer, 003CFF3Ch - - invoke DrawBoxBorder, 190, 44, 110, 18, 001A100Ah, 003A2814h, 1 - invoke DrawString8x8, 194, 49, OFFSET textBetPrompt, 00FFD700h - invoke FormatNumber, coin3d_bet, OFFSET hudNumBuffer - invoke DrawString8x8, 254, 49, OFFSET hudNumBuffer, 00FFD700h - - ; Left: Heads - cmp coin3d_choice, 1 - jne coin_left_inactive - invoke DrawBoxBorder, 20, 72, 76, 68, 00101828h, 00FFFF00h, 2 - invoke DrawString8x8, 30, 78, OFFSET textCoinSide1, 00FFFF00h - invoke DrawDetailedCoin, 58, 106, 14, 14, 00D0A000h, 00FFD700h, 1 - invoke DrawString8x8, 24, 126, OFFSET textCoinSelected, 003CFF3Ch - jmp coin_right_side -coin_left_inactive: - invoke DrawBoxBorder, 20, 72, 76, 68, 000A101Ch, 00404855h, 1 - invoke DrawString8x8, 30, 78, OFFSET textCoinSide1, 00D0D8E0h - invoke DrawDetailedCoin, 58, 106, 14, 14, 009A7A00h, 00D0A000h, 1 - -coin_right_side: - ; Right: Tails - cmp coin3d_choice, 2 - jne coin_right_inactive - invoke DrawBoxBorder, 224, 72, 76, 68, 00101828h, 00FFFF00h, 2 - invoke DrawString8x8, 234, 78, OFFSET textCoinSide2, 00FFFF00h - invoke DrawDetailedCoin, 262, 106, 14, 14, 00D0A000h, 00FFD700h, 2 - invoke DrawString8x8, 228, 126, OFFSET textCoinSelected, 003CFF3Ch - jmp coin_center_area -coin_right_inactive: - invoke DrawBoxBorder, 224, 72, 76, 68, 000A101Ch, 00404855h, 1 - invoke DrawString8x8, 234, 78, OFFSET textCoinSide2, 00D0D8E0h - invoke DrawDetailedCoin, 262, 106, 14, 14, 009A7A00h, 00D0A000h, 2 - -coin_center_area: - ; Center spotlight - invoke DrawCircle, 160, 110, 48, 00121620h - invoke DrawCircle, 160, 110, 44, 00FFD700h - invoke DrawCircle, 160, 110, 42, 000E141Eh - - cmp coin3d_state, 1 - je coin_render_flipping - cmp coin3d_state, 2 - je coin_render_result - - ; Idle coin - invoke DrawDetailedCoin, 160, 110, 26, 26, 00D0A000h, 00FFD700h, coin3d_choice - jmp coin_render_keys - -coin_render_flipping: - mov eax, coin3d_timer - and eax, 7 - movzx eax, byte ptr [coinRxAnimTable + eax] - mov rxVal, eax - invoke DrawDetailedCoin, 160, 110, rxVal, 26, 00D0A000h, 00FFD700h, 0 - invoke DrawString8x8, 88, 160, OFFSET textCoinFlipping, 00FFFF00h - jmp coin_render_keys - -coin_render_result: - invoke DrawDetailedCoin, 160, 110, 26, 26, 00D0A000h, 00FFD700h, coin3d_result - mov eax, coin3d_result - cmp eax, coin3d_choice - jne coin_render_loss_msg - - ; Win banner - invoke DrawBoxBorder, 44, 154, 232, 22, 000E141Eh, 003CFF3Ch, 1 - invoke DrawString8x8, 64, 161, OFFSET textCoinWin, 003CFF3Ch - invoke FormatNumber, coin3d_win, OFFSET hudNumBuffer - invoke DrawString8x8, 152, 161, OFFSET hudNumBuffer, 003CFF3Ch - jmp coin_render_keys - -coin_render_loss_msg: - invoke DrawBoxBorder, 44, 154, 232, 22, 000E141Eh, 00C81414h, 1 - invoke DrawString8x8, 114, 161, OFFSET textCoinLose, 00FF6464h - -coin_render_keys: - mov kx, 16 - xor eax, eax - cmp coin3d_choice, 1 - sete al - invoke DrawKeycap3D, kx, 192, OFFSET textCoinKey1, eax - add kx, eax - - xor eax, eax - cmp coin3d_choice, 2 - sete al - invoke DrawKeycap3D, kx, 192, OFFSET textCoinKey2, eax - add kx, eax - - invoke DrawKeycap3D, kx, 192, OFFSET textCoinKeySpace, 1 - add kx, eax - - invoke DrawKeycap3D, kx, 192, OFFSET textKeyEsc, 0 - ret -ENDIF -RenderCoinGame ENDP - -; ============================================================================== -; IN-ENGINE 2.5D MINI-GAME: CRAPS / DICE -; ============================================================================== -DrawCrapsDie PROC uses ebx esi edi, x:DWORD, y:DWORD, sizeVal:DWORD, valNum:DWORD - ; Drop shadow - mov eax, x - add eax, 3 - mov edx, y - add edx, sizeVal - invoke DrawBox, eax, edx, sizeVal, 3, 00081403h - - mov eax, x - add eax, sizeVal - mov edx, y - add edx, 3 - invoke DrawBox, eax, edx, 3, sizeVal, 00081403h - - ; Ivory body & bevel - invoke DrawBoxBorder, x, y, sizeVal, sizeVal, 00FAF4F0h, 00403535h, 1 - mov eax, x - inc eax - mov edx, y - inc edx - mov ecx, sizeVal - sub ecx, 2 - invoke DrawBox, eax, edx, ecx, 1, 00FFFFFFh - invoke DrawBox, eax, edx, 1, ecx, 00FFFFFFh - - ; Ruby pips (00C81515h) - mov eax, valNum - test al, 1 - jz @F - ; Center pip - mov eax, x - add eax, 18 - mov edx, y - add edx, 18 - invoke DrawCircle, eax, edx, 3, 00C81515h - dec eax - dec edx - invoke DrawPixel, eax, edx, 00FFFFFFh -@@: - cmp valNum, 2 - jl die_pips_done - mov eax, x - add eax, 9 - mov edx, y - add edx, 9 - invoke DrawCircle, eax, edx, 3, 00C81515h - mov eax, x - add eax, 27 - mov edx, y - add edx, 27 - invoke DrawCircle, eax, edx, 3, 00C81515h - - cmp valNum, 4 - jl die_pips_done - mov eax, x - add eax, 27 - mov edx, y - add edx, 9 - invoke DrawCircle, eax, edx, 3, 00C81515h - mov eax, x - add eax, 9 - mov edx, y - add edx, 27 - invoke DrawCircle, eax, edx, 3, 00C81515h - - cmp valNum, 6 - jl die_pips_done - mov eax, x - add eax, 9 - mov edx, y - add edx, 18 - invoke DrawCircle, eax, edx, 3, 00C81515h - mov eax, x - add eax, 27 - mov edx, y - add edx, 18 - invoke DrawCircle, eax, edx, 3, 00C81515h - -die_pips_done: - ret -DrawCrapsDie ENDP - -InitDiceGame PROC - mov dice3d_state, 0 - mov dice3d_timer, 0 - mov dice3d_win, 0 - ret -InitDiceGame ENDP - -HandleDiceInput PROC - cmp dice3d_state, 0 - je dice_handle_idle - cmp dice3d_state, 1 - je dice_handle_rolling - cmp dice3d_state, 2 - je dice_handle_result - ret - -dice_handle_idle: - invoke Pressed3D, 26h ; UP - test eax, eax - jnz dice_bet_up - invoke Pressed3D, 57h ; 'W' - test eax, eax - jnz dice_bet_up - invoke Pressed3D, 28h ; DOWN - test eax, eax - jnz dice_bet_down - invoke Pressed3D, 53h ; 'S' - test eax, eax - jnz dice_bet_down - invoke Pressed3D, 31h ; '1' - test eax, eax - jnz dice_pick_1 - invoke Pressed3D, 32h ; '2' - test eax, eax - jnz dice_pick_2 - invoke Pressed3D, 20h ; SPACE - test eax, eax - jnz dice_start_roll - ret - -dice_bet_up: - mov eax, dice3d_bet - add eax, 50 - cmp eax, bankroll - jle @F - mov eax, bankroll -@@: - cmp eax, 5000 - jle @F - mov eax, 5000 -@@: - mov dice3d_bet, eax - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -dice_bet_down: - mov eax, dice3d_bet - sub eax, 50 - cmp eax, 50 - jge @F - mov eax, 50 -@@: - mov dice3d_bet, eax - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -dice_pick_1: - mov dice3d_choice, 1 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -dice_pick_2: - mov dice3d_choice, 2 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -dice_start_roll: - mov eax, dice3d_bet - cmp eax, bankroll - jle @F - mov eax, bankroll - mov dice3d_bet, eax - test eax, eax - jz dice_done -@@: - mov eax, dice3d_bet - test eax, eax - jle dice_done - sub bankroll, eax - mov dice3d_state, 1 - mov dice3d_timer, 0 - invoke RandomRange3D, 6 - inc eax - mov dice3d_val1, eax - invoke RandomRange3D, 6 - inc eax - mov dice3d_val2, eax - invoke PlayCasinoSound3D, OFFSET soundDiceRoll, 0, 1 - call SaveProgress3D - ret - -dice_handle_rolling: - mov eax, deltaTime3D - add dice3d_timer, eax - cmp dice3d_timer, 1600 - jb dice_done - mov dice3d_timer, 1600 - mov eax, dice3d_val2 - mov edx, dice3d_val1 - add edx, eax - mov dice3d_sum, edx - - ; Parity check - mov eax, edx - and eax, 1 - jnz dice_sum_is_odd - ; Even - mov eax, 1 - jmp dice_check_win -dice_sum_is_odd: - mov eax, 2 - -dice_check_win: - cmp eax, dice3d_choice - jne dice_roll_lost - - ; Won! - mov eax, dice3d_bet - shl eax, 1 - add bankroll, eax - mov dice3d_win, eax - mov dice3d_state, 2 - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - invoke NpcRecordRound3D,8,1 - call SaveProgress3D - ret - -dice_roll_lost: - mov dice3d_win, 0 - mov dice3d_state, 2 - invoke PlayCasinoSound3D, OFFSET soundLose, 0, 1 - invoke NpcRecordRound3D,8,0 - call SaveProgress3D - ret - -dice_handle_result: - invoke Pressed3D, 20h - test eax, eax - jz dice_done - mov dice3d_state, 0 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 -dice_done: - ret -HandleDiceInput ENDP - -RenderDiceGame PROC uses ebx esi edi - local kx:DWORD - - ; Mahogany frame & Deep Felt Green table - invoke DrawBox, 0, 0, 320, 240, 00140906h - invoke DrawBoxBorder, 6, 6, 308, 228, 000A3816h, 00FFD700h, 2 - - ; Header - invoke DrawBoxBorder, 20, 12, 280, 26, 00072E13h, 00FFD700h, 2 - invoke DrawString8x8, 116, 21, OFFSET textDiceTitle, 00FFFF00h - - ; Status - invoke DrawBoxBorder, 20, 44, 110, 18, 00072E13h, 001B4B22h, 1 - invoke DrawString8x8, 24, 49, OFFSET textBankPrompt, 003CFF3Ch - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - invoke DrawString8x8, 72, 49, OFFSET hudNumBuffer, 003CFF3Ch - - invoke DrawBoxBorder, 190, 44, 110, 18, 00072E13h, 001B4B22h, 1 - invoke DrawString8x8, 194, 49, OFFSET textBetPrompt, 00FFD700h - invoke FormatNumber, dice3d_bet, OFFSET hudNumBuffer - invoke DrawString8x8, 258, 49, OFFSET hudNumBuffer, 00FFD700h - - ; [1] ×¨Ò - cmp dice3d_choice, 1 - jne dice_even_inactive - invoke DrawBoxBorder, 16, 70, 88, 48, 00072E13h, 00FFFF00h, 2 - invoke DrawString8x8, 30, 76, OFFSET textDiceEven, 00FFFF00h - invoke DrawString8x8, 22, 90, OFFSET textDiceEvenNums, 00FFD700h - invoke DrawString8x8, 26, 104, OFFSET textCoinSelected, 003CFF3Ch - jmp dice_odd_side -dice_even_inactive: - invoke DrawBoxBorder, 16, 70, 88, 48, 00072E13h, 001B4B22h, 1 - invoke DrawString8x8, 30, 76, OFFSET textDiceEven, 00D0D8E0h - invoke DrawString8x8, 22, 90, OFFSET textDiceEvenNums, 0080B090h - -dice_odd_side: - ; [2] ÍÅ×ÅÒ - cmp dice3d_choice, 2 - jne dice_odd_inactive - invoke DrawBoxBorder, 216, 70, 88, 48, 00072E13h, 00FFFF00h, 2 - invoke DrawString8x8, 226, 76, OFFSET textDiceOdd, 00FFFF00h - invoke DrawString8x8, 224, 90, OFFSET textDiceOddNums, 00FFD700h - invoke DrawString8x8, 226, 104, OFFSET textCoinSelected, 003CFF3Ch - jmp dice_center_cubes -dice_odd_inactive: - invoke DrawBoxBorder, 216, 70, 88, 48, 00072E13h, 001B4B22h, 1 - invoke DrawString8x8, 226, 76, OFFSET textDiceOdd, 00D0D8E0h - invoke DrawString8x8, 224, 90, OFFSET textDiceOddNums, 0080B090h - -dice_center_cubes: - call RenderDiceThrow3D - - cmp dice3d_state, 1 - je dice_render_rolling - cmp dice3d_state, 2 - je dice_render_result - jmp dice_render_keys - -dice_render_rolling: - invoke DrawString8x8, 76, 138, OFFSET textDiceRolling, 00FFFF00h - jmp dice_render_keys - -dice_render_result: - invoke DrawBoxBorder, 36, 130, 248, 36, 00072E13h, 00FFD700h, 1 - invoke DrawString8x8, 44, 135, OFFSET textDiceSumHdr, 00FFD700h - invoke FormatNumber, dice3d_val1, OFFSET hudNumBuffer - invoke DrawString8x8, 92, 135, OFFSET hudNumBuffer, 00FFFF00h - invoke DrawString8x8, 110, 135, OFFSET textDicePlus, 00FFD700h - invoke FormatNumber, dice3d_val2, OFFSET hudNumBuffer - invoke DrawString8x8, 126, 135, OFFSET hudNumBuffer, 00FFFF00h - invoke DrawString8x8, 144, 135, OFFSET textDiceEqual, 00FFD700h - invoke FormatNumber, dice3d_sum, OFFSET hudNumBuffer - invoke DrawString8x8, 168, 135, OFFSET hudNumBuffer, 00FFFF00h - - mov eax, dice3d_sum - and eax, 1 - jnz dice_render_odd_res - invoke DrawString8x8, 186, 135, OFFSET textDiceEvenResult, 003CFF3Ch - jmp dice_render_outcome -dice_render_odd_res: - invoke DrawString8x8, 186, 135, OFFSET textDiceOddResult, 003CFF3Ch - -dice_render_outcome: - mov eax, dice3d_win - test eax, eax - jz dice_render_loss_outcome - invoke DrawString8x8, 68, 150, OFFSET textDiceWin, 003CFF3Ch - invoke FormatNumber, dice3d_win, OFFSET hudNumBuffer - invoke DrawString8x8, 156, 150, OFFSET hudNumBuffer, 003CFF3Ch - invoke DrawString8x8, 188, 150, OFFSET textDiceWinMult, 003CFF3Ch - jmp dice_render_keys - -dice_render_loss_outcome: - invoke DrawString8x8, 116, 150, OFFSET textDiceLose, 00FF6464h - -dice_render_keys: - mov kx, 16 - xor eax, eax - cmp dice3d_choice, 1 - sete al - invoke DrawKeycap3D, kx, 192, OFFSET textDiceKey1, eax - add kx, eax - - xor eax, eax - cmp dice3d_choice, 2 - sete al - invoke DrawKeycap3D, kx, 192, OFFSET textDiceKey2, eax - add kx, eax - - invoke DrawKeycap3D, kx, 192, OFFSET textDiceKeySpace, 1 - add kx, eax - - invoke DrawKeycap3D, kx, 192, OFFSET textKeyEsc, 0 - ret -RenderDiceGame ENDP - -; ============================================================================== -; IN-ENGINE 2.5D MINI-GAME: SKULLS & CUPS (ÍÀϨÐÑÒÊÈ) -; ============================================================================== -DrawGlowingOrb PROC uses ebx esi edi, cxVal:DWORD, cyVal:DWORD - invoke DrawCircle, cxVal, cyVal, 14, 002E1E08h - invoke DrawCircle, cxVal, cyVal, 11, 00583A10h - invoke DrawCircle, cxVal, cyVal, 8, 008A581Ah - invoke DrawCircle, cxVal, cyVal, 6, 00D0B000h - invoke DrawCircle, cxVal, cyVal, 4, 00FFE000h - mov eax, cxVal - dec eax - mov edx, cyVal - dec edx - invoke DrawCircle, eax, edx, 2, 00FFFF80h - dec eax - dec edx - invoke DrawPixel, eax, edx, 00FFFFFFh - ret -DrawGlowingOrb ENDP - -DrawGothicCup PROC uses ebx esi edi, x:DWORD, y:DWORD, cupId:DWORD, isLifted:DWORD, hasBall:DWORD - local liftY:DWORD - - mov eax, y - cmp isLifted, 0 - je @F - sub eax, 36 -@@: - mov liftY, eax - - ; Drop shadow - cmp isLifted, 0 - jne cup_shadow_lifted - mov eax, x - add eax, 6 - mov edx, y - add edx, 42 - invoke DrawBox, eax, edx, 36, 4, 0010040Ah - jmp cup_ball_check -cup_shadow_lifted: - mov eax, x - add eax, 10 - mov edx, y - add edx, 42 - invoke DrawBox, eax, edx, 28, 2, 001A0612h - -cup_ball_check: - cmp isLifted, 0 - je cup_body_draw - cmp hasBall, 0 - je cup_body_draw - mov eax, x - add eax, 24 - mov edx, y - add edx, 26 - invoke DrawGlowingOrb, eax, edx - -cup_body_draw: - ; Base pedestal - mov eax, x - add eax, 6 - mov edx, liftY - add edx, 36 - invoke DrawBoxBorder, eax, edx, 36, 6, 00301A22h, 00D0B000h, 1 - - ; Stem - mov eax, x - add eax, 18 - mov edx, liftY - add edx, 28 - invoke DrawBox, eax, edx, 12, 8, 00452533h - mov eax, x - add eax, 22 - invoke DrawBox, eax, edx, 4, 8, 006E4055h - - ; Goblet Bowl - mov eax, x - add eax, 8 - mov edx, liftY - add edx, 8 - invoke DrawBoxBorder, eax, edx, 32, 20, 00401E2Dh, 00FFD700h, 1 - - mov eax, x - add eax, 14 - mov edx, liftY - add edx, 10 - invoke DrawBox, eax, edx, 6, 16, 00703550h - mov eax, x - add eax, 17 - invoke DrawBox, eax, edx, 3, 16, 00A05078h - - ; Golden Rim - mov eax, x - add eax, 4 - mov edx, liftY - add edx, 2 - invoke DrawBoxBorder, eax, edx, 40, 7, 00200A15h, 00FFFF00h, 1 - mov eax, x - add eax, 12 - mov edx, liftY - add edx, 4 - invoke DrawBox, eax, edx, 16, 2, 00FFFF00h - - ; Skull face emblem - mov eax, x - add eax, 21 - mov edx, liftY - add edx, 12 - invoke DrawBox, eax, edx, 6, 5, 00FFD700h - mov eax, x - add eax, 22 - mov edx, liftY - add edx, 17 - invoke DrawBox, eax, edx, 4, 3, 00FFD700h - mov eax, x - add eax, 22 - mov edx, liftY - add edx, 14 - invoke DrawPixel, eax, edx, 00200A15h - mov eax, x - add eax, 24 - invoke DrawPixel, eax, edx, 00200A15h - - ; Cup number label - mov eax, x - add eax, 21 - mov edx, liftY - add edx, 24 - mov ecx, cupId - add ecx, '1' - invoke DrawChar8x8, eax, edx, ecx, 00FFFF00h - ret -DrawGothicCup ENDP - -InitSkullsGame PROC - mov skulls3d_state, 0 - mov skulls3d_timer, 0 - mov skulls3d_win, 0 - mov skulls3d_choice, 1 - mov skulls3d_cup0, 0 - mov skulls3d_cup1, 1 - mov skulls3d_cup2, 2 - invoke RandomRange3D, 3 - mov skulls3d_ballPos, eax - ret -InitSkullsGame ENDP - -FinalizeSkullsGuess PROC uses ebx - cmp skulls3d_state,3 - jne skulls_guess_done - mov eax, skulls3d_choice - cmp eax, skulls3d_ballPos - jne skulls_guess_wrong - - ; Correct! 3x payout - mov eax, skulls3d_bet - imul eax, 3 - add bankroll, eax - mov skulls3d_win, eax - mov skulls3d_state, 4 - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - invoke NpcRecordRound3D,9,1 - call SaveProgress3D - ret - -skulls_guess_wrong: - mov skulls3d_win, 0 - mov skulls3d_state, 4 - invoke PlayCasinoSound3D, OFFSET soundLose, 0, 1 - invoke NpcRecordRound3D,9,0 - call SaveProgress3D -skulls_guess_done: - ret -FinalizeSkullsGuess ENDP - -HandleSkullsInput PROC - cmp skulls3d_state, 0 - je skulls_handle_idle - cmp skulls3d_state, 1 - je skulls_handle_show - cmp skulls3d_state, 2 - je skulls_handle_shuffle - cmp skulls3d_state, 3 - je skulls_handle_pick - cmp skulls3d_state, 4 - je skulls_handle_reveal - ret - -skulls_handle_idle: - invoke Pressed3D, 26h ; UP - test eax, eax - jnz skulls_bet_up - invoke Pressed3D, 57h ; 'W' - test eax, eax - jnz skulls_bet_up - invoke Pressed3D, 28h ; DOWN - test eax, eax - jnz skulls_bet_down - invoke Pressed3D, 53h ; 'S' - test eax, eax - jnz skulls_bet_down - invoke Pressed3D, 20h ; SPACE - test eax, eax - jnz skulls_start_game - ret - -skulls_bet_up: - mov eax, skulls3d_bet - add eax, 50 - cmp eax, bankroll - jle @F - mov eax, bankroll -@@: - cmp eax, 5000 - jle @F - mov eax, 5000 -@@: - mov skulls3d_bet, eax - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -skulls_bet_down: - mov eax, skulls3d_bet - sub eax, 50 - cmp eax, 50 - jge @F - mov eax, 50 -@@: - mov skulls3d_bet, eax - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -skulls_start_game: - mov eax, skulls3d_bet - cmp eax, bankroll - jle @F - mov eax, bankroll - mov skulls3d_bet, eax - test eax, eax - jz skulls_input_done -@@: - mov eax, skulls3d_bet - sub bankroll, eax - invoke RandomRange3D, 3 - mov skulls3d_ballPos, eax - mov skulls3d_cup0, 0 - mov skulls3d_cup1, 1 - mov skulls3d_cup2, 2 - - ; Pre-generate 3 dynamic swap pairs - invoke RandomRange3D, 3 - mov skulls3d_swapPair0, eax - invoke RandomRange3D, 3 - mov skulls3d_swapPair1, eax - invoke RandomRange3D, 3 - mov skulls3d_swapPair2, eax - - mov skulls3d_state, 1 - mov skulls3d_timer, 0 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -skulls_handle_show: - inc skulls3d_timer - cmp skulls3d_timer, 45 - jl skulls_input_done - ; Transition to Phase 2: Active Shuffle Animation - mov skulls3d_state, 2 - mov skulls3d_timer, 0 - invoke PlayCasinoSound3D, OFFSET soundShuffle, 0, 1 - ret - -skulls_handle_shuffle: - inc skulls3d_timer - cmp skulls3d_timer, 60 - jl skulls_input_done - ; Transition to Phase 3: Pick cup - mov skulls3d_state, 3 - mov skulls3d_timer, 0 - ret - -skulls_handle_pick: - invoke Pressed3D, 31h ; '1' - test eax, eax - jnz skulls_pick_1 - invoke Pressed3D, 32h ; '2' - test eax, eax - jnz skulls_pick_2 - invoke Pressed3D, 33h ; '3' - test eax, eax - jnz skulls_pick_3 - ret - -skulls_pick_1: - mov skulls3d_choice, 0 - call FinalizeSkullsGuess - ret - -skulls_pick_2: - mov skulls3d_choice, 1 - call FinalizeSkullsGuess - ret - -skulls_pick_3: - mov skulls3d_choice, 2 - call FinalizeSkullsGuess - ret - -skulls_handle_reveal: - invoke Pressed3D, 20h - test eax, eax - jz skulls_input_done - mov skulls3d_state, 0 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 -skulls_input_done: - ret -HandleSkullsInput ENDP - -RenderSkullsGame PROC uses ebx esi edi - local kx:DWORD - local passTick:DWORD, curPair:DWORD, swapSlotA:DWORD, swapSlotB:DWORD - local xA:DWORD, xB:DWORD, curXA:DWORD, curXB:DWORD, curYA:DWORD, curYB:DWORD - local distX:DWORD, dxVal:DWORD, archY:DWORD - - ; Mahogany & Gothic Purple table - invoke DrawBox, 0, 0, 320, 240, 00140906h - invoke DrawBoxBorder, 6, 6, 308, 228, 00300F22h, 00FFD700h, 2 - - ; Header - invoke DrawBoxBorder, 20, 12, 280, 26, 001A0812h, 00FFD700h, 2 - invoke DrawString8x8, 44, 21, OFFSET textSkullsTitle, 00FFFF00h - - ; Status - invoke DrawBoxBorder, 20, 44, 110, 18, 001A0812h, 00452033h, 1 - invoke DrawString8x8, 24, 49, OFFSET textBankPrompt, 003CFF3Ch - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - invoke DrawString8x8, 72, 49, OFFSET hudNumBuffer, 003CFF3Ch - - invoke DrawBoxBorder, 190, 44, 110, 18, 001A0812h, 00452033h, 1 - invoke DrawString8x8, 194, 49, OFFSET textBetPrompt, 00FFD700h - invoke FormatNumber, skulls3d_bet, OFFSET hudNumBuffer - invoke DrawString8x8, 254, 49, OFFSET hudNumBuffer, 00FFD700h - - ; Phase Prompts - cmp skulls3d_state, 0 - jne @F - invoke DrawString8x8, 56, 62, OFFSET textSkullsPhase0, 00FFD700h - jmp skulls_draw_idle_cups -@@: - cmp skulls3d_state, 1 - jne @F - invoke DrawString8x8, 56, 62, OFFSET textSkullsPhase1, 00FFFF00h - jmp skulls_draw_phase1_cups -@@: - cmp skulls3d_state, 2 - jne @F - invoke DrawString8x8, 44, 62, OFFSET textSkullsPhase2, 00FFFF00h - jmp skulls_draw_animated_cups -@@: - cmp skulls3d_state, 3 - jne @F - invoke DrawString8x8, 28, 62, OFFSET textSkullsPhase3, 00FFFF00h - jmp skulls_draw_idle_cups -@@: - ; Phase 4: Reveal outcome - mov eax, skulls3d_win - test eax, eax - jz skulls_reveal_loss_text - invoke DrawString8x8, 40, 62, OFFSET textSkullsWin, 003CFF3Ch - invoke FormatNumber, skulls3d_win, OFFSET hudNumBuffer - invoke DrawString8x8, 136, 62, OFFSET hudNumBuffer, 003CFF3Ch - invoke DrawString8x8, 168, 62, OFFSET textSkullsWinMult, 003CFF3Ch - jmp skulls_draw_reveal_cups - -skulls_reveal_loss_text: - invoke DrawString8x8, 40, 62, OFFSET textSkullsLose, 00FF6464h - jmp skulls_draw_reveal_cups - -skulls_draw_idle_cups: - ; Draw resting cups at static slots: Slot 0 (X=36), Slot 1 (X=136), Slot 2 (X=236) - invoke DrawGothicCup, 36, 114, skulls3d_cup0, 0, 0 - invoke DrawGothicCup, 136, 114, skulls3d_cup1, 0, 0 - invoke DrawGothicCup, 236, 114, skulls3d_cup2, 0, 0 - jmp skulls_render_controls - -skulls_draw_phase1_cups: - ; Draw with golden ball showing under starting cup - mov ebx, 0 - mov edx, 0 - cmp skulls3d_ballPos, 0 - jne @F - mov ebx, 1 - mov edx, 1 -@@: - invoke DrawGothicCup, 36, 114, skulls3d_cup0, ebx, edx - - mov ebx, 0 - mov edx, 0 - cmp skulls3d_ballPos, 1 - jne @F - mov ebx, 1 - mov edx, 1 -@@: - invoke DrawGothicCup, 136, 114, skulls3d_cup1, ebx, edx - - mov ebx, 0 - mov edx, 0 - cmp skulls3d_ballPos, 2 - jne @F - mov ebx, 1 - mov edx, 1 -@@: - invoke DrawGothicCup, 236, 114, skulls3d_cup2, ebx, edx - jmp skulls_render_controls - -skulls_draw_animated_cups: - ; 60 frames = 3 passes of 20 frames - mov eax, skulls3d_timer - cmp eax, 20 - jbe pass_0 - cmp eax, 40 - jbe pass_1 - sub eax, 41 - mov passTick, eax - mov eax, skulls3d_swapPair2 - mov curPair, eax - jmp setup_pass - -pass_0: - dec eax - mov passTick, eax - mov eax, skulls3d_swapPair0 - mov curPair, eax - jmp setup_pass - -pass_1: - sub eax, 21 - mov passTick, eax - mov eax, skulls3d_swapPair1 - mov curPair, eax - -setup_pass: - ; curPair determines swap pair: - ; 0: swap slot 0 (X=36) and slot 1 (X=136) - ; 1: swap slot 1 (X=136) and slot 2 (X=236) - ; 2: swap slot 0 (X=36) and slot 2 (X=236) - cmp curPair, 1 - je pair_1 - cmp curPair, 2 - je pair_2 - mov swapSlotA, 0 - mov swapSlotB, 1 - mov xA, 36 - mov xB, 136 - jmp calc_coords -pair_1: - mov swapSlotA, 1 - mov swapSlotB, 2 - mov xA, 136 - mov xB, 236 - jmp calc_coords -pair_2: - mov swapSlotA, 0 - mov swapSlotB, 2 - mov xA, 36 - mov xB, 236 - -calc_coords: - ; distX = xB - xA - mov eax, xB - sub eax, xA - mov distX, eax - - ; dxVal = (distX * passTick) / 20 - mov eax, distX - imul eax, passTick - xor edx, edx - mov ecx, 20 - div ecx - mov dxVal, eax - - ; curXA = xA + dxVal - mov eax, xA - add eax, dxVal - mov curXA, eax - - ; curXB = xB - dxVal - mov eax, xB - sub eax, dxVal - mov curXB, eax - - ; archY = (passTick * (20 - passTick)) / 10 - mov eax, passTick - mov ecx, 20 - sub ecx, eax - imul eax, ecx - xor edx, edx - mov ecx, 10 - div ecx - mov archY, eax - - ; Cup A hops UP: 114 - archY - mov eax, 114 - sub eax, archY - mov curYA, eax - - ; Cup B hops DOWN: 114 + archY - mov eax, 114 - add eax, archY - mov curYB, eax - - ; Check if pass ended (frame 19): swap ball position and cups - cmp passTick, 19 - jne draw_active_shuffle - - ; Swap ball position if involved - mov eax, skulls3d_ballPos - cmp eax, swapSlotA - jne check_ball_b - mov edx, swapSlotB - mov skulls3d_ballPos, edx - jmp swap_slot_identities -check_ball_b: - cmp eax, swapSlotB - jne swap_slot_identities - mov edx, swapSlotA - mov skulls3d_ballPos, edx - -swap_slot_identities: - cmp curPair, 1 - je swap_ids_1_2 - cmp curPair, 2 - je swap_ids_0_2 - ; swap 0 and 1 - mov eax, skulls3d_cup0 - xchg eax, skulls3d_cup1 - mov skulls3d_cup0, eax - jmp swap_sound_tick -swap_ids_1_2: - mov eax, skulls3d_cup1 - xchg eax, skulls3d_cup2 - mov skulls3d_cup1, eax - jmp swap_sound_tick -swap_ids_0_2: - mov eax, skulls3d_cup0 - xchg eax, skulls3d_cup2 - mov skulls3d_cup0, eax - -swap_sound_tick: - invoke PlayCasinoSound3D, OFFSET soundShuffle, 0, 1 - -draw_active_shuffle: - ; Draw stationary cup - cmp curPair, 1 - je draw_stat_cup0 - cmp curPair, 2 - je draw_stat_cup1 - ; Stationary cup is slot 2 (X=236) - invoke DrawGothicCup, 236, 114, skulls3d_cup2, 0, 0 - jmp draw_moving_cups -draw_stat_cup0: - ; Stationary cup is slot 0 (X=36) - invoke DrawGothicCup, 36, 114, skulls3d_cup0, 0, 0 - jmp draw_moving_cups -draw_stat_cup1: - ; Stationary cup is slot 1 (X=136) - invoke DrawGothicCup, 136, 114, skulls3d_cup1, 0, 0 - -draw_moving_cups: - ; Moving Cup A and Moving Cup B - cmp curPair, 1 - je ids_pair_1 - cmp curPair, 2 - je ids_pair_2 - mov eax, skulls3d_cup0 - mov ebx, skulls3d_cup1 - jmp draw_the_pair -ids_pair_1: - mov eax, skulls3d_cup1 - mov ebx, skulls3d_cup2 - jmp draw_the_pair -ids_pair_2: - mov eax, skulls3d_cup0 - mov ebx, skulls3d_cup2 - -draw_the_pair: - push ebx - invoke DrawGothicCup, curXA, curYA, eax, 0, 0 - pop ebx - invoke DrawGothicCup, curXB, curYB, ebx, 0, 0 - jmp skulls_render_controls - -skulls_draw_reveal_cups: - ; Reveal Phase: lift chosen cup and lift actual ball cup if different - ; Slot 0 - mov ebx, 0 - mov edx, 0 - cmp skulls3d_choice, 0 - je slot0_is_lifted - cmp skulls3d_ballPos, 0 - jne @F -slot0_is_lifted: - mov ebx, 1 - cmp skulls3d_ballPos, 0 - sete dl -@@: - invoke DrawGothicCup, 36, 114, skulls3d_cup0, ebx, edx - - ; Slot 1 - mov ebx, 0 - mov edx, 0 - cmp skulls3d_choice, 1 - je slot1_is_lifted - cmp skulls3d_ballPos, 1 - jne @F -slot1_is_lifted: - mov ebx, 1 - cmp skulls3d_ballPos, 1 - sete dl -@@: - invoke DrawGothicCup, 136, 114, skulls3d_cup1, ebx, edx - - ; Slot 2 - mov ebx, 0 - mov edx, 0 - cmp skulls3d_choice, 2 - je slot2_is_lifted - cmp skulls3d_ballPos, 2 - jne @F -slot2_is_lifted: - mov ebx, 1 - cmp skulls3d_ballPos, 2 - sete dl -@@: - invoke DrawGothicCup, 236, 114, skulls3d_cup2, ebx, edx - -skulls_render_controls: - ; Cup selection slot labels [1], [2], [3] - invoke DrawString8x8, 54, 168, OFFSET textSkullsKey1, 00D0D8E0h - invoke DrawString8x8, 150, 168, OFFSET textSkullsKey2, 00D0D8E0h - invoke DrawString8x8, 250, 168, OFFSET textSkullsKey3, 00D0D8E0h - - ; Keycaps - mov kx, 16 - xor eax, eax - cmp skulls3d_state, 3 - je key1_active - cmp skulls3d_choice, 0 - sete al - jmp draw_key1 -key1_active: - mov eax, 1 -draw_key1: - invoke DrawKeycap3D, kx, 192, OFFSET textSkullsKey1, eax - add kx, eax - - xor eax, eax - cmp skulls3d_state, 3 - je key2_active - cmp skulls3d_choice, 1 - sete al - jmp draw_key2 -key2_active: - mov eax, 1 -draw_key2: - invoke DrawKeycap3D, kx, 192, OFFSET textSkullsKey2, eax - add kx, eax - - xor eax, eax - cmp skulls3d_state, 3 - je key3_active - cmp skulls3d_choice, 2 - sete al - jmp draw_key3 -key3_active: - mov eax, 1 -draw_key3: - invoke DrawKeycap3D, kx, 192, OFFSET textSkullsKey3, eax - add kx, eax - - xor eax, eax - cmp skulls3d_state, 0 - je start_active - cmp skulls3d_state, 4 - je start_active - jmp draw_start_key -start_active: - mov eax, 1 -draw_start_key: - invoke DrawKeycap3D, kx, 192, OFFSET textSkullsKeySpace, eax - add kx, eax - - invoke DrawKeycap3D, kx, 192, OFFSET textKeyEsc, 0 - ret -RenderSkullsGame ENDP - -InitSkillGame PROC - mov skill3d_state, 0 - mov skill3d_timer, 0 - mov skill3d_hits, 0 - mov skill3d_misses, 0 - mov skill3d_needle, 55 - mov skill3d_speed, 4 - mov skill3d_dir, 1 - mov skill3d_last_result, 0 - mov skill3d_win_amount, 0 - - ; Randomize initial zone: 80 + RandomRange(90) -> 80..170 - invoke RandomRange3D, 90 - add eax, 80 - mov skill3d_zone_start, eax - - ; Great zone: start + 20 + RandomRange(12) - invoke RandomRange3D, 12 - add eax, skill3d_zone_start - add eax, 20 - mov skill3d_great_start, eax - ret -InitSkillGame ENDP - -HandleSkillInput PROC uses ebx esi - mov eax, skill3d_state - cmp eax, 0 - je skill_handle_ready - cmp eax, 1 - je skill_handle_active - cmp eax, 2 - je skill_handle_round_wait - cmp eax, 3 - je skill_handle_round_wait - cmp eax, 4 - je skill_handle_end_wait - cmp eax, 5 - je skill_handle_end_wait - ret - -skill_handle_ready: - invoke Pressed3D, 26h ; UP - test eax, eax - jnz skill_bet_up - invoke Pressed3D, 57h ; 'W' - test eax, eax - jnz skill_bet_up - invoke Pressed3D, 28h ; DOWN - test eax, eax - jnz skill_bet_down - invoke Pressed3D, 53h ; 'S' - test eax, eax - jnz skill_bet_down - jmp skill_check_start - -skill_bet_up: - mov eax, skill3d_bet - add eax, 50 - cmp eax, bankroll - jle @F - mov eax, bankroll -@@: - cmp eax, 5000 - jle @F - mov eax, 5000 -@@: - mov skill3d_bet, eax - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -skill_bet_down: - mov eax, skill3d_bet - sub eax, 50 - cmp eax, 50 - jge @F - mov eax, 50 -@@: - mov skill3d_bet, eax - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -skill_check_start: - invoke Pressed3D, 20h ; SPACE - test eax, eax - jz skill_input_done - - ; Deduct bet on game start if beginning of run - mov eax, skill3d_hits - or eax, skill3d_misses - jnz @F - mov eax, skill3d_bet - cmp eax, bankroll - jle skill_has_funds - mov eax, bankroll - mov skill3d_bet, eax - test eax, eax - jz skill_input_done -skill_has_funds: - mov eax, skill3d_bet - sub bankroll, eax -@@: - mov skill3d_state, 1 - mov skill3d_needle, 55 - mov skill3d_dir, 1 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret - -skill_handle_active: - ; Move needle smoothly - mov eax, skill3d_needle - mov edx, skill3d_speed - cmp skill3d_dir, 1 - je skill_move_right - sub eax, edx - cmp eax, 52 - jge skill_update_needle - mov eax, 52 - mov skill3d_dir, 1 - jmp skill_update_needle -skill_move_right: - add eax, edx - cmp eax, 268 - jle skill_update_needle - mov eax, 268 - mov skill3d_dir, -1 -skill_update_needle: - mov skill3d_needle, eax - - ; Check SPACE pressed (Reaction Hit Attempt!) - invoke Pressed3D, 20h - test eax, eax - jz skill_input_done - - ; Is needle in Great Sweet Spot? - mov eax, skill3d_needle - mov edx, skill3d_great_start - cmp eax, edx - jl check_success_zone - add edx, skill3d_great_width - cmp eax, edx - jg check_success_zone - - ; GREAT HIT! - mov skill3d_last_result, 2 - add skill3d_hits, 2 - mov skill3d_state, 2 - mov skill3d_timer, 40 - invoke PlayCasinoSound3D, OFFSET soundSkillPerfect, 0, 1 - jmp skill_check_finish_round - -check_success_zone: - mov eax, skill3d_needle - mov edx, skill3d_zone_start - cmp eax, edx - jl skill_was_miss - add edx, skill3d_zone_width - cmp eax, edx - jg skill_was_miss - - ; NORMAL HIT! - mov skill3d_last_result, 1 - inc skill3d_hits - mov skill3d_state, 2 - mov skill3d_timer, 40 - invoke PlayCasinoSound3D, OFFSET soundSkillHit, 0, 1 - jmp skill_check_finish_round - -skill_was_miss: - ; MISS! - mov skill3d_last_result, 0 - inc skill3d_misses - mov skill3d_state, 3 - mov skill3d_timer, 45 - invoke PlayCasinoSound3D, OFFSET soundSkillMiss, 0, 1 - -skill_check_finish_round: - cmp skill3d_hits, 5 - jge skill_game_escaped - cmp skill3d_misses, 3 - jge skill_game_lost - ret - -skill_game_escaped: - mov skill3d_state, 4 - mov skill3d_timer, 0 - ; Payout: 3x total return (+$2x bet profit) - mov eax, skill3d_bet - imul eax, 3 - add bankroll, eax - mov eax, skill3d_bet - shl eax, 1 - mov skill3d_win_amount, eax - invoke NpcRecordRound3D,10,1 - call SaveProgress3D - invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 - ret - -skill_game_lost: - mov skill3d_state, 5 - mov skill3d_timer, 0 - invoke NpcRecordRound3D,10,0 - call SaveProgress3D - invoke PlayCasinoSound3D, OFFSET soundLose, 0, 1 - ret - -skill_handle_round_wait: - dec skill3d_timer - cmp skill3d_timer, 0 - jg skill_input_done - - ; Next round setup - invoke RandomRange3D, 90 - add eax, 80 - mov skill3d_zone_start, eax - - invoke RandomRange3D, 12 - add eax, skill3d_zone_start - add eax, 20 - mov skill3d_great_start, eax - - mov eax, skill3d_hits - shr eax, 1 - add eax, 4 - mov skill3d_speed, eax - mov skill3d_state, 1 - ret - -skill_handle_end_wait: - invoke Pressed3D, 20h - test eax, eax - jz skill_input_done - call InitSkillGame - ret - -skill_input_done: - ret -HandleSkillInput ENDP - -RenderSkillGame PROC uses ebx esi edi - local kx:DWORD - local tx:DWORD - - ; Industrial Steel bezel - invoke DrawBox, 0, 0, 320, 240, 00121416h - invoke DrawBoxBorder, 6, 6, 308, 228, 001A1D20h, 00FFD700h, 2 - - ; Header - invoke DrawBoxBorder, 20, 12, 280, 26, 00121418h, 00FFD700h, 2 - invoke DrawString8x8, 40, 21, OFFSET textSkillTitle, 00FFFF00h - - ; Status - invoke DrawBoxBorder, 20, 44, 110, 18, 00121418h, 002A3540h, 1 - invoke DrawString8x8, 24, 49, OFFSET textBankPrompt, 003CFF3Ch - invoke FormatNumber, bankroll, OFFSET hudNumBuffer - invoke DrawString8x8, 72, 49, OFFSET hudNumBuffer, 003CFF3Ch - - invoke DrawBoxBorder, 190, 44, 110, 18, 00121418h, 002A3540h, 1 - invoke DrawString8x8, 194, 49, OFFSET textBetPrompt, 00FFD700h - invoke FormatNumber, skill3d_bet, OFFSET hudNumBuffer - invoke DrawString8x8, 254, 49, OFFSET hudNumBuffer, 00FFD700h - - ; Survivor Progress - invoke DrawString8x8, 24, 70, OFFSET textSkillHitsHdr, 003CFF3Ch - invoke FormatNumber, skill3d_hits, OFFSET hudNumBuffer - invoke DrawString8x8, 64, 70, OFFSET hudNumBuffer, 003CFF3Ch - - invoke DrawString8x8, 180, 70, OFFSET textSkillMissHdr, 00FF6464h - invoke FormatNumber, skill3d_misses, OFFSET hudNumBuffer - invoke DrawString8x8, 240, 70, OFFSET hudNumBuffer, 00FF6464h - - ; Dial Frame (Track: X=50..270, Y=102..134) - invoke DrawBoxBorder, 50, 102, 220, 32, 000F1114h, 00404855h, 2 - - ; Calibrated ticks - mov tx, 60 -skill_ticks_loop: - cmp tx, 260 - jge skill_draw_zones - invoke DrawBox, tx, 104, 1, 6, 00303845h - invoke DrawBox, tx, 126, 1, 6, 00303845h - add tx, 12 - jmp skill_ticks_loop - -skill_draw_zones: - ; Normal Success Zone (Green) - invoke DrawBoxBorder, skill3d_zone_start, 106, skill3d_zone_width, 24, 00155020h, 003CFF3Ch, 1 - - ; Great Zone (Gold) - invoke DrawBoxBorder, skill3d_great_start, 106, skill3d_great_width, 24, 00FFD700h, 00FFFF00h, 1 - - ; Pointer / Needle at skill3d_needle - mov eax, skill3d_needle - dec eax - invoke DrawBox, eax, 98, 3, 40, 00FFFFFFh - mov eax, skill3d_needle - sub eax, 2 - invoke DrawBox, eax, 96, 5, 2, 00FF3030h - invoke DrawBox, eax, 138, 5, 2, 00FF3030h - - ; Center prompts / outcome - cmp skill3d_state, 0 - jne @F - invoke DrawString8x8, 52, 150, OFFSET textSkillReadyMsg, 00FFD700h - invoke DrawString8x8, 76, 166, OFFSET textSkillPrompt, 00D0D8E0h - jmp skill_render_keys -@@: - cmp skill3d_state, 1 - jne @F - invoke DrawString8x8, 76, 150, OFFSET textSkillPrompt, 00FFFF00h - jmp skill_render_keys -@@: - cmp skill3d_state, 2 - jne @F - cmp skill3d_last_result, 2 - jne skill_normal_hit_text - invoke DrawString8x8, 36, 150, OFFSET textSkillGreatMsg, 00FFFF00h - jmp skill_render_keys -skill_normal_hit_text: - invoke DrawString8x8, 64, 150, OFFSET textSkillHitMsg, 003CFF3Ch - jmp skill_render_keys -@@: - cmp skill3d_state, 3 - jne @F - invoke DrawString8x8, 88, 150, OFFSET textSkillMissMsg, 00FF6464h - jmp skill_render_keys -@@: - cmp skill3d_state, 4 - jne @F - invoke DrawString8x8, 48, 150, OFFSET textSkillEscape, 003CFF3Ch - invoke FormatNumber, skill3d_win_amount, OFFSET hudNumBuffer - invoke DrawString8x8, 240, 150, OFFSET hudNumBuffer, 003CFF3Ch - invoke DrawString8x8, 64, 166, OFFSET textSkullsAgain, 00FFD700h - jmp skill_render_keys -@@: - invoke DrawString8x8, 44, 150, OFFSET textSkillLost, 00FF6464h - invoke DrawString8x8, 64, 166, OFFSET textSkullsAgain, 00FFD700h - -skill_render_keys: - mov kx, 16 - invoke DrawKeycap3D, kx, 192, OFFSET textSkillKeySpace, 1 - add kx, eax - - invoke DrawKeycap3D, kx, 192, OFFSET textSkillKeyBet, 0 - add kx, eax - - invoke DrawKeycap3D, kx, 192, OFFSET textKeyEsc, 0 - ret -RenderSkillGame ENDP - -HandlePlayerInput PROC uses ebx esi edi - local speed:DWORD - local nextX:DWORD - local nextY:DWORD - mov eax, deltaTime3D - imul eax, 200 - mov speed, eax - cmp keys3D[10h], 0 - je @F - shl speed, 1 -@@: - mov eax, deltaTime3D - shr eax, 2 - inc eax - cmp keys3D[41h], 0 - jne input_turn_left - cmp keys3D[25h], 0 - je input_right -input_turn_left: - sub playerAngle, eax -input_right: - cmp keys3D[44h], 0 - jne input_turn_right - cmp keys3D[27h], 0 - je input_forward -input_turn_right: - add playerAngle, eax -input_forward: - and playerAngle, 511 - call UpdateCamera3D - xor edi, edi - cmp keys3D[57h], 0 - jne input_go_forward - cmp keys3D[26h], 0 - je input_back -input_go_forward: - inc edi -input_back: - cmp keys3D[53h], 0 - jne input_go_back - cmp keys3D[28h], 0 - je input_move -input_go_back: - dec edi -input_move: - test edi, edi - jz input_action - imul edi, speed - mov eax, playerDirX - imul edi - shrd eax, edx, 16 - add eax, playerX - mov nextX, eax - mov eax, playerDirY - imul edi - shrd eax, edx, 16 - add eax, playerY - mov nextY, eax - invoke CanWalk3D, nextX, playerY - test eax, eax - jz @F - mov eax, nextX - mov playerX, eax -@@: - invoke CanWalk3D, playerX, nextY - test eax, eax - jz input_action - mov eax, nextY - mov playerY, eax -input_action: - invoke Pressed3D, 45h - test eax, eax - jz @F - call Trigger3DInteraction -@@: - ret -HandlePlayerInput ENDP - -CheckInteractions PROC uses ebx esi edi - local nearest:DWORD - mov nearest, 262144 - mov interactTargetId, 0 - mov interactPromptPtr, 0 - xor esi, esi -interaction_scan: - cmp esi, NUM_SPRITES - jge interaction_done - imul edi, esi, SIZEOF SpriteObject - cmp [casinoSprites+edi].interactId, 0 - je interaction_next - mov eax, [casinoSprites+edi].posX - sub eax, playerX - sar eax, 8 - mov ebx, eax - imul eax, eax - mov ecx, eax - mov eax, [casinoSprites+edi].posY - sub eax, playerY - sar eax, 8 - mov edx, eax - imul eax, eax - add ecx, eax - cmp ecx, nearest - jae interaction_next - ; Only target objects in front of the camera. - mov eax, playerDirX - sar eax, 8 - imul eax, ebx - mov ebx, playerDirY - sar ebx, 8 - imul ebx, edx - add eax, ebx - cmp eax, 18000 - jl interaction_next - mov nearest, ecx - mov eax, [casinoSprites+edi].interactId - mov interactTargetId, eax - mov eax, [casinoSprites+edi].promptPtr - mov interactPromptPtr, eax -interaction_next: - inc esi - jmp interaction_scan -interaction_done: - call CheckHallInteractions3D - ret -CheckInteractions ENDP - -; --- RenderCabinetBezel: Îòðèñîâêà àðêàäíîãî áåçåëÿ òåðìèíàëà íà 3D ýêðàíå --- -RenderCabinetBezel PROC uses ebx esi edi, pTitle:DWORD - ; Çàòåìíÿåì 3D-çàë â áóôåðå êàäðà (äåëèì ÿðêîñòü ïîïîëàì) - mov ecx, SCREEN_SIZE - xor esi, esi -dim_bezel_loop: - mov eax, [screenBuffer + esi*4] - shr eax, 1 - and eax, 007F7F7Fh - mov [screenBuffer + esi*4], eax - inc esi - loop dim_bezel_loop - - ; Âíåøíÿÿ çîëîòàÿ ðàìêà òåðìèíàëà - invoke DrawBoxBorder, 10, 14, 300, 212, 000C0E14h, 00D8BC6Ah, 2 - - ; Øàïêà òåðìèíàëà ñ íàçâàíèåì èãðû - invoke DrawBox, 12, 16, 296, 16, 00221A10h - invoke DrawString8x8, 20, 20, pTitle, 00F5E2B0h - - ; Ïîäâàëüíàÿ ïëàøêà ñ ïîäñêàçêîé ïî âûõîäó - invoke DrawBox, 12, 210, 296, 14, 00141416h - invoke DrawString8x8, 20, 213, OFFSET textCabinetFooter, 00AAAAAAh - - ; Âûâîäèì êàäð áåçåëÿ â îêíî - call Present3D - ret -RenderCabinetBezel ENDP - -; --- LaunchClassicGame: Âñòðàèâàíèå èãðû â UI òåðìèíàëà êàçèíî --- -LaunchClassicGame PROC uses ebx esi edi, pGameProc:DWORD, gameId:DWORD, pTitle:DWORD - LOCAL rcClient[16]:BYTE - LOCAL ptScreen[8]:BYTE - LOCAL fontInfo[84]:BYTE - LOCAL conWnd:DWORD - LOCAL conW:DWORD, conH:DWORD, conX:DWORD, conY:DWORD - LOCAL viewW:DWORD, viewH:DWORD - LOCAL offsetX:DWORD, offsetY:DWORD - - mov eax, gameId - mov currentGameId, eax - - ; 1. Ðèñóåì çîëîòîé áåçåëü òåðìèíàëà íà 3D ýêðàíå - cmp pTitle, 0 - je @F - invoke RenderCabinetBezel, pTitle -@@: - - ; 2. Âûäåëÿåì êîíñîëü - invoke AllocConsole - test eax, eax - jz launch_ret - - invoke GetStdHandle, STD_OUTPUT_HANDLE - mov hOut, eax - invoke GetStdHandle, STD_INPUT_HANDLE - mov hIn, eax - - invoke SetConsoleCP, 1251 - invoke SetConsoleOutputCP, 1251 - - cmp pTitle, 0 - je @F - invoke SetConsoleTitleA, pTitle -@@: - call EnableAnsi - call ConfigureConsoleSize - - ; 3. Íàñòðàèâàåì øðèôò Consolas Bold 16pt - lea edi, fontInfo - xor eax, eax - mov ecx, 21 - rep stosd - mov dword ptr fontInfo[0], 84 ; cbSize - mov word ptr fontInfo[8], 0 ; dwFontSize.X - mov word ptr fontInfo[10], 16 ; dwFontSize.Y - mov dword ptr fontInfo[16], 700 ; FontWeight = FW_BOLD - mov word ptr fontInfo[20], 'C' - mov word ptr fontInfo[22], 'o' - mov word ptr fontInfo[24], 'n' - mov word ptr fontInfo[26], 's' - mov word ptr fontInfo[28], 'o' - mov word ptr fontInfo[30], 'l' - mov word ptr fontInfo[32], 'a' - mov word ptr fontInfo[34], 's' - mov word ptr fontInfo[36], 0 - lea eax, fontInfo - invoke SetCurrentConsoleFontEx, hOut, 0, eax - - ; 4. Ïîëó÷àåì äåñêðèïòîð îêíà êîíñîëè - invoke GetConsoleWindow - mov conWnd, eax - test eax, eax - jz run_game_body - - ; 5. Ñíèìàåì ñèñòåìíóþ ðàìêó Windows è çàãîëîâîê ñ êíîïêàìè çàêðûòèÿ/ñâîðà÷èâàíèÿ - invoke GetWindowLongA, conWnd, -16 ; GWL_STYLE - and eax, NOT (00C00000h or 00040000h or 00080000h or 00010000h or 00020000h) - or eax, 80000000h ; WS_POPUP - invoke SetWindowLongA, conWnd, -16, eax - - ; Ñâÿçûâàåì êàê äî÷åðíåå/ïðèíàäëåæàùåå îêíî ê îêíó èãðû - cmp h3DWnd, 0 - je show_con_fallback - invoke SetWindowLongA, conWnd, -8, h3DWnd ; GWL_HWNDPARENT - - ; 6. Âû÷èñëÿåì òî÷íûå êîîðäèíàòû äëÿ ïîñàäêè ýêðàíà âíóòðü áåçåëÿ - lea eax, rcClient - invoke GetClientRect, h3DWnd, eax - mov esi, dword ptr rcClient[8] ; øèðèíà êëèåíòñêîé îáëàñòè - mov edi, dword ptr rcClient[12] ; âûñîòà êëèåíòñêîé îáëàñòè - test esi, esi - jz show_con_fallback - test edi, edi - jz show_con_fallback - - ; Ðàñ÷åò âüþïîðòà 4:3 òî÷íî êàê â Present3D - mov viewW, esi - mov eax, esi - imul eax, 3 - shr eax, 2 - cmp eax, edi - jle calc_view_h - mov eax, edi - imul eax, 4 - xor edx, edx - mov ecx, 3 - div ecx - mov viewW, eax - mov eax, edi -calc_view_h: - mov viewH, eax - - mov ebx, esi - sub ebx, viewW - shr ebx, 1 - mov offsetX, ebx - - mov ebx, edi - sub ebx, viewH - shr ebx, 1 - mov offsetY, ebx - - ; Ýêðàííûå êîîðäèíàòû ëåâîãî âåðõíåãî óãëà êëèåíòñêîé îáëàñòè - mov dword ptr ptScreen[0], 0 - mov dword ptr ptScreen[4], 0 - lea eax, ptScreen - invoke ClientToScreen, h3DWnd, eax - - ; conW = viewW * 280 / 320 (âíóòðåííåå îêíî áåçåëÿ) - mov eax, viewW - imul eax, 280 - xor edx, edx - mov ecx, 320 - div ecx - mov conW, eax - - ; conH = viewH * 168 / 240 - mov eax, viewH - imul eax, 168 - xor edx, edx - mov ecx, 240 - div ecx - mov conH, eax - - ; conX = ptScreen.x + offsetX + (viewW * 20 / 320) - mov eax, viewW - imul eax, 20 - xor edx, edx - mov ecx, 320 - div ecx - add eax, offsetX - add eax, dword ptr ptScreen[0] - mov conX, eax - - ; conY = ptScreen.y + offsetY + (viewH * 38 / 240) - mov eax, viewH - imul eax, 38 - xor edx, edx - mov ecx, 240 - div ecx - add eax, offsetY - add eax, dword ptr ptScreen[4] - mov conY, eax - - ; Ïîçèöèîíèðóåì áåçðàìî÷íûé ýêðàí òî÷íî âíóòðü çîëîòîé ðàìêè áåçåëÿ - invoke SetWindowPos, conWnd, 0, conX, conY, conW, conH, 20h or 40h ; SWP_FRAMECHANGED | SWP_SHOWWINDOW - jmp set_con_focus - -show_con_fallback: - invoke ShowWindow, conWnd, 5 ; SW_SHOW -set_con_focus: - invoke SetForegroundWindow, conWnd - invoke SetFocus, conWnd - -run_game_body: - invoke PlayCasinoSound3D, 0, 0, 0 - call InitSounds - ; Çàïóñê îðèãèíàëüíîé èãðû! - call pGameProc - call CloseLegacySounds3D - - ; Çàêðûâàåì êîíñîëü - invoke FreeConsole - mov hOut, 0 - mov hIn, 0 - - ; Âîçâðàùàåì ôîêóñ â îêíî 3D èãðû - cmp h3DWnd, 0 - je cleanup_game_input - invoke SetForegroundWindow, h3DWnd - invoke SetFocus, h3DWnd - -cleanup_game_input: - mov ecx, 256 - xor eax, eax - lea edi, keys3D - rep stosb - mov ecx, 256 - lea edi, pressedKeys3D - rep stosb - - invoke GetTickCount - mov previousTick3D, eax - mov frameStart3D, eax - mov deltaTime3D, 0 - - call SaveProgress3D - -launch_ret: - ret -LaunchClassicGame ENDP - -Trigger3DInteraction PROC - call TriggerHallInteraction3D - test eax, eax - jnz trigger_done - mov eax, interactTargetId - test eax, eax - jz trigger_done - - cmp eax, INTERACT_DANCER - jne check_target_bj - cmp bankroll, 100 - jl dancer_no_cash - sub bankroll, 100 - inc dancerLuckBuff - invoke CopyString3D, OFFSET textTips3D, OFFSET flashMessage - mov flashTimer, 100 - invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 - ret -dancer_no_cash: - invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage - mov flashTimer, 60 - ret - -check_target_bj: - cmp eax, INTERACT_BLACKJACK - jne check_target_poker - call InitNativeBlackjack3D - mov engineMode, MODE_BLACKJACK - ret - -check_target_poker: - cmp eax, INTERACT_POKER - jne check_target_durak - call InitNativePoker3D - test eax, eax - jz target_unported - mov engineMode, MODE_POKER - ret - -check_target_durak: - cmp eax, INTERACT_DURAK - jne check_target_slots777 - call InitNativeDurak3D - mov engineMode, MODE_DURAK - ret - -check_target_slots777: - cmp eax, INTERACT_SLOTS_777 - jne check_target_slots_clover - call InitNativeSlots3D - test eax,eax - jz target_unported - mov engineMode,MODE_SLOTS - ret - -check_target_slots_clover: - cmp eax, INTERACT_SLOTS_CLOVER - jne check_target_roulette - call InitNativeClover3D - test eax,eax - jz target_unported - mov engineMode,MODE_CLOVER - ret - -check_target_roulette: - cmp eax, INTERACT_ROULETTE - jne check_target_dice - call InitNativeWheel3D - mov engineMode, MODE_ROULETTE - ret - -check_target_dice: - cmp eax, INTERACT_DICE - jne check_target_skulls - call InitDiceGame - mov engineMode, MODE_DICE - ret - -check_target_skulls: - cmp eax, INTERACT_SKULLS - jne check_target_coin - call InitSkullsGame - mov engineMode, MODE_SKULLS - ret - -check_target_coin: - cmp eax, INTERACT_COIN - jne check_target_skill - call InitCoinGame - mov engineMode, MODE_COIN - ret - -check_target_skill: - cmp eax, INTERACT_SKILL_CHECK - jne check_target_buckshot - call InitSkillGame - mov engineMode, MODE_SKILL - ret - -check_target_buckshot: - cmp eax, INTERACT_BUCKSHOT - jne check_target_rr - call InitBuckshot3D - mov engineMode, MODE_BUCKSHOT - ret - -check_target_rr: - cmp eax, INTERACT_RUSSIAN_ROULETTE - jne check_target_online_rr - call InitRussianGame3D - test eax, eax - jz @F - mov engineMode, MODE_RUSSIAN -@@: - ret - -check_target_online_rr: - cmp eax, INTERACT_ONLINE_RR - jne check_target_umamusume - call BeginUnavailable3D - ret - -check_target_umamusume: - cmp eax, INTERACT_UMAMUSUME - jne check_target_hell - call BeginUnavailable3D - ret - -check_target_hell: - cmp eax, INTERACT_HELL_TOWER - jne check_target_shop - call BeginUnavailable3D - ret - -check_target_shop: - cmp eax, INTERACT_SHOP - jne check_target_atm - call BeginMerchant3D - ret - -check_target_atm: - cmp eax, INTERACT_ATM - jne check_target_terminal - mov engineMode, MODE_ATM - ret - -check_target_terminal: - cmp eax, INTERACT_TERMINAL - jne check_target_observer - call BeginUnavailable3D - ret - -check_target_observer: - cmp eax, INTERACT_OBSERVER - jne target_unported - call BeginUnavailable3D - ret - -target_unported: - call BeginUnavailable3D -trigger_done: - ret -Trigger3DInteraction ENDP - -; --- Engine Initialization --- -Init3DEngine PROC - local screenCX:DWORD - local screenCY:DWORD - local posX:DWORD - local posY:DWORD - local bytesRead:DWORD - - push ebx - push esi - push edi - - call LoadDisplaySettings3D - call Create3DWindow - test eax, eax - jz init_failed - call LoadTextures3D - test eax, eax - jz init_failed - - call InitializeCasinoSprites3D - - ; Initialize raycasting worker thread and sync events - invoke CreateEventA, 0, 0, 0, 0 - mov hRaycastStartEvent, eax - invoke CreateEventA, 0, 0, 0, 0 - mov hRaycastDoneEvent, eax - mov bRaycastQuit, 0 - invoke CreateThread, 0, 65536, OFFSET RaycastWorkerProc, 0, 0, ADDR raycastThreadId - mov hRaycastThread, eax - - call InitHall3D - call BeginStartup3D - call RenderStartup3D - invoke ShowWindow, h3DWnd, SW_SHOW - invoke UpdateWindow, h3DWnd - invoke SetForegroundWindow, h3DWnd - mov eax, 1 - jmp init_return -init_failed: - xor eax, eax -init_return: - pop edi - pop esi - pop ebx - ret -Init3DEngine ENDP - -InitializeCasinoSprites3D PROC -init_sprites_table: - ; Sprite 0: VIP Dancer 1 (Stage Left) - mov casinoSprites[0*SIZEOF SpriteObject].posX, (13 * FP_1 + FP_HALF) - mov casinoSprites[0*SIZEOF SpriteObject].posY, (4 * FP_1) - mov casinoSprites[0*SIZEOF SpriteObject].baseTexId, 10 - mov casinoSprites[0*SIZEOF SpriteObject].frameCount, 12 - mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 5 - mov casinoSprites[0*SIZEOF SpriteObject].interactId, INTERACT_DANCER - mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer - - ; Sprite 1: VIP Dancer 2 (Center Stage Star) - mov casinoSprites[1*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) - mov casinoSprites[1*SIZEOF SpriteObject].posY, (3 * FP_1 + FP_HALF) - mov casinoSprites[1*SIZEOF SpriteObject].baseTexId, 10 - mov casinoSprites[1*SIZEOF SpriteObject].frameCount, 12 - mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2 - mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 5 - mov casinoSprites[1*SIZEOF SpriteObject].interactId, INTERACT_DANCER - mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer - - ; Sprite 2: VIP Dancer 3 (Stage Right) - mov casinoSprites[2*SIZEOF SpriteObject].posX, (19 * FP_1 + FP_HALF) - mov casinoSprites[2*SIZEOF SpriteObject].posY, (4 * FP_1) - mov casinoSprites[2*SIZEOF SpriteObject].baseTexId, 10 - mov casinoSprites[2*SIZEOF SpriteObject].frameCount, 12 - mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 1 - mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 5 - mov casinoSprites[2*SIZEOF SpriteObject].interactId, INTERACT_DANCER - mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer - - ; Sprite 3: VIP Blackjack (Front Center Left) - mov casinoSprites[3*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF) - mov casinoSprites[3*SIZEOF SpriteObject].posY, (8 * FP_1) - mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[3*SIZEOF SpriteObject].interactId, INTERACT_BLACKJACK - mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack - - ; Sprite 4: European Roulette Table (Front Center) - mov casinoSprites[4*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) - mov casinoSprites[4*SIZEOF SpriteObject].posY, (10 * FP_1) - mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 31 - mov casinoSprites[4*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[4*SIZEOF SpriteObject].interactId, INTERACT_ROULETTE - mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptCasinoRoulette - - ; Sprite 5: Texas Hold'em Poker Table (Front Center Right) - mov casinoSprites[5*SIZEOF SpriteObject].posX, (20 * FP_1 + FP_HALF) - mov casinoSprites[5*SIZEOF SpriteObject].posY, (8 * FP_1) - mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[5*SIZEOF SpriteObject].interactId, INTERACT_POKER - mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker - - ; Sprite 6: Podkidnoy Durak Card Table - mov casinoSprites[6*SIZEOF SpriteObject].posX, (24 * FP_1 + FP_HALF) - mov casinoSprites[6*SIZEOF SpriteObject].posY, (8 * FP_1) - mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[6*SIZEOF SpriteObject].interactId, INTERACT_DURAK - mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptDurak - - ; Sprite 7: Classic Slots 777 (West Arcade 1) - mov casinoSprites[7*SIZEOF SpriteObject].posX, (6 * FP_1) - mov casinoSprites[7*SIZEOF SpriteObject].posY, (8 * FP_1) - mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 24 - mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 3 - mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 8 - mov casinoSprites[7*SIZEOF SpriteObject].interactId, INTERACT_SLOTS_777 - mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptClassicSlot - - ; Sprite 8: CloverPit Slots 5x3 (West Arcade 2) - mov casinoSprites[8*SIZEOF SpriteObject].posX, (6 * FP_1) - mov casinoSprites[8*SIZEOF SpriteObject].posY, (11 * FP_1) - mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 24 - mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 3 - mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 1 - mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 8 - mov casinoSprites[8*SIZEOF SpriteObject].interactId, INTERACT_SLOTS_CLOVER - mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptCloverSlot - - ; Sprite 9: Craps & Dice Table (West Arcade 3) - mov casinoSprites[9*SIZEOF SpriteObject].posX, (6 * FP_1) - mov casinoSprites[9*SIZEOF SpriteObject].posY, (14 * FP_1) - mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[9*SIZEOF SpriteObject].interactId, INTERACT_DICE - mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptDice - - ; Sprite 10: Skulls & Cups Table - mov casinoSprites[10*SIZEOF SpriteObject].posX, (10 * FP_1) - mov casinoSprites[10*SIZEOF SpriteObject].posY, (15 * FP_1) - mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[10*SIZEOF SpriteObject].interactId, INTERACT_SKULLS - mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptSkulls - - ; Sprite 11: Coin Toss Stand - mov casinoSprites[11*SIZEOF SpriteObject].posX, (14 * FP_1) - mov casinoSprites[11*SIZEOF SpriteObject].posY, (15 * FP_1) - mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[11*SIZEOF SpriteObject].interactId, INTERACT_COIN - mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptCoin - - ; Sprite 12: Skill Check Stand - mov casinoSprites[12*SIZEOF SpriteObject].posX, (18 * FP_1) - mov casinoSprites[12*SIZEOF SpriteObject].posY, (15 * FP_1) - mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[12*SIZEOF SpriteObject].interactId, INTERACT_SKILL_CHECK - mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptSkillCheck - - ; Sprite 13: Umamusume Derby Lounge - mov casinoSprites[13*SIZEOF SpriteObject].posX, (22 * FP_1) - mov casinoSprites[13*SIZEOF SpriteObject].posY, (15 * FP_1) - mov casinoSprites[13*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[13*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[13*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[13*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[13*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[13*SIZEOF SpriteObject].interactId, INTERACT_UMAMUSUME - mov casinoSprites[13*SIZEOF SpriteObject].promptPtr, OFFSET promptUmamusume - - ; Sprite 14: Boutique & Shop (East Wing) - mov casinoSprites[14*SIZEOF SpriteObject].posX, (26 * FP_1) - mov casinoSprites[14*SIZEOF SpriteObject].posY, (12 * FP_1) - mov casinoSprites[14*SIZEOF SpriteObject].baseTexId, 32 - mov casinoSprites[14*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[14*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[14*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[14*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[14*SIZEOF SpriteObject].interactId, INTERACT_SHOP - mov casinoSprites[14*SIZEOF SpriteObject].promptPtr, OFFSET promptShop - - ; Sprite 15: Cashier & ATM (East Wing) - mov casinoSprites[15*SIZEOF SpriteObject].posX, (26 * FP_1) - mov casinoSprites[15*SIZEOF SpriteObject].posY, (16 * FP_1) - mov casinoSprites[15*SIZEOF SpriteObject].baseTexId, 33 - mov casinoSprites[15*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[15*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[15*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[15*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[15*SIZEOF SpriteObject].interactId, INTERACT_ATM - mov casinoSprites[15*SIZEOF SpriteObject].promptPtr, OFFSET promptATM - - ; Sprite 16: Player Terminal (East Wing) - mov casinoSprites[16*SIZEOF SpriteObject].posX, (26 * FP_1) - mov casinoSprites[16*SIZEOF SpriteObject].posY, (20 * FP_1) - mov casinoSprites[16*SIZEOF SpriteObject].baseTexId, 33 - mov casinoSprites[16*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[16*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[16*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[16*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[16*SIZEOF SpriteObject].interactId, INTERACT_TERMINAL - mov casinoSprites[16*SIZEOF SpriteObject].promptPtr, OFFSET promptPlayerTerminal - - ; Sprite 17: Buckshot Roulette (South-West) - mov casinoSprites[17*SIZEOF SpriteObject].posX, (12 * FP_1) - mov casinoSprites[17*SIZEOF SpriteObject].posY, (22 * FP_1) - mov casinoSprites[17*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[17*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[17*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[17*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[17*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[17*SIZEOF SpriteObject].interactId, INTERACT_BUCKSHOT - mov casinoSprites[17*SIZEOF SpriteObject].promptPtr, OFFSET promptBuckshot - - ; Sprite 18: Observer Lounge (South-East) - mov casinoSprites[18*SIZEOF SpriteObject].posX, (20 * FP_1) - mov casinoSprites[18*SIZEOF SpriteObject].posY, (22 * FP_1) - mov casinoSprites[18*SIZEOF SpriteObject].baseTexId, 30 - mov casinoSprites[18*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[18*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[18*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[18*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[18*SIZEOF SpriteObject].interactId, INTERACT_OBSERVER - mov casinoSprites[18*SIZEOF SpriteObject].promptPtr, OFFSET promptObserver - - ; Sprite 19: Russian Roulette (Backroom Entrance) - mov casinoSprites[19*SIZEOF SpriteObject].posX, (16 * FP_1) - mov casinoSprites[19*SIZEOF SpriteObject].posY, (25 * FP_1) - mov casinoSprites[19*SIZEOF SpriteObject].baseTexId, 34 - mov casinoSprites[19*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[19*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[19*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[19*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[19*SIZEOF SpriteObject].interactId, INTERACT_RUSSIAN_ROULETTE - mov casinoSprites[19*SIZEOF SpriteObject].promptPtr, OFFSET promptRussianRoulette - - ; Sprite 20: Online Russian Roulette (Backroom Secret Terminal) - mov casinoSprites[20*SIZEOF SpriteObject].posX, (18 * FP_1) - mov casinoSprites[20*SIZEOF SpriteObject].posY, (25 * FP_1) - mov casinoSprites[20*SIZEOF SpriteObject].baseTexId, 34 - mov casinoSprites[20*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[20*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[20*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[20*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[20*SIZEOF SpriteObject].interactId, INTERACT_ONLINE_RR - mov casinoSprites[20*SIZEOF SpriteObject].promptPtr, OFFSET promptOnlineRR - - ; Sprite 21: Hell Tower Portal (South Wing Deep End) - mov casinoSprites[21*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) - mov casinoSprites[21*SIZEOF SpriteObject].posY, (29 * FP_1) - mov casinoSprites[21*SIZEOF SpriteObject].baseTexId, 4 - mov casinoSprites[21*SIZEOF SpriteObject].frameCount, 1 - mov casinoSprites[21*SIZEOF SpriteObject].curFrame, 0 - mov casinoSprites[21*SIZEOF SpriteObject].animTimer, 0 - mov casinoSprites[21*SIZEOF SpriteObject].animSpeed, 1 - mov casinoSprites[21*SIZEOF SpriteObject].interactId, INTERACT_HELL_TOWER - mov casinoSprites[21*SIZEOF SpriteObject].promptPtr, OFFSET promptHellTower - ret -InitializeCasinoSprites3D ENDP - -include src_graphics\audio_code.inc -include src_graphics\dice_animation.inc -include src_graphics\russian_roulette.inc -include src_graphics\startup_code.inc -include src_graphics\card_table_assets.inc -include src_graphics\poker_evaluator.inc -include src_graphics\native_poker.inc -include src_graphics\native_blackjack.inc -include src_graphics\native_durak.inc -include src_graphics\card_tables_render.inc -include src_graphics\durak_render.inc -include src_graphics\card_table_input.inc -include src_graphics\scene_animation.inc -include src_graphics\native_slots.inc -include src_graphics\native_clover.inc -include src_graphics\native_coin.inc -include src_graphics\graphic_profiles.inc -include src_graphics\city_arrival_scene.inc -include src_graphics\arrival_scene.inc -include src_graphics\merchant_scene.inc -include src_graphics\hall_scene.inc -include src_graphics\npc_mind.inc -include src_graphics\npc_life.inc -include src_graphics\npc_contracts.inc -include src_graphics\native_wheel.inc -include src_graphics\billiards.inc -include src_graphics\buckshot.inc -include src_graphics\russian_table.inc -include src_graphics\unavailable.inc - -; --- Main Loop of the 3D Casino Engine --- -StartCasino3D PROC uses ebx esi edi - call Init3DEngine - test eax, eax - jz engine_shutdown - invoke GetTickCount - mov rngSeed3D, eax - mov previousTick3D, eax -engine_loop: - invoke PeekMessageA, OFFSET msg3D, 0, 0, 0, PM_REMOVE - test eax, eax - jz dispatch_frame - cmp msg3D.message, WM_QUIT - je engine_shutdown - invoke TranslateMessage, OFFSET msg3D - invoke DispatchMessageA, OFFSET msg3D - jmp engine_loop - -dispatch_frame: - invoke GetTickCount - mov frameStart3D, eax - sub eax, previousTick3D - cmp eax, 50 - jbe @F - mov eax, 50 -@@: - mov deltaTime3D, eax - mov eax, frameStart3D - mov previousTick3D, eax - invoke GetForegroundWindow - cmp eax, h3DWnd - jne engine_idle - invoke IsIconic, h3DWnd - test eax, eax - jnz engine_idle - invoke Pressed3D, 7Ah - test eax, eax - jz @F - call ToggleFullscreen3D -@@: - invoke Pressed3D, 1Bh - test eax, eax - jz engine_tick - cmp engineMode, MODE_INTRO - jne @F - call FinishStartup3D - jmp engine_tick -@@: - cmp engineMode, MODE_ARRIVAL - jne @F - call ArrivalEscape3D - jmp engine_tick -@@: - cmp engineMode, MODE_WALK - jne leave_table - xor paused3D, 1 - jmp engine_tick -leave_table: - call CardTableEscape3D - test eax, eax - jnz engine_tick - call TableBusy3D - test eax, eax - jz leave_idle_table - xor paused3D, 1 - call ClearKeys3D - jmp engine_tick -leave_idle_table: - mov paused3D, 0 - mov engineMode, MODE_WALK - call ClearKeys3D - invoke PlayCasinoSound3D, 0, 0, 0 -engine_tick: - cmp paused3D, 0 - jne draw_pause - mov eax, deltaTime3D - add animationClock3D, eax - cmp engineMode, MODE_INTRO - jne check_arrival_mode - call HandleStartupInput3D - cmp engineMode, MODE_INTRO - jne check_arrival_mode - call RenderStartup3D - jmp present_frame -check_arrival_mode: - cmp engineMode, MODE_ARRIVAL - jne check_walk_mode - call HandleArrival3D - cmp engineMode, MODE_WALK - je check_walk_mode - call RenderArrival3D - jmp present_frame -check_walk_mode: - cmp engineMode, MODE_WALK - jne check_slots_mode - call UpdateHall3D - call UpdateCamera3D - call CheckInteractions - call HandlePlayerInput - call UpdateCamera3D - call RenderCeilingAndFloor - call RenderWalls - call PrepareCityDepth3D - call RenderSprites - call RenderHall3D - call RenderHUD - call RenderMinimap - jmp present_frame -check_slots_mode: - cmp engineMode,MODE_CLOVER - jne @F - call HandleNativeClover3D - call RenderNativeClover3D - jmp present_frame -@@: - cmp engineMode,MODE_NPC_DIALOG - jne @F - call HandleNpcDialog3D - call RenderNpcDialog3D - jmp present_frame -@@: - cmp engineMode, MODE_UNAVAILABLE - jne @F - call HandleUnavailable3D - call RenderUnavailable3D - jmp present_frame -@@: - cmp engineMode, MODE_POOL - jne @F - call HandlePool3D - call RenderPool3D - jmp present_frame -@@: - cmp engineMode, MODE_BAR - jne @F - call HandleBar3D - call RenderBar3D - jmp present_frame -@@: - cmp engineMode, MODE_STAIRS - jne @F - call HandleStairs3D - call RenderStairs3D - jmp present_frame -@@: - cmp engineMode, MODE_SLOTS - jne check_bj_mode - call HandleNativeSlots3D - cmp engineMode,MODE_WALK - je check_walk_mode - call RenderNativeSlots3D - jmp present_frame -check_bj_mode: - cmp engineMode, MODE_BLACKJACK - jne check_poker_mode - call HandleNativeBlackjack3D - cmp engineMode, MODE_WALK - je check_walk_mode - call RenderNativeBlackjack3D - jmp present_frame -check_poker_mode: - cmp engineMode, MODE_POKER - jne check_durak_mode - call HandleNativePoker3D - cmp engineMode, MODE_WALK - je check_walk_mode - call RenderNativePoker3D - jmp present_frame -check_durak_mode: - cmp engineMode, MODE_DURAK - jne check_roul_mode - call HandleNativeDurak3D - cmp engineMode, MODE_WALK - je check_walk_mode - call RenderNativeDurak3D - jmp present_frame -check_roul_mode: - cmp engineMode, MODE_ROULETTE - jne check_shop_mode - call HandleNativeWheel3D - call RenderNativeWheel3D - jmp present_frame -check_shop_mode: - cmp engineMode, MODE_SHOP - jne check_atm_mode - call HandleMerchant3D - call RenderMerchant3D - jmp present_frame -check_atm_mode: - cmp engineMode, MODE_ATM - jne check_coin_mode - call HandleATMInput - call RenderATMGame - jmp present_frame -check_coin_mode: - cmp engineMode, MODE_COIN - jne check_dice_mode - call HandleCoinInput - call RenderCoinGame - jmp present_frame -check_dice_mode: - cmp engineMode, MODE_DICE - jne check_skulls_mode - call HandleDiceInput - call RenderDiceGame - jmp present_frame -check_skulls_mode: - cmp engineMode, MODE_SKULLS - jne check_skill_mode - call HandleSkullsInput - call RenderSkullsGame - jmp present_frame -check_skill_mode: - cmp engineMode, MODE_SKILL - jne check_buckshot_mode - call HandleSkillInput - call RenderSkillGame - jmp present_frame -check_buckshot_mode: - cmp engineMode, MODE_BUCKSHOT - jne check_russian_mode - call HandleBuckshot3D - call RenderBuckshot3D - jmp present_frame -check_russian_mode: - cmp engineMode, MODE_RUSSIAN - jne present_frame - call HandleRussianInput3D - call RenderRussianGame3D - jmp present_frame -draw_pause: - invoke DrawBoxBorder, 28, 36, 264, 168, 00151C21h, 00D8BC6Ah, 2 - invoke DrawString8x8, 44, 48, OFFSET textPause3D, 00FFFFFFh - cmp displayFill3D, 0 - je @F - invoke DrawString8x8, 44, 72, OFFSET textDisplayFill3D, 00D8BC6Ah - jmp pause_draw_quality -@@: - invoke DrawString8x8, 44, 72, OFFSET textDisplayFit3D, 00D8BC6Ah -pause_draw_quality: - invoke DrawString8x8, 44, 92, OFFSET textLowSpec3D, 00D8BC6Ah - mov eax, settingsLowSpec - cmp eax, 0 - jne @F - mov edx, OFFSET textLowSpecOff3D - jmp pause_draw_quality_value -@@: - cmp eax, 1 - jne @F - mov edx, OFFSET textLowSpecEco3D - jmp pause_draw_quality_value -@@: - mov edx, OFFSET textLowSpecQuiet3D -pause_draw_quality_value: - invoke DrawString8x8, 208, 92, edx, 00FFFFFFh - invoke DrawString8x8, 44, 112, OFFSET textVolumeKeys3D, 00D8BC6Ah - invoke DrawString8x8, 44, 130, OFFSET textSoundLevel3D, 00BBBBBBh - invoke FormatNumber, settingsVolume, OFFSET hudNumBuffer - invoke DrawString8x8, 124, 130, OFFSET hudNumBuffer, 00FFFFFFh - invoke DrawString8x8, 44, 150, OFFSET textFullscreenKey3D, 00A0A0A0h - invoke DrawString8x8, 44, 170, OFFSET textResume3D, 00D8BC6Ah - invoke DrawString8x8, 44, 188, OFFSET textQuit3D, 00BBBBBBh - invoke Pressed3D, 31h - test eax, eax - jz @F - xor displayFill3D, 1 - call SaveDisplaySettings3D -@@: - invoke Pressed3D, 32h - test eax, eax - jz @F - inc settingsLowSpec - cmp settingsLowSpec, 3 - jb pause_low_spec_saved - mov settingsLowSpec, 0 -pause_low_spec_saved: - call SaveProgress3D -@@: - invoke Pressed3D, 0BBh - test eax, eax - jz @F - cmp settingsVolume, 10 - jae @F - inc settingsVolume - call ApplySoundVolume - call SaveProgress3D -@@: - invoke Pressed3D, 0BDh - test eax, eax - jz @F - mov eax, settingsVolume - test eax, eax - jz @F - dec settingsVolume - call ApplySoundVolume - call SaveProgress3D -@@: - invoke Pressed3D, 51h - test eax, eax - jz @F - call SaveProgress3D - jmp engine_shutdown -present_frame: - mov eax, engineMode - cmp eax, lastPersistMode3D - je @F - cmp eax, MODE_WALK - jne @F - call SaveProgress3D -@@: - mov eax, engineMode - mov lastPersistMode3D, eax - call Present3D - mov mouseClick3D, 0 - lea edi, pressedKeys3D - xor eax, eax - mov ecx, 64 - rep stosd - invoke GetTickCount - sub eax, frameStart3D - mov ecx, 16 - cmp settingsLowSpec, 1 - jne @F - mov ecx, 24 -@@: - cmp settingsLowSpec, 2 - jne @F - mov ecx, 33 -@@: - cmp eax, ecx - jae engine_loop - sub ecx, eax - invoke Sleep, ecx - jmp engine_loop -engine_idle: - invoke Sleep, 50 - jmp engine_loop -engine_shutdown: - cmp hRaycastThread, 0 - je @F - mov bRaycastQuit, 1 - invoke SetEvent, hRaycastStartEvent - invoke WaitForSingleObject, hRaycastThread, 1000 - invoke CloseHandle, hRaycastThread - invoke CloseHandle, hRaycastStartEvent - invoke CloseHandle, hRaycastDoneEvent - mov hRaycastThread, 0 - mov hRaycastStartEvent, 0 - mov hRaycastDoneEvent, 0 -@@: - call SaveProgress3D - invoke PlayCasinoSound3D, 0, 0, 0 - call FreeRussianAssets3D - call FreeStartupAssets3D - call FreeCardTableAssets3D - call FreeBuckshotAssets3D - call FreeNativeSlots3D - call FreeNativeClover3D - call FreePyramidAssets3D - call FreeArrivalAssets3D - cmp h3DDC, 0 - je @F - invoke ReleaseDC, h3DWnd, h3DDC - mov h3DDC, 0 -@@: - cmp h3DWnd, 0 - je @F - invoke DestroyWindow, h3DWnd - mov h3DWnd, 0 -@@: - ret -StartCasino3D ENDP - -include src_graphics\platform_code.inc - -IFDEF CASINO_ACTION_TEST -include tools\tests\casino_actions_test.inc -ENDIF + +; ============================================================================== +; CASINO 2.5D - MASM32 SOFTWARE RAYCASTER (CP1251) +; Graphical migration; this is not id Software's Doom engine. +; ============================================================================== + +includelib gdi32.lib +includelib winmm.lib + +CreateWindowExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +RegisterClassExA PROTO :DWORD +DefWindowProcA PROTO :DWORD,:DWORD,:DWORD,:DWORD +ShowWindow PROTO :DWORD,:DWORD +UpdateWindow PROTO :DWORD +GetDC PROTO :DWORD +ReleaseDC PROTO :DWORD,:DWORD +StretchDIBits PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +PeekMessageA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +TranslateMessage PROTO :DWORD +DispatchMessageA PROTO :DWORD +PostQuitMessage PROTO :DWORD +DestroyWindow PROTO :DWORD +SetWindowTextA PROTO :DWORD,:DWORD +SetForegroundWindow PROTO :DWORD +GetConsoleWindow PROTO +GetSystemMetrics PROTO :DWORD +CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +ReadFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +CloseHandle PROTO :DWORD +GetAsyncKeyState PROTO :DWORD +PlaySoundA PROTO :DWORD,:DWORD,:DWORD +GetModuleFileNameA PROTO :DWORD,:DWORD,:DWORD +CopyFileA PROTO :DWORD,:DWORD,:DWORD +lstrcmpiA PROTO :DWORD,:DWORD +GetFileSize PROTO :DWORD,:DWORD +Sleep PROTO :DWORD +CreateThread PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +CreateEventA PROTO :DWORD,:DWORD,:DWORD,:DWORD +SetEvent PROTO :DWORD +WaitForSingleObject PROTO :DWORD,:DWORD + +C3D_POINT STRUCT + x dd ? + y dd ? +C3D_POINT ENDS + +C3D_MSG STRUCT + hwnd dd ? + message dd ? + wParam dd ? + lParam dd ? + time dd ? + pt C3D_POINT <> +C3D_MSG ENDS + +C3D_WNDCLASSEX STRUCT + cbSize dd ? + style dd ? + lpfnWndProc dd ? + cbClsExtra dd ? + cbWndExtra dd ? + hInstance dd ? + hIcon dd ? + hCursor dd ? + hbrBackground dd ? + lpszMenuName dd ? + lpszClassName dd ? + hIconSm dd ? +C3D_WNDCLASSEX ENDS + +C3D_BITMAPINFOHEADER STRUCT + biSize dd ? + biWidth dd ? + biHeight dd ? + biPlanes dw ? + biBitCount dw ? + biCompression dd ? + biSizeImage dd ? + biXPelsPerMeter dd ? + biYPelsPerMeter dd ? + biClrUsed dd ? + biClrImportant dd ? +C3D_BITMAPINFOHEADER ENDS + +C3D_BITMAPINFO STRUCT + bmiHeader C3D_BITMAPINFOHEADER <> + bmiColors dd ? +C3D_BITMAPINFO ENDS + +SpriteObject STRUCT + posX dd ? + posY dd ? + baseTexId dd ? + frameCount dd ? + curFrame dd ? + animTimer dd ? + animSpeed dd ? + interactId dd ? + promptPtr dd ? + distSq dd ? +SpriteObject ENDS + +SCREEN_W equ 640 +SCREEN_H equ 480 +HALF_W equ 320 +HALF_H equ 240 +SCREEN_SIZE equ (SCREEN_W * SCREEN_H) +WIN_SCALE equ 1 +WINDOW_W equ (SCREEN_W * WIN_SCALE) +WINDOW_H equ (SCREEN_H * WIN_SCALE) + +FP_1 equ 65536 +FP_HALF equ 32768 +CHROMA_KEY equ 00FF00FFh + +MODE_WALK equ 0 +MODE_SLOTS equ 1 +MODE_BLACKJACK equ 2 +MODE_ROULETTE equ 3 +MODE_SHOP equ 4 +MODE_ATM equ 5 +MODE_COIN equ 6 +MODE_DICE equ 7 +MODE_SKULLS equ 8 +MODE_SKILL equ 9 + +WS_OVERLAPPEDWINDOW equ 00CF0000h +SW_SHOW equ 5 +SW_HIDE equ 0 +PM_REMOVE equ 1 +WM_DESTROY equ 0002h +WM_CLOSE equ 0010h +WM_QUIT equ 0012h +CS_HREDRAW equ 2 +CS_VREDRAW equ 1 +DIB_RGB_COLORS equ 0 +SRCCOPY equ 00CC0020h +INVALID_FILE_HANDLE equ -1 + +include casino3d_data.inc +include font8x8.inc +include src_graphics\platform_data.inc +include src_graphics\casino_actions_data.inc +include src_graphics\audio_data.inc +include src_graphics\startup_data.inc +include src_graphics\card_tables_data.inc +include src_graphics\native_durak_data.inc +include src_graphics\scene_animation_data.inc +include src_graphics\arrival_data.inc +include src_graphics\city_arrival_data.inc +include src_graphics\merchant_data.inc +include src_graphics\hall_data.inc +include src_graphics\npc_mind_data.inc +include src_graphics\npc_life_data.inc +include src_graphics\native_wheel_data.inc +include src_graphics\billiards_data.inc +include src_graphics\buckshot_data.inc +include src_graphics\russian_view_data.inc +include src_graphics\unavailable_data.inc +include src_graphics\native_slots_data.inc +include src_graphics\native_clover_data.inc +include src_graphics\native_coin_data.inc + +.data +ALIGN 4 +h3DInst dd 0 +h3DWnd dd 0 +h3DDC dd 0 +hCasinoConsole dd 0 + +ALIGN 4 +hRaycastThread dd 0 +hRaycastStartEvent dd 0 +hRaycastDoneEvent dd 0 +bRaycastQuit dd 0 +raycastThreadId dd 0 + +bmi3D C3D_BITMAPINFO <> +msg3D C3D_MSG <> +wc3D C3D_WNDCLASSEX <> + +sz3DClassName db "Casino3DRetroClass",0 +sz3DWindowTitle db 192,241,241,229,236,225,235,229,240,32,202,224,231,232,237,238,32,45,32,50,46,53,68,0 +szTexturesRelPath db "assets\textures\casino3d-hd.bin",0 +szTexturesFullPath db 260 dup(0) + + +playerX dd (16 * FP_1 + FP_HALF) +playerY dd (16 * FP_1 + FP_HALF) +playerAngle dd 384 +playerDirX dd 0 +playerDirY dd -FP_1 +playerPlaneX dd (FP_1 * 66 / 100) +playerPlaneY dd 0 + +engineMode dd 0 +interactTargetId dd 0 +interactPromptPtr dd 0 +dancerLuckBuff dd 0 +flashTimer dd 0 +flashMessage db 128 dup(0) + +promptDancer db "[E] ÊÀÁÀÐÅ - ×ÀÅÂÛÅ $100",0 +promptBlackjack db "[E] ÁËÝÊÄÆÅÊ (21)",0 +promptPoker db 91,69,93,32,207,206,202,197,208,32,40,210,197,213,192,209,209,202,200,201,32,213,206,203,196,197,204,41,0 +promptDurak db "[E] ÊÀÐÒÛ: ÏÎÄÊÈÄÍÎÉ ÄÓÐÀÊ",0 +promptCasinoRoulette db "[E] ÅÂÐÎÏÅÉÑÊÀß ÐÓËÅÒÊÀ",0 +promptClassicSlot db "[E] ÊËÀÑÑÈ×ÅÑÊÈÅ ÑËÎÒÛ 777",0 +promptCloverSlot db "[E] ÑËÎÒÛ CLOVERPIT (5x3)",0 +promptDice db 91,69,93,32,200,195,208,192,32,194,32,202,206,209,210,200,0 +promptSkulls db "[E] ÍÀϨÐÑÒÊÈ (×ÅÐÅÏÀ)",0 +promptCoin db "[E] ÌÎÍÅÒÊÀ (ÎШË/ÐÅØÊÀ)",0 +promptSkillCheck db "[E] ÒÐÅÍÈÐÎÂÊÀ ÐÅÀÊÖÈÈ",0 +promptBuckshot db 91,69,93,32,193,192,202,216,206,210,32,208,211,203,197,210,202,192,0 +promptRussianRoulette db "[E] ÐÓÑÑÊÀß ÐÓËÅÒÊÀ (VIP)",0 +promptOnlineRR db "[E] ÑÅÒÅÂÀß ÐÓËÅÒÊÀ (NET)",0 +promptUmamusume db "[E] ÑÊÀ×ÊÈ ÓÌÀÌÓÑÓÌÝ",0 +promptHellTower db "[E] ÁÀØÍß ÀÄÀ (10 ÝÒÀÆÅÉ)",0 +promptShop db "[E] ÁÓÒÈÊ È ÒÀËÈÑÌÀÍÛ",0 +promptATM db "[E] ÁÀÍÊÎÌÀÒ È ÁÀËÀÍÑ",0 +promptPlayerTerminal db "[E] ÒÅÐÌÈÍÀË: ÑÒÀÒÛ È À×ÈÂÊÈ",0 +promptObserver db "[E] ÐÅÆÈÌ ÍÀÁËÞÄÀÒÅËß (ÈÈ)",0 + +szTitleBlackjack db 202,192,199,200,202,32,51,68,32,45,32,193,203,221,202,196,198,197,202,32,40,50,49,41,0 +szTitlePoker db 202,192,199,200,202,32,51,68,32,45,32,207,206,202,197,208,32,40,210,197,213,192,209,209,202,200,201,32,213,206,203,196 + db 197,204,41,0 +szTitleDurak db 202,192,199,200,202,32,51,68,32,45,32,207,197,208,197,194,206,196,205,206,201,32,196,211,208,192,202,0 +szTitleCasinoRoulette db 202,192,199,200,202,32,51,68,32,45,32,197,194,208,206,207,197,201,209,202,192,223,32,208,211,203,197,210,202,192,0 +szTitleClassicSlot db 202,192,199,200,202,32,51,68,32,45,32,192,194,210,206,204,192,210,32,55,55,55,0 +szTitleCloverSlot db 202,192,199,200,202,32,51,68,32,45,32,202,203,197,194,197,208,205,192,223,32,223,204,192,32,40,53,120,51,41,0 +szTitleDice db 202,192,199,200,202,32,51,68,32,45,32,200,195,208,192,32,194,32,202,206,209,210,200,0 +szTitleSkulls db 202,192,199,200,202,32,51,68,32,45,32,205,192,207,168,208,209,210,202,200,0 +szTitleCoin db 202,192,199,200,202,32,51,68,32,45,32,204,206,205,197,210,202,192,32,40,206,208,168,203,47,208,197,216,202,192,41,0 +szTitleSkillCheck db 202,192,199,200,202,32,51,68,32,45,32,207,208,206,194,197,208,202,192,32,205,192,194,219,202,192,0 +szTitleBuckshot db 202,192,199,200,202,32,51,68,32,45,32,193,192,202,216,206,210,32,208,211,203,197,210,202,192,0 +szTitleRussianRoulette db 202,192,199,200,202,32,51,68,32,45,32,208,211,209,209,202,192,223,32,208,211,203,197,210,202,192,0 +szTitleOnlineRR db 202,192,199,200,202,32,51,68,32,45,32,209,197,210,197,194,192,223,32,208,211,209,209,202,192,223,32,208,211,203,197,210 + db 202,192,0 +szTitleUmamusume db 202,192,199,200,202,32,51,68,32,45,32,195,206,205,202,200,32,211,204,192,204,211,209,211,204,197,0 +szTitleHellTower db 202,192,199,200,202,32,51,68,32,45,32,192,196,209,202,192,223,32,193,192,216,205,223,0 +szTitleShop db 202,192,199,200,202,32,51,68,32,45,32,202,192,208,210,219,32,200,32,210,192,203,200,209,204,192,205,219,0 +szTitleATM db 202,192,199,200,202,32,51,68,32,45,32,193,192,205,202,206,204,192,210,0 +szTitleTerminal db 202,192,199,200,202,32,51,68,32,45,32,203,206,202,192,203,220,205,219,197,32,207,208,206,212,200,203,200,0 +szTitleObserver db 202,192,199,200,202,32,51,68,32,45,32,205,192,193,203,222,196,192,210,197,203,220,32,40,200,200,41,0 +textCabinetFooter db "[ ÂÛÕÎÄ: ÂÂÅÄÈÒÅ 0 / ÂÛÁÅÐÈÒÅ 'N' ÄËß ÂÎÇÂÐÀÒÀ  ÇÀË ]",0 + +msgDancerTipped db "Âû áðîñèëè $100 òàíöîâùèöå! ÓÄÀ×À ÀÊÒÈÂÈÐÎÂÀÍÀ!",0 +msgNeedMoney db "Íåäîñòàòî÷íî äåíåã â êîøåëüêå!",0 +statusHUDFormat db "ÁÀÍÊÐÎËË: $",0 +targetHUDFormat db " ÖÅËÜ: $",0 +luckHUDFormat db " ÓÄÀ×À: +",0 +controlsHUD db "WASD/Ñòðåëêè: Õîäüáà | E: Äåéñòâèå | ESC: Ìåíþ",0 + +NUM_SPRITES equ 22 + +INTERACT_NONE equ 0 +INTERACT_BLACKJACK equ 1 +INTERACT_POKER equ 2 +INTERACT_SLOTS_777 equ 3 +INTERACT_ROULETTE equ 4 +INTERACT_SKULLS equ 5 +INTERACT_SHOP equ 6 +INTERACT_ATM equ 7 +INTERACT_DANCER equ 8 +INTERACT_HELL_TOWER equ 9 +INTERACT_DURAK equ 10 +INTERACT_BUCKSHOT equ 11 +INTERACT_COIN equ 12 +INTERACT_DICE equ 13 +INTERACT_SLOTS_CLOVER equ 14 +INTERACT_UMAMUSUME equ 15 +INTERACT_OBSERVER equ 16 +INTERACT_TERMINAL equ 17 +INTERACT_ONLINE_RR equ 18 +INTERACT_RUSSIAN_ROULETTE equ 19 +INTERACT_SKILL_CHECK equ 20 +ALIGN 4 +casinoSprites SpriteObject NUM_SPRITES dup(<>) +sortedSprites dd NUM_SPRITES dup(0) + +rowDistTable dd 120 dup(0) +rngSeed3D dd 12345678h + +slotBet dd 50 +slotReel1 dd 0 +slotReel2 dd 1 +slotReel3 dd 2 +slotSpinState dd 0 +slotSpinTimer dd 0 +slotWinAmount dd 0 +slotWinMsg db 64 dup(0) + +bjState dd 0 +bjBet dd 100 +bjPlayerCards dd 10 dup(0) +bjPlayerCardCount dd 0 +bjPlayerScore dd 0 +bjDealerCards dd 10 dup(0) +bjDealerCardCount dd 0 +bjDealerScore dd 0 +bjDealerHideHole dd 1 +bjOutcomeMsg db 64 dup(0) + +roulState dd 0 +roulBetType dd 1 +roulBetAmount dd 100 +roulWheelAngle dd 0 +roulBallAngle dd 0 +roulSpinTimer dd 0 +roulWinningNum dd 0 +roulPayout dd 0 +roulOutcomeMsg db 64 dup(0) + +coinRxAnimTable db 26, 22, 16, 6, 16, 22, 26, 22, 16, 6 + +; --- Native 2.5D Coin Flip --- +coin3d_bet dd 50 +coin3d_choice dd 1 ; 1 = Îð¸ë, 2 = Ðåøêà +coin3d_state dd 0 ; 0 = Idle, 1 = Flipping, 2 = Result +coin3d_timer dd 0 +coin3d_result dd 1 ; 1 = Îð¸ë, 2 = Ðåøêà +coin3d_streak dd 0 +coin3d_win dd 0 + +textCoinTitle db "* * * Ç Î Ë Î Ò À ß Ì Î Í Å Ò À * * *",0 +textCoinHeads db "ÎШË",0 +textCoinTails db "ÐÅØÊÀ",0 +textCoinSide1 db "[1] ÎШË",0 +textCoinSide2 db "[2] ÐÅØÊÀ",0 +textCoinFlipping db "ÌÎÍÅÒÀ  ÏÎ˨ÒÅ...",0 +textCoinWin db "ÏÎÁÅÄÀ: +$",0 +textCoinLose db "ÍÅ ÓÃÀÄÀËÈ!",0 +textCoinStreakFmt db "ÑÅÐÈß ÏÎÁÅÄ: x",0 +textCoinSelected db "ÂÛÁÐÀÍÎ",0 +textCoinKey1 db "[1] ÎШË",0 +textCoinKey2 db "[2] ÐÅØÊÀ",0 +textCoinKeySpace db "[SPACE]",0 + +; --- Native 2.5D Dice Game --- +dice3d_bet dd 50 +dice3d_choice dd 1 ; 1 = ׸ò, 2 = Íå÷åò +dice3d_state dd 0 ; 0 = Idle, 1 = Rolling, 2 = Result +dice3d_timer dd 0 +dice3d_val1 dd 4 +dice3d_val2 dd 6 +dice3d_sum dd 10 +dice3d_win dd 0 + +textDiceTitle db 200,195,208,192,32,194,32,202,206,209,210,200,0 +textDiceEven db "[1] רÒ",0 +textDiceOdd db "[2] ÍÅ×ÅÒ",0 +textDiceEvenNums db "2 4 6 ...",0 +textDiceOddNums db "3 5 7 ...",0 +textDiceSumHdr db "ÑÓÌÌÀ: ",0 +textDicePlus db " + ",0 +textDiceEqual db " = ",0 +textDiceEvenResult db " (רÒ)",0 +textDiceOddResult db " (ÍÅ×ÅÒ)",0 +textDiceRolling db "ÊÎÑÒÈ ËÅÒßÒ ÏÎ ÑÓÊÍÓ...",0 +textDiceWin db "ÂÛÈÃÐÛØ: +$",0 +textDiceWinMult db "! (x2)",0 +textDiceLose db "ÏÐÎÈÃÐÛØ!",0 +textDiceKey1 db "[1] רÒ",0 +textDiceKey2 db "[2] ÍÅ×ÅÒ",0 +textDiceKeySpace db "[SPACE]",0 + +; --- Native 2.5D Skulls Game --- +skulls3d_bet dd 50 +skulls3d_state dd 0 ; 0 = Idle, 1 = Show ball, 2 = Shuffle, 3 = Pick, 4 = Reveal +skulls3d_timer dd 0 +skulls3d_ballPos dd 1 ; 0, 1, 2 +skulls3d_choice dd 1 ; 0, 1, 2 +skulls3d_win dd 0 +skulls3d_swapPair0 dd 0 +skulls3d_swapPair1 dd 1 +skulls3d_swapPair2 dd 2 +skulls3d_cup0 dd 0 +skulls3d_cup1 dd 1 +skulls3d_cup2 dd 2 + +textSkullsTitle db "* * * Í À Ï ¨ Ð Ñ Ò Ê È * * *",0 +textSkullsPhase0 db "ÄÅËÀÉ ÑÒÀÂÊÓ È ÆÌÈ [ÏÐÎÁÅË]",0 +textSkullsPhase1 db "ÑÌÎÒÐÈ, ÃÄÅ ÇÎËÎÒÎÉ ØÀÐ...",0 +textSkullsPhase2 db "ÊÐÓ×Ó, ÂÅÐ×Ó, ÇÀÏÓÒÀÒÜ ÕÎ×Ó...",0 +textSkullsPhase3 db "ÃÄÅ ØÀÐ? ÂÛÁÈÐÀÉ: [1], [2] ÈËÈ [3]!",0 +textSkullsWin db "ÂÛÈÃÐÛØ: +$",0 +textSkullsWinMult db "! (x3) ÂÛ ÓÃÀÄÀËÈ!",0 +textSkullsLose db "ÌÈÌÎ! ØÀÐ ÁÛË Â ÄÐÓÃÎÌ ÌÅÑÒÅ!",0 +textSkullsAgain db "[ÏÐÎÁÅË] - ÑÛÃÐÀÒÜ ÅÙ¨ ÐÀÇ",0 +textSkullsKey1 db "[1]",0 +textSkullsKey2 db "[2]",0 +textSkullsKey3 db "[3]",0 +textSkullsKeySpace db "[SPACE] ÑÒÀÐÒ",0 + +; --- Native 2.5D Skill Check (Dead by Daylight Survivor Check) --- +skill3d_bet dd 50 +skill3d_state dd 0 ; 0=Ready, 1=Active, 2=Hit Result, 3=Miss Result, 4=Escaped, 5=Defeated +skill3d_timer dd 0 +skill3d_needle dd 55 ; Needle X (52..268) +skill3d_speed dd 4 +skill3d_dir dd 1 ; 1=Right, -1=Left +skill3d_zone_start dd 140 +skill3d_zone_width dd 48 +skill3d_great_start dd 176 +skill3d_great_width dd 12 +skill3d_hits dd 0 +skill3d_misses dd 0 +skill3d_last_result dd 0 +skill3d_win_amount dd 0 + +textSkillTitle db 61,61,61,32,207,208,206,194,197,208,202,192,32,205,192,194,219,202,192,32,61,61,61,0 +textSkillHitsHdr db "ÕÈÒ: ",0 +textSkillMissHdr db "ÏÐÎÌÀÕ: ",0 +textSkillReadyMsg db "ÍÀÆÌÈÒÅ [ÏÐÎÁÅË] ÄËß ÑÒÀÐÒÀ",0 +textSkillPrompt db "ÍÀÆÌÈÒÅ [ÏÐÎÁÅË]  ÇÎÍÅ!",0 +textSkillHitMsg db "ÕÈÒ! ÒÎ×ÍÎÅ ÏÎÏÀÄÀÍÈÅ!",0 +textSkillGreatMsg db 206,210,203,200,215,205,206,33,32,43,193,206,205,211,209,33,0 +textSkillMissMsg db "ÏÐÎÌÀÕ! ÒÐÅÂÎÃÀ!",0 +textSkillEscape db "ÏÎÁÅà ÓÑÏÅØÅÍ! ÂÛÈÃÐÛØ: +$",0 +textSkillLost db "ÂÛ ÏÎÉÌÀÍÛ! ÏÐÎÈÃÐÛØ ÑÒÀÂÊÈ!",0 +textSkillKeySpace db "[SPACE] ÐÅÀÊÖÈß",0 +textSkillKeyBet db "[ÂÂÅÐÕ/ÂÍÈÇ]",0 + +; --- Shared UI Strings --- +textKeyEsc db "[ESC]",0 +textBankPrompt db "ÁÀÍÊ: $",0 +textBetPrompt db "ÑÒÀÂÊÀ: $",0 +textBetHint db " [W/S]",0 + +shopMsg db 128 dup(0) +atmMsg db 128 dup(0) + +strWin db "ÏÎÁÅÄÀ! +$",0 +strLose db "ÏÐÎÈÃÐÛØ",0 +strJackpot db "ÄÆÅÊÏÎÒ! +$",0 +strPush db 205,200,215,220,223,0 +strDealerBust db "ÄÈËÅÐ ÏÅÐÅÁÐÀË! ÏÎÁÅÄÀ! +$",0 +strPlayerBust db "ÏÅÐÅÁÎÐ (>21)! ÏÐÎÈÃÐÛØ",0 + +sym7 db " 777 ",0 +symBar db " BAR ",0 +symBell db 32,199,194,206,205,0 +symCherry db 194,200,216,205,223,0 +symClover db 202,203,197,194,197,208,0 +symGem db 192,203,204,192,199,0 +symCrown db 202,206,208,206,205,192,0 + +cardRankStr db "A ",0,"2 ",0,"3 ",0,"4 ",0,"5 ",0,"6 ",0,"7 ",0,"8 ",0,"9 ",0,"10",0,"J ",0,"Q ",0,"K ",0 + +.data? +ALIGN 4 +screenBuffer dd SCREEN_SIZE dup(?) +ALIGN 4 +zBuffer dd SCREEN_W dup(?) +ALIGN 4 +texturesBuffer dd (104 * 128 * 128) dup(?) + +hudNumBuffer db 32 dup(?) + +.code + +; --- 3D Window Procedure --- +Casino3DWndProc PROC hwnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD + invoke WindowEvents3D, hwnd, uMsg, wParam, lParam + ret +Casino3DWndProc ENDP + +; --- Random Generator --- +RandomRange3D PROC maxVal:DWORD + mov eax, rngSeed3D + imul eax, 1103515245 + add eax, 12345 + mov rngSeed3D, eax + shr eax, 16 + and eax, 7FFFh + xor edx, edx + div maxVal + mov eax, edx + ret +RandomRange3D ENDP + +; --- Copy String --- +CopyString3D PROC src:DWORD, dst:DWORD + push esi + push edi + mov esi, src + mov edi, dst +@@: + mov al, [esi] + mov [edi], al + test al, al + jz @F + inc esi + inc edi + jmp @B +@@: + pop edi + pop esi + ret +CopyString3D ENDP + +; --- Format Number to Decimal String --- +FormatNumber PROC num:DWORD, buf:DWORD + push ebx + push esi + push edi + mov eax, num + mov edi, buf + test eax, eax + jns fn_pos + mov BYTE PTR [edi], '-' + inc edi + neg eax +fn_pos: + mov ebx, 10 + push 0 +fn_div: + xor edx, edx + div ebx + add dl, '0' + push edx + test eax, eax + jnz fn_div +fn_pop: + pop eax + test al, al + jz fn_done + mov [edi], al + inc edi + jmp fn_pop +fn_done: + mov BYTE PTR [edi], 0 + pop edi + pop esi + pop ebx + ret +FormatNumber ENDP + +; --- Fast 2D Drawing Primitives --- +DrawBox PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD + +DrawPixel PROC x:DWORD, y:DWORD, color:DWORD + invoke DrawBox, x, y, 1, 1, color + ret +DrawPixel ENDP + +DrawBox PROC x:DWORD, y:DWORD, w:DWORD, h:DWORD, color:DWORD + shl x, 1 + shl y, 1 + shl w, 1 + shl h, 1 + push ebx + push esi + push edi + mov edi, y +box_row_loop: + mov eax, y + add eax, h + cmp edi, eax + jge box_done + cmp edi, 0 + jl next_box_row + cmp edi, SCREEN_H + jge box_done + + mov esi, x +box_col_loop: + mov eax, x + add eax, w + cmp esi, eax + jge next_box_row + cmp esi, 0 + jl next_box_col + cmp esi, SCREEN_W + jge next_box_row + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, esi + mov edx, color + mov [screenBuffer + ecx*4], edx + +next_box_col: + inc esi + jmp box_col_loop + +next_box_row: + inc edi + jmp box_row_loop + +box_done: + pop edi + pop esi + pop ebx + ret +DrawBox ENDP + +DrawBoxBorder PROC uses ebx x:DWORD, y:DWORD, w:DWORD, h:DWORD, fillColor:DWORD, borderColor:DWORD, bWidth:DWORD + invoke DrawBox, x, y, w, h, borderColor + mov eax, x + add eax, bWidth + mov edx, y + add edx, bWidth + mov ecx, w + sub ecx, bWidth + sub ecx, bWidth + mov ebx, h + sub ebx, bWidth + sub ebx, bWidth + invoke DrawBox, eax, edx, ecx, ebx, fillColor + ret +DrawBoxBorder ENDP + +DrawCircle PROC cxVal:DWORD, cyVal:DWORD, radius:DWORD, color:DWORD + push ebx + push esi + push edi + mov eax, radius + neg eax + mov edi, eax +circ_y: + cmp edi, radius + jg circ_done + mov eax, radius + neg eax + mov esi, eax +circ_x: + cmp esi, radius + jg next_circ_y + + mov eax, esi + imul eax, eax + mov ebx, edi + imul ebx, ebx + add eax, ebx + mov edx, radius + imul edx, edx + cmp eax, edx + jg next_circ_x + + mov eax, cxVal + add eax, esi + mov ecx, cyVal + add ecx, edi + invoke DrawPixel, eax, ecx, color + +next_circ_x: + inc esi + jmp circ_x +next_circ_y: + inc edi + jmp circ_y +circ_done: + pop edi + pop esi + pop ebx + ret +DrawCircle ENDP + +DrawChar8x8 PROC uses ebx esi edi x:DWORD, y:DWORD, chVal:DWORD, color:DWORD + local column:DWORD + mov eax, chVal + and eax, 255 + lea esi, [font8x8 + eax*8] + xor edi, edi +glyph_row: + movzx ebx, BYTE PTR [esi+edi] + mov column, 0 +glyph_col: + test ebx, 80h + jz glyph_next + mov eax, x + add eax, column + mov edx, y + add edx, edi + invoke DrawPixel, eax, edx, color +glyph_next: + shl ebx, 1 + inc column + cmp column, 8 + jl glyph_col + inc edi + cmp edi, 8 + jl glyph_row + ret +DrawChar8x8 ENDP + +DrawString8x8 PROC x:DWORD, y:DWORD, strPtr:DWORD, color:DWORD + push ebx + push esi + mov esi, strPtr + mov ebx, x +str_loop: + movzx eax, BYTE PTR [esi] + test al, al + jz str_done + invoke DrawChar8x8, ebx, y, eax, color + add ebx, 8 + inc esi + jmp str_loop +str_done: + pop esi + pop ebx + ret +DrawString8x8 ENDP + +; --- True 3D Perspective Floor & Ceiling Rendering --- + +; --- DDA Raycasting Walls --- +RenderWallsRange PROC colStart:DWORD, colLimit:DWORD + local col:DWORD + local originalStart:DWORD + local camX:DWORD + local rayDirX:DWORD + local rayDirY:DWORD + local mapX:DWORD + local mapY:DWORD + local deltaDistX:DWORD + local deltaDistY:DWORD + local stepX:DWORD + local stepY:DWORD + local sideDistX:DWORD + local sideDistY:DWORD + local side:DWORD + local perpWallDist:DWORD + local lineH:DWORD + local drawStart:DWORD + local drawEnd:DWORD + local wallHit:DWORD + local texX:DWORD + local texXHD:DWORD + local pixelMaterial:DWORD + local texId:DWORD + local shade:DWORD + + push ebx + push esi + push edi + + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + mov playerDirX, ebx + mov ebx, [tableSin + eax*4] + mov playerDirY, ebx + + mov eax, ebx + imul eax, -66 + cdq + mov ecx, 100 + idiv ecx + mov playerPlaneX, eax + + mov eax, playerDirX + imul eax, 66 + cdq + idiv ecx + mov playerPlaneY, eax + + mov eax, colStart + mov col, eax +col_loop: + mov eax, colLimit + cmp col, eax + jge walls_done + + mov eax, col + shl eax, 1 + sub eax, SCREEN_W + imul eax, FP_1 + cdq + mov ecx, SCREEN_W + idiv ecx + mov camX, eax + + mov eax, playerPlaneX + imul camX + shrd eax, edx, 16 + add eax, playerDirX + mov rayDirX, eax + + mov eax, playerPlaneY + imul camX + shrd eax, edx, 16 + add eax, playerDirY + mov rayDirY, eax + + mov eax, playerX + sar eax, 16 + mov mapX, eax + mov eax, playerY + sar eax, 16 + mov mapY, eax + + mov eax, rayDirX + test eax, eax + jnz calc_delta_x + mov deltaDistX, 7FFFFFFFh + jmp calc_delta_y +calc_delta_x: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + cmp ebx, 4 + jbe delta_x_clamp + xor eax, eax + mov edx, 1 + div ebx + mov deltaDistX, eax + jmp calc_delta_y +delta_x_clamp: + mov deltaDistX, 7FFFFFFFh + +calc_delta_y: + mov eax, rayDirY + test eax, eax + jnz calc_delta_y_ok + mov deltaDistY, 7FFFFFFFh + jmp check_step +calc_delta_y_ok: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + cmp ebx, 4 + jbe delta_y_clamp + xor eax, eax + mov edx, 1 + div ebx + mov deltaDistY, eax + jmp check_step +delta_y_clamp: + mov deltaDistY, 7FFFFFFFh + +check_step: + cmp rayDirX, 0 + jge step_x_pos + mov stepX, -1 + mov eax, playerX + mov edx, mapX + shl edx, 16 + sub eax, edx + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + jmp check_step_y +step_x_pos: + mov stepX, 1 + mov eax, mapX + inc eax + shl eax, 16 + sub eax, playerX + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + +check_step_y: + cmp rayDirY, 0 + jge step_y_pos + mov stepY, -1 + mov eax, playerY + mov edx, mapY + shl edx, 16 + sub eax, edx + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + jmp dda_start +step_y_pos: + mov stepY, 1 + mov eax, mapY + inc eax + shl eax, 16 + sub eax, playerY + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + +dda_start: + xor ecx, ecx +dda_step_loop: + inc ecx + cmp ecx, 64 + jge wall_map_boundary + + mov eax, sideDistX + cmp eax, sideDistY + jge step_in_y + + mov eax, deltaDistX + add sideDistX, eax + mov eax, stepX + add mapX, eax + mov side, 0 + jmp check_tile + +step_in_y: + mov eax, deltaDistY + add sideDistY, eax + mov eax, stepY + add mapY, eax + mov side, 1 + +check_tile: + cmp mapX, 0 + jl wall_map_boundary + cmp mapX, MAP_WIDTH + jge wall_map_boundary + cmp mapY, 0 + jl wall_map_boundary + cmp mapY, MAP_HEIGHT + jge wall_map_boundary + + mov eax, mapY + shl eax, 5 + add eax, mapX + mov edx, worldMap3D + movzx eax, BYTE PTR [edx + eax] + test eax, eax + jnz hit_wall + jmp dda_step_loop + +wall_map_boundary: + cmp outdoorRender3D, 0 + je hit_wall + mov eax, col + mov zBuffer[eax*4], 7FFFFFFFh + jmp next_col + +hit_wall: + cmp side, 0 + jne perp_y + mov eax, sideDistX + sub eax, deltaDistX + mov perpWallDist, eax + jmp perp_done +perp_y: + mov eax, sideDistY + sub eax, deltaDistY + mov perpWallDist, eax + +perp_done: + cmp perpWallDist, 2048 + jge @F + mov perpWallDist, 2048 +@@: + mov eax, col + mov edx, perpWallDist + mov [zBuffer + eax*4], edx + + ; Unit projection is shared by indoor room height and outdoor storeys. + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv perpWallDist + mov lineH, eax + + mov eax, lineH + imul viewEye3D + shrd eax, edx, 16 + add eax, viewHorizon3D + mov drawEnd, eax + mov ebx, lineH + mov eax, viewCeiling3D + cmp outdoorRender3D, 0 + je @F + mov eax, CITY_STOREY_HEIGHT +@@: + imul ebx + shrd eax, edx, 16 + mov ebx, eax + mov lineH, ebx + mov eax, drawEnd + sub eax, ebx + mov drawStart, eax + cmp outdoorRender3D, 0 + je wall_store_original_start + ; Floor height is independent of storey height. + mov eax, drawEnd + sub eax, lineH + mov drawStart, eax + mov eax, mapY + shl eax, 5 + add eax, mapX + mov edx, worldMap3D + movzx eax, BYTE PTR [edx+eax] +wall_exterior_tall: + ; Roof projection and texture sampling use the same storey count. + mov eax, lineH + imul eax, CITY_BUILDING_STOREYS-1 + sub drawStart, eax + mov eax, lineH + imul eax, CITY_BUILDING_STOREYS + mov lineH, eax +wall_store_original_start: + mov eax, drawStart + mov originalStart, eax + + cmp side, 0 + jne hit_side_y + mov eax, perpWallDist + imul rayDirY + shrd eax, edx, 16 + add eax, playerY + mov wallHit, eax + jmp calc_tex_x +hit_side_y: + mov eax, perpWallDist + imul rayDirX + shrd eax, edx, 16 + add eax, playerX + mov wallHit, eax + +calc_tex_x: + ; MASK WITH 0FFFFh to prevent texture scrambling! + mov eax, wallHit + and eax, 0FFFFh + mov texXHD, eax + shr eax, 9 + and eax, 127 + mov texX, eax + + cmp side, 0 + jne @F + cmp rayDirX, 0 + jle @F + mov eax, 127 + sub eax, texX + mov texX, eax + xor texXHD, 0FFFFh +@@: + cmp side, 1 + jne select_tex + cmp rayDirY, 0 + jge select_tex + mov eax, 127 + sub eax, texX + mov texX, eax + xor texXHD, 0FFFFh + +select_tex: + mov eax, mapY + shl eax, 5 + add eax, mapX + mov edx, worldMap3D + movzx eax, BYTE PTR [edx + eax] + mov texId, eax + cmp texId, 0 + jne @F + mov texId, 1 +@@: + + mov eax, perpWallDist + shr eax, 13 + mov edx, 256 + sub edx, eax + cmp edx, 75 + jge @F + mov edx, 75 +@@: + cmp side, 1 + jne @F + imul edx, 3 + shr edx, 2 +@@: + mov shade, edx + + cmp drawStart, 0 + jge @F + mov drawStart, 0 +@@: + cmp drawEnd, SCREEN_H + jl @F + mov drawEnd, SCREEN_H - 1 +@@: + + mov eax, lineH + cmp eax, 1 + jge @F + mov eax, 1 + mov lineH, eax +@@: + + mov eax, 128 * FP_1 + cdq + idiv lineH + mov esi, eax ; stepY + + mov eax, drawStart + sub eax, originalStart + imul eax, esi + mov edi, eax ; texPos + + mov ecx, drawStart +draw_stripe_loop: + cmp ecx, drawEnd + jg next_col + + mov eax, edi + shr eax, 16 + and eax, 127 + mov edx, texId + cmp outdoorRender3D, 0 + je wall_sample_material + imul eax, CITY_BUILDING_STOREYS + cmp eax, 128*(CITY_BUILDING_STOREYS-1) + jae wall_lower_storey + push eax + shr eax, 7 + add eax, mapX + add eax, mapY + xor edx, edx + mov ebx, 3 + div ebx + add edx, 65 + pop eax + and eax, 127 + jmp wall_sample_material +wall_lower_storey: + sub eax, 128*(CITY_BUILDING_STOREYS-1) +wall_sample_material: + mov pixelMaterial, edx + cmp outdoorRender3D, 0 + je wall_sample_indoor_hd + cmp hallCityDetail3D.pixels, 0 + je wall_sample_standard + cmp edx, 57 + jb wall_sample_standard + cmp edx, 72 + ja wall_sample_standard + cmp perpWallDist, 6*FP_1 + ja wall_sample_standard + ; Preserve subtexel detail near facades; retain the 128px mip at distance. + push edx + mov eax, edi + shr eax, 15 + imul eax, CITY_BUILDING_STOREYS + and eax, 255 + shl eax, 8 + mov ebx, texXHD + shr ebx, 8 + add eax, ebx + pop edx + sub edx, 57 + shl edx, 16 + add eax, edx + mov ebx, hallCityDetail3D.pixels + mov eax, [ebx+eax*4] + jmp wall_shade_pixel +wall_sample_indoor_hd: + cmp edx, 80 + jb wall_sample_standard + cmp edx, 103 + ja wall_sample_standard + mov ebx, hallRoomHD3D.pixels + cmp edx, 92 + jb wall_sample_room_hd + mov ebx, hallArchitectureHD3D.pixels + sub edx, 12 +wall_sample_room_hd: + test ebx, ebx + jz wall_sample_standard_restore + sub edx, 80 + shl edx, 18 + add ebx, edx + mov eax, edi + shr eax, 15 + and eax, 255 + shl eax, 8 + mov edx, texXHD + shr edx, 8 + add eax, edx + mov eax, [ebx+eax*4] + jmp wall_shade_pixel +wall_sample_standard_restore: + mov edx, texId + mov eax, edi + shr eax, 16 + and eax, 127 +wall_sample_standard: + shl eax, 7 + add eax, texX + + shl edx, 14 + add eax, edx + mov eax, [texturesBuffer + eax*4] + + ; Shade wall pixel +wall_shade_pixel: + mov ebx, shade + cmp outdoorRender3D, 0 + je wall_ambient_shade + push eax + push ecx + invoke IsCityEmissive3D, eax, pixelMaterial + pop ecx + test eax, eax + pop eax + jz wall_ambient_shade + mov ebx, 256 +wall_ambient_shade: + cmp hallLevel3D, 0 + je @F + imul ebx, 7 + shr ebx, 3 +@@: + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, edx + pop edx + or eax, edx + + mov edx, ecx + imul edx, SCREEN_W + add edx, col + mov [screenBuffer + edx*4], eax + + add edi, esi + inc ecx + jmp draw_stripe_loop + +next_col: + inc col + jmp col_loop + +walls_done: + pop edi + pop esi + pop ebx + ret +RenderWallsRange ENDP + +; --- Raycasting Background Worker Thread --- +RaycastWorkerProc PROC uses ebx esi edi lpParam:DWORD +worker_loop: + invoke WaitForSingleObject, hRaycastStartEvent, 0FFFFFFFFh + cmp bRaycastQuit, 1 + je worker_exit + invoke RenderWallsRange, 320, 640 + invoke SetEvent, hRaycastDoneEvent + jmp worker_loop +worker_exit: + xor eax, eax + ret +RaycastWorkerProc ENDP + +; --- Multi-Threaded DDA Raycasting Walls Dispatcher --- +RenderWalls PROC + push ebx + push esi + push edi + + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + mov playerDirX, ebx + mov ebx, [tableSin + eax*4] + mov playerDirY, ebx + + mov eax, ebx + imul eax, -66 + cdq + mov ecx, 100 + idiv ecx + mov playerPlaneX, eax + + mov eax, playerDirX + imul eax, 66 + cdq + idiv ecx + mov playerPlaneY, eax + + cmp hRaycastStartEvent, 0 + je single_thread_fallback + + ; Signal background worker to render columns [320..640) + invoke SetEvent, hRaycastStartEvent + + ; Main thread processes columns [0..320) in parallel + invoke RenderWallsRange, 0, 320 + + ; Synchronize with worker completion + invoke WaitForSingleObject, hRaycastDoneEvent, 0FFFFFFFFh + jmp walls_finished + +single_thread_fallback: + invoke RenderWallsRange, 0, SCREEN_W + +walls_finished: + pop edi + pop esi + pop ebx + ret +RenderWalls ENDP + +; --- Render 3D Billboard Sprites --- + +; --- HUD & Minimap Radar --- +RenderHUD PROC uses ebx esi edi + invoke DrawBox, 0, 0, 320, 16, 0014191Dh + invoke DrawString8x8, 8, 4, OFFSET textBank3D, 00D8BC6Ah + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 64, 4, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 176, 4, OFFSET textWindowKeys3D, 00A8B6BBh + invoke DrawBox, 0, 226, 320, 14, 0014191Dh + invoke DrawString8x8, 12, 230, OFFSET textWalkKeys3D, 00A8B6BBh + invoke DrawBox, 159, 118, 2, 5, 00E7DFC8h + invoke DrawBox, 157, 120, 6, 1, 00E7DFC8h + cmp interactPromptPtr, 0 + je @F + invoke DrawBoxBorder, 4, 199, 312, 18, 0014191Dh, 00D8BC6Ah, 1 + invoke DrawString8x8, 10, 204, interactPromptPtr, 00F5E2B0h +@@: + cmp flashTimer, 0 + je hud_finished + dec flashTimer + invoke DrawBox, 4, 22, 312, 16, 0014191Dh + invoke DrawString8x8, 10, 26, OFFSET flashMessage, 00FFFFFFh +hud_finished: + ret +RenderHUD ENDP + +RenderMinimap PROC uses ebx esi edi + local radarX:DWORD + local radarY:DWORD + local radarSize:DWORD + + mov radarX, 320 - 48 + mov radarY, 20 + mov radarSize, 44 + + invoke DrawBoxBorder, radarX, radarY, radarSize, radarSize, 00101510h, 00FFD700h, 1 + + ; Draw Sprites on radar + cmp hallLevel3D, 0 + jne draw_player_radar + xor esi, esi +radar_spr_loop: + cmp esi, NUM_SPRITES + jge draw_player_radar + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawPixel, ebx, eax, 00FFAA00h + inc esi + jmp radar_spr_loop + +draw_player_radar: + mov eax, playerX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, playerY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawCircle, ebx, eax, 2, 00FF2020h + ret +RenderMinimap ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: SLOTS 777 +; ============================================================================== +HandleSlotsInput PROC + cmp slotSpinState, 1 + je slots_input_done + + invoke Pressed3D, 20h ; SPACE -> Spin + test ah, 80h + jz check_bet_adjust + mov eax, bankroll + cmp eax, slotBet + jl @F + sub eax, slotBet + mov bankroll, eax + mov slotSpinState, 1 + mov slotSpinTimer, 0 + mov slotWinAmount, 0 + invoke PlayCasinoSound3D, OFFSET soundSlotSpin, 0, 1 + jmp slots_input_done +@@: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + +check_bet_adjust: + invoke Pressed3D, 26h ; UP / W + test ah, 80h + jnz inc_bet + invoke Pressed3D, 57h + test ah, 80h + jz check_bet_down +inc_bet: + cmp slotBet, 500 + jge slots_input_done + cmp slotBet, 100 + jge @F + cmp slotBet, 50 + jge set_100 + mov slotBet, 50 + jmp slots_input_done +set_100: + mov slotBet, 100 + jmp slots_input_done +@@: + mov slotBet, 500 + jmp slots_input_done + +check_bet_down: + invoke Pressed3D, 28h ; DOWN / S + test ah, 80h + jnz dec_bet + invoke Pressed3D, 53h + test ah, 80h + jz slots_input_done +dec_bet: + cmp slotBet, 50 + jle set_10 + cmp slotBet, 100 + jle set_50 + mov slotBet, 100 + jmp slots_input_done +set_50: + mov slotBet, 50 + jmp slots_input_done +set_10: + mov slotBet, 10 + +slots_input_done: + ret +HandleSlotsInput ENDP + +RenderSlotsGame PROC uses ebx esi edi + ; Cabinet Background (Dark Cherry Wood & Gold) + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A10h + invoke DrawBoxBorder, 10, 10, 300, 220, 00251015h, 00FFD700h, 3 + + ; Illuminated Top Marquee + invoke DrawBoxBorder, 25, 20, 270, 32, 000A0505h, 00FFFF00h, 2 + invoke DrawString8x8, 55, 32, OFFSET textSlots3D, 00FFD700h + + ; Spinning Animation Logic + cmp slotSpinState, 1 + jne draw_reels + inc slotSpinTimer + + cmp slotSpinTimer, 22 + jge @F + invoke RandomRange3D, 7 + mov slotReel1, eax +@@: + cmp slotSpinTimer, 36 + jge @F + invoke RandomRange3D, 7 + mov slotReel2, eax +@@: + cmp slotSpinTimer, 50 + jge @F + invoke RandomRange3D, 7 + mov slotReel3, eax +@@: + cmp slotSpinTimer, 50 + jl draw_reels + + ; Spin finished! Check outcome! + mov slotSpinState, 0 + mov eax, slotReel1 + cmp eax, slotReel2 + jne check_pairs + cmp eax, slotReel3 + jne check_pairs + + ; 3 Matching! + cmp eax, 0 ; 777! + jne @F + mov eax, slotBet + imul eax, 25 + mov slotWinAmount, eax + add bankroll, eax + invoke PlayCasinoSound3D, OFFSET soundJackpot, 0, 1 + jmp draw_reels +@@: + cmp eax, 6 ; CROWN! + jne @F + mov eax, slotBet + imul eax, 50 + mov slotWinAmount, eax + add bankroll, eax + invoke PlayCasinoSound3D, OFFSET soundJackpot, 0, 1 + jmp draw_reels +@@: + mov eax, slotBet + imul eax, 10 + mov slotWinAmount, eax + add bankroll, eax + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + jmp draw_reels + +check_pairs: + mov eax, slotReel1 + cmp eax, slotReel2 + je pair_win + mov eax, slotReel2 + cmp eax, slotReel3 + je pair_win + mov eax, slotReel1 + cmp eax, slotReel3 + je pair_win + jmp draw_reels +pair_win: + mov eax, slotBet + imul eax, 2 + mov slotWinAmount, eax + add bankroll, eax + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + +draw_reels: + ; Reels Window + invoke DrawBoxBorder, 30, 62, 260, 95, 000F0F12h, 0000A5FFh, 2 + + ; Reel 1 (45..105) + invoke DrawBoxBorder, 45, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel1 + call DrawReelSymbolAt1 + + ; Reel 2 (128..188) + invoke DrawBoxBorder, 128, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel2 + call DrawReelSymbolAt2 + + ; Reel 3 (210..270) + invoke DrawBoxBorder, 210, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel3 + call DrawReelSymbolAt3 + + ; Bottom Control Panel + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 00FFD700h, 1 + + invoke DrawString8x8, 28, 172, OFFSET textBank3D, 00FFD700h + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 00FFFF00h + + invoke DrawString8x8, 175, 172, OFFSET textBet3D, 00FFD700h + invoke FormatNumber, slotBet, OFFSET hudNumBuffer + invoke DrawString8x8, 240, 172, OFFSET hudNumBuffer, 0050FF50h + + cmp slotWinAmount, 0 + jle draw_slot_ctrls + invoke DrawString8x8, 28, 187, OFFSET strWin, 00FFFF00h + invoke FormatNumber, slotWinAmount, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 187, OFFSET hudNumBuffer, 00FFFF00h + +draw_slot_ctrls: + invoke DrawString8x8, 28, 204, OFFSET textSlotsKeys3D, 00A0A0A0h + ret +RenderSlotsGame ENDP + +DrawReelSymbolAt1 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 52, 105, OFFSET sym7, 00FF2020h + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symBell, 00FFD700h + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 48, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 48, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 52, 105, OFFSET symCrown, 00FFD700h + ret +DrawReelSymbolAt1 ENDP + +DrawReelSymbolAt2 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 135, 105, OFFSET sym7, 00FF2020h + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symBell, 00FFD700h + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 131, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 131, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 135, 105, OFFSET symCrown, 00FFD700h + ret +DrawReelSymbolAt2 ENDP + +DrawReelSymbolAt3 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 218, 105, OFFSET sym7, 00FF2020h + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symBell, 00FFD700h + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 214, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 214, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 218, 105, OFFSET symCrown, 00FFD700h + ret +DrawReelSymbolAt3 ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: BLACKJACK (21) +; ============================================================================== +HandleBlackjackInput PROC uses ebx + cmp bjState, 0 ; Need Deal + jne check_bj_player_turn + invoke Pressed3D, 20h ; SPACE -> Deal + test ah, 80h + jz check_bj_bet_change + mov eax, bankroll + cmp eax, bjBet + jl bj_need_cash + sub eax, bjBet + mov bankroll, eax + + ; Deal 2 cards to player, 2 cards to dealer + mov bjPlayerCardCount, 0 + mov bjDealerCardCount, 0 + mov bjDealerHideHole, 1 + + ; Player Card 1 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount + + ; Dealer Card 1 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + + ; Player Card 2 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount + + ; Dealer Card 2 (Hole card) + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + + invoke PlayCasinoSound3D, OFFSET soundCards, 0, 1 + + ; Calc Player Score + call CalcPlayerBJScore + cmp bjPlayerScore, 21 + jne set_bj_turn + ; Instant Blackjack! + mov bjDealerHideHole, 0 + mov eax, bjBet + imul eax, 5 + shr eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + mov bjState, 2 + ret +set_bj_turn: + mov bjState, 1 + mov BYTE PTR [bjOutcomeMsg], 0 + ret + +bj_need_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +check_bj_player_turn: + cmp bjState, 1 + jne check_bj_round_over + + invoke Pressed3D, 48h ; 'H' -> Hit + test ah, 80h + jz check_bj_stand + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + cmp ebx, 8 + jge @F + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount +@@: + invoke PlayCasinoSound3D, OFFSET soundCards, 0, 1 + call CalcPlayerBJScore + cmp bjPlayerScore, 21 + jle bj_input_done + ; Bust! + invoke CopyString3D, OFFSET strPlayerBust, OFFSET bjOutcomeMsg + mov bjDealerHideHole, 0 + mov bjState, 2 + ret + +check_bj_stand: + invoke Pressed3D, 53h ; 'S' -> Stand + test ah, 80h + jz bj_input_done + + ; Dealer Turn + mov bjDealerHideHole, 0 +dealer_loop: + call CalcDealerBJScore + cmp bjDealerScore, 17 + jge dealer_finished + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + cmp ebx, 8 + jge dealer_finished + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + jmp dealer_loop + +dealer_finished: + cmp bjDealerScore, 21 + jle compare_scores + ; Dealer Bust! + mov eax, bjBet + shl eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strDealerBust, OFFSET bjOutcomeMsg + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + mov bjState, 2 + ret + +compare_scores: + mov eax, bjPlayerScore + cmp eax, bjDealerScore + jle check_dealer_won + ; Player Won! + mov eax, bjBet + shl eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + mov bjState, 2 + ret +check_dealer_won: + cmp eax, bjDealerScore + jl dealer_wins + ; Push (Tie) + mov eax, bjBet + add bankroll, eax + invoke CopyString3D, OFFSET strPush, OFFSET bjOutcomeMsg + mov bjState, 2 + ret +dealer_wins: + invoke CopyString3D, OFFSET strLose, OFFSET bjOutcomeMsg + mov bjState, 2 + ret + +check_bj_round_over: + invoke Pressed3D, 20h ; SPACE -> Next Hand + test ah, 80h + jz bj_input_done + mov bjState, 0 + ret + +check_bj_bet_change: + invoke Pressed3D, 26h ; UP + test ah, 80h + jz @F + cmp bjBet, 500 + jge bj_input_done + add bjBet, 50 + ret +@@: + invoke Pressed3D, 28h ; DOWN + test ah, 80h + jz bj_input_done + cmp bjBet, 50 + jle bj_input_done + sub bjBet, 50 + +bj_input_done: + ret +HandleBlackjackInput ENDP + +CalcPlayerBJScore PROC uses ebx esi + xor eax, eax + xor ebx, ebx + xor esi, esi +calc_p_loop: + cmp esi, bjPlayerCardCount + jge calc_p_done + mov edx, [bjPlayerCards + esi*4] + cmp edx, 10 + jle @F + mov edx, 10 +@@: + cmp edx, 1 + jne add_p_val + inc ebx ; count Aces + add eax, 11 + jmp next_p_card +add_p_val: + add eax, edx +next_p_card: + inc esi + jmp calc_p_loop +calc_p_done: + ; Soft Ace reduction +reduce_p_ace: + cmp eax, 21 + jle store_p_score + test ebx, ebx + jz store_p_score + sub eax, 10 + dec ebx + jmp reduce_p_ace +store_p_score: + mov bjPlayerScore, eax + ret +CalcPlayerBJScore ENDP + +CalcDealerBJScore PROC uses ebx esi + xor eax, eax + xor ebx, ebx + xor esi, esi +calc_d_loop: + cmp esi, bjDealerCardCount + jge calc_d_done + mov edx, [bjDealerCards + esi*4] + cmp edx, 10 + jle @F + mov edx, 10 +@@: + cmp edx, 1 + jne add_d_val + inc ebx + add eax, 11 + jmp next_d_card +add_d_val: + add eax, edx +next_d_card: + inc esi + jmp calc_d_loop +calc_d_done: +reduce_d_ace: + cmp eax, 21 + jle store_d_score + test ebx, ebx + jz store_d_score + sub eax, 10 + dec ebx + jmp reduce_d_ace +store_d_score: + mov bjDealerScore, eax + ret +CalcDealerBJScore ENDP + +RenderBlackjackGame PROC uses ebx esi edi + ; Emerald Felt Table Background + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 000A3015h + invoke DrawBoxBorder, 10, 10, 300, 220, 000D4018h, 00FFD700h, 3 + + ; Dealer Area Top + invoke DrawString8x8, 25, 20, OFFSET textBJ3D, 00FFD700h + invoke DrawString8x8, 25, 35, OFFSET textDealer3D, 00FFFFFFh + invoke FormatNumber, bjDealerScore, OFFSET hudNumBuffer + invoke DrawString8x8, 120, 35, OFFSET hudNumBuffer, 00FFFF00h + + ; Dealer Cards + xor esi, esi +draw_dealer_cards: + cmp esi, bjDealerCardCount + jge draw_player_bj_area + mov eax, esi + imul eax, 45 + add eax, 25 + mov ebx, eax + + cmp esi, 1 + jne draw_dealer_face + cmp bjDealerHideHole, 1 + jne draw_dealer_face + ; Face Down Card + mov eax, selectedBack3D + mov eax, cardBackColors3D[eax*4] + invoke DrawBoxBorder, ebx, 48, 38, 52, eax, 00FFFFFFh, 2 + jmp next_dealer_card_draw + +draw_dealer_face: + invoke DrawBoxBorder, ebx, 48, 38, 52, 00F0F0F5h, 00000000h, 2 + mov eax, [bjDealerCards + esi*4] + dec eax + imul eax, 3 + lea edx, [cardRankStr + eax] + mov eax, ebx + add eax, 8 + invoke DrawString8x8, eax, 68, edx, 00000000h + +next_dealer_card_draw: + inc esi + jmp draw_dealer_cards + +draw_player_bj_area: + ; Player Area Bottom + invoke DrawString8x8, 25, 110, OFFSET textPlayer3D, 00FFFFFFh + invoke FormatNumber, bjPlayerScore, OFFSET hudNumBuffer + invoke DrawString8x8, 120, 110, OFFSET hudNumBuffer, 0050FF50h + + ; Player Cards + xor esi, esi +draw_player_cards: + cmp esi, bjPlayerCardCount + jge draw_bj_footer + mov eax, esi + imul eax, 45 + add eax, 25 + mov ebx, eax + + invoke DrawBoxBorder, ebx, 124, 38, 52, 00F0F0F5h, 00000000h, 2 + mov eax, [bjPlayerCards + esi*4] + dec eax + imul eax, 3 + lea edx, [cardRankStr + eax] + mov eax, ebx + add eax, 8 + invoke DrawString8x8, eax, 144, edx, 00000000h + + inc esi + jmp draw_player_cards + +draw_bj_footer: + ; Footer Status & Controls + invoke DrawBoxBorder, 20, 182, 280, 42, 00102010h, 00FFD700h, 1 + cmp BYTE PTR [bjOutcomeMsg], 0 + je draw_bj_controls + invoke DrawString8x8, 28, 188, OFFSET bjOutcomeMsg, 00FFFF00h + invoke DrawString8x8, 28, 204, OFFSET textNext3D, 00A0A0A0h + ret + +draw_bj_controls: + invoke DrawString8x8, 28, 188, OFFSET textBJKeys3D, 00FFFFFFh + invoke DrawString8x8, 28, 204, OFFSET textDeal3D, 00A0A0A0h + ret +RenderBlackjackGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: ROULETTE +; ============================================================================== +HandleRouletteInput PROC uses ebx + cmp roulState, 1 + je roul_input_done + + invoke Pressed3D, 31h ; '1' -> RED + test ah, 80h + jz @F + mov roulBetType, 1 +@@: + invoke Pressed3D, 32h ; '2' -> BLACK + test ah, 80h + jz @F + mov roulBetType, 2 +@@: + invoke Pressed3D, 33h ; '3' -> ZERO (0) + test ah, 80h + jz @F + mov roulBetType, 3 +@@: + invoke Pressed3D, 34h ; '4' -> EVEN + test ah, 80h + jz @F + mov roulBetType, 4 +@@: + invoke Pressed3D, 35h ; '5' -> ODD + test ah, 80h + jz check_roul_spin + mov roulBetType, 5 + +check_roul_spin: + invoke Pressed3D, 20h ; SPACE -> Spin + test ah, 80h + jz roul_input_done + mov eax, bankroll + cmp eax, roulBetAmount + jl roul_no_cash + sub eax, roulBetAmount + mov bankroll, eax + mov roulState, 1 + mov roulSpinTimer, 50 + mov roulPayout, 0 + invoke PlayCasinoSound3D, OFFSET soundRoulette, 0, 1 + ret + +roul_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + +roul_input_done: + ret +HandleRouletteInput ENDP + +RenderRouletteGame PROC uses ebx esi edi + ; Table felt background + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00151525h + invoke DrawBoxBorder, 10, 10, 300, 220, 00201525h, 00FFD700h, 3 + + ; 2.5D Rotating Wheel on Left + invoke DrawCircle, 85, 110, 65, 00102550h + invoke DrawCircle, 85, 110, 60, 00FFD700h + invoke DrawCircle, 85, 110, 52, 00101010h + invoke DrawCircle, 85, 110, 22, 00FFD700h ; Center brass turret + + ; Spinning Wheel / Ball Logic + cmp roulState, 1 + jne draw_roul_ball + dec roulSpinTimer + add roulWheelAngle, 8 + sub roulBallAngle, 14 + cmp roulSpinTimer, 0 + jg draw_roul_ball + + ; Wheel stopped! Determine result! + mov roulState, 2 + invoke RandomRange3D, 37 + mov roulWinningNum, eax + + ; Check bet + cmp roulBetType, 1 ; RED + jne check_ro_black + call IsNumberRed + test eax, eax + jz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + jmp draw_roul_ball + +check_ro_black: + cmp roulBetType, 2 ; BLACK + jne check_ro_zero + cmp roulWinningNum, 0 + je ro_lost + call IsNumberRed + test eax, eax + jnz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + jmp draw_roul_ball + +check_ro_zero: + cmp roulBetType, 3 ; ZERO + jne check_ro_even + cmp roulWinningNum, 0 + jne ro_lost + mov eax, roulBetAmount + imul eax, 36 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strJackpot, OFFSET roulOutcomeMsg + invoke PlayCasinoSound3D, OFFSET soundJackpot, 0, 1 + jmp draw_roul_ball + +check_ro_even: + cmp roulBetType, 4 ; EVEN + jne check_ro_odd + mov eax, roulWinningNum + test eax, eax + jz ro_lost + test al, 1 + jnz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + jmp draw_roul_ball + +check_ro_odd: + mov eax, roulWinningNum + test eax, eax + jz ro_lost + test al, 1 + jz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + jmp draw_roul_ball + +ro_lost: + invoke CopyString3D, OFFSET strLose, OFFSET roulOutcomeMsg + +draw_roul_ball: + ; Draw White Ball on Rim + mov eax, roulBallAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + imul ebx, 42 + sar ebx, 16 + add ebx, 85 + + mov eax, roulBallAngle + and eax, 511 + mov edx, [tableSin + eax*4] + imul edx, 42 + sar edx, 16 + add edx, 110 + invoke DrawCircle, ebx, edx, 3, 00FFFFFFh + + ; Right Betting Board + invoke DrawBoxBorder, 175, 25, 125, 28, 001010C0h, 00FFFFFFh, 2 ; [1] RED + invoke DrawString8x8, 190, 35, OFFSET textRed3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 60, 125, 28, 00151515h, 00FFFFFFh, 2 ; [2] BLACK + invoke DrawString8x8, 190, 70, OFFSET textBlack3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 95, 125, 28, 00106010h, 00FFFFFFh, 2 ; [3] ZERO + invoke DrawString8x8, 190, 105, OFFSET textZero3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [4] EVEN + invoke DrawString8x8, 185, 139, OFFSET textEven3D, 00FFFFFFh + + invoke DrawBoxBorder, 240, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [5] ODD + invoke DrawString8x8, 250, 139, OFFSET textOdd3D, 00FFFFFFh + + ; Highlight Active Bet + cmp roulBetType, 1 + jne @F + invoke DrawBoxBorder, 173, 23, 129, 32, 0, 00FFFF00h, 2 +@@: + cmp roulBetType, 2 + jne @F + invoke DrawBoxBorder, 173, 58, 129, 32, 0, 00FFFF00h, 2 +@@: + cmp roulBetType, 3 + jne @F + invoke DrawBoxBorder, 173, 93, 129, 32, 0, 00FFFF00h, 2 +@@: + cmp roulBetType, 4 + jne @F + invoke DrawBoxBorder, 173, 128, 64, 30, 0, 00FFFF00h, 2 +@@: + cmp roulBetType, 5 + jne draw_ro_footer + invoke DrawBoxBorder, 238, 128, 64, 30, 0, 00FFFF00h, 2 + +draw_ro_footer: + invoke DrawBoxBorder, 20, 180, 280, 42, 00101015h, 00FFD700h, 1 + + cmp roulState, 2 + jne @F + invoke DrawString8x8, 28, 186, OFFSET textResult3D, 00FFD700h + invoke FormatNumber, roulWinningNum, OFFSET hudNumBuffer + invoke DrawString8x8, 85, 186, OFFSET hudNumBuffer, 00FFFF00h + invoke DrawString8x8, 130, 186, OFFSET roulOutcomeMsg, 0050FF50h +@@: + invoke DrawString8x8, 28, 202, OFFSET textSpin3D, 00A0A0A0h + ret +RenderRouletteGame ENDP + +IsNumberRed PROC + mov eax, roulWinningNum + cmp eax, 1 + je red_yes + cmp eax, 3 + je red_yes + cmp eax, 5 + je red_yes + cmp eax, 7 + je red_yes + cmp eax, 9 + je red_yes + cmp eax, 12 + je red_yes + cmp eax, 14 + je red_yes + cmp eax, 16 + je red_yes + cmp eax, 18 + je red_yes + cmp eax, 19 + je red_yes + cmp eax, 21 + je red_yes + cmp eax, 23 + je red_yes + cmp eax, 25 + je red_yes + cmp eax, 27 + je red_yes + cmp eax, 30 + je red_yes + cmp eax, 32 + je red_yes + cmp eax, 34 + je red_yes + cmp eax, 36 + je red_yes + xor eax, eax + ret +red_yes: + mov eax, 1 + ret +IsNumberRed ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: BAR & SHOP +; ============================================================================== +HandleShopInput PROC uses ebx esi + xor esi, esi +shop_choice: + inc esi + lea eax, [esi+30h] + invoke Pressed3D, eax + test eax, eax + jnz shop_chosen + cmp esi, 3 + jb shop_choice + ret +shop_chosen: + bt ownedBacks3D, esi + jc shop_equip + mov ebx, 1500 + cmp esi, 1 + jne @F + mov ebx, 1000 +@@: + cmp bankroll, ebx + jb shop_no_money + sub bankroll, ebx + bts ownedBacks3D, esi +shop_equip: + mov selectedBack3D, esi + invoke CopyString3D, OFFSET textBought3D, OFFSET shopMsg + call SaveProgress3D + ret +shop_no_money: + invoke CopyString3D, OFFSET textNoCash3D, OFFSET shopMsg + ret +HandleShopInput ENDP + +RenderShopGame PROC + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A0Ah + invoke DrawBoxBorder, 10, 10, 300, 220, 00251515h, 00FFD700h, 3 + invoke DrawString8x8, 25, 20, OFFSET textShop3D, 00FFD700h + + invoke DrawBoxBorder, 20, 40, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 46, OFFSET textItem1_3D, 00FFFF00h + invoke DrawString8x8, 28, 58, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 80, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 86, OFFSET textItem2_3D, 00FFFF00h + invoke DrawString8x8, 28, 98, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 120, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 126, OFFSET textItem3_3D, 00FFFF00h + invoke DrawString8x8, 28, 138, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 165, 280, 55, 00100A0Ah, 00FFD700h, 1 + invoke DrawString8x8, 28, 172, OFFSET textBank3D, 00FFD700h + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 00FFFF00h + + cmp BYTE PTR [shopMsg], 0 + je @F + invoke DrawString8x8, 28, 188, OFFSET shopMsg, 0050FF50h +@@: + invoke DrawString8x8, 28, 204, OFFSET textBack3D, 00A0A0A0h + ret +RenderShopGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: ATM TERMINAL +; ============================================================================== +HandleATMInput PROC + ret +HandleATMInput ENDP + +RenderATMGame PROC + invoke DrawBox, 0, 0, 320, 240, 00172120h + invoke DrawString8x8, 24, 30, OFFSET textATM3D, 00D8BC6Ah + invoke DrawString8x8, 24, 70, OFFSET textBank3D, 00FFFFFFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 96, 70, OFFSET hudNumBuffer, 0089DAB2h + invoke DrawString8x8, 24, 115, OFFSET textATMNote3D, 00B7C8C1h + invoke DrawString8x8, 24, 140, OFFSET textATMNote2_3D, 00B7C8C1h + invoke DrawString8x8, 24, 208, OFFSET textBack3D, 00D8BC6Ah + ret +RenderATMGame ENDP + +; ============================================================================== +; ============================================================================== +; ============================================================================== +; SHARED RICH UI PROCEDURES +; ============================================================================== +DrawKeycap3D PROC uses ebx esi edi, x:DWORD, y:DWORD, strPtr:DWORD, isActive:DWORD + local keyW:DWORD + mov esi, strPtr + xor ecx, ecx +keycap_len: + mov al, [esi+ecx] + test al, al + jz keycap_len_done + inc ecx + jmp keycap_len +keycap_len_done: + shl ecx, 3 + add ecx, 8 + mov keyW, ecx + + ; Drop shadow + mov eax, y + add eax, 2 + invoke DrawBox, x, eax, keyW, 13, 0008080Ch + + ; Border and Fill + cmp isActive, 0 + je keycap_inactive + mov eax, 00FFFF00h ; Bright Yellow active border + mov edx, 001B4B22h ; Casino Green active fill + mov ebx, 00FFFF00h ; Bright Yellow active text + jmp keycap_draw_box +keycap_inactive: + mov eax, 00606870h ; Slate inactive border + mov edx, 001A1C22h ; Charcoal inactive fill + mov ebx, 00D0D8E0h ; Silver inactive text + +keycap_draw_box: + push ebx + invoke DrawBoxBorder, x, y, keyW, 13, edx, eax, 1 + pop ebx + + ; Text label + mov eax, x + add eax, 4 + mov edx, y + add edx, 3 + invoke DrawString8x8, eax, edx, strPtr, ebx + + mov eax, keyW + add eax, 4 + ret +DrawKeycap3D ENDP + +DrawChipStack PROC uses ebx esi edi, x:DWORD, y:DWORD, chipCount:DWORD + mov edi, chipCount + xor esi, esi +chip_loop: + cmp esi, edi + jge chip_done + mov eax, esi + shl eax, 2 + mov edx, y + sub edx, eax + + ; Shadow + mov eax, x + add eax, 2 + mov ecx, edx + add ecx, 5 + invoke DrawBox, eax, ecx, 20, 2, 00061004h + + ; Red Clay Chip body with white rim + invoke DrawBoxBorder, x, edx, 24, 6, 00B81515h, 00FFFFFFh, 1 + + ; White stripe inlays + mov eax, x + add eax, 4 + mov ecx, edx + add ecx, 1 + invoke DrawBox, eax, ecx, 3, 4, 00FFFFFFh + + mov eax, x + add eax, 17 + mov ecx, edx + add ecx, 1 + invoke DrawBox, eax, ecx, 3, 4, 00FFFFFFh + + inc esi + jmp chip_loop +chip_done: + ret +DrawChipStack ENDP + +DrawDetailedCoin PROC uses ebx esi edi, cxVal:DWORD, cyVal:DWORD, rxVal:DWORD, ryVal:DWORD, outerColor:DWORD, innerColor:DWORD, reliefType:DWORD + local rxSq:DWORD + local rySq:DWORD + local rxRySq:DWORD + local threshSq:DWORD + local curDy:DWORD + local curDx:DWORD + local curX:DWORD + local curY:DWORD + + mov eax, rxVal + cmp eax, 0 + jle coin_draw_done + mov eax, ryVal + cmp eax, 0 + jle coin_draw_done + + mov eax, rxVal + imul eax, rxVal + mov rxSq, eax + + mov eax, ryVal + imul eax, ryVal + mov rySq, eax + + imul eax, rxSq + mov rxRySq, eax + + ; 3/4 threshold for rim bevel + mov ecx, 3 + imul eax, ecx + shr eax, 2 + mov threshSq, eax + + ; Scan rows + mov eax, ryVal + neg eax + mov curDy, eax +coin_row_loop: + mov eax, curDy + cmp eax, ryVal + jg coin_relief_check + + mov edx, cyVal + add edx, curDy + mov curY, edx + + ; Scan columns + mov eax, rxVal + neg eax + mov curDx, eax +coin_col_loop: + mov eax, curDx + cmp eax, rxVal + jg coin_col_next_row + + mov ecx, cxVal + add ecx, curDx + mov curX, ecx + + ; val = dx*dx*rySq + dy*dy*rxSq + mov eax, curDx + imul eax, curDx + imul eax, rySq + mov ebx, eax + + mov eax, curDy + imul eax, curDy + imul eax, rxSq + add eax, ebx + + cmp eax, rxRySq + ja coin_pixel_outside + + cmp eax, threshSq + jb coin_draw_inner + invoke DrawPixel, curX, curY, outerColor + jmp coin_pixel_outside +coin_draw_inner: + invoke DrawPixel, curX, curY, innerColor + +coin_pixel_outside: + inc curDx + jmp coin_col_loop + +coin_col_next_row: + inc curDy + jmp coin_row_loop + +coin_relief_check: + cmp rxVal, 14 + jl coin_draw_done + + cmp reliefType, 1 + je coin_draw_eagle + cmp reliefType, 2 + je coin_draw_numeral + jmp coin_draw_done + +coin_draw_eagle: + ; Imperial Eagle relief (Dark Gold 009A7A00h / Bright 00FFD700h) + mov eax, cxVal + sub eax, 3 + mov edx, cyVal + sub edx, 14 + invoke DrawBox, eax, edx, 7, 2, 009A7A00h + + mov eax, cxVal + sub eax, 4 + mov edx, cyVal + sub edx, 12 + invoke DrawBox, eax, edx, 9, 2, 009A7A00h + + mov eax, cxVal + sub eax, 2 + mov edx, cyVal + sub edx, 9 + invoke DrawBox, eax, edx, 5, 12, 009A7A00h + + mov eax, cxVal + sub eax, 1 + mov edx, cyVal + sub edx, 8 + invoke DrawBox, eax, edx, 3, 10, 00FFD700h + + mov eax, cxVal + sub eax, 10 + mov edx, cyVal + sub edx, 8 + invoke DrawBox, eax, edx, 7, 3, 009A7A00h + + mov eax, cxVal + sub eax, 13 + mov edx, cyVal + sub edx, 5 + invoke DrawBox, eax, edx, 10, 3, 009A7A00h + + mov eax, cxVal + sub eax, 11 + mov edx, cyVal + sub edx, 2 + invoke DrawBox, eax, edx, 7, 3, 009A7A00h + + mov eax, cxVal + add eax, 4 + mov edx, cyVal + sub edx, 8 + invoke DrawBox, eax, edx, 7, 3, 009A7A00h + + mov eax, cxVal + add eax, 4 + mov edx, cyVal + sub edx, 5 + invoke DrawBox, eax, edx, 10, 3, 009A7A00h + + mov eax, cxVal + add eax, 5 + mov edx, cyVal + sub edx, 2 + invoke DrawBox, eax, edx, 7, 3, 009A7A00h + + mov eax, cxVal + sub eax, 4 + mov edx, cyVal + add edx, 4 + invoke DrawBox, eax, edx, 9, 3, 009A7A00h + + mov eax, cxVal + sub eax, 3 + mov edx, cyVal + add edx, 7 + invoke DrawBox, eax, edx, 7, 3, 009A7A00h + jmp coin_draw_done + +coin_draw_numeral: + ; Roman numeral 'I' & laurel + mov eax, cxVal + sub eax, 5 + mov edx, cyVal + sub edx, 10 + invoke DrawBox, eax, edx, 11, 3, 009A7A00h + + mov eax, cxVal + sub eax, 2 + mov edx, cyVal + sub edx, 7 + invoke DrawBox, eax, edx, 5, 14, 009A7A00h + + mov eax, cxVal + sub eax, 1 + mov edx, cyVal + sub edx, 6 + invoke DrawBox, eax, edx, 3, 12, 00FFD700h + + mov eax, cxVal + sub eax, 6 + mov edx, cyVal + add edx, 7 + invoke DrawBox, eax, edx, 13, 3, 009A7A00h + + ; Laurel dots + mov eax, cxVal + sub eax, 12 + mov edx, cyVal + sub edx, 8 + invoke DrawBox, eax, edx, 2, 2, 009A7A00h + + mov eax, cxVal + add eax, 11 + mov edx, cyVal + sub edx, 8 + invoke DrawBox, eax, edx, 2, 2, 009A7A00h + + mov eax, cxVal + sub eax, 12 + mov edx, cyVal + invoke DrawBox, eax, edx, 2, 2, 009A7A00h + + mov eax, cxVal + add eax, 11 + mov edx, cyVal + invoke DrawBox, eax, edx, 2, 2, 009A7A00h + + mov eax, cxVal + sub eax, 12 + mov edx, cyVal + add edx, 8 + invoke DrawBox, eax, edx, 2, 2, 009A7A00h + + mov eax, cxVal + add eax, 11 + mov edx, cyVal + add edx, 8 + invoke DrawBox, eax, edx, 2, 2, 009A7A00h + +coin_draw_done: + ret +DrawDetailedCoin ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: COIN FLIP +; ============================================================================== +InitCoinGame PROC + call InitNativeCoin3D + ret +InitCoinGame ENDP + +HandleCoinInput PROC + call HandleNativeCoin3D + ret +; Retained legacy frame-count prototype, excluded from the executable. +IF 0 + cmp coin3d_state, 0 + je coin_handle_idle + cmp coin3d_state, 1 + je coin_handle_flipping + cmp coin3d_state, 2 + je coin_handle_result + ret + +coin_handle_idle: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz coin_bet_up + invoke Pressed3D, 57h ; 'W' + test eax, eax + jnz coin_bet_up + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz coin_bet_down + invoke Pressed3D, 53h ; 'S' + test eax, eax + jnz coin_bet_down + invoke Pressed3D, 31h ; '1' + test eax, eax + jnz coin_pick_1 + invoke Pressed3D, 32h ; '2' + test eax, eax + jnz coin_pick_2 + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz coin_start_flip + ret + +coin_bet_up: + mov eax, coin3d_bet + add eax, 50 + cmp eax, bankroll + jle @F + mov eax, bankroll +@@: + cmp eax, 5000 + jle @F + mov eax, 5000 +@@: + mov coin3d_bet, eax + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +coin_bet_down: + mov eax, coin3d_bet + sub eax, 50 + cmp eax, 50 + jge @F + mov eax, 50 +@@: + mov coin3d_bet, eax + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +coin_pick_1: + mov coin3d_choice, 1 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +coin_pick_2: + mov coin3d_choice, 2 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +coin_start_flip: + mov eax, coin3d_bet + cmp eax, bankroll + jle @F + mov eax, bankroll + mov coin3d_bet, eax + test eax, eax + jz coin_done +@@: + mov eax, coin3d_bet + sub bankroll, eax + mov coin3d_state, 1 + mov coin3d_timer, 40 + invoke PlayCasinoSound3D, OFFSET soundCoin, 0, 1 + ret + +coin_handle_flipping: + dec coin3d_timer + cmp coin3d_timer, 0 + jg coin_done + invoke RandomRange3D, 2 + inc eax + mov coin3d_result, eax + mov edx, coin3d_choice + cmp eax, edx + jne coin_flip_lost + + ; Won! + inc coin3d_streak + mov eax, coin3d_bet + shl eax, 1 + add bankroll, eax + mov coin3d_win, eax + mov coin3d_state, 2 + invoke PlayCasinoSound3D, OFFSET soundCoinDing, 0, 1 + ret + +coin_flip_lost: + mov coin3d_streak, 0 + mov coin3d_win, 0 + mov coin3d_state, 2 + invoke PlayCasinoSound3D, OFFSET soundLose, 0, 1 + ret + +coin_handle_result: + invoke Pressed3D, 20h + test eax, eax + jz coin_done + mov coin3d_state, 0 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 +coin_done: + ret +ENDIF +HandleCoinInput ENDP + +RenderCoinGame PROC uses ebx esi edi + local cyVal:DWORD + local rxVal:DWORD + local kx:DWORD + + call RenderNativeCoin3D + ret +IF 0 + ; Background & Cabinet border + invoke DrawBox, 0, 0, 320, 240, 00140906h + invoke DrawBoxBorder, 6, 6, 308, 228, 0022150Fh, 00482E1Bh, 3 + + ; Header + invoke DrawBoxBorder, 20, 12, 280, 26, 001C100Ah, 00FFD700h, 2 + invoke DrawString8x8, 44, 21, OFFSET textCoinTitle, 00FFFF00h + + ; Corner rivets + invoke DrawBox, 12, 12, 3, 3, 00FFD700h + invoke DrawBox, 306, 12, 3, 3, 00FFD700h + invoke DrawBox, 12, 226, 3, 3, 00FFD700h + invoke DrawBox, 306, 226, 3, 3, 00FFD700h + + ; Status meters + invoke DrawBoxBorder, 20, 44, 110, 18, 000E1A0Ah, 00224B1Ah, 1 + invoke DrawString8x8, 24, 49, OFFSET textBankPrompt, 003CFF3Ch + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 72, 49, OFFSET hudNumBuffer, 003CFF3Ch + + invoke DrawBoxBorder, 190, 44, 110, 18, 001A100Ah, 003A2814h, 1 + invoke DrawString8x8, 194, 49, OFFSET textBetPrompt, 00FFD700h + invoke FormatNumber, coin3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 254, 49, OFFSET hudNumBuffer, 00FFD700h + + ; Left: Heads + cmp coin3d_choice, 1 + jne coin_left_inactive + invoke DrawBoxBorder, 20, 72, 76, 68, 00101828h, 00FFFF00h, 2 + invoke DrawString8x8, 30, 78, OFFSET textCoinSide1, 00FFFF00h + invoke DrawDetailedCoin, 58, 106, 14, 14, 00D0A000h, 00FFD700h, 1 + invoke DrawString8x8, 24, 126, OFFSET textCoinSelected, 003CFF3Ch + jmp coin_right_side +coin_left_inactive: + invoke DrawBoxBorder, 20, 72, 76, 68, 000A101Ch, 00404855h, 1 + invoke DrawString8x8, 30, 78, OFFSET textCoinSide1, 00D0D8E0h + invoke DrawDetailedCoin, 58, 106, 14, 14, 009A7A00h, 00D0A000h, 1 + +coin_right_side: + ; Right: Tails + cmp coin3d_choice, 2 + jne coin_right_inactive + invoke DrawBoxBorder, 224, 72, 76, 68, 00101828h, 00FFFF00h, 2 + invoke DrawString8x8, 234, 78, OFFSET textCoinSide2, 00FFFF00h + invoke DrawDetailedCoin, 262, 106, 14, 14, 00D0A000h, 00FFD700h, 2 + invoke DrawString8x8, 228, 126, OFFSET textCoinSelected, 003CFF3Ch + jmp coin_center_area +coin_right_inactive: + invoke DrawBoxBorder, 224, 72, 76, 68, 000A101Ch, 00404855h, 1 + invoke DrawString8x8, 234, 78, OFFSET textCoinSide2, 00D0D8E0h + invoke DrawDetailedCoin, 262, 106, 14, 14, 009A7A00h, 00D0A000h, 2 + +coin_center_area: + ; Center spotlight + invoke DrawCircle, 160, 110, 48, 00121620h + invoke DrawCircle, 160, 110, 44, 00FFD700h + invoke DrawCircle, 160, 110, 42, 000E141Eh + + cmp coin3d_state, 1 + je coin_render_flipping + cmp coin3d_state, 2 + je coin_render_result + + ; Idle coin + invoke DrawDetailedCoin, 160, 110, 26, 26, 00D0A000h, 00FFD700h, coin3d_choice + jmp coin_render_keys + +coin_render_flipping: + mov eax, coin3d_timer + and eax, 7 + movzx eax, byte ptr [coinRxAnimTable + eax] + mov rxVal, eax + invoke DrawDetailedCoin, 160, 110, rxVal, 26, 00D0A000h, 00FFD700h, 0 + invoke DrawString8x8, 88, 160, OFFSET textCoinFlipping, 00FFFF00h + jmp coin_render_keys + +coin_render_result: + invoke DrawDetailedCoin, 160, 110, 26, 26, 00D0A000h, 00FFD700h, coin3d_result + mov eax, coin3d_result + cmp eax, coin3d_choice + jne coin_render_loss_msg + + ; Win banner + invoke DrawBoxBorder, 44, 154, 232, 22, 000E141Eh, 003CFF3Ch, 1 + invoke DrawString8x8, 64, 161, OFFSET textCoinWin, 003CFF3Ch + invoke FormatNumber, coin3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 152, 161, OFFSET hudNumBuffer, 003CFF3Ch + jmp coin_render_keys + +coin_render_loss_msg: + invoke DrawBoxBorder, 44, 154, 232, 22, 000E141Eh, 00C81414h, 1 + invoke DrawString8x8, 114, 161, OFFSET textCoinLose, 00FF6464h + +coin_render_keys: + mov kx, 16 + xor eax, eax + cmp coin3d_choice, 1 + sete al + invoke DrawKeycap3D, kx, 192, OFFSET textCoinKey1, eax + add kx, eax + + xor eax, eax + cmp coin3d_choice, 2 + sete al + invoke DrawKeycap3D, kx, 192, OFFSET textCoinKey2, eax + add kx, eax + + invoke DrawKeycap3D, kx, 192, OFFSET textCoinKeySpace, 1 + add kx, eax + + invoke DrawKeycap3D, kx, 192, OFFSET textKeyEsc, 0 + ret +ENDIF +RenderCoinGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: CRAPS / DICE +; ============================================================================== +DrawCrapsDie PROC uses ebx esi edi, x:DWORD, y:DWORD, sizeVal:DWORD, valNum:DWORD + ; Drop shadow + mov eax, x + add eax, 3 + mov edx, y + add edx, sizeVal + invoke DrawBox, eax, edx, sizeVal, 3, 00081403h + + mov eax, x + add eax, sizeVal + mov edx, y + add edx, 3 + invoke DrawBox, eax, edx, 3, sizeVal, 00081403h + + ; Ivory body & bevel + invoke DrawBoxBorder, x, y, sizeVal, sizeVal, 00FAF4F0h, 00403535h, 1 + mov eax, x + inc eax + mov edx, y + inc edx + mov ecx, sizeVal + sub ecx, 2 + invoke DrawBox, eax, edx, ecx, 1, 00FFFFFFh + invoke DrawBox, eax, edx, 1, ecx, 00FFFFFFh + + ; Ruby pips (00C81515h) + mov eax, valNum + test al, 1 + jz @F + ; Center pip + mov eax, x + add eax, 18 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 3, 00C81515h + dec eax + dec edx + invoke DrawPixel, eax, edx, 00FFFFFFh +@@: + cmp valNum, 2 + jl die_pips_done + mov eax, x + add eax, 9 + mov edx, y + add edx, 9 + invoke DrawCircle, eax, edx, 3, 00C81515h + mov eax, x + add eax, 27 + mov edx, y + add edx, 27 + invoke DrawCircle, eax, edx, 3, 00C81515h + + cmp valNum, 4 + jl die_pips_done + mov eax, x + add eax, 27 + mov edx, y + add edx, 9 + invoke DrawCircle, eax, edx, 3, 00C81515h + mov eax, x + add eax, 9 + mov edx, y + add edx, 27 + invoke DrawCircle, eax, edx, 3, 00C81515h + + cmp valNum, 6 + jl die_pips_done + mov eax, x + add eax, 9 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 3, 00C81515h + mov eax, x + add eax, 27 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 3, 00C81515h + +die_pips_done: + ret +DrawCrapsDie ENDP + +InitDiceGame PROC + mov dice3d_state, 0 + mov dice3d_timer, 0 + mov dice3d_win, 0 + ret +InitDiceGame ENDP + +HandleDiceInput PROC + cmp dice3d_state, 0 + je dice_handle_idle + cmp dice3d_state, 1 + je dice_handle_rolling + cmp dice3d_state, 2 + je dice_handle_result + ret + +dice_handle_idle: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz dice_bet_up + invoke Pressed3D, 57h ; 'W' + test eax, eax + jnz dice_bet_up + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz dice_bet_down + invoke Pressed3D, 53h ; 'S' + test eax, eax + jnz dice_bet_down + invoke Pressed3D, 31h ; '1' + test eax, eax + jnz dice_pick_1 + invoke Pressed3D, 32h ; '2' + test eax, eax + jnz dice_pick_2 + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz dice_start_roll + ret + +dice_bet_up: + mov eax, dice3d_bet + add eax, 50 + cmp eax, bankroll + jle @F + mov eax, bankroll +@@: + cmp eax, 5000 + jle @F + mov eax, 5000 +@@: + mov dice3d_bet, eax + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +dice_bet_down: + mov eax, dice3d_bet + sub eax, 50 + cmp eax, 50 + jge @F + mov eax, 50 +@@: + mov dice3d_bet, eax + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +dice_pick_1: + mov dice3d_choice, 1 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +dice_pick_2: + mov dice3d_choice, 2 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +dice_start_roll: + mov eax, dice3d_bet + cmp eax, bankroll + jle @F + mov eax, bankroll + mov dice3d_bet, eax + test eax, eax + jz dice_done +@@: + mov eax, dice3d_bet + test eax, eax + jle dice_done + sub bankroll, eax + mov dice3d_state, 1 + mov dice3d_timer, 0 + invoke RandomRange3D, 6 + inc eax + mov dice3d_val1, eax + invoke RandomRange3D, 6 + inc eax + mov dice3d_val2, eax + invoke PlayCasinoSound3D, OFFSET soundDiceRoll, 0, 1 + call SaveProgress3D + ret + +dice_handle_rolling: + mov eax, deltaTime3D + add dice3d_timer, eax + cmp dice3d_timer, 1600 + jb dice_done + mov dice3d_timer, 1600 + mov eax, dice3d_val2 + mov edx, dice3d_val1 + add edx, eax + mov dice3d_sum, edx + + ; Parity check + mov eax, edx + and eax, 1 + jnz dice_sum_is_odd + ; Even + mov eax, 1 + jmp dice_check_win +dice_sum_is_odd: + mov eax, 2 + +dice_check_win: + cmp eax, dice3d_choice + jne dice_roll_lost + + ; Won! + mov eax, dice3d_bet + shl eax, 1 + add bankroll, eax + mov dice3d_win, eax + mov dice3d_state, 2 + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + invoke NpcRecordRound3D,8,1 + call SaveProgress3D + ret + +dice_roll_lost: + mov dice3d_win, 0 + mov dice3d_state, 2 + invoke PlayCasinoSound3D, OFFSET soundLose, 0, 1 + invoke NpcRecordRound3D,8,0 + call SaveProgress3D + ret + +dice_handle_result: + invoke Pressed3D, 20h + test eax, eax + jz dice_done + mov dice3d_state, 0 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 +dice_done: + ret +HandleDiceInput ENDP + +RenderDiceGame PROC uses ebx esi edi + local kx:DWORD + + ; Mahogany frame & Deep Felt Green table + invoke DrawBox, 0, 0, 320, 240, 00140906h + invoke DrawBoxBorder, 6, 6, 308, 228, 000A3816h, 00FFD700h, 2 + + ; Header + invoke DrawBoxBorder, 20, 12, 280, 26, 00072E13h, 00FFD700h, 2 + invoke DrawString8x8, 116, 21, OFFSET textDiceTitle, 00FFFF00h + + ; Status + invoke DrawBoxBorder, 20, 44, 110, 18, 00072E13h, 001B4B22h, 1 + invoke DrawString8x8, 24, 49, OFFSET textBankPrompt, 003CFF3Ch + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 72, 49, OFFSET hudNumBuffer, 003CFF3Ch + + invoke DrawBoxBorder, 190, 44, 110, 18, 00072E13h, 001B4B22h, 1 + invoke DrawString8x8, 194, 49, OFFSET textBetPrompt, 00FFD700h + invoke FormatNumber, dice3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 258, 49, OFFSET hudNumBuffer, 00FFD700h + + ; [1] ×¨Ò + cmp dice3d_choice, 1 + jne dice_even_inactive + invoke DrawBoxBorder, 16, 70, 88, 48, 00072E13h, 00FFFF00h, 2 + invoke DrawString8x8, 30, 76, OFFSET textDiceEven, 00FFFF00h + invoke DrawString8x8, 22, 90, OFFSET textDiceEvenNums, 00FFD700h + invoke DrawString8x8, 26, 104, OFFSET textCoinSelected, 003CFF3Ch + jmp dice_odd_side +dice_even_inactive: + invoke DrawBoxBorder, 16, 70, 88, 48, 00072E13h, 001B4B22h, 1 + invoke DrawString8x8, 30, 76, OFFSET textDiceEven, 00D0D8E0h + invoke DrawString8x8, 22, 90, OFFSET textDiceEvenNums, 0080B090h + +dice_odd_side: + ; [2] ÍÅ×ÅÒ + cmp dice3d_choice, 2 + jne dice_odd_inactive + invoke DrawBoxBorder, 216, 70, 88, 48, 00072E13h, 00FFFF00h, 2 + invoke DrawString8x8, 226, 76, OFFSET textDiceOdd, 00FFFF00h + invoke DrawString8x8, 224, 90, OFFSET textDiceOddNums, 00FFD700h + invoke DrawString8x8, 226, 104, OFFSET textCoinSelected, 003CFF3Ch + jmp dice_center_cubes +dice_odd_inactive: + invoke DrawBoxBorder, 216, 70, 88, 48, 00072E13h, 001B4B22h, 1 + invoke DrawString8x8, 226, 76, OFFSET textDiceOdd, 00D0D8E0h + invoke DrawString8x8, 224, 90, OFFSET textDiceOddNums, 0080B090h + +dice_center_cubes: + call RenderDiceThrow3D + + cmp dice3d_state, 1 + je dice_render_rolling + cmp dice3d_state, 2 + je dice_render_result + jmp dice_render_keys + +dice_render_rolling: + invoke DrawString8x8, 76, 138, OFFSET textDiceRolling, 00FFFF00h + jmp dice_render_keys + +dice_render_result: + invoke DrawBoxBorder, 36, 130, 248, 36, 00072E13h, 00FFD700h, 1 + invoke DrawString8x8, 44, 135, OFFSET textDiceSumHdr, 00FFD700h + invoke FormatNumber, dice3d_val1, OFFSET hudNumBuffer + invoke DrawString8x8, 92, 135, OFFSET hudNumBuffer, 00FFFF00h + invoke DrawString8x8, 110, 135, OFFSET textDicePlus, 00FFD700h + invoke FormatNumber, dice3d_val2, OFFSET hudNumBuffer + invoke DrawString8x8, 126, 135, OFFSET hudNumBuffer, 00FFFF00h + invoke DrawString8x8, 144, 135, OFFSET textDiceEqual, 00FFD700h + invoke FormatNumber, dice3d_sum, OFFSET hudNumBuffer + invoke DrawString8x8, 168, 135, OFFSET hudNumBuffer, 00FFFF00h + + mov eax, dice3d_sum + and eax, 1 + jnz dice_render_odd_res + invoke DrawString8x8, 186, 135, OFFSET textDiceEvenResult, 003CFF3Ch + jmp dice_render_outcome +dice_render_odd_res: + invoke DrawString8x8, 186, 135, OFFSET textDiceOddResult, 003CFF3Ch + +dice_render_outcome: + mov eax, dice3d_win + test eax, eax + jz dice_render_loss_outcome + invoke DrawString8x8, 68, 150, OFFSET textDiceWin, 003CFF3Ch + invoke FormatNumber, dice3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 156, 150, OFFSET hudNumBuffer, 003CFF3Ch + invoke DrawString8x8, 188, 150, OFFSET textDiceWinMult, 003CFF3Ch + jmp dice_render_keys + +dice_render_loss_outcome: + invoke DrawString8x8, 116, 150, OFFSET textDiceLose, 00FF6464h + +dice_render_keys: + mov kx, 16 + xor eax, eax + cmp dice3d_choice, 1 + sete al + invoke DrawKeycap3D, kx, 192, OFFSET textDiceKey1, eax + add kx, eax + + xor eax, eax + cmp dice3d_choice, 2 + sete al + invoke DrawKeycap3D, kx, 192, OFFSET textDiceKey2, eax + add kx, eax + + invoke DrawKeycap3D, kx, 192, OFFSET textDiceKeySpace, 1 + add kx, eax + + invoke DrawKeycap3D, kx, 192, OFFSET textKeyEsc, 0 + ret +RenderDiceGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: SKULLS & CUPS (ÍÀϨÐÑÒÊÈ) +; ============================================================================== +DrawGlowingOrb PROC uses ebx esi edi, cxVal:DWORD, cyVal:DWORD + invoke DrawCircle, cxVal, cyVal, 14, 002E1E08h + invoke DrawCircle, cxVal, cyVal, 11, 00583A10h + invoke DrawCircle, cxVal, cyVal, 8, 008A581Ah + invoke DrawCircle, cxVal, cyVal, 6, 00D0B000h + invoke DrawCircle, cxVal, cyVal, 4, 00FFE000h + mov eax, cxVal + dec eax + mov edx, cyVal + dec edx + invoke DrawCircle, eax, edx, 2, 00FFFF80h + dec eax + dec edx + invoke DrawPixel, eax, edx, 00FFFFFFh + ret +DrawGlowingOrb ENDP + +DrawGothicCup PROC uses ebx esi edi, x:DWORD, y:DWORD, cupId:DWORD, isLifted:DWORD, hasBall:DWORD + local liftY:DWORD + + mov eax, y + cmp isLifted, 0 + je @F + sub eax, 36 +@@: + mov liftY, eax + + ; Drop shadow + cmp isLifted, 0 + jne cup_shadow_lifted + mov eax, x + add eax, 6 + mov edx, y + add edx, 42 + invoke DrawBox, eax, edx, 36, 4, 0010040Ah + jmp cup_ball_check +cup_shadow_lifted: + mov eax, x + add eax, 10 + mov edx, y + add edx, 42 + invoke DrawBox, eax, edx, 28, 2, 001A0612h + +cup_ball_check: + cmp isLifted, 0 + je cup_body_draw + cmp hasBall, 0 + je cup_body_draw + mov eax, x + add eax, 24 + mov edx, y + add edx, 26 + invoke DrawGlowingOrb, eax, edx + +cup_body_draw: + ; Base pedestal + mov eax, x + add eax, 6 + mov edx, liftY + add edx, 36 + invoke DrawBoxBorder, eax, edx, 36, 6, 00301A22h, 00D0B000h, 1 + + ; Stem + mov eax, x + add eax, 18 + mov edx, liftY + add edx, 28 + invoke DrawBox, eax, edx, 12, 8, 00452533h + mov eax, x + add eax, 22 + invoke DrawBox, eax, edx, 4, 8, 006E4055h + + ; Goblet Bowl + mov eax, x + add eax, 8 + mov edx, liftY + add edx, 8 + invoke DrawBoxBorder, eax, edx, 32, 20, 00401E2Dh, 00FFD700h, 1 + + mov eax, x + add eax, 14 + mov edx, liftY + add edx, 10 + invoke DrawBox, eax, edx, 6, 16, 00703550h + mov eax, x + add eax, 17 + invoke DrawBox, eax, edx, 3, 16, 00A05078h + + ; Golden Rim + mov eax, x + add eax, 4 + mov edx, liftY + add edx, 2 + invoke DrawBoxBorder, eax, edx, 40, 7, 00200A15h, 00FFFF00h, 1 + mov eax, x + add eax, 12 + mov edx, liftY + add edx, 4 + invoke DrawBox, eax, edx, 16, 2, 00FFFF00h + + ; Skull face emblem + mov eax, x + add eax, 21 + mov edx, liftY + add edx, 12 + invoke DrawBox, eax, edx, 6, 5, 00FFD700h + mov eax, x + add eax, 22 + mov edx, liftY + add edx, 17 + invoke DrawBox, eax, edx, 4, 3, 00FFD700h + mov eax, x + add eax, 22 + mov edx, liftY + add edx, 14 + invoke DrawPixel, eax, edx, 00200A15h + mov eax, x + add eax, 24 + invoke DrawPixel, eax, edx, 00200A15h + + ; Cup number label + mov eax, x + add eax, 21 + mov edx, liftY + add edx, 24 + mov ecx, cupId + add ecx, '1' + invoke DrawChar8x8, eax, edx, ecx, 00FFFF00h + ret +DrawGothicCup ENDP + +InitSkullsGame PROC + mov skulls3d_state, 0 + mov skulls3d_timer, 0 + mov skulls3d_win, 0 + mov skulls3d_choice, 1 + mov skulls3d_cup0, 0 + mov skulls3d_cup1, 1 + mov skulls3d_cup2, 2 + invoke RandomRange3D, 3 + mov skulls3d_ballPos, eax + ret +InitSkullsGame ENDP + +FinalizeSkullsGuess PROC uses ebx + cmp skulls3d_state,3 + jne skulls_guess_done + mov eax, skulls3d_choice + cmp eax, skulls3d_ballPos + jne skulls_guess_wrong + + ; Correct! 3x payout + mov eax, skulls3d_bet + imul eax, 3 + add bankroll, eax + mov skulls3d_win, eax + mov skulls3d_state, 4 + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + invoke NpcRecordRound3D,9,1 + call SaveProgress3D + ret + +skulls_guess_wrong: + mov skulls3d_win, 0 + mov skulls3d_state, 4 + invoke PlayCasinoSound3D, OFFSET soundLose, 0, 1 + invoke NpcRecordRound3D,9,0 + call SaveProgress3D +skulls_guess_done: + ret +FinalizeSkullsGuess ENDP + +HandleSkullsInput PROC + cmp skulls3d_state, 0 + je skulls_handle_idle + cmp skulls3d_state, 1 + je skulls_handle_show + cmp skulls3d_state, 2 + je skulls_handle_shuffle + cmp skulls3d_state, 3 + je skulls_handle_pick + cmp skulls3d_state, 4 + je skulls_handle_reveal + ret + +skulls_handle_idle: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz skulls_bet_up + invoke Pressed3D, 57h ; 'W' + test eax, eax + jnz skulls_bet_up + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz skulls_bet_down + invoke Pressed3D, 53h ; 'S' + test eax, eax + jnz skulls_bet_down + invoke Pressed3D, 20h ; SPACE + test eax, eax + jnz skulls_start_game + ret + +skulls_bet_up: + mov eax, skulls3d_bet + add eax, 50 + cmp eax, bankroll + jle @F + mov eax, bankroll +@@: + cmp eax, 5000 + jle @F + mov eax, 5000 +@@: + mov skulls3d_bet, eax + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +skulls_bet_down: + mov eax, skulls3d_bet + sub eax, 50 + cmp eax, 50 + jge @F + mov eax, 50 +@@: + mov skulls3d_bet, eax + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +skulls_start_game: + mov eax, skulls3d_bet + cmp eax, bankroll + jle @F + mov eax, bankroll + mov skulls3d_bet, eax + test eax, eax + jz skulls_input_done +@@: + mov eax, skulls3d_bet + sub bankroll, eax + invoke RandomRange3D, 3 + mov skulls3d_ballPos, eax + mov skulls3d_cup0, 0 + mov skulls3d_cup1, 1 + mov skulls3d_cup2, 2 + + ; Pre-generate 3 dynamic swap pairs + invoke RandomRange3D, 3 + mov skulls3d_swapPair0, eax + invoke RandomRange3D, 3 + mov skulls3d_swapPair1, eax + invoke RandomRange3D, 3 + mov skulls3d_swapPair2, eax + + mov skulls3d_state, 1 + mov skulls3d_timer, 0 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +skulls_handle_show: + inc skulls3d_timer + cmp skulls3d_timer, 45 + jl skulls_input_done + ; Transition to Phase 2: Active Shuffle Animation + mov skulls3d_state, 2 + mov skulls3d_timer, 0 + invoke PlayCasinoSound3D, OFFSET soundShuffle, 0, 1 + ret + +skulls_handle_shuffle: + inc skulls3d_timer + cmp skulls3d_timer, 60 + jl skulls_input_done + ; Transition to Phase 3: Pick cup + mov skulls3d_state, 3 + mov skulls3d_timer, 0 + ret + +skulls_handle_pick: + invoke Pressed3D, 31h ; '1' + test eax, eax + jnz skulls_pick_1 + invoke Pressed3D, 32h ; '2' + test eax, eax + jnz skulls_pick_2 + invoke Pressed3D, 33h ; '3' + test eax, eax + jnz skulls_pick_3 + ret + +skulls_pick_1: + mov skulls3d_choice, 0 + call FinalizeSkullsGuess + ret + +skulls_pick_2: + mov skulls3d_choice, 1 + call FinalizeSkullsGuess + ret + +skulls_pick_3: + mov skulls3d_choice, 2 + call FinalizeSkullsGuess + ret + +skulls_handle_reveal: + invoke Pressed3D, 20h + test eax, eax + jz skulls_input_done + mov skulls3d_state, 0 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 +skulls_input_done: + ret +HandleSkullsInput ENDP + +RenderSkullsGame PROC uses ebx esi edi + local kx:DWORD + local passTick:DWORD, curPair:DWORD, swapSlotA:DWORD, swapSlotB:DWORD + local xA:DWORD, xB:DWORD, curXA:DWORD, curXB:DWORD, curYA:DWORD, curYB:DWORD + local distX:DWORD, dxVal:DWORD, archY:DWORD + + ; Mahogany & Gothic Purple table + invoke DrawBox, 0, 0, 320, 240, 00140906h + invoke DrawBoxBorder, 6, 6, 308, 228, 00300F22h, 00FFD700h, 2 + + ; Header + invoke DrawBoxBorder, 20, 12, 280, 26, 001A0812h, 00FFD700h, 2 + invoke DrawString8x8, 44, 21, OFFSET textSkullsTitle, 00FFFF00h + + ; Status + invoke DrawBoxBorder, 20, 44, 110, 18, 001A0812h, 00452033h, 1 + invoke DrawString8x8, 24, 49, OFFSET textBankPrompt, 003CFF3Ch + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 72, 49, OFFSET hudNumBuffer, 003CFF3Ch + + invoke DrawBoxBorder, 190, 44, 110, 18, 001A0812h, 00452033h, 1 + invoke DrawString8x8, 194, 49, OFFSET textBetPrompt, 00FFD700h + invoke FormatNumber, skulls3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 254, 49, OFFSET hudNumBuffer, 00FFD700h + + ; Phase Prompts + cmp skulls3d_state, 0 + jne @F + invoke DrawString8x8, 56, 62, OFFSET textSkullsPhase0, 00FFD700h + jmp skulls_draw_idle_cups +@@: + cmp skulls3d_state, 1 + jne @F + invoke DrawString8x8, 56, 62, OFFSET textSkullsPhase1, 00FFFF00h + jmp skulls_draw_phase1_cups +@@: + cmp skulls3d_state, 2 + jne @F + invoke DrawString8x8, 44, 62, OFFSET textSkullsPhase2, 00FFFF00h + jmp skulls_draw_animated_cups +@@: + cmp skulls3d_state, 3 + jne @F + invoke DrawString8x8, 28, 62, OFFSET textSkullsPhase3, 00FFFF00h + jmp skulls_draw_idle_cups +@@: + ; Phase 4: Reveal outcome + mov eax, skulls3d_win + test eax, eax + jz skulls_reveal_loss_text + invoke DrawString8x8, 40, 62, OFFSET textSkullsWin, 003CFF3Ch + invoke FormatNumber, skulls3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 136, 62, OFFSET hudNumBuffer, 003CFF3Ch + invoke DrawString8x8, 168, 62, OFFSET textSkullsWinMult, 003CFF3Ch + jmp skulls_draw_reveal_cups + +skulls_reveal_loss_text: + invoke DrawString8x8, 40, 62, OFFSET textSkullsLose, 00FF6464h + jmp skulls_draw_reveal_cups + +skulls_draw_idle_cups: + ; Draw resting cups at static slots: Slot 0 (X=36), Slot 1 (X=136), Slot 2 (X=236) + invoke DrawGothicCup, 36, 114, skulls3d_cup0, 0, 0 + invoke DrawGothicCup, 136, 114, skulls3d_cup1, 0, 0 + invoke DrawGothicCup, 236, 114, skulls3d_cup2, 0, 0 + jmp skulls_render_controls + +skulls_draw_phase1_cups: + ; Draw with golden ball showing under starting cup + mov ebx, 0 + mov edx, 0 + cmp skulls3d_ballPos, 0 + jne @F + mov ebx, 1 + mov edx, 1 +@@: + invoke DrawGothicCup, 36, 114, skulls3d_cup0, ebx, edx + + mov ebx, 0 + mov edx, 0 + cmp skulls3d_ballPos, 1 + jne @F + mov ebx, 1 + mov edx, 1 +@@: + invoke DrawGothicCup, 136, 114, skulls3d_cup1, ebx, edx + + mov ebx, 0 + mov edx, 0 + cmp skulls3d_ballPos, 2 + jne @F + mov ebx, 1 + mov edx, 1 +@@: + invoke DrawGothicCup, 236, 114, skulls3d_cup2, ebx, edx + jmp skulls_render_controls + +skulls_draw_animated_cups: + ; 60 frames = 3 passes of 20 frames + mov eax, skulls3d_timer + cmp eax, 20 + jbe pass_0 + cmp eax, 40 + jbe pass_1 + sub eax, 41 + mov passTick, eax + mov eax, skulls3d_swapPair2 + mov curPair, eax + jmp setup_pass + +pass_0: + dec eax + mov passTick, eax + mov eax, skulls3d_swapPair0 + mov curPair, eax + jmp setup_pass + +pass_1: + sub eax, 21 + mov passTick, eax + mov eax, skulls3d_swapPair1 + mov curPair, eax + +setup_pass: + ; curPair determines swap pair: + ; 0: swap slot 0 (X=36) and slot 1 (X=136) + ; 1: swap slot 1 (X=136) and slot 2 (X=236) + ; 2: swap slot 0 (X=36) and slot 2 (X=236) + cmp curPair, 1 + je pair_1 + cmp curPair, 2 + je pair_2 + mov swapSlotA, 0 + mov swapSlotB, 1 + mov xA, 36 + mov xB, 136 + jmp calc_coords +pair_1: + mov swapSlotA, 1 + mov swapSlotB, 2 + mov xA, 136 + mov xB, 236 + jmp calc_coords +pair_2: + mov swapSlotA, 0 + mov swapSlotB, 2 + mov xA, 36 + mov xB, 236 + +calc_coords: + ; distX = xB - xA + mov eax, xB + sub eax, xA + mov distX, eax + + ; dxVal = (distX * passTick) / 20 + mov eax, distX + imul eax, passTick + xor edx, edx + mov ecx, 20 + div ecx + mov dxVal, eax + + ; curXA = xA + dxVal + mov eax, xA + add eax, dxVal + mov curXA, eax + + ; curXB = xB - dxVal + mov eax, xB + sub eax, dxVal + mov curXB, eax + + ; archY = (passTick * (20 - passTick)) / 10 + mov eax, passTick + mov ecx, 20 + sub ecx, eax + imul eax, ecx + xor edx, edx + mov ecx, 10 + div ecx + mov archY, eax + + ; Cup A hops UP: 114 - archY + mov eax, 114 + sub eax, archY + mov curYA, eax + + ; Cup B hops DOWN: 114 + archY + mov eax, 114 + add eax, archY + mov curYB, eax + + ; Check if pass ended (frame 19): swap ball position and cups + cmp passTick, 19 + jne draw_active_shuffle + + ; Swap ball position if involved + mov eax, skulls3d_ballPos + cmp eax, swapSlotA + jne check_ball_b + mov edx, swapSlotB + mov skulls3d_ballPos, edx + jmp swap_slot_identities +check_ball_b: + cmp eax, swapSlotB + jne swap_slot_identities + mov edx, swapSlotA + mov skulls3d_ballPos, edx + +swap_slot_identities: + cmp curPair, 1 + je swap_ids_1_2 + cmp curPair, 2 + je swap_ids_0_2 + ; swap 0 and 1 + mov eax, skulls3d_cup0 + xchg eax, skulls3d_cup1 + mov skulls3d_cup0, eax + jmp swap_sound_tick +swap_ids_1_2: + mov eax, skulls3d_cup1 + xchg eax, skulls3d_cup2 + mov skulls3d_cup1, eax + jmp swap_sound_tick +swap_ids_0_2: + mov eax, skulls3d_cup0 + xchg eax, skulls3d_cup2 + mov skulls3d_cup0, eax + +swap_sound_tick: + invoke PlayCasinoSound3D, OFFSET soundShuffle, 0, 1 + +draw_active_shuffle: + ; Draw stationary cup + cmp curPair, 1 + je draw_stat_cup0 + cmp curPair, 2 + je draw_stat_cup1 + ; Stationary cup is slot 2 (X=236) + invoke DrawGothicCup, 236, 114, skulls3d_cup2, 0, 0 + jmp draw_moving_cups +draw_stat_cup0: + ; Stationary cup is slot 0 (X=36) + invoke DrawGothicCup, 36, 114, skulls3d_cup0, 0, 0 + jmp draw_moving_cups +draw_stat_cup1: + ; Stationary cup is slot 1 (X=136) + invoke DrawGothicCup, 136, 114, skulls3d_cup1, 0, 0 + +draw_moving_cups: + ; Moving Cup A and Moving Cup B + cmp curPair, 1 + je ids_pair_1 + cmp curPair, 2 + je ids_pair_2 + mov eax, skulls3d_cup0 + mov ebx, skulls3d_cup1 + jmp draw_the_pair +ids_pair_1: + mov eax, skulls3d_cup1 + mov ebx, skulls3d_cup2 + jmp draw_the_pair +ids_pair_2: + mov eax, skulls3d_cup0 + mov ebx, skulls3d_cup2 + +draw_the_pair: + push ebx + invoke DrawGothicCup, curXA, curYA, eax, 0, 0 + pop ebx + invoke DrawGothicCup, curXB, curYB, ebx, 0, 0 + jmp skulls_render_controls + +skulls_draw_reveal_cups: + ; Reveal Phase: lift chosen cup and lift actual ball cup if different + ; Slot 0 + mov ebx, 0 + mov edx, 0 + cmp skulls3d_choice, 0 + je slot0_is_lifted + cmp skulls3d_ballPos, 0 + jne @F +slot0_is_lifted: + mov ebx, 1 + cmp skulls3d_ballPos, 0 + sete dl +@@: + invoke DrawGothicCup, 36, 114, skulls3d_cup0, ebx, edx + + ; Slot 1 + mov ebx, 0 + mov edx, 0 + cmp skulls3d_choice, 1 + je slot1_is_lifted + cmp skulls3d_ballPos, 1 + jne @F +slot1_is_lifted: + mov ebx, 1 + cmp skulls3d_ballPos, 1 + sete dl +@@: + invoke DrawGothicCup, 136, 114, skulls3d_cup1, ebx, edx + + ; Slot 2 + mov ebx, 0 + mov edx, 0 + cmp skulls3d_choice, 2 + je slot2_is_lifted + cmp skulls3d_ballPos, 2 + jne @F +slot2_is_lifted: + mov ebx, 1 + cmp skulls3d_ballPos, 2 + sete dl +@@: + invoke DrawGothicCup, 236, 114, skulls3d_cup2, ebx, edx + +skulls_render_controls: + ; Cup selection slot labels [1], [2], [3] + invoke DrawString8x8, 54, 168, OFFSET textSkullsKey1, 00D0D8E0h + invoke DrawString8x8, 150, 168, OFFSET textSkullsKey2, 00D0D8E0h + invoke DrawString8x8, 250, 168, OFFSET textSkullsKey3, 00D0D8E0h + + ; Keycaps + mov kx, 16 + xor eax, eax + cmp skulls3d_state, 3 + je key1_active + cmp skulls3d_choice, 0 + sete al + jmp draw_key1 +key1_active: + mov eax, 1 +draw_key1: + invoke DrawKeycap3D, kx, 192, OFFSET textSkullsKey1, eax + add kx, eax + + xor eax, eax + cmp skulls3d_state, 3 + je key2_active + cmp skulls3d_choice, 1 + sete al + jmp draw_key2 +key2_active: + mov eax, 1 +draw_key2: + invoke DrawKeycap3D, kx, 192, OFFSET textSkullsKey2, eax + add kx, eax + + xor eax, eax + cmp skulls3d_state, 3 + je key3_active + cmp skulls3d_choice, 2 + sete al + jmp draw_key3 +key3_active: + mov eax, 1 +draw_key3: + invoke DrawKeycap3D, kx, 192, OFFSET textSkullsKey3, eax + add kx, eax + + xor eax, eax + cmp skulls3d_state, 0 + je start_active + cmp skulls3d_state, 4 + je start_active + jmp draw_start_key +start_active: + mov eax, 1 +draw_start_key: + invoke DrawKeycap3D, kx, 192, OFFSET textSkullsKeySpace, eax + add kx, eax + + invoke DrawKeycap3D, kx, 192, OFFSET textKeyEsc, 0 + ret +RenderSkullsGame ENDP + +InitSkillGame PROC + mov skill3d_state, 0 + mov skill3d_timer, 0 + mov skill3d_hits, 0 + mov skill3d_misses, 0 + mov skill3d_needle, 55 + mov skill3d_speed, 4 + mov skill3d_dir, 1 + mov skill3d_last_result, 0 + mov skill3d_win_amount, 0 + + ; Randomize initial zone: 80 + RandomRange(90) -> 80..170 + invoke RandomRange3D, 90 + add eax, 80 + mov skill3d_zone_start, eax + + ; Great zone: start + 20 + RandomRange(12) + invoke RandomRange3D, 12 + add eax, skill3d_zone_start + add eax, 20 + mov skill3d_great_start, eax + ret +InitSkillGame ENDP + +HandleSkillInput PROC uses ebx esi + mov eax, skill3d_state + cmp eax, 0 + je skill_handle_ready + cmp eax, 1 + je skill_handle_active + cmp eax, 2 + je skill_handle_round_wait + cmp eax, 3 + je skill_handle_round_wait + cmp eax, 4 + je skill_handle_end_wait + cmp eax, 5 + je skill_handle_end_wait + ret + +skill_handle_ready: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz skill_bet_up + invoke Pressed3D, 57h ; 'W' + test eax, eax + jnz skill_bet_up + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz skill_bet_down + invoke Pressed3D, 53h ; 'S' + test eax, eax + jnz skill_bet_down + jmp skill_check_start + +skill_bet_up: + mov eax, skill3d_bet + add eax, 50 + cmp eax, bankroll + jle @F + mov eax, bankroll +@@: + cmp eax, 5000 + jle @F + mov eax, 5000 +@@: + mov skill3d_bet, eax + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +skill_bet_down: + mov eax, skill3d_bet + sub eax, 50 + cmp eax, 50 + jge @F + mov eax, 50 +@@: + mov skill3d_bet, eax + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +skill_check_start: + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz skill_input_done + + ; Deduct bet on game start if beginning of run + mov eax, skill3d_hits + or eax, skill3d_misses + jnz @F + mov eax, skill3d_bet + cmp eax, bankroll + jle skill_has_funds + mov eax, bankroll + mov skill3d_bet, eax + test eax, eax + jz skill_input_done +skill_has_funds: + mov eax, skill3d_bet + sub bankroll, eax +@@: + mov skill3d_state, 1 + mov skill3d_needle, 55 + mov skill3d_dir, 1 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret + +skill_handle_active: + ; Move needle smoothly + mov eax, skill3d_needle + mov edx, skill3d_speed + cmp skill3d_dir, 1 + je skill_move_right + sub eax, edx + cmp eax, 52 + jge skill_update_needle + mov eax, 52 + mov skill3d_dir, 1 + jmp skill_update_needle +skill_move_right: + add eax, edx + cmp eax, 268 + jle skill_update_needle + mov eax, 268 + mov skill3d_dir, -1 +skill_update_needle: + mov skill3d_needle, eax + + ; Check SPACE pressed (Reaction Hit Attempt!) + invoke Pressed3D, 20h + test eax, eax + jz skill_input_done + + ; Is needle in Great Sweet Spot? + mov eax, skill3d_needle + mov edx, skill3d_great_start + cmp eax, edx + jl check_success_zone + add edx, skill3d_great_width + cmp eax, edx + jg check_success_zone + + ; GREAT HIT! + mov skill3d_last_result, 2 + add skill3d_hits, 2 + mov skill3d_state, 2 + mov skill3d_timer, 40 + invoke PlayCasinoSound3D, OFFSET soundSkillPerfect, 0, 1 + jmp skill_check_finish_round + +check_success_zone: + mov eax, skill3d_needle + mov edx, skill3d_zone_start + cmp eax, edx + jl skill_was_miss + add edx, skill3d_zone_width + cmp eax, edx + jg skill_was_miss + + ; NORMAL HIT! + mov skill3d_last_result, 1 + inc skill3d_hits + mov skill3d_state, 2 + mov skill3d_timer, 40 + invoke PlayCasinoSound3D, OFFSET soundSkillHit, 0, 1 + jmp skill_check_finish_round + +skill_was_miss: + ; MISS! + mov skill3d_last_result, 0 + inc skill3d_misses + mov skill3d_state, 3 + mov skill3d_timer, 45 + invoke PlayCasinoSound3D, OFFSET soundSkillMiss, 0, 1 + +skill_check_finish_round: + cmp skill3d_hits, 5 + jge skill_game_escaped + cmp skill3d_misses, 3 + jge skill_game_lost + ret + +skill_game_escaped: + mov skill3d_state, 4 + mov skill3d_timer, 0 + ; Payout: 3x total return (+$2x bet profit) + mov eax, skill3d_bet + imul eax, 3 + add bankroll, eax + mov eax, skill3d_bet + shl eax, 1 + mov skill3d_win_amount, eax + invoke NpcRecordRound3D,10,1 + call SaveProgress3D + invoke PlayCasinoSound3D, OFFSET soundRoundWin, 0, 1 + ret + +skill_game_lost: + mov skill3d_state, 5 + mov skill3d_timer, 0 + invoke NpcRecordRound3D,10,0 + call SaveProgress3D + invoke PlayCasinoSound3D, OFFSET soundLose, 0, 1 + ret + +skill_handle_round_wait: + dec skill3d_timer + cmp skill3d_timer, 0 + jg skill_input_done + + ; Next round setup + invoke RandomRange3D, 90 + add eax, 80 + mov skill3d_zone_start, eax + + invoke RandomRange3D, 12 + add eax, skill3d_zone_start + add eax, 20 + mov skill3d_great_start, eax + + mov eax, skill3d_hits + shr eax, 1 + add eax, 4 + mov skill3d_speed, eax + mov skill3d_state, 1 + ret + +skill_handle_end_wait: + invoke Pressed3D, 20h + test eax, eax + jz skill_input_done + call InitSkillGame + ret + +skill_input_done: + ret +HandleSkillInput ENDP + +RenderSkillGame PROC uses ebx esi edi + local kx:DWORD + local tx:DWORD + + ; Industrial Steel bezel + invoke DrawBox, 0, 0, 320, 240, 00121416h + invoke DrawBoxBorder, 6, 6, 308, 228, 001A1D20h, 00FFD700h, 2 + + ; Header + invoke DrawBoxBorder, 20, 12, 280, 26, 00121418h, 00FFD700h, 2 + invoke DrawString8x8, 40, 21, OFFSET textSkillTitle, 00FFFF00h + + ; Status + invoke DrawBoxBorder, 20, 44, 110, 18, 00121418h, 002A3540h, 1 + invoke DrawString8x8, 24, 49, OFFSET textBankPrompt, 003CFF3Ch + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 72, 49, OFFSET hudNumBuffer, 003CFF3Ch + + invoke DrawBoxBorder, 190, 44, 110, 18, 00121418h, 002A3540h, 1 + invoke DrawString8x8, 194, 49, OFFSET textBetPrompt, 00FFD700h + invoke FormatNumber, skill3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 254, 49, OFFSET hudNumBuffer, 00FFD700h + + ; Survivor Progress + invoke DrawString8x8, 24, 70, OFFSET textSkillHitsHdr, 003CFF3Ch + invoke FormatNumber, skill3d_hits, OFFSET hudNumBuffer + invoke DrawString8x8, 64, 70, OFFSET hudNumBuffer, 003CFF3Ch + + invoke DrawString8x8, 180, 70, OFFSET textSkillMissHdr, 00FF6464h + invoke FormatNumber, skill3d_misses, OFFSET hudNumBuffer + invoke DrawString8x8, 240, 70, OFFSET hudNumBuffer, 00FF6464h + + ; Dial Frame (Track: X=50..270, Y=102..134) + invoke DrawBoxBorder, 50, 102, 220, 32, 000F1114h, 00404855h, 2 + + ; Calibrated ticks + mov tx, 60 +skill_ticks_loop: + cmp tx, 260 + jge skill_draw_zones + invoke DrawBox, tx, 104, 1, 6, 00303845h + invoke DrawBox, tx, 126, 1, 6, 00303845h + add tx, 12 + jmp skill_ticks_loop + +skill_draw_zones: + ; Normal Success Zone (Green) + invoke DrawBoxBorder, skill3d_zone_start, 106, skill3d_zone_width, 24, 00155020h, 003CFF3Ch, 1 + + ; Great Zone (Gold) + invoke DrawBoxBorder, skill3d_great_start, 106, skill3d_great_width, 24, 00FFD700h, 00FFFF00h, 1 + + ; Pointer / Needle at skill3d_needle + mov eax, skill3d_needle + dec eax + invoke DrawBox, eax, 98, 3, 40, 00FFFFFFh + mov eax, skill3d_needle + sub eax, 2 + invoke DrawBox, eax, 96, 5, 2, 00FF3030h + invoke DrawBox, eax, 138, 5, 2, 00FF3030h + + ; Center prompts / outcome + cmp skill3d_state, 0 + jne @F + invoke DrawString8x8, 52, 150, OFFSET textSkillReadyMsg, 00FFD700h + invoke DrawString8x8, 76, 166, OFFSET textSkillPrompt, 00D0D8E0h + jmp skill_render_keys +@@: + cmp skill3d_state, 1 + jne @F + invoke DrawString8x8, 76, 150, OFFSET textSkillPrompt, 00FFFF00h + jmp skill_render_keys +@@: + cmp skill3d_state, 2 + jne @F + cmp skill3d_last_result, 2 + jne skill_normal_hit_text + invoke DrawString8x8, 36, 150, OFFSET textSkillGreatMsg, 00FFFF00h + jmp skill_render_keys +skill_normal_hit_text: + invoke DrawString8x8, 64, 150, OFFSET textSkillHitMsg, 003CFF3Ch + jmp skill_render_keys +@@: + cmp skill3d_state, 3 + jne @F + invoke DrawString8x8, 88, 150, OFFSET textSkillMissMsg, 00FF6464h + jmp skill_render_keys +@@: + cmp skill3d_state, 4 + jne @F + invoke DrawString8x8, 48, 150, OFFSET textSkillEscape, 003CFF3Ch + invoke FormatNumber, skill3d_win_amount, OFFSET hudNumBuffer + invoke DrawString8x8, 240, 150, OFFSET hudNumBuffer, 003CFF3Ch + invoke DrawString8x8, 64, 166, OFFSET textSkullsAgain, 00FFD700h + jmp skill_render_keys +@@: + invoke DrawString8x8, 44, 150, OFFSET textSkillLost, 00FF6464h + invoke DrawString8x8, 64, 166, OFFSET textSkullsAgain, 00FFD700h + +skill_render_keys: + mov kx, 16 + invoke DrawKeycap3D, kx, 192, OFFSET textSkillKeySpace, 1 + add kx, eax + + invoke DrawKeycap3D, kx, 192, OFFSET textSkillKeyBet, 0 + add kx, eax + + invoke DrawKeycap3D, kx, 192, OFFSET textKeyEsc, 0 + ret +RenderSkillGame ENDP + +HandlePlayerInput PROC uses ebx esi edi + local speed:DWORD + local nextX:DWORD + local nextY:DWORD + mov eax, deltaTime3D + imul eax, 200 + mov speed, eax + cmp keys3D[10h], 0 + je @F + shl speed, 1 +@@: + mov eax, deltaTime3D + shr eax, 2 + inc eax + cmp keys3D[41h], 0 + jne input_turn_left + cmp keys3D[25h], 0 + je input_right +input_turn_left: + sub playerAngle, eax +input_right: + cmp keys3D[44h], 0 + jne input_turn_right + cmp keys3D[27h], 0 + je input_forward +input_turn_right: + add playerAngle, eax +input_forward: + and playerAngle, 511 + call UpdateCamera3D + xor edi, edi + cmp keys3D[57h], 0 + jne input_go_forward + cmp keys3D[26h], 0 + je input_back +input_go_forward: + inc edi +input_back: + cmp keys3D[53h], 0 + jne input_go_back + cmp keys3D[28h], 0 + je input_move +input_go_back: + dec edi +input_move: + test edi, edi + jz input_action + imul edi, speed + mov eax, playerDirX + imul edi + shrd eax, edx, 16 + add eax, playerX + mov nextX, eax + mov eax, playerDirY + imul edi + shrd eax, edx, 16 + add eax, playerY + mov nextY, eax + invoke CanWalk3D, nextX, playerY + test eax, eax + jz @F + mov eax, nextX + mov playerX, eax +@@: + invoke CanWalk3D, playerX, nextY + test eax, eax + jz input_action + mov eax, nextY + mov playerY, eax +input_action: + invoke Pressed3D, 45h + test eax, eax + jz @F + call Trigger3DInteraction +@@: + ret +HandlePlayerInput ENDP + +CheckInteractions PROC uses ebx esi edi + local nearest:DWORD + mov nearest, 262144 + mov interactTargetId, 0 + mov interactPromptPtr, 0 + xor esi, esi +interaction_scan: + cmp esi, NUM_SPRITES + jge interaction_done + imul edi, esi, SIZEOF SpriteObject + cmp [casinoSprites+edi].interactId, 0 + je interaction_next + mov eax, [casinoSprites+edi].posX + sub eax, playerX + sar eax, 8 + mov ebx, eax + imul eax, eax + mov ecx, eax + mov eax, [casinoSprites+edi].posY + sub eax, playerY + sar eax, 8 + mov edx, eax + imul eax, eax + add ecx, eax + cmp ecx, nearest + jae interaction_next + ; Only target objects in front of the camera. + mov eax, playerDirX + sar eax, 8 + imul eax, ebx + mov ebx, playerDirY + sar ebx, 8 + imul ebx, edx + add eax, ebx + cmp eax, 18000 + jl interaction_next + mov nearest, ecx + mov eax, [casinoSprites+edi].interactId + mov interactTargetId, eax + mov eax, [casinoSprites+edi].promptPtr + mov interactPromptPtr, eax +interaction_next: + inc esi + jmp interaction_scan +interaction_done: + call CheckHallInteractions3D + ret +CheckInteractions ENDP + +; (Legacy console arcade bezel bridge removed) + +Trigger3DInteraction PROC + call TriggerHallInteraction3D + test eax, eax + jnz trigger_done + mov eax, interactTargetId + test eax, eax + jz trigger_done + + cmp eax, INTERACT_DANCER + jne check_target_bj + cmp bankroll, 100 + jl dancer_no_cash + sub bankroll, 100 + inc dancerLuckBuff + invoke CopyString3D, OFFSET textTips3D, OFFSET flashMessage + mov flashTimer, 100 + invoke PlayCasinoSound3D, OFFSET soundClick, 0, 1 + ret +dancer_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +check_target_bj: + cmp eax, INTERACT_BLACKJACK + jne check_target_poker + call InitNativeBlackjack3D + mov engineMode, MODE_BLACKJACK + ret + +check_target_poker: + cmp eax, INTERACT_POKER + jne check_target_durak + call InitNativePoker3D + test eax, eax + jz target_unported + mov engineMode, MODE_POKER + ret + +check_target_durak: + cmp eax, INTERACT_DURAK + jne check_target_slots777 + call InitNativeDurak3D + mov engineMode, MODE_DURAK + ret + +check_target_slots777: + cmp eax, INTERACT_SLOTS_777 + jne check_target_slots_clover + call InitNativeSlots3D + test eax,eax + jz target_unported + mov engineMode,MODE_SLOTS + ret + +check_target_slots_clover: + cmp eax, INTERACT_SLOTS_CLOVER + jne check_target_roulette + call InitNativeClover3D + test eax,eax + jz target_unported + mov engineMode,MODE_CLOVER + ret + +check_target_roulette: + cmp eax, INTERACT_ROULETTE + jne check_target_dice + call InitNativeWheel3D + mov engineMode, MODE_ROULETTE + ret + +check_target_dice: + cmp eax, INTERACT_DICE + jne check_target_skulls + call InitDiceGame + mov engineMode, MODE_DICE + ret + +check_target_skulls: + cmp eax, INTERACT_SKULLS + jne check_target_coin + call InitSkullsGame + mov engineMode, MODE_SKULLS + ret + +check_target_coin: + cmp eax, INTERACT_COIN + jne check_target_skill + call InitCoinGame + mov engineMode, MODE_COIN + ret + +check_target_skill: + cmp eax, INTERACT_SKILL_CHECK + jne check_target_buckshot + call InitSkillGame + mov engineMode, MODE_SKILL + ret + +check_target_buckshot: + cmp eax, INTERACT_BUCKSHOT + jne check_target_rr + call InitBuckshot3D + mov engineMode, MODE_BUCKSHOT + ret + +check_target_rr: + cmp eax, INTERACT_RUSSIAN_ROULETTE + jne check_target_online_rr + call InitRussianGame3D + test eax, eax + jz @F + mov engineMode, MODE_RUSSIAN +@@: + ret + +check_target_online_rr: + cmp eax, INTERACT_ONLINE_RR + jne check_target_umamusume + call BeginUnavailable3D + ret + +check_target_umamusume: + cmp eax, INTERACT_UMAMUSUME + jne check_target_hell + call BeginUnavailable3D + ret + +check_target_hell: + cmp eax, INTERACT_HELL_TOWER + jne check_target_shop + call BeginUnavailable3D + ret + +check_target_shop: + cmp eax, INTERACT_SHOP + jne check_target_atm + call BeginMerchant3D + ret + +check_target_atm: + cmp eax, INTERACT_ATM + jne check_target_terminal + mov engineMode, MODE_ATM + ret + +check_target_terminal: + cmp eax, INTERACT_TERMINAL + jne check_target_observer + call BeginUnavailable3D + ret + +check_target_observer: + cmp eax, INTERACT_OBSERVER + jne target_unported + call BeginUnavailable3D + ret + +target_unported: + call BeginUnavailable3D +trigger_done: + ret +Trigger3DInteraction ENDP + +; --- Engine Initialization --- +Init3DEngine PROC + local screenCX:DWORD + local screenCY:DWORD + local posX:DWORD + local posY:DWORD + local bytesRead:DWORD + + push ebx + push esi + push edi + + call LoadDisplaySettings3D + call Create3DWindow + test eax, eax + jz init_failed + call LoadTextures3D + test eax, eax + jz init_failed + + call InitializeCasinoSprites3D + + ; Initialize raycasting worker thread and sync events + invoke CreateEventA, 0, 0, 0, 0 + mov hRaycastStartEvent, eax + invoke CreateEventA, 0, 0, 0, 0 + mov hRaycastDoneEvent, eax + mov bRaycastQuit, 0 + invoke CreateThread, 0, 65536, OFFSET RaycastWorkerProc, 0, 0, ADDR raycastThreadId + mov hRaycastThread, eax + + call InitHall3D + call BeginStartup3D + call RenderStartup3D + invoke ShowWindow, h3DWnd, SW_SHOW + invoke UpdateWindow, h3DWnd + invoke SetForegroundWindow, h3DWnd + mov eax, 1 + jmp init_return +init_failed: + xor eax, eax +init_return: + pop edi + pop esi + pop ebx + ret +Init3DEngine ENDP + +InitializeCasinoSprites3D PROC +init_sprites_table: + ; Sprite 0: VIP Dancer 1 (Stage Left) + mov casinoSprites[0*SIZEOF SpriteObject].posX, (13 * FP_1 + FP_HALF) + mov casinoSprites[0*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[0*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[0*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[0*SIZEOF SpriteObject].interactId, INTERACT_DANCER + mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 1: VIP Dancer 2 (Center Stage Star) + mov casinoSprites[1*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].posY, (3 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[1*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[1*SIZEOF SpriteObject].interactId, INTERACT_DANCER + mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 2: VIP Dancer 3 (Stage Right) + mov casinoSprites[2*SIZEOF SpriteObject].posX, (19 * FP_1 + FP_HALF) + mov casinoSprites[2*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[2*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[2*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[2*SIZEOF SpriteObject].interactId, INTERACT_DANCER + mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 3: VIP Blackjack (Front Center Left) + mov casinoSprites[3*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF) + mov casinoSprites[3*SIZEOF SpriteObject].posY, (8 * FP_1) + mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[3*SIZEOF SpriteObject].interactId, INTERACT_BLACKJACK + mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack + + ; Sprite 4: European Roulette Table (Front Center) + mov casinoSprites[4*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[4*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 31 + mov casinoSprites[4*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[4*SIZEOF SpriteObject].interactId, INTERACT_ROULETTE + mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptCasinoRoulette + + ; Sprite 5: Texas Hold'em Poker Table (Front Center Right) + mov casinoSprites[5*SIZEOF SpriteObject].posX, (20 * FP_1 + FP_HALF) + mov casinoSprites[5*SIZEOF SpriteObject].posY, (8 * FP_1) + mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[5*SIZEOF SpriteObject].interactId, INTERACT_POKER + mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker + + ; Sprite 6: Podkidnoy Durak Card Table + mov casinoSprites[6*SIZEOF SpriteObject].posX, (24 * FP_1 + FP_HALF) + mov casinoSprites[6*SIZEOF SpriteObject].posY, (8 * FP_1) + mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[6*SIZEOF SpriteObject].interactId, INTERACT_DURAK + mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptDurak + + ; Sprite 7: Classic Slots 777 (West Arcade 1) + mov casinoSprites[7*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].posY, (8 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[7*SIZEOF SpriteObject].interactId, INTERACT_SLOTS_777 + mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptClassicSlot + + ; Sprite 8: CloverPit Slots 5x3 (West Arcade 2) + mov casinoSprites[8*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].posY, (11 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[8*SIZEOF SpriteObject].interactId, INTERACT_SLOTS_CLOVER + mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptCloverSlot + + ; Sprite 9: Craps & Dice Table (West Arcade 3) + mov casinoSprites[9*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].posY, (14 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[9*SIZEOF SpriteObject].interactId, INTERACT_DICE + mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptDice + + ; Sprite 10: Skulls & Cups Table + mov casinoSprites[10*SIZEOF SpriteObject].posX, (10 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].posY, (15 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[10*SIZEOF SpriteObject].interactId, INTERACT_SKULLS + mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptSkulls + + ; Sprite 11: Coin Toss Stand + mov casinoSprites[11*SIZEOF SpriteObject].posX, (14 * FP_1) + mov casinoSprites[11*SIZEOF SpriteObject].posY, (15 * FP_1) + mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[11*SIZEOF SpriteObject].interactId, INTERACT_COIN + mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptCoin + + ; Sprite 12: Skill Check Stand + mov casinoSprites[12*SIZEOF SpriteObject].posX, (18 * FP_1) + mov casinoSprites[12*SIZEOF SpriteObject].posY, (15 * FP_1) + mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[12*SIZEOF SpriteObject].interactId, INTERACT_SKILL_CHECK + mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptSkillCheck + + ; Sprite 13: Umamusume Derby Lounge + mov casinoSprites[13*SIZEOF SpriteObject].posX, (22 * FP_1) + mov casinoSprites[13*SIZEOF SpriteObject].posY, (15 * FP_1) + mov casinoSprites[13*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[13*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[13*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[13*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[13*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[13*SIZEOF SpriteObject].interactId, INTERACT_UMAMUSUME + mov casinoSprites[13*SIZEOF SpriteObject].promptPtr, OFFSET promptUmamusume + + ; Sprite 14: Boutique & Shop (East Wing) + mov casinoSprites[14*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[14*SIZEOF SpriteObject].posY, (12 * FP_1) + mov casinoSprites[14*SIZEOF SpriteObject].baseTexId, 32 + mov casinoSprites[14*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[14*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[14*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[14*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[14*SIZEOF SpriteObject].interactId, INTERACT_SHOP + mov casinoSprites[14*SIZEOF SpriteObject].promptPtr, OFFSET promptShop + + ; Sprite 15: Cashier & ATM (East Wing) + mov casinoSprites[15*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[15*SIZEOF SpriteObject].posY, (16 * FP_1) + mov casinoSprites[15*SIZEOF SpriteObject].baseTexId, 33 + mov casinoSprites[15*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[15*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[15*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[15*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[15*SIZEOF SpriteObject].interactId, INTERACT_ATM + mov casinoSprites[15*SIZEOF SpriteObject].promptPtr, OFFSET promptATM + + ; Sprite 16: Player Terminal (East Wing) + mov casinoSprites[16*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[16*SIZEOF SpriteObject].posY, (20 * FP_1) + mov casinoSprites[16*SIZEOF SpriteObject].baseTexId, 33 + mov casinoSprites[16*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[16*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[16*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[16*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[16*SIZEOF SpriteObject].interactId, INTERACT_TERMINAL + mov casinoSprites[16*SIZEOF SpriteObject].promptPtr, OFFSET promptPlayerTerminal + + ; Sprite 17: Buckshot Roulette (South-West) + mov casinoSprites[17*SIZEOF SpriteObject].posX, (12 * FP_1) + mov casinoSprites[17*SIZEOF SpriteObject].posY, (22 * FP_1) + mov casinoSprites[17*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[17*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[17*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[17*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[17*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[17*SIZEOF SpriteObject].interactId, INTERACT_BUCKSHOT + mov casinoSprites[17*SIZEOF SpriteObject].promptPtr, OFFSET promptBuckshot + + ; Sprite 18: Observer Lounge (South-East) + mov casinoSprites[18*SIZEOF SpriteObject].posX, (20 * FP_1) + mov casinoSprites[18*SIZEOF SpriteObject].posY, (22 * FP_1) + mov casinoSprites[18*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[18*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[18*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[18*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[18*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[18*SIZEOF SpriteObject].interactId, INTERACT_OBSERVER + mov casinoSprites[18*SIZEOF SpriteObject].promptPtr, OFFSET promptObserver + + ; Sprite 19: Russian Roulette (Backroom Entrance) + mov casinoSprites[19*SIZEOF SpriteObject].posX, (16 * FP_1) + mov casinoSprites[19*SIZEOF SpriteObject].posY, (25 * FP_1) + mov casinoSprites[19*SIZEOF SpriteObject].baseTexId, 34 + mov casinoSprites[19*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[19*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[19*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[19*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[19*SIZEOF SpriteObject].interactId, INTERACT_RUSSIAN_ROULETTE + mov casinoSprites[19*SIZEOF SpriteObject].promptPtr, OFFSET promptRussianRoulette + + ; Sprite 20: Online Russian Roulette (Backroom Secret Terminal) + mov casinoSprites[20*SIZEOF SpriteObject].posX, (18 * FP_1) + mov casinoSprites[20*SIZEOF SpriteObject].posY, (25 * FP_1) + mov casinoSprites[20*SIZEOF SpriteObject].baseTexId, 34 + mov casinoSprites[20*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[20*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[20*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[20*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[20*SIZEOF SpriteObject].interactId, INTERACT_ONLINE_RR + mov casinoSprites[20*SIZEOF SpriteObject].promptPtr, OFFSET promptOnlineRR + + ; Sprite 21: Hell Tower Portal (South Wing Deep End) + mov casinoSprites[21*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[21*SIZEOF SpriteObject].posY, (29 * FP_1) + mov casinoSprites[21*SIZEOF SpriteObject].baseTexId, 4 + mov casinoSprites[21*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[21*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[21*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[21*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[21*SIZEOF SpriteObject].interactId, INTERACT_HELL_TOWER + mov casinoSprites[21*SIZEOF SpriteObject].promptPtr, OFFSET promptHellTower + ret +InitializeCasinoSprites3D ENDP + +include src_graphics\audio_code.inc +include src_graphics\dice_animation.inc +include src_graphics\russian_roulette.inc +include src_graphics\startup_code.inc +include src_graphics\card_table_assets.inc +include src_graphics\poker_evaluator.inc +include src_graphics\native_poker.inc +include src_graphics\native_blackjack.inc +include src_graphics\native_durak.inc +include src_graphics\card_tables_render.inc +include src_graphics\durak_render.inc +include src_graphics\card_table_input.inc +include src_graphics\scene_animation.inc +include src_graphics\native_slots.inc +include src_graphics\native_clover.inc +include src_graphics\native_coin.inc +include src_graphics\graphic_profiles.inc +include src_graphics\city_arrival_scene.inc +include src_graphics\arrival_scene.inc +include src_graphics\merchant_scene.inc +include src_graphics\hall_scene.inc +include src_graphics\npc_mind.inc +include src_graphics\npc_life.inc +include src_graphics\npc_contracts.inc +include src_graphics\native_wheel.inc +include src_graphics\billiards.inc +include src_graphics\buckshot.inc +include src_graphics\russian_table.inc +include src_graphics\unavailable.inc + +; --- Main Loop of the 3D Casino Engine --- +StartCasino3D PROC uses ebx esi edi + call Init3DEngine + test eax, eax + jz engine_shutdown + invoke GetTickCount + mov rngSeed3D, eax + mov previousTick3D, eax +engine_loop: + invoke PeekMessageA, OFFSET msg3D, 0, 0, 0, PM_REMOVE + test eax, eax + jz dispatch_frame + cmp msg3D.message, WM_QUIT + je engine_shutdown + invoke TranslateMessage, OFFSET msg3D + invoke DispatchMessageA, OFFSET msg3D + jmp engine_loop + +dispatch_frame: + invoke GetTickCount + mov frameStart3D, eax + sub eax, previousTick3D + cmp eax, 50 + jbe @F + mov eax, 50 +@@: + mov deltaTime3D, eax + mov eax, frameStart3D + mov previousTick3D, eax + invoke GetForegroundWindow + cmp eax, h3DWnd + jne engine_idle + invoke IsIconic, h3DWnd + test eax, eax + jnz engine_idle + invoke Pressed3D, 7Ah + test eax, eax + jz @F + call ToggleFullscreen3D +@@: + invoke Pressed3D, 1Bh + test eax, eax + jz engine_tick + cmp engineMode, MODE_INTRO + jne @F + call FinishStartup3D + jmp engine_tick +@@: + cmp engineMode, MODE_ARRIVAL + jne @F + call ArrivalEscape3D + jmp engine_tick +@@: + cmp engineMode, MODE_WALK + jne leave_table + xor paused3D, 1 + jmp engine_tick +leave_table: + call CardTableEscape3D + test eax, eax + jnz engine_tick + call TableBusy3D + test eax, eax + jz leave_idle_table + xor paused3D, 1 + call ClearKeys3D + jmp engine_tick +leave_idle_table: + mov paused3D, 0 + mov engineMode, MODE_WALK + call ClearKeys3D + invoke PlayCasinoSound3D, 0, 0, 0 +engine_tick: + cmp paused3D, 0 + jne draw_pause + mov eax, deltaTime3D + add animationClock3D, eax + cmp engineMode, MODE_INTRO + jne check_arrival_mode + call HandleStartupInput3D + cmp engineMode, MODE_INTRO + jne check_arrival_mode + call RenderStartup3D + jmp present_frame +check_arrival_mode: + cmp engineMode, MODE_ARRIVAL + jne check_walk_mode + call HandleArrival3D + cmp engineMode, MODE_WALK + je check_walk_mode + call RenderArrival3D + jmp present_frame +check_walk_mode: + cmp engineMode, MODE_WALK + jne check_slots_mode + call UpdateHall3D + call UpdateCamera3D + call CheckInteractions + call HandlePlayerInput + call UpdateCamera3D + call RenderCeilingAndFloor + call RenderWalls + call PrepareCityDepth3D + call RenderSprites + call RenderHall3D + call RenderHUD + call RenderMinimap + jmp present_frame +check_slots_mode: + cmp engineMode,MODE_CLOVER + jne @F + call HandleNativeClover3D + call RenderNativeClover3D + jmp present_frame +@@: + cmp engineMode,MODE_NPC_DIALOG + jne @F + call HandleNpcDialog3D + call RenderNpcDialog3D + jmp present_frame +@@: + cmp engineMode, MODE_UNAVAILABLE + jne @F + call HandleUnavailable3D + call RenderUnavailable3D + jmp present_frame +@@: + cmp engineMode, MODE_POOL + jne @F + call HandlePool3D + call RenderPool3D + jmp present_frame +@@: + cmp engineMode, MODE_BAR + jne @F + call HandleBar3D + call RenderBar3D + jmp present_frame +@@: + cmp engineMode, MODE_STAIRS + jne @F + call HandleStairs3D + call RenderStairs3D + jmp present_frame +@@: + cmp engineMode, MODE_SLOTS + jne check_bj_mode + call HandleNativeSlots3D + cmp engineMode,MODE_WALK + je check_walk_mode + call RenderNativeSlots3D + jmp present_frame +check_bj_mode: + cmp engineMode, MODE_BLACKJACK + jne check_poker_mode + call HandleNativeBlackjack3D + cmp engineMode, MODE_WALK + je check_walk_mode + call RenderNativeBlackjack3D + jmp present_frame +check_poker_mode: + cmp engineMode, MODE_POKER + jne check_durak_mode + call HandleNativePoker3D + cmp engineMode, MODE_WALK + je check_walk_mode + call RenderNativePoker3D + jmp present_frame +check_durak_mode: + cmp engineMode, MODE_DURAK + jne check_roul_mode + call HandleNativeDurak3D + cmp engineMode, MODE_WALK + je check_walk_mode + call RenderNativeDurak3D + jmp present_frame +check_roul_mode: + cmp engineMode, MODE_ROULETTE + jne check_shop_mode + call HandleNativeWheel3D + call RenderNativeWheel3D + jmp present_frame +check_shop_mode: + cmp engineMode, MODE_SHOP + jne check_atm_mode + call HandleMerchant3D + call RenderMerchant3D + jmp present_frame +check_atm_mode: + cmp engineMode, MODE_ATM + jne check_coin_mode + call HandleATMInput + call RenderATMGame + jmp present_frame +check_coin_mode: + cmp engineMode, MODE_COIN + jne check_dice_mode + call HandleCoinInput + call RenderCoinGame + jmp present_frame +check_dice_mode: + cmp engineMode, MODE_DICE + jne check_skulls_mode + call HandleDiceInput + call RenderDiceGame + jmp present_frame +check_skulls_mode: + cmp engineMode, MODE_SKULLS + jne check_skill_mode + call HandleSkullsInput + call RenderSkullsGame + jmp present_frame +check_skill_mode: + cmp engineMode, MODE_SKILL + jne check_buckshot_mode + call HandleSkillInput + call RenderSkillGame + jmp present_frame +check_buckshot_mode: + cmp engineMode, MODE_BUCKSHOT + jne check_russian_mode + call HandleBuckshot3D + call RenderBuckshot3D + jmp present_frame +check_russian_mode: + cmp engineMode, MODE_RUSSIAN + jne present_frame + call HandleRussianInput3D + call RenderRussianGame3D + jmp present_frame +draw_pause: + invoke DrawBoxBorder, 28, 36, 264, 168, 00151C21h, 00D8BC6Ah, 2 + invoke DrawString8x8, 44, 48, OFFSET textPause3D, 00FFFFFFh + cmp displayFill3D, 0 + je @F + invoke DrawString8x8, 44, 72, OFFSET textDisplayFill3D, 00D8BC6Ah + jmp pause_draw_quality +@@: + invoke DrawString8x8, 44, 72, OFFSET textDisplayFit3D, 00D8BC6Ah +pause_draw_quality: + invoke DrawString8x8, 44, 92, OFFSET textLowSpec3D, 00D8BC6Ah + mov eax, settingsLowSpec + cmp eax, 0 + jne @F + mov edx, OFFSET textLowSpecOff3D + jmp pause_draw_quality_value +@@: + cmp eax, 1 + jne @F + mov edx, OFFSET textLowSpecEco3D + jmp pause_draw_quality_value +@@: + mov edx, OFFSET textLowSpecQuiet3D +pause_draw_quality_value: + invoke DrawString8x8, 208, 92, edx, 00FFFFFFh + invoke DrawString8x8, 44, 112, OFFSET textVolumeKeys3D, 00D8BC6Ah + invoke DrawString8x8, 44, 130, OFFSET textSoundLevel3D, 00BBBBBBh + invoke FormatNumber, settingsVolume, OFFSET hudNumBuffer + invoke DrawString8x8, 124, 130, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 44, 150, OFFSET textFullscreenKey3D, 00A0A0A0h + invoke DrawString8x8, 44, 170, OFFSET textResume3D, 00D8BC6Ah + invoke DrawString8x8, 44, 188, OFFSET textQuit3D, 00BBBBBBh + invoke Pressed3D, 31h + test eax, eax + jz @F + xor displayFill3D, 1 + call SaveDisplaySettings3D +@@: + invoke Pressed3D, 32h + test eax, eax + jz @F + inc settingsLowSpec + cmp settingsLowSpec, 3 + jb pause_low_spec_saved + mov settingsLowSpec, 0 +pause_low_spec_saved: + call SaveProgress3D +@@: + invoke Pressed3D, 0BBh + test eax, eax + jz @F + cmp settingsVolume, 10 + jae @F + inc settingsVolume + call ApplySoundVolume + call SaveProgress3D +@@: + invoke Pressed3D, 0BDh + test eax, eax + jz @F + mov eax, settingsVolume + test eax, eax + jz @F + dec settingsVolume + call ApplySoundVolume + call SaveProgress3D +@@: + invoke Pressed3D, 51h + test eax, eax + jz @F + call SaveProgress3D + jmp engine_shutdown +present_frame: + mov eax, engineMode + cmp eax, lastPersistMode3D + je @F + cmp eax, MODE_WALK + jne @F + call SaveProgress3D +@@: + mov eax, engineMode + mov lastPersistMode3D, eax + call Present3D + mov mouseClick3D, 0 + lea edi, pressedKeys3D + xor eax, eax + mov ecx, 64 + rep stosd + invoke GetTickCount + sub eax, frameStart3D + mov ecx, 16 + cmp settingsLowSpec, 1 + jne @F + mov ecx, 24 +@@: + cmp settingsLowSpec, 2 + jne @F + mov ecx, 33 +@@: + cmp eax, ecx + jae engine_loop + sub ecx, eax + invoke Sleep, ecx + jmp engine_loop +engine_idle: + invoke Sleep, 50 + jmp engine_loop +engine_shutdown: + cmp hRaycastThread, 0 + je @F + mov bRaycastQuit, 1 + invoke SetEvent, hRaycastStartEvent + invoke WaitForSingleObject, hRaycastThread, 1000 + invoke CloseHandle, hRaycastThread + invoke CloseHandle, hRaycastStartEvent + invoke CloseHandle, hRaycastDoneEvent + mov hRaycastThread, 0 + mov hRaycastStartEvent, 0 + mov hRaycastDoneEvent, 0 +@@: + call SaveProgress3D + invoke PlayCasinoSound3D, 0, 0, 0 + call FreeRussianAssets3D + call FreeStartupAssets3D + call FreeCardTableAssets3D + call FreeBuckshotAssets3D + call FreeNativeSlots3D + call FreeNativeClover3D + call FreePyramidAssets3D + call FreeArrivalAssets3D + cmp h3DDC, 0 + je @F + invoke ReleaseDC, h3DWnd, h3DDC + mov h3DDC, 0 +@@: + cmp h3DWnd, 0 + je @F + invoke DestroyWindow, h3DWnd + mov h3DWnd, 0 +@@: + ret +StartCasino3D ENDP + +include src_graphics\platform_code.inc + +IFDEF CASINO_ACTION_TEST +include tools\tests\casino_actions_test.inc +ENDIF + diff --git a/poker.asm b/poker.asm index 8479877..19b6ac6 100644 --- a/poker.asm +++ b/poker.asm @@ -102,7 +102,6 @@ closesocket PROTO :DWORD inet_addr PROTO :DWORD WSAGetLastError PROTO MoveCursor PROTO :DWORD, :DWORD -PrintSlotSymbol PROTO :DWORD RandomRange PROTO :DWORD PrintUInt PROTO :DWORD UnlockAchievement PROTO :DWORD, :DWORD @@ -163,7 +162,7 @@ slotComboCount dd 0 slotJackpotHit dd 0 slotComboNames dd 32 dup(0) slotComboMults dd 32 dup(0) -slotComboMasks dd 32 dup(0) +slotComboMasks dd 32 dup(0) slotGrid dd 15 dup(0) slotVisible dd 0 ; === Îáùàÿ êàðòî÷íàÿ ìîäåëü: ðóêè èãðîêà, AI è êàðòû íà ñòîëå === @@ -3895,140 +3894,7 @@ tower_music_play: ret PlayTowerRandomMusic ENDP -; --- PrintSlotCell: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSlotCell PROC uses eax ebx ecx, value:DWORD - invoke PrintStr, OFFSET slotWall - mov eax, slotCurrentCell - mov ebx, 1 - mov ecx, eax - shl ebx, cl - mov eax, slotWinMask - test eax, ebx - je slot_cell_normal - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET slotWinLeft - invoke PrintSlotSymbol, value - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET slotWinRight - call ResetColor - ret -slot_cell_normal: - invoke PrintStr, OFFSET slotPadOne - invoke PrintSlotSymbol, value - invoke PrintStr, OFFSET slotPadOne - ret -PrintSlotCell ENDP -; --- PrintSlotBlankCell: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSlotBlankCell PROC - invoke PrintStr, OFFSET slotWall - invoke PrintStr, OFFSET slotCellBlank - ret -PrintSlotBlankCell ENDP - -; --- PrintSlotPaddingRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSlotPaddingRow PROC - call PrintSlotBlankCell - call PrintSlotBlankCell - call PrintSlotBlankCell - call PrintSlotBlankCell - call PrintSlotBlankCell - invoke PrintStr, OFFSET slotWall - invoke PrintStr, OFFSET nl - ret -PrintSlotPaddingRow ENDP -; --- PrintSlotWindow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSlotWindow PROC uses eax ebx - call ClearView - invoke PrintTitleColor, OFFSET slotTitle - invoke PrintStr, OFFSET slotBorder - - mov rowIndex, 0 -slot_window_row_loop: - cmp rowIndex, 3 - jae slot_window_done - call PrintSlotPaddingRow - mov ebx, rowIndex - imul ebx, 5 - - cmp slotVisible, 1 - jb slot_blank_col1 - mov slotCurrentCell, ebx - invoke PrintSlotCell, slotGrid[ebx * 4] - jmp slot_col2 -slot_blank_col1: - call PrintSlotBlankCell - -slot_col2: - cmp slotVisible, 2 - jb slot_blank_col2 - mov eax, ebx - inc eax - mov slotCurrentCell, eax - invoke PrintSlotCell, slotGrid[eax * 4] - jmp slot_col3 -slot_blank_col2: - call PrintSlotBlankCell - -slot_col3: - cmp slotVisible, 3 - jb slot_blank_col3 - mov eax, ebx - add eax, 2 - mov slotCurrentCell, eax - invoke PrintSlotCell, slotGrid[eax * 4] - jmp slot_col4 -slot_blank_col3: - call PrintSlotBlankCell - -slot_col4: - cmp slotVisible, 4 - jb slot_blank_col4 - mov eax, ebx - add eax, 3 - mov slotCurrentCell, eax - invoke PrintSlotCell, slotGrid[eax * 4] - jmp slot_col5 -slot_blank_col4: - call PrintSlotBlankCell - -slot_col5: - cmp slotVisible, 5 - jb slot_blank_col5 - mov eax, ebx - add eax, 4 - mov slotCurrentCell, eax - invoke PrintSlotCell, slotGrid[eax * 4] - jmp slot_row_end -slot_blank_col5: - call PrintSlotBlankCell - -slot_row_end: - invoke PrintStr, OFFSET slotWall - invoke PrintStr, OFFSET nl - call PrintSlotPaddingRow - invoke PrintStr, OFFSET slotBorder - inc rowIndex - jmp slot_window_row_loop - -slot_window_done: - ret -PrintSlotWindow ENDP - -; --- FillSlotColumn: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- -FillSlotColumn PROC uses eax ebx, column:DWORD - mov ebx, column - invoke RandomRange, 7 - mov slotGrid[ebx * 4], eax - mov ebx, column - add ebx, 5 - invoke RandomRange, 7 - mov slotGrid[ebx * 4], eax - mov ebx, column - add ebx, 10 - invoke RandomRange, 7 - mov slotGrid[ebx * 4], eax - ret -FillSlotColumn ENDP +; (Legacy terminal Clover slot renderers removed) ; --- PrintUInt: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- PrintUInt PROC uses eax ebx ecx edx edi, value:DWORD LOCAL buffer[12]:BYTE @@ -8611,374 +8477,42 @@ ai_exchange_done: PokerAIExchange ENDP ; --- AddPlayerBJ: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -AddPlayerBJ PROC uses eax ebx edx - call DrawCard - mov ebx, eax - invoke PrintStr, OFFSET yourCardText - invoke PrintCard, ebx - invoke CardValueBJ, ebx - add playerTotal, eax - cmp eax, 11 - jne no_player_ace - inc playerAces -no_player_ace: - inc playerCards - call AdjustPlayerAces - ret -AddPlayerBJ ENDP -; --- AddDealerBJ: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- -AddDealerBJ PROC uses eax ebx - call DrawCard - mov ebx, eax - invoke PrintStr, OFFSET dealerCardText - invoke PrintCard, ebx - invoke CardValueBJ, ebx - add dealerTotal, eax - cmp eax, 11 - jne no_dealer_ace - inc dealerAces -no_dealer_ace: - call AdjustDealerAces +; --- TournamentPlayStage: Fast resolution of ported game stages in Hell Tower --- +TournamentPlayStage PROC uses eax + invoke RandomRange, 100 + cmp eax, 25 + ja tourney_stage_win + mov lastGameResult, 2 ret -AddDealerBJ ENDP +tourney_stage_win: + mov lastGameResult, 1 + ret +TournamentPlayStage ENDP -; --- CompareTotals: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- -CompareTotals PROC - call PrintScore - cmp playerTotal, 21 - ja player_lost - cmp dealerTotal, 21 - ja dealer_lost - mov eax, playerTotal - cmp eax, dealerTotal - ja player_won - jb player_lost - call PrintDrawEvent - ret -player_won: - call PrintWinEvent - ret -player_lost: - call PrintLoseEvent - ret -dealer_lost: - invoke PrintStr, OFFSET dealerBustText - ret -CompareTotals ENDP - -; --- Game21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- Game21 PROC -start_21: - call ClearView - invoke PrintTitleColor, OFFSET twentyOneTitle - call PromptBet - call ResetDeck - call Reset21Hands - - call DrawPlayer21Hand - call DrawPlayer21Hand - call DrawAI21Hand - call DrawAI21Hand - -player_21_loop: - call ClearView - invoke PrintTitleColor, OFFSET twentyOneTitle - call ShowAllCards21 - - cmp playerTotal, 21 - ja player_21_bust - cmp playerTotal, 21 - je ai_21_turn - - invoke PrintStr, OFFSET hitText - invoke PrintStr, OFFSET cheatMoveText - call ReadKey - cmp al, '1' - je hit_21 - cmp al, 'y' - je hit_21 - cmp al, 'Y' - je hit_21 - cmp al, '3' - je cheat_peek_21_action - cmp al, '4' - je cheat_swap_21_action - jmp ai_21_turn -cheat_peek_21_action: - call CheatPeek21 - jmp player_21_loop -cheat_swap_21_action: - call CheatSwap21 - jmp player_21_loop -hit_21: - cmp playerCnt21, 10 - jae ai_21_turn - call DrawPlayer21Hand - jmp player_21_loop - -player_21_bust: - invoke PrintStr, OFFSET bustText - call PayLose - jmp ask_21_again - -ai_21_turn: -ai_21_cycle: - call ClearView - invoke PrintTitleColor, OFFSET twentyOneTitle - call ShowAllCards21 - - cmp playerTotal, 21 - ja finish_21 - cmp dealerTotal, 21 - je finish_21 - cmp aiDifficulty, 1 - je ai_21_easy - cmp aiDifficulty, 2 - je ai_21_normal - cmp dealerTotal, 12 - jb ai_21_must_hit - - mov eax, dealerTotal - cmp eax, playerTotal - jae finish_21 - - call CountDanger21 - mov eax, dangerLvl21 - mov ebx, 2 - mul ebx - cmp eax, cardsLeft21 - ja finish_21 - jmp ai_21_must_hit - -ai_21_easy: - cmp dealerTotal, 16 - jb ai_21_must_hit - jmp finish_21 - -ai_21_normal: - cmp dealerTotal, 17 - jb ai_21_must_hit - jmp finish_21 - -ai_21_must_hit: - cmp aiCnt21, 10 - jae finish_21 - invoke PrintStr, OFFSET aiMoveText - invoke Sleep, 650 - call DrawAI21Hand - call CalcAIScore21 - cmp dealerTotal, 21 - ja finish_21 - jmp ai_21_cycle - -finish_21: - call AnimateReveal21 - call FinalScreen21 -ask_21_again: - cmp tournamentMode, 1 - je game21_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je start_21 - cmp al, 'Y' - je start_21 -game21_tournament_return: + cmp tournamentStage, 0 + jne tourney_bj + call StartCasino3D + ret +tourney_bj: + call TournamentPlayStage ret Game21 ENDP ; --- GamePoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- GamePoker PROC -poker_choose_mode: - call ClearView - invoke PrintTitleColor, OFFSET pokerTitle - invoke PrintStr, OFFSET pokerModeMenuText - call ReadKey - cmp al, '1' - je start_poker - cmp al, '2' - je poker_launch_multitable - cmp al, '0' - je poker_mode_exit - jmp poker_choose_mode - -poker_launch_multitable: - call GameMultiPoker + cmp tournamentStage, 0 + jne tourney_poker + call StartCasino3D ret - -poker_mode_exit: - ret - -start_poker: - call ClearView - invoke PrintTitleColor, OFFSET pokerTitle - call PromptBet - call ResetDeck - call ResetPokerHands - call DealPokerHands - call HardPokerPlayerExchange - call HardPokerAIExchange - -poker_stage_loop: - call ClearView - invoke PrintTitleColor, OFFSET pokerTitle - call ShowPokerTable - call ShowPokerHint - call ShowPokerMoney - cmp communityCnt, 5 - jae poker_showdown - invoke PrintStr, OFFSET pokerDecisionText - invoke PrintStr, OFFSET cheatMoveText - call ReadKey - cmp al, '1' - je poker_play - cmp al, 'y' - je poker_play - cmp al, 'Y' - je poker_play - cmp al, '2' - je poker_raise - cmp al, 'r' - je poker_raise - cmp al, 'R' - je poker_raise - cmp al, '3' - je poker_cheat_peek - cmp al, '4' - je poker_cheat_swap - invoke PrintStr, OFFSET pokerFoldText - call PayLose - jmp ask_poker_again - -poker_cheat_peek: - call CheatPeekPoker - jmp poker_stage_loop -poker_cheat_swap: - call CheatSwapPoker - jmp poker_stage_loop - -poker_raise: - call PromptPokerRaise - cmp eax, 0 - je poker_stage_loop - invoke UnlockAchievement, 200h, OFFSET achPokerRaiseName - invoke PrintStr, OFFSET aiThinkText - invoke Sleep, 700 - call PokerAICallRaise - cmp eax, 0 - jne poker_raise_called - invoke PrintStr, OFFSET pokerAIFoldRaiseText - invoke UnlockAchievement, 400h, OFFSET achPokerBluffName - call PayWin - jmp ask_poker_again -poker_raise_called: - invoke PrintStr, OFFSET pokerAICallRaiseText - invoke Sleep, 700 - jmp poker_next_stage - -poker_play: - invoke PrintStr, OFFSET aiThinkText - invoke Sleep, 700 - call PokerAIDecide - cmp eax, 0 - jne poker_ai_plays - invoke PrintStr, OFFSET pokerAIFoldText - call PayWin - jmp ask_poker_again - -poker_ai_plays: - call PokerAIRaiseMaybe - cmp eax, 0 - je poker_next_stage - invoke PrintStr, OFFSET pokerAIRaiseText - invoke PrintUInt, pokerAIRaiseAmount - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET pokerCallRaiseText - call ReadKey - cmp al, '1' - je poker_call_ai_raise - cmp al, 'y' - je poker_call_ai_raise - cmp al, 'Y' - je poker_call_ai_raise - invoke PrintStr, OFFSET pokerFoldToRaiseText - call PayLose - jmp ask_poker_again -poker_call_ai_raise: - mov eax, currentBet - add eax, pokerAIRaiseAmount - cmp eax, bankroll - jbe poker_call_ai_raise_ok - invoke PrintStr, OFFSET tooBigBetText - invoke PrintStr, OFFSET pokerFoldToRaiseText - call PayLose - jmp ask_poker_again -poker_call_ai_raise_ok: - mov currentBet, eax - invoke PrintStr, OFFSET pokerPlayerCallText - invoke PrintUInt, currentBet - invoke PrintStr, OFFSET nl - invoke Sleep, 700 -poker_next_stage: - cmp communityCnt, 5 - jae poker_showdown - invoke PrintStr, OFFSET pokerNextCardText - invoke Sleep, 900 - inc communityCnt - jmp poker_stage_loop - -poker_showdown: - call AnimateRevealPoker - call ShowPokerResult - -ask_poker_again: - cmp tournamentMode, 1 - je poker_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je start_poker - cmp al, 'Y' - je start_poker -poker_tournament_return: +tourney_poker: + call TournamentPlayStage ret GamePoker ENDP ; --- PrintSlotSymbol: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSlotSymbol PROC uses eax, value:DWORD - mov eax, value - cmp eax, 0 - je slot_symbol_green - cmp eax, 1 - je slot_symbol_yellow - cmp eax, 2 - je slot_symbol_red - cmp eax, 3 - je slot_symbol_yellow - cmp eax, 4 - je slot_symbol_cyan - cmp eax, 5 - je slot_symbol_yellow - invoke SetColor, COLOR_BAD - jmp slot_symbol_print -slot_symbol_green: - invoke SetColor, COLOR_MONEY - jmp slot_symbol_print -slot_symbol_yellow: - invoke SetColor, COLOR_WARN - jmp slot_symbol_print -slot_symbol_red: - invoke SetColor, COLOR_BAD - jmp slot_symbol_print -slot_symbol_cyan: - invoke SetColor, COLOR_TITLE -slot_symbol_print: - mov eax, value - invoke PrintStr, slotSymbols[eax * 4] - call ResetColor - ret -PrintSlotSymbol ENDP +; (Legacy terminal PrintSlotSymbol removed) ; --- MoveCursor: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- MoveCursor PROC uses eax edx, xPos:DWORD, yPos:DWORD @@ -8992,347 +8526,13 @@ MoveCursor PROC uses eax edx, xPos:DWORD, yPos:DWORD MoveCursor ENDP ; --- PrintSkullAt: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSkullAt PROC uses eax, xPos:DWORD, yPos:DWORD - mov eax, yPos - invoke MoveCursor, xPos, eax - invoke PrintUtf8, OFFSET skullSeg1 - mov eax, yPos - inc eax - invoke MoveCursor, xPos, eax - invoke PrintUtf8, OFFSET skullSeg2 - mov eax, yPos - add eax, 2 - invoke MoveCursor, xPos, eax - invoke PrintUtf8, OFFSET skullSeg3 - mov eax, yPos - add eax, 3 - invoke MoveCursor, xPos, eax - invoke PrintUtf8, OFFSET skullSeg4 - mov eax, yPos - add eax, 4 - invoke MoveCursor, xPos, eax - invoke PrintUtf8, OFFSET skullSeg5 - mov eax, yPos - add eax, 5 - invoke MoveCursor, xPos, eax - invoke PrintUtf8, OFFSET skullSeg6 - mov eax, yPos - add eax, 6 - invoke MoveCursor, xPos, eax - invoke PrintUtf8, OFFSET skullSeg7 - mov eax, yPos - add eax, 7 - invoke MoveCursor, xPos, eax - invoke PrintUtf8, OFFSET skullSeg8 - ret -PrintSkullAt ENDP - -; --- ShowSkullSlideFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -ShowSkullSlideFrame PROC x1:DWORD, y1:DWORD, x2:DWORD, y2:DWORD, x3:DWORD, y3:DWORD - call ClearView - invoke PrintTitleColor, OFFSET skullsTitle - invoke PrintStr, OFFSET skullsShuffleText - invoke PrintSkullAt, x1, y1 - invoke PrintSkullAt, x2, y2 - invoke PrintSkullAt, x3, y3 - invoke Sleep, 220 - ret -ShowSkullSlideFrame ENDP - -; --- AnimateSkullSwap12: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- -AnimateSkullSwap12 PROC - invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 - invoke ShowSkullSlideFrame, 4, 6, 14, 4, 36, 5 - invoke ShowSkullSlideFrame, 8, 7, 10, 3, 36, 5 - invoke ShowSkullSlideFrame, 14, 6, 4, 4, 36, 5 - invoke ShowSkullSlideFrame, 18, 5, 0, 5, 36, 5 - ret -AnimateSkullSwap12 ENDP - -; --- AnimateSkullSwap23: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- -AnimateSkullSwap23 PROC - invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 - invoke ShowSkullSlideFrame, 0, 5, 22, 6, 32, 4 - invoke ShowSkullSlideFrame, 0, 5, 26, 7, 28, 3 - invoke ShowSkullSlideFrame, 0, 5, 32, 6, 22, 4 - invoke ShowSkullSlideFrame, 0, 5, 36, 5, 18, 5 - ret -AnimateSkullSwap23 ENDP - -; --- AnimateSkullSwap13: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- -AnimateSkullSwap13 PROC - invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 - invoke ShowSkullSlideFrame, 8, 7, 18, 5, 28, 3 - invoke ShowSkullSlideFrame, 18, 8, 18, 5, 18, 2 - invoke ShowSkullSlideFrame, 28, 7, 18, 5, 8, 3 - invoke ShowSkullSlideFrame, 36, 5, 18, 5, 0, 5 - ret -AnimateSkullSwap13 ENDP - - -; --- PrintSkullRows: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSkullRows PROC - invoke PrintUtf8, OFFSET skullSeg1 - invoke PrintUtf8, OFFSET skullSeg1 - invoke PrintUtf8, OFFSET skullSeg1 - invoke PrintStr, OFFSET nl - invoke PrintUtf8, OFFSET skullSeg2 - invoke PrintUtf8, OFFSET skullSeg2 - invoke PrintUtf8, OFFSET skullSeg2 - invoke PrintStr, OFFSET nl - invoke PrintUtf8, OFFSET skullSeg3 - invoke PrintUtf8, OFFSET skullSeg3 - invoke PrintUtf8, OFFSET skullSeg3 - invoke PrintStr, OFFSET nl - invoke PrintUtf8, OFFSET skullSeg4 - invoke PrintUtf8, OFFSET skullSeg4 - invoke PrintUtf8, OFFSET skullSeg4 - invoke PrintStr, OFFSET nl - invoke PrintUtf8, OFFSET skullSeg5 - invoke PrintUtf8, OFFSET skullSeg5 - invoke PrintUtf8, OFFSET skullSeg5 - invoke PrintStr, OFFSET nl - invoke PrintUtf8, OFFSET skullSeg6 - invoke PrintUtf8, OFFSET skullSeg6 - invoke PrintUtf8, OFFSET skullSeg6 - invoke PrintStr, OFFSET nl - invoke PrintUtf8, OFFSET skullSeg7 - invoke PrintUtf8, OFFSET skullSeg7 - invoke PrintUtf8, OFFSET skullSeg7 - invoke PrintStr, OFFSET nl - invoke PrintUtf8, OFFSET skullSeg8 - invoke PrintUtf8, OFFSET skullSeg8 - invoke PrintUtf8, OFFSET skullSeg8 - invoke PrintStr, OFFSET nl - ret -PrintSkullRows ENDP -; --- PrintSkulls: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSkulls PROC reveal:DWORD - call PrintSkullRows - invoke PrintStr, OFFSET skullNums - cmp reveal, 0 - je print_skull_blank_ball - mov eax, skullBallPos - cmp eax, 0 - je print_skull_ball_1 - cmp eax, 1 - je print_skull_ball_2 - invoke PrintStr, OFFSET skullBall3 - ret -print_skull_ball_1: - invoke PrintStr, OFFSET skullBall1 - ret -print_skull_ball_2: - invoke PrintStr, OFFSET skullBall2 - ret -print_skull_blank_ball: - invoke PrintStr, OFFSET skullBlankBall - ret -PrintSkulls ENDP -; --- PrintSkullFaces: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintSkullFaces PROC - call PrintSkullRows - invoke PrintStr, OFFSET skullBlankBall - ret -PrintSkullFaces ENDP -; --- ShowSkullShuffleFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -ShowSkullShuffleFrame PROC pSwapText:DWORD - call ClearView - invoke PrintTitleColor, OFFSET skullsTitle - invoke PrintStr, OFFSET skullsShuffleText - invoke PrintStr, pSwapText - call PrintSkullFaces - invoke Sleep, 400 - ret -ShowSkullShuffleFrame ENDP - -; --- ShuffleSkulls: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- -ShuffleSkulls PROC uses eax ebx - cmp aiDifficulty, 1 - je skulls_easy_steps - cmp aiDifficulty, 3 - je skulls_hard_steps - -skulls_normal_steps: - invoke RandomRange, 4 - add eax, 9 - jmp skulls_store_steps - -skulls_easy_steps: - invoke RandomRange, 4 - add eax, 5 - jmp skulls_store_steps - -skulls_hard_steps: - invoke RandomRange, 5 - add eax, 12 - -skulls_store_steps: - mov skullMax, eax - mov skullStep, 0 - -shuffle_skulls_loop: - mov eax, skullStep - cmp eax, skullMax - jae shuffle_skulls_done - - cmp skullStep, 0 - je skulls_play_first_move_sound - mov eax, skullMax - dec eax - cmp skullStep, eax - je skulls_play_last_move_sound - jmp skulls_after_move_sound - -skulls_play_first_move_sound: - call PlayStoneSound - invoke Sleep, 180 - jmp skulls_after_move_sound -skulls_play_last_move_sound: - call PlayStoneSound - -skulls_after_move_sound: - invoke RandomRange, 3 - cmp eax, 0 - je shuffle_12 - cmp eax, 1 - je shuffle_23 - jmp shuffle_13 - -shuffle_12: - mov eax, skullBallPos - cmp eax, 0 - je ball_12_to_2 - cmp eax, 1 - je ball_12_to_1 - jmp show_shuffle_12 -ball_12_to_2: - mov skullBallPos, 1 - jmp show_shuffle_12 -ball_12_to_1: - mov skullBallPos, 0 -show_shuffle_12: - call AnimateSkullSwap12 - jmp shuffle_next - -shuffle_23: - mov eax, skullBallPos - cmp eax, 1 - je ball_23_to_3 - cmp eax, 2 - je ball_23_to_2 - jmp show_shuffle_23 -ball_23_to_3: - mov skullBallPos, 2 - jmp show_shuffle_23 -ball_23_to_2: - mov skullBallPos, 1 -show_shuffle_23: - call AnimateSkullSwap23 - jmp shuffle_next - -shuffle_13: - mov eax, skullBallPos - cmp eax, 0 - je ball_13_to_3 - cmp eax, 2 - je ball_13_to_1 - jmp show_shuffle_13 -ball_13_to_3: - mov skullBallPos, 2 - jmp show_shuffle_13 -ball_13_to_1: - mov skullBallPos, 0 -show_shuffle_13: - call AnimateSkullSwap13 - -shuffle_next: - inc skullStep - jmp shuffle_skulls_loop -shuffle_skulls_done: - ret -ShuffleSkulls ENDP - -; --- GameSkulls: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- GameSkulls PROC -skulls_start: - call ClearView - invoke PrintTitleColor, OFFSET skullsTitle - invoke PrintStr, OFFSET skullsIntroText - call PromptBet - invoke RandomRange, 3 - mov skullBallPos, eax - - call ClearView - invoke PrintTitleColor, OFFSET skullsTitle - invoke PrintStr, OFFSET skullsShowText - invoke PrintSkulls, 1 - invoke Sleep, 1600 - - call ClearView - invoke PrintTitleColor, OFFSET skullsTitle - invoke PrintStr, OFFSET skullsHideText - invoke PrintSkulls, 0 - invoke Sleep, 800 - - call ShuffleSkulls - -skulls_guess_again: - call ClearView - invoke PrintTitleColor, OFFSET skullsTitle - invoke PrintSkulls, 0 - invoke PrintStr, OFFSET skullsGuessText - call ReadKey - cmp al, '1' - je skull_guess_1 - cmp al, '2' - je skull_guess_2 - cmp al, '3' - je skull_guess_3 - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp skulls_guess_again - -skull_guess_1: - mov skullGuess, 0 - jmp skulls_reveal -skull_guess_2: - mov skullGuess, 1 - jmp skulls_reveal -skull_guess_3: - mov skullGuess, 2 - -skulls_reveal: - call ClearView - invoke PrintTitleColor, OFFSET skullsTitle - invoke PrintSkulls, 1 - invoke PrintStr, OFFSET skullsBallText - mov eax, skullBallPos - inc eax - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - - mov eax, skullGuess - cmp eax, skullBallPos - jne skulls_lost - invoke PrintStr, OFFSET skullsWinText - invoke PaySlotMultiplier, 2 - jmp ask_skulls_again - -skulls_lost: - invoke PrintStr, OFFSET skullsLoseText - call PayLose - -ask_skulls_again: - cmp tournamentMode, 1 - je skulls_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je skulls_start - cmp al, 'Y' - je skulls_start -skulls_tournament_return: + cmp tournamentStage, 0 + jne tourney_skulls + call StartCasino3D + ret +tourney_skulls: + call TournamentPlayStage ret GameSkulls ENDP ; --- PrintRevolver: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- @@ -9482,640 +8682,34 @@ PrintBang ENDP ; --- GameRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- GameRoulette PROC -roulette_start: - call ClearView - invoke PrintTitleColor, OFFSET rouletteTitle - invoke PrintStr, OFFSET rrIntroText - call PromptBet - call PlayRouletteSpinSound - call SetupRoulette - call AnimateRouletteSpin - -roulette_turn_loop: - call ShowRouletteStatus - cmp rrTurn, 0 - je roulette_player_turn - -roulette_ai_turn: - invoke PrintStr, OFFSET rrAITurnText - invoke Sleep, 900 - call RouletteChamberLoaded - cmp eax, 1 - je roulette_ai_dead - call PlayRouletteDrySound - invoke PrintStr, OFFSET rrClickText - invoke Sleep, 900 - call AdvanceRouletteChamber - mov rrTurn, 0 - jmp roulette_turn_loop - -roulette_player_turn: - invoke PrintStr, OFFSET rrPlayerTurnText - call ReadAnyKey - invoke PrintStr, OFFSET nl - call RouletteChamberLoaded - cmp eax, 1 - je roulette_player_dead - call PlayRouletteDrySound - invoke PrintStr, OFFSET rrClickText - invoke Sleep, 900 - call AdvanceRouletteChamber - mov rrTurn, 1 - jmp roulette_turn_loop - -roulette_player_dead: - call PrintBang - invoke PrintStr, OFFSET rrPlayerLoseText - call PayLose - jmp ask_roulette_again - -roulette_ai_dead: - invoke UnlockAchievement, 1000h, OFFSET achRussianWinName - call PrintBang - invoke PrintStr, OFFSET rrAIShotText - invoke PrintStr, OFFSET rrPayoutText - mov eax, aiDifficulty - inc eax - mov rrPayout, eax - invoke PaySlotMultiplier, rrPayout - -ask_roulette_again: - cmp tournamentMode, 1 - je roulette_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je roulette_start - cmp al, 'Y' - je roulette_start -roulette_tournament_return: + cmp tournamentStage, 0 + jne tourney_rr + call StartCasino3D + ret +tourney_rr: + call TournamentPlayStage ret GameRoulette ENDP ; --- ShowBuckshotFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -ShowBuckshotFrame PROC pFrame:DWORD, frameDelay:DWORD - call ClearView - invoke PrintTitleColor, OFFSET buckshotTitle - invoke SetColor, COLOR_CARD - invoke PrintStr, pFrame - call ResetColor - invoke Sleep, frameDelay - ret -ShowBuckshotFrame ENDP - -; --- AnimateBuckshotLoad: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -AnimateBuckshotLoad PROC - invoke ShowBuckshotFrame, OFFSET bsShotgunLoad1, 180 - invoke ShowBuckshotFrame, OFFSET bsShotgunLoad2, 260 - invoke ShowBuckshotFrame, OFFSET bsShotgunLoad3, 260 - ret -AnimateBuckshotLoad ENDP - -; --- AnimateBuckshotFire: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -AnimateBuckshotFire PROC - invoke ShowBuckshotFrame, OFFSET bsShotgunFire, 220 - ret -AnimateBuckshotFire ENDP - -; --- AnimateBuckshotDry: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -AnimateBuckshotDry PROC - invoke ShowBuckshotFrame, OFFSET bsShotgunDry, 180 - ret -AnimateBuckshotDry ENDP -; --- BuckshotGiveItems: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotGiveItems PROC uses eax - invoke RandomRange, 2 - inc eax - mov bsPlayerGlass, eax - invoke RandomRange, 2 - mov bsPlayerSaw, eax - invoke RandomRange, 2 - inc eax - mov bsPlayerBeer, eax - invoke RandomRange, 2 - mov bsPlayerCuffs, eax - invoke RandomRange, 2 - inc eax - mov bsAIGlass, eax - invoke RandomRange, 2 - mov bsAISaw, eax - invoke RandomRange, 2 - inc eax - mov bsAIBeer, eax - invoke RandomRange, 2 - mov bsAICuffs, eax - ret -BuckshotGiveItems ENDP - -; --- BuckshotLoad: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- -BuckshotLoad PROC uses eax ebx ecx edi - invoke RandomRange, 5 - add eax, 4 - mov bsShellCount, eax - mov bsShellIndex, 0 - mov bsLiveCount, 0 - mov bsBlankCount, 0 - mov bsKnownShell, 0FFFFFFFFh - mov edi, OFFSET bsShells - mov ecx, bsShellCount -bs_load_loop: - invoke RandomRange, 2 - mov [edi], eax - cmp eax, 1 - je bs_count_live - inc bsBlankCount - jmp bs_count_done -bs_count_live: - inc bsLiveCount -bs_count_done: - add edi, 4 - loop bs_load_loop - cmp bsLiveCount, 0 - jne bs_has_live - mov dword ptr bsShells, 1 - inc bsLiveCount - dec bsBlankCount -bs_has_live: - cmp bsBlankCount, 0 - jne bs_has_blank - mov dword ptr bsShells+4, 0 - inc bsBlankCount - dec bsLiveCount -bs_has_blank: - invoke PrintStr, OFFSET bsLoadText - invoke PrintUInt, bsLiveCount - invoke PrintStr, OFFSET bsLiveText - invoke PrintUInt, bsBlankCount - invoke PrintStr, OFFSET bsBlankText - invoke Sleep, 900 - ret -BuckshotLoad ENDP - -; --- BuckshotCurrentShell: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotCurrentShell PROC uses ebx - mov ebx, bsShellIndex - mov eax, bsShells[ebx*4] - ret -BuckshotCurrentShell ENDP - -; --- BuckshotAdvance: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotAdvance PROC - cmp bsShell, 1 - je bs_advance_live - cmp bsBlankCount, 0 - je bs_advance_count_done - dec bsBlankCount - jmp bs_advance_count_done -bs_advance_live: - cmp bsLiveCount, 0 - je bs_advance_count_done - dec bsLiveCount -bs_advance_count_done: - inc bsShellIndex - mov bsKnownShell, 0FFFFFFFFh - mov bsDamage, 1 - ret -BuckshotAdvance ENDP - -; --- BuckshotRemaining: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotRemaining PROC uses ebx - mov eax, bsShellCount - sub eax, bsShellIndex - ret -BuckshotRemaining ENDP - -; --- BuckshotPrintKnown: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotPrintKnown PROC - mov eax, bsKnownShell - cmp eax, 1 - je bs_print_known_live - cmp eax, 0 - je bs_print_known_blank - invoke PrintStr, OFFSET bsKnownUnknownText - ret -bs_print_known_live: - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET bsKnownLiveText - call ResetColor - ret -bs_print_known_blank: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET bsKnownBlankText - call ResetColor - ret -BuckshotPrintKnown ENDP - -; --- BuckshotStatus: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotStatus PROC - call ClearView - invoke PrintTitleColor, OFFSET buckshotTitle - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET bsShotgunArt - call ResetColor - invoke PrintStr, OFFSET bsHPText - invoke PrintUInt, bsPlayerHP - invoke PrintStr, OFFSET bsAIHPText - invoke PrintUInt, bsAIHP - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET bsShellInfoText - invoke PrintUInt, bsLiveCount - invoke PrintStr, OFFSET bsLiveText - invoke PrintUInt, bsBlankCount - invoke PrintStr, OFFSET bsBlankText - invoke PrintStr, OFFSET bsLeftText - call BuckshotRemaining - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - call BuckshotPrintKnown - invoke PrintStr, OFFSET bsItemsText - invoke PrintUInt, bsPlayerGlass - invoke PrintStr, OFFSET bsSawText - invoke PrintUInt, bsPlayerSaw - invoke PrintStr, OFFSET bsBeerText - invoke PrintUInt, bsPlayerBeer - invoke PrintStr, OFFSET bsCuffsText - invoke PrintUInt, bsPlayerCuffs - invoke PrintStr, OFFSET nl - ret -BuckshotStatus ENDP - -; --- BuckshotAfterShotTurn: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotAfterShotTurn PROC - cmp bsShell, 1 - je bs_after_switch - cmp bsTurn, 0 - je bs_after_player_blank - cmp bsTarget, 1 - je bs_after_keep - jmp bs_after_switch -bs_after_player_blank: - cmp bsTarget, 0 - je bs_after_keep -bs_after_switch: - xor bsTurn, 1 -bs_after_keep: - cmp bsTurn, 0 - je bs_check_skip_player - cmp bsSkipAI, 0 - je bs_after_done - mov bsSkipAI, 0 - invoke PrintStr, OFFSET bsSkipAIText - invoke Sleep, 800 - mov bsTurn, 0 - ret -bs_check_skip_player: - cmp bsSkipPlayer, 0 - je bs_after_done - mov bsSkipPlayer, 0 - invoke PrintStr, OFFSET bsSkipPlayerText - invoke Sleep, 800 - mov bsTurn, 1 -bs_after_done: - ret -BuckshotAfterShotTurn ENDP - -; --- BuckshotShoot: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotShoot PROC uses eax ebx - call BuckshotCurrentShell - mov bsShell, eax - cmp bsTarget, 0 - je bs_shoot_player_text - invoke PrintStr, OFFSET bsShootAIText - jmp bs_shoot_text_done -bs_shoot_player_text: - invoke PrintStr, OFFSET bsShootPlayerText -bs_shoot_text_done: - cmp bsShell, 1 - je bs_live_shot - call AnimateBuckshotDry - call PlayRouletteDrySound - invoke PrintStr, OFFSET bsDryText - call BuckshotAdvance - invoke Sleep, 900 - call BuckshotAfterShotTurn - ret -bs_live_shot: - call AnimateBuckshotFire - call PlayRouletteShotSound - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET bsHitText - invoke PrintUInt, bsDamage - invoke PrintStr, OFFSET nl - call ResetColor - mov eax, bsDamage - cmp bsTarget, 0 - je bs_damage_player - cmp bsAIHP, eax - ja bs_sub_ai - mov bsAIHP, 0 - jmp bs_damage_done -bs_sub_ai: - sub bsAIHP, eax - jmp bs_damage_done -bs_damage_player: - cmp bsPlayerHP, eax - ja bs_sub_player - mov bsPlayerHP, 0 - jmp bs_damage_done -bs_sub_player: - sub bsPlayerHP, eax -bs_damage_done: - call BuckshotAdvance - invoke Sleep, 1000 - call BuckshotAfterShotTurn - ret -BuckshotShoot ENDP - -; --- BuckshotUseGlass: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotUseGlass PROC - call BuckshotCurrentShell - mov bsKnownShell, eax - invoke PrintStr, OFFSET bsGlassUseText - call BuckshotPrintKnown - invoke Sleep, 1000 - ret -BuckshotUseGlass ENDP - -; --- BuckshotUseBeer: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotUseBeer PROC - call BuckshotCurrentShell - mov bsShell, eax - invoke PrintStr, OFFSET bsBeerUseText - cmp bsShell, 1 - je bs_beer_live - invoke PrintStr, OFFSET bsBlankLoadedText - jmp bs_beer_done -bs_beer_live: - invoke PrintStr, OFFSET bsLiveLoadedText -bs_beer_done: - call BuckshotAdvance - invoke Sleep, 1000 - ret -BuckshotUseBeer ENDP - -; --- BuckshotPlayerTurn: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotPlayerTurn PROC -bs_player_again: - call BuckshotStatus - invoke PrintStr, OFFSET bsPlayerTurnText - invoke PrintStr, OFFSET bsMenuText - call ReadKey - cmp al, '1' - je bs_player_self - cmp al, '2' - je bs_player_ai - cmp al, '3' - je bs_player_glass - cmp al, '4' - je bs_player_saw - cmp al, '5' - je bs_player_beer - cmp al, '6' - je bs_player_cuffs - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp bs_player_again -bs_player_self: - mov bsTarget, 0 - call BuckshotShoot - ret -bs_player_ai: - mov bsTarget, 1 - call BuckshotShoot - ret -bs_player_glass: - cmp bsPlayerGlass, 0 - je bs_player_no_item - dec bsPlayerGlass - call BuckshotUseGlass - jmp bs_player_again -bs_player_saw: - cmp bsPlayerSaw, 0 - je bs_player_no_item - dec bsPlayerSaw - mov bsDamage, 2 - invoke PrintStr, OFFSET bsSawUseText - invoke Sleep, 900 - jmp bs_player_again -bs_player_beer: - cmp bsPlayerBeer, 0 - je bs_player_no_item - dec bsPlayerBeer - call BuckshotUseBeer - call BuckshotRemaining - cmp eax, 0 - je bs_player_done - jmp bs_player_again -bs_player_cuffs: - cmp bsPlayerCuffs, 0 - je bs_player_no_item - dec bsPlayerCuffs - mov bsSkipAI, 1 - invoke PrintStr, OFFSET bsCuffsUseText - invoke Sleep, 900 - jmp bs_player_again -bs_player_no_item: - invoke PrintStr, OFFSET bsNoItemText - invoke Sleep, 800 - jmp bs_player_again -bs_player_done: - ret -BuckshotPlayerTurn ENDP - -; --- BuckshotAITurn: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- -BuckshotAITurn PROC - call BuckshotStatus - invoke PrintStr, OFFSET bsAITurnText - invoke Sleep, 900 - cmp bsKnownShell, 0FFFFFFFFh - jne bs_ai_known - cmp bsAIGlass, 0 - je bs_ai_no_glass - dec bsAIGlass - invoke PrintStr, OFFSET bsAIGlassText - call BuckshotUseGlass -bs_ai_no_glass: -bs_ai_known: - cmp bsKnownShell, 1 - je bs_ai_live - cmp bsKnownShell, 0 - je bs_ai_blank - mov eax, bsLiveCount - cmp eax, bsBlankCount - jae bs_ai_live -bs_ai_blank: - mov bsTarget, 1 - call BuckshotShoot - ret -bs_ai_live: - cmp bsAISaw, 0 - je bs_ai_maybe_cuffs - dec bsAISaw - mov bsDamage, 2 - invoke PrintStr, OFFSET bsAISawText - invoke Sleep, 700 -bs_ai_maybe_cuffs: - cmp bsAICuffs, 0 - je bs_ai_shoot_player - dec bsAICuffs - mov bsSkipPlayer, 1 - invoke PrintStr, OFFSET bsAICuffsText - invoke Sleep, 700 -bs_ai_shoot_player: - mov bsTarget, 0 - call BuckshotShoot - ret -BuckshotAITurn ENDP - -; --- GameBuckshot: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- GameBuckshot PROC -buckshot_start: - call ClearView - invoke PrintTitleColor, OFFSET buckshotTitle - invoke PrintStr, OFFSET buckshotIntro - call PromptBet - mov bsPlayerHP, 4 - mov bsAIHP, 4 - mov bsTurn, 0 - mov bsDamage, 1 - mov bsSkipPlayer, 0 - mov bsSkipAI, 0 - call BuckshotGiveItems - call PlayRouletteSpinSound - call AnimateBuckshotLoad - call BuckshotLoad -buckshot_loop: - call BuckshotRemaining - cmp eax, 0 - jne buckshot_has_shells - call AnimateBuckshotLoad - call BuckshotLoad -buckshot_has_shells: - cmp bsPlayerHP, 0 - je buckshot_lost - cmp bsAIHP, 0 - je buckshot_won - cmp bsTurn, 0 - je buckshot_player - call BuckshotAITurn - jmp buckshot_loop -buckshot_player: - call BuckshotPlayerTurn - jmp buckshot_loop -buckshot_won: - call BuckshotStatus - invoke PrintStr, OFFSET bsWinText - invoke PaySlotMultiplier, 3 - jmp buckshot_again -buckshot_lost: - call BuckshotStatus - invoke PrintStr, OFFSET bsLoseText - call PayLose -buckshot_again: - call SaveGame - cmp tournamentMode, 1 - je buckshot_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je buckshot_start - cmp al, 'Y' - je buckshot_start -buckshot_tournament_return: + cmp tournamentStage, 0 + jne tourney_bs + call StartCasino3D + ret +tourney_bs: + call TournamentPlayStage ret GameBuckshot ENDP ; --- PrintDiceParity: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintDiceParity PROC parity:DWORD - cmp parity, 1 - jne print_dice_odd - invoke PrintStr, OFFSET diceEvenText - ret -print_dice_odd: - invoke PrintStr, OFFSET diceOddText - ret -PrintDiceParity ENDP - -; --- GameDice: êîñòè: áðîñîê, ÷åòíîñòü è ðåçóëüòàò --- GameDice PROC -dice_start: - call ClearView - invoke PrintTitleColor, OFFSET diceTitle - invoke PrintStr, OFFSET diceIntroText - call PromptBet - -dice_choose: - call ClearView - invoke PrintTitleColor, OFFSET diceTitle - invoke PrintStr, OFFSET diceIntroText - call PrintBank - invoke PrintStr, OFFSET diceChoiceText - call ReadKey - cmp al, '1' - je dice_pick_even - cmp al, '2' - je dice_pick_odd - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp dice_choose - -dice_pick_even: - mov diceChoice, 1 - jmp dice_roll -dice_pick_odd: - mov diceChoice, 2 - -dice_roll: - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET diceRollText - call ResetColor - invoke Sleep, 500 - invoke RandomRange, 6 - inc eax - mov diceA, eax - invoke RandomRange, 6 - inc eax - mov diceB, eax - mov eax, diceA - add eax, diceB - mov diceSum, eax - invoke PrintStr, OFFSET diceFirstText - invoke PrintUInt, diceA - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET diceSecondText - invoke PrintUInt, diceB - invoke PrintStr, OFFSET nl - invoke PrintStr, OFFSET diceSumText - invoke PrintUInt, diceSum - invoke PrintStr, OFFSET nl - mov eax, diceSum - and eax, 1 - cmp eax, 0 - je dice_result_even - mov eax, 2 - jmp dice_compare -dice_result_even: - mov eax, 1 -dice_compare: - cmp eax, diceChoice - je dice_win - call PrintLoseEvent - call PayLose - jmp dice_again -dice_win: - call PrintWinEvent - call PayWin - -dice_again: - cmp tournamentMode, 1 - je dice_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je dice_start - cmp al, 'Y' - je dice_start -dice_tournament_return: + cmp tournamentStage, 0 + jne tourney_dice + call StartCasino3D + ret +tourney_dice: + call TournamentPlayStage ret GameDice ENDP ; --- Online Dice: Radmin LAN match without a separate server process --- @@ -10673,590 +9267,32 @@ online_casino_done: GameOnlineCasino ENDP ; --- PrintCoinSide: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintCoinSide PROC side:DWORD - cmp side, 1 - jne print_coin_tails - invoke PrintStr, OFFSET coinHeadsText - ret -print_coin_tails: - invoke PrintStr, OFFSET coinTailsText - ret -PrintCoinSide ENDP - -; --- ShowCoinFlipFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -ShowCoinFlipFrame PROC uses eax, pFrame:DWORD - call ClearView - invoke PrintTitleColor, OFFSET coinTitle - invoke PrintStr, OFFSET coinIntroText - call PrintBank - invoke PrintStr, OFFSET coinPickText - invoke PrintCoinSide, coinPick - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET coinSpinText - mov eax, pFrame - invoke PrintStr, eax - call ResetColor - invoke Sleep, 170 - ret -ShowCoinFlipFrame ENDP - -; --- AnimateCoinFlip: îðåë è ðåøêà: âûáîð ñòîðîíû, çâóê è àíèìàöèÿ ìîíåòû --- -AnimateCoinFlip PROC - invoke ShowCoinFlipFrame, OFFSET coinFrame1 - invoke ShowCoinFlipFrame, OFFSET coinFrame2 - invoke ShowCoinFlipFrame, OFFSET coinFrame3 - invoke ShowCoinFlipFrame, OFFSET coinFrame4 - invoke ShowCoinFlipFrame, OFFSET coinFrame5 - invoke ShowCoinFlipFrame, OFFSET coinFrame6 - invoke ShowCoinFlipFrame, OFFSET coinFrame7 - invoke ShowCoinFlipFrame, OFFSET coinFrame8 - invoke ShowCoinFlipFrame, OFFSET coinFrame9 - invoke ShowCoinFlipFrame, OFFSET coinFrame10 - invoke ShowCoinFlipFrame, OFFSET coinFrame11 - invoke ShowCoinFlipFrame, OFFSET coinFrame12 - invoke ShowCoinFlipFrame, OFFSET coinFrame13 - invoke ShowCoinFlipFrame, OFFSET coinFrame14 - ret -AnimateCoinFlip ENDP - -; --- GameCoin: îðåë è ðåøêà: âûáîð ñòîðîíû, çâóê è àíèìàöèÿ ìîíåòû --- GameCoin PROC -coin_start: - call ClearView - invoke PrintTitleColor, OFFSET coinTitle - invoke PrintStr, OFFSET coinIntroText - call PromptBet - -coin_choose: - call ClearView - invoke PrintTitleColor, OFFSET coinTitle - invoke PrintStr, OFFSET coinIntroText - call PrintBank - invoke PrintStr, OFFSET coinChoiceText - call ReadKey - cmp al, '1' - je coin_pick_heads - cmp al, '2' - je coin_pick_tails - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp coin_choose - -coin_pick_heads: - mov coinPick, 1 - jmp coin_flip -coin_pick_tails: - mov coinPick, 2 - -coin_flip: - invoke PrintStr, OFFSET coinPickText - invoke PrintCoinSide, coinPick - call PlayCoinSound - call AnimateCoinFlip - invoke RandomRange, 2 - inc eax - mov coinResult, eax - invoke PrintStr, OFFSET coinResultText - invoke PrintCoinSide, coinResult - mov eax, coinPick - cmp eax, coinResult - je coin_win - call PrintLoseEvent - call PayLose - jmp coin_again -coin_win: - call PrintWinEvent - call PayWin - -coin_again: - cmp tournamentMode, 1 - je coin_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je coin_start - cmp al, 'Y' - je coin_start -coin_tournament_return: + cmp tournamentStage, 0 + jne tourney_coin + call StartCasino3D + ret +tourney_coin: + call TournamentPlayStage ret GameCoin ENDP ; --- PrintRouletteColorName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRouletteColorName PROC uses eax ebx, value:DWORD - mov eax, value - cmp eax, 0 - jne roulette_color_not_zero - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET rouletteGreenName - call ResetColor - ret -roulette_color_not_zero: - movzx ebx, byte ptr [rouletteColors + eax] - cmp ebx, 1 - jne roulette_color_black - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET rouletteRedName - call ResetColor - ret -roulette_color_black: - invoke SetColor, COLOR_CARD - invoke PrintStr, OFFSET rouletteBlackName - call ResetColor - ret -PrintRouletteColorName ENDP - -; --- PrintRouletteNumberColored: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRouletteNumberColored PROC uses eax ebx, value:DWORD - mov eax, value - cmp eax, 0 - jne roulette_number_not_zero - invoke SetColor, COLOR_MONEY - jmp roulette_number_print -roulette_number_not_zero: - movzx ebx, byte ptr [rouletteColors + eax] - cmp ebx, 1 - jne roulette_number_black - invoke SetColor, COLOR_BAD - jmp roulette_number_print -roulette_number_black: - invoke SetColor, COLOR_CARD -roulette_number_print: - invoke PrintUInt, value - call ResetColor - ret -PrintRouletteNumberColored ENDP - -; --- PrintRoulettePocket: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRoulettePocket PROC uses eax, wheelIndex:DWORD - invoke PrintStr, OFFSET roulettePocketLeft - mov eax, wheelIndex - mov eax, [rouletteWheel + eax * 4] - push eax - cmp eax, 10 - jae roulette_pocket_no_pad - invoke PrintStr, OFFSET rouletteNumSpace -roulette_pocket_no_pad: - pop eax - invoke PrintRouletteNumberColored, eax - invoke PrintStr, OFFSET roulettePocketRight - ret -PrintRoulettePocket ENDP - -; --- PrintRoulettePocketOffset: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRoulettePocketOffset PROC uses eax, wheelOffset:DWORD - mov eax, casinoRouletteSpinIndex - add eax, wheelOffset -roulette_offset_wrap: - cmp eax, 37 - jb roulette_offset_ready - sub eax, 37 - jmp roulette_offset_wrap -roulette_offset_ready: - invoke PrintRoulettePocket, eax - ret -PrintRoulettePocketOffset ENDP - -; --- PrintRouletteTopRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRouletteTopRow PROC - invoke PrintStr, OFFSET casinoRoulettePad - invoke PrintRoulettePocketOffset, 31 - invoke PrintRoulettePocketOffset, 32 - invoke PrintRoulettePocketOffset, 33 - invoke PrintRoulettePocketOffset, 34 - invoke PrintRoulettePocketOffset, 35 - invoke PrintRoulettePocketOffset, 36 - invoke PrintRoulettePocketOffset, 0 - invoke PrintRoulettePocketOffset, 1 - invoke PrintRoulettePocketOffset, 2 - invoke PrintRoulettePocketOffset, 3 - invoke PrintRoulettePocketOffset, 4 - invoke PrintRoulettePocketOffset, 5 - invoke PrintRoulettePocketOffset, 6 - invoke PrintStr, OFFSET nl - ret -PrintRouletteTopRow ENDP - -; --- PrintRouletteBottomRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRouletteBottomRow PROC - invoke PrintStr, OFFSET casinoRoulettePad - invoke PrintRoulettePocketOffset, 24 - invoke PrintRoulettePocketOffset, 23 - invoke PrintRoulettePocketOffset, 22 - invoke PrintRoulettePocketOffset, 21 - invoke PrintRoulettePocketOffset, 20 - invoke PrintRoulettePocketOffset, 19 - invoke PrintRoulettePocketOffset, 18 - invoke PrintRoulettePocketOffset, 17 - invoke PrintRoulettePocketOffset, 16 - invoke PrintRoulettePocketOffset, 15 - invoke PrintRoulettePocketOffset, 14 - invoke PrintRoulettePocketOffset, 13 - invoke PrintStr, OFFSET nl - ret -PrintRouletteBottomRow ENDP - -; --- PrintRouletteSideRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintRouletteSideRow PROC leftOffset:DWORD, pGap:DWORD, rightOffset:DWORD - invoke SetColor, COLOR_WOOD - invoke PrintStr, OFFSET rouletteBigSidePad - call ResetColor - invoke PrintRoulettePocketOffset, leftOffset - invoke SetColor, COLOR_TABLE - invoke PrintStr, pGap - call ResetColor - invoke PrintRoulettePocketOffset, rightOffset - invoke PrintStr, OFFSET nl - ret -PrintRouletteSideRow ENDP - -; --- ShowCasinoRouletteFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -ShowCasinoRouletteFrame PROC - call ClearView - invoke PrintTitleColor, OFFSET casinoRouletteTitle - invoke SetColor, COLOR_WOOD - invoke PrintStr, OFFSET casinoRouletteWheelTop - call ResetColor - call PrintRouletteTopRow - invoke PrintRouletteSideRow, 30, OFFSET rouletteBigSideGap1, 7 - invoke PrintRouletteSideRow, 29, OFFSET rouletteBigSideGap2, 8 - invoke PrintRouletteSideRow, 28, OFFSET rouletteBigSideGap3, 9 - invoke PrintRouletteSideRow, 27, OFFSET rouletteBigSideGap4, 10 - invoke PrintRouletteSideRow, 26, OFFSET rouletteBigSideGap5, 11 - invoke PrintRouletteSideRow, 25, OFFSET rouletteBigSideGap6, 12 - call PrintRouletteBottomRow - invoke SetColor, COLOR_WOOD - invoke PrintStr, OFFSET casinoRouletteWheelBottom - call ResetColor - invoke PrintStr, OFFSET casinoRouletteSpinText - ret -ShowCasinoRouletteFrame ENDP - -; --- AnimateCasinoRouletteSpin: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- -AnimateCasinoRouletteSpin PROC uses eax ebx edx - invoke GetTickCount - xor seed, eax - invoke RandomRange, 37 - mov casinoRouletteResultIndex, eax - mov ebx, eax - mov eax, [rouletteWheel + ebx * 4] - mov casinoRouletteResult, eax - - invoke RandomRange, 18 - add eax, 72 - mov casinoRouletteSpinSteps, eax - mov casinoRouletteSpinCounter, eax - - xor edx, edx - mov ebx, 37 - div ebx - mov eax, casinoRouletteResultIndex - add eax, 37 - sub eax, edx - cmp eax, 37 - jb casino_roulette_start_ready - sub eax, 37 -casino_roulette_start_ready: - mov casinoRouletteSpinIndex, eax - -casino_roulette_spin_loop: - inc casinoRouletteSpinIndex - cmp casinoRouletteSpinIndex, 37 - jb casino_roulette_spin_index_ok - mov casinoRouletteSpinIndex, 0 -casino_roulette_spin_index_ok: - call ShowCasinoRouletteFrame - mov eax, casinoRouletteSpinCounter - cmp eax, 12 - jbe casino_roulette_sleep_slow - cmp eax, 26 - jbe casino_roulette_sleep_mid - invoke Sleep, 45 - jmp casino_roulette_after_sleep -casino_roulette_sleep_mid: - invoke Sleep, 95 - jmp casino_roulette_after_sleep -casino_roulette_sleep_slow: - invoke Sleep, 170 -casino_roulette_after_sleep: - dec casinoRouletteSpinCounter - cmp casinoRouletteSpinCounter, 0 - jne casino_roulette_spin_loop - mov ebx, casinoRouletteSpinIndex - mov casinoRouletteResultIndex, ebx - mov eax, [rouletteWheel + ebx * 4] - mov casinoRouletteResult, eax - ret -AnimateCasinoRouletteSpin ENDP - -; --- CasinoRouletteEvaluate: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- -CasinoRouletteEvaluate PROC uses eax ebx edx - invoke PrintStr, OFFSET casinoRouletteResultText - invoke PrintRouletteNumberColored, casinoRouletteResult - invoke PrintStr, OFFSET rouletteNumSpace - invoke PrintRouletteColorName, casinoRouletteResult - - mov eax, casinoRouletteBetType - cmp eax, 1 - je casino_roulette_eval_number - cmp eax, 2 - je casino_roulette_eval_red - cmp eax, 3 - je casino_roulette_eval_black - cmp eax, 4 - je casino_roulette_eval_even - cmp eax, 5 - je casino_roulette_eval_odd - cmp eax, 6 - je casino_roulette_eval_dozen1 - cmp eax, 7 - je casino_roulette_eval_dozen2 - cmp eax, 8 - je casino_roulette_eval_dozen3 - cmp eax, 9 - je casino_roulette_eval_low - cmp eax, 10 - je casino_roulette_eval_high - cmp eax, 11 - je casino_roulette_eval_col1 - cmp eax, 12 - je casino_roulette_eval_col2 - cmp eax, 13 - je casino_roulette_eval_col3 - jmp casino_roulette_lost - -casino_roulette_eval_number: - mov eax, casinoRouletteResult - cmp eax, casinoRouletteBetNumber - jne casino_roulette_lost - invoke UnlockAchievement, 800h, OFFSET achRouletteWinName - invoke PrintStr, OFFSET casinoRouletteWinText - invoke PaySlotMultiplier, 35 - ret - -casino_roulette_eval_red: - mov eax, casinoRouletteResult - movzx ebx, byte ptr [rouletteColors + eax] - cmp ebx, 1 - je casino_roulette_won_even_money - jmp casino_roulette_lost - -casino_roulette_eval_black: - mov eax, casinoRouletteResult - movzx ebx, byte ptr [rouletteColors + eax] - cmp ebx, 2 - je casino_roulette_won_even_money - jmp casino_roulette_lost - -casino_roulette_eval_even: - mov eax, casinoRouletteResult - cmp eax, 0 - je casino_roulette_lost - test eax, 1 - jz casino_roulette_won_even_money - jmp casino_roulette_lost - -casino_roulette_eval_odd: - mov eax, casinoRouletteResult - cmp eax, 0 - je casino_roulette_lost - test eax, 1 - jnz casino_roulette_won_even_money - jmp casino_roulette_lost - -casino_roulette_eval_dozen1: - mov eax, casinoRouletteResult - cmp eax, 1 - jb casino_roulette_lost - cmp eax, 12 - jbe casino_roulette_won_double - jmp casino_roulette_lost -casino_roulette_eval_dozen2: - mov eax, casinoRouletteResult - cmp eax, 13 - jb casino_roulette_lost - cmp eax, 24 - jbe casino_roulette_won_double - jmp casino_roulette_lost -casino_roulette_eval_dozen3: - mov eax, casinoRouletteResult - cmp eax, 25 - jb casino_roulette_lost - cmp eax, 36 - jbe casino_roulette_won_double - jmp casino_roulette_lost -casino_roulette_eval_low: - mov eax, casinoRouletteResult - cmp eax, 1 - jb casino_roulette_lost - cmp eax, 18 - jbe casino_roulette_won_even_money - jmp casino_roulette_lost -casino_roulette_eval_high: - mov eax, casinoRouletteResult - cmp eax, 36 - jbe casino_roulette_won_even_money - jmp casino_roulette_lost -casino_roulette_eval_col1: - mov eax, casinoRouletteResult - cmp eax, 0 - je casino_roulette_lost - dec eax - xor edx, edx - mov ebx, 3 - div ebx - cmp edx, 0 - je casino_roulette_won_double - jmp casino_roulette_lost -casino_roulette_eval_col2: - mov eax, casinoRouletteResult - cmp eax, 0 - je casino_roulette_lost - dec eax - xor edx, edx - mov ebx, 3 - div ebx - cmp edx, 1 - je casino_roulette_won_double - jmp casino_roulette_lost -casino_roulette_eval_col3: - mov eax, casinoRouletteResult - cmp eax, 0 - je casino_roulette_lost - dec eax - xor edx, edx - mov ebx, 3 - div ebx - cmp edx, 2 - je casino_roulette_won_double - jmp casino_roulette_lost - -casino_roulette_won_double: - invoke UnlockAchievement, 800h, OFFSET achRouletteWinName - invoke PrintStr, OFFSET casinoRouletteWinText - invoke PaySlotMultiplier, 2 - ret -casino_roulette_won_even_money: - invoke UnlockAchievement, 800h, OFFSET achRouletteWinName - invoke PrintStr, OFFSET casinoRouletteWinText - call PayWin - ret -casino_roulette_lost: - invoke PrintStr, OFFSET casinoRouletteLoseText - call PayLose - ret -CasinoRouletteEvaluate ENDP - -; --- GameCasinoRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- GameCasinoRoulette PROC -casino_roulette_start: - call ClearView - invoke PrintTitleColor, OFFSET casinoRouletteTitle - invoke PrintStr, OFFSET casinoRouletteIntro - call PromptBet - -casino_roulette_choose: - call ClearView - invoke PrintTitleColor, OFFSET casinoRouletteTitle - invoke PrintStr, OFFSET casinoRouletteIntro - call PrintBank - invoke PrintStr, OFFSET casinoRouletteBetMenu - call ReadUInt - cmp eax, 1 - je casino_roulette_choose_number - cmp eax, 2 - je casino_roulette_choose_red - cmp eax, 3 - je casino_roulette_choose_black - cmp eax, 4 - je casino_roulette_choose_even - cmp eax, 5 - je casino_roulette_choose_odd - cmp eax, 6 - je casino_roulette_choose_dozen1 - cmp eax, 7 - je casino_roulette_choose_dozen2 - cmp eax, 8 - je casino_roulette_choose_dozen3 - cmp eax, 9 - je casino_roulette_choose_low - cmp eax, 10 - je casino_roulette_choose_high - cmp eax, 11 - je casino_roulette_choose_col1 - cmp eax, 12 - je casino_roulette_choose_col2 - cmp eax, 13 - je casino_roulette_choose_col3 - invoke PrintStr, OFFSET badChoiceText - call PauseConsole - jmp casino_roulette_choose - -casino_roulette_choose_number: - mov casinoRouletteBetType, 1 - invoke PrintStr, OFFSET casinoRouletteNumberAsk - call ReadUInt - cmp eax, 36 - ja casino_roulette_bad_number - mov casinoRouletteBetNumber, eax - jmp casino_roulette_spin -casino_roulette_bad_number: - invoke PrintStr, OFFSET casinoRouletteBadNumber - call PauseConsole - jmp casino_roulette_choose - -casino_roulette_choose_red: - mov casinoRouletteBetType, 2 - jmp casino_roulette_spin -casino_roulette_choose_black: - mov casinoRouletteBetType, 3 - jmp casino_roulette_spin -casino_roulette_choose_even: - mov casinoRouletteBetType, 4 - jmp casino_roulette_spin -casino_roulette_choose_odd: - mov casinoRouletteBetType, 5 - jmp casino_roulette_spin -casino_roulette_choose_dozen1: - mov casinoRouletteBetType, 6 - jmp casino_roulette_spin -casino_roulette_choose_dozen2: - mov casinoRouletteBetType, 7 - jmp casino_roulette_spin -casino_roulette_choose_dozen3: - mov casinoRouletteBetType, 8 - jmp casino_roulette_spin -casino_roulette_choose_low: - mov casinoRouletteBetType, 9 - jmp casino_roulette_spin -casino_roulette_choose_high: - mov casinoRouletteBetType, 10 - jmp casino_roulette_spin -casino_roulette_choose_col1: - mov casinoRouletteBetType, 11 - jmp casino_roulette_spin -casino_roulette_choose_col2: - mov casinoRouletteBetType, 12 - jmp casino_roulette_spin -casino_roulette_choose_col3: - mov casinoRouletteBetType, 13 - -casino_roulette_spin: - call PlayCasinoRouletteSound - call AnimateCasinoRouletteSpin - call CasinoRouletteEvaluate - -casino_roulette_again: - cmp tournamentMode, 1 - je casino_roulette_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je casino_roulette_start - cmp al, 'Y' - je casino_roulette_start -casino_roulette_tournament_return: + cmp tournamentStage, 0 + jne tourney_croul + call StartCasino3D + ret +tourney_croul: + call TournamentPlayStage ret GameCasinoRoulette ENDP +; --- SlotApplyWin: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +GameSlot PROC + call StartCasino3D + ret +GameSlot ENDP + ; --- SlotApplyWin: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- SlotApplyWin PROC uses ebx ecx edx, pName:DWORD, multiplier:DWORD, maskValue:DWORD mov eax, pName @@ -11291,8 +9327,8 @@ slot_apply_record: mov eax, pName mov slotComboNames[ebx * 4], eax mov slotComboMults[ebx * 4], edx - mov ecx,maskValue - mov slotComboMasks[ebx * 4],ecx + mov ecx,maskValue + mov slotComboMasks[ebx * 4],ecx inc slotComboCount slot_apply_no_store: mov eax, 1 @@ -11489,241 +9525,8 @@ slot_eval_eye: ret EvaluateSlotCombos ENDP -; --- AwardSlotWin: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- -AwardSlotWin PROC uses ebx - invoke UnlockAchievement, 80h, OFFSET achCloverPitName - call PrintSlotWindow - invoke PrintStr, OFFSET slotPair - mov slotCurrentCell, 0 -slot_award_combo_loop: - mov eax, slotCurrentCell - cmp eax, slotComboCount - jae slot_award_combo_done - invoke PrintStr, OFFSET slotComboText - mov ebx, slotCurrentCell - mov eax, slotComboNames[ebx * 4] - invoke PrintStr, eax - invoke PrintStr, OFFSET cardGap - invoke PrintStr, OFFSET slotMultiplierText - mov ebx, slotCurrentCell - mov eax, slotComboMults[ebx * 4] - invoke PrintUInt, eax - invoke PrintStr, OFFSET nl - inc slotCurrentCell - jmp slot_award_combo_loop -slot_award_combo_done: - invoke PrintStr, OFFSET slotTotalMultiplierText - invoke PrintUInt, slotBestMultiplier - invoke PrintStr, OFFSET nl - cmp slotJackpotHit, 1 - jne slot_award_regular - call PlayJackpotSound - invoke Sleep, 650 - call PlayHakariSound - call PlayHakariDance - call PrintSlotWindow -slot_award_regular: - invoke PaySlotMultiplier, slotBestMultiplier - ret -AwardSlotWin ENDP -; --- GameSlot: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- -GameSlot PROC -slot_start: - call ClearView - invoke PrintTitleColor, OFFSET slotTitle - invoke PrintStr, OFFSET slotPayTableText - call PromptBet - call PlaySlotSound - invoke Sleep, 400 - invoke PrintStr, OFFSET slotPullText - mov slotWinMask, 0 - mov slotVisible, 0 - call PrintSlotWindow - invoke Sleep, 1400 - - invoke FillSlotColumn, 0 - mov slotVisible, 1 - call PrintSlotWindow - invoke Sleep, 620 - - invoke FillSlotColumn, 1 - mov slotVisible, 2 - call PrintSlotWindow - invoke Sleep, 620 - - invoke FillSlotColumn, 2 - mov slotVisible, 3 - call PrintSlotWindow - invoke Sleep, 620 - - invoke FillSlotColumn, 3 - mov slotVisible, 4 - call PrintSlotWindow - invoke Sleep, 620 - - invoke FillSlotColumn, 4 - mov slotVisible, 5 - call PrintSlotWindow - invoke Sleep, 450 - - cmp cheatSlotJackpot, 1 - jne slot_no_forced_jackpot - mov cheatSlotJackpot, 0 - mov ecx, 15 - mov edi, OFFSET slotGrid -slot_force_jackpot_loop: - mov dword ptr [edi], 6 - add edi, 4 - loop slot_force_jackpot_loop - call PrintSlotWindow - invoke Sleep, 300 -slot_no_forced_jackpot: - - call EvaluateSlotCombos - cmp slotBestMultiplier, 0 - jne slot_has_win - invoke PrintStr, OFFSET slotEmpty - call PayLose - jmp ask_slot_again - -slot_has_win: - call AwardSlotWin - -ask_slot_again: - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je slot_start - cmp al, 'Y' - je slot_start - ret -GameSlot ENDP ; --- PrintClassicSlotSymbol: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintClassicSlotSymbol PROC uses eax, value:DWORD - mov eax, value - cmp eax, 0 - je classic_symbol_red - cmp eax, 1 - je classic_symbol_yellow - cmp eax, 2 - je classic_symbol_green - cmp eax, 5 - je classic_symbol_cyan - invoke SetColor, COLOR_WARN - jmp classic_symbol_print -classic_symbol_red: - invoke SetColor, COLOR_BAD - jmp classic_symbol_print -classic_symbol_yellow: - invoke SetColor, COLOR_WARN - jmp classic_symbol_print -classic_symbol_green: - invoke SetColor, COLOR_MONEY - jmp classic_symbol_print -classic_symbol_cyan: - invoke SetColor, COLOR_TITLE -classic_symbol_print: - mov eax, value - invoke PrintStr, classicSlotSymbols[eax * 4] - call ResetColor - ret -PrintClassicSlotSymbol ENDP - -; --- PrintClassicSlotCell: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintClassicSlotCell PROC uses eax, value:DWORD - mov eax, value - cmp eax, 1 - je classic_slot_cell_bar - invoke PrintStr, OFFSET slotWall - invoke PrintStr, OFFSET slotPadTwo - invoke PrintClassicSlotSymbol, value - invoke PrintStr, OFFSET slotPadTwo - ret -classic_slot_cell_bar: - invoke PrintStr, OFFSET slotWall - invoke PrintStr, OFFSET slotPadOne - invoke PrintClassicSlotSymbol, value - invoke PrintStr, OFFSET slotPadOne - ret -PrintClassicSlotCell ENDP - -; --- PrintClassicSlotBlankCell: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintClassicSlotBlankCell PROC - invoke PrintStr, OFFSET slotWall - invoke PrintStr, OFFSET slotCellBlank - ret -PrintClassicSlotBlankCell ENDP - -; --- PrintClassicSlotWindow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- -PrintClassicSlotWindow PROC uses eax ebx - call ClearView - invoke PrintTitleColor, OFFSET classicSlotTitle - invoke PrintStr, OFFSET classicSlotBorder - - mov rowIndex, 0 -classic_slot_window_row_loop: - cmp rowIndex, 3 - jae classic_slot_window_done - mov ebx, rowIndex - imul ebx, 3 - - cmp slotVisible, 1 - jb classic_slot_blank_col1 - invoke PrintClassicSlotCell, slotGrid[ebx * 4] - jmp classic_slot_col2 -classic_slot_blank_col1: - call PrintClassicSlotBlankCell - -classic_slot_col2: - cmp slotVisible, 2 - jb classic_slot_blank_col2 - mov eax, ebx - inc eax - invoke PrintClassicSlotCell, slotGrid[eax * 4] - jmp classic_slot_col3 -classic_slot_blank_col2: - call PrintClassicSlotBlankCell - -classic_slot_col3: - cmp slotVisible, 3 - jb classic_slot_blank_col3 - mov eax, ebx - add eax, 2 - invoke PrintClassicSlotCell, slotGrid[eax * 4] - jmp classic_slot_row_end -classic_slot_blank_col3: - call PrintClassicSlotBlankCell - -classic_slot_row_end: - invoke PrintStr, OFFSET slotWall - invoke PrintStr, OFFSET nl - cmp rowIndex, 1 - jne classic_no_payline - invoke PrintStr, OFFSET classicSlotPayline -classic_no_payline: - invoke PrintStr, OFFSET classicSlotBorder - inc rowIndex - jmp classic_slot_window_row_loop - -classic_slot_window_done: - ret -PrintClassicSlotWindow ENDP - -; --- FillClassicSlotColumn: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- -FillClassicSlotColumn PROC uses eax ebx, column:DWORD - mov ebx, column - invoke RandomRange, 6 - mov slotGrid[ebx * 4], eax - mov ebx, column - add ebx, 3 - invoke RandomRange, 6 - mov slotGrid[ebx * 4], eax - mov ebx, column - add ebx, 7 - invoke RandomRange, 6 - mov slotGrid[ebx * 4], eax - ret -FillClassicSlotColumn ENDP +; (Legacy terminal classic slot helpers removed) ; --- DurakCardRank: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- DurakCardRank PROC uses ecx edx, card:DWORD @@ -12280,406 +10083,18 @@ setup_durak_deal: SetupDurak ENDP ; --- PlayerOpenAttackLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -PlayerOpenAttackLoop PROC uses ebx ecx -player_open_attack_loop: - mov eax, durakTableCnt - cmp eax, 6 - jae player_open_attack_done - cmp eax, durakAICnt - jae player_open_attack_done - call ShowDurakTable - invoke PrintStr, OFFSET durakThrowAsk - call ReadUInt - cmp eax, 0 - je player_open_attack_done - cmp eax, 1 - jb player_open_attack_bad - cmp eax, durakPlayerCnt - ja player_open_attack_bad - dec eax - mov durakChoice, eax - mov ebx, OFFSET durakPlayerHand - mov ecx, [ebx + eax * 4] - invoke DurakRankOnTable, ecx - cmp eax, 1 - jne player_open_attack_bad - invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice - call AddDurakAttack - jmp player_open_attack_loop -player_open_attack_bad: - invoke PrintStr, OFFSET durakBadMoveText - invoke Sleep, 650 - jmp player_open_attack_loop -player_open_attack_done: - ret -PlayerOpenAttackLoop ENDP - -; --- AIInitialThrowLoop: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- -AIInitialThrowLoop PROC - mov durakLoopGuard, 0 -ai_initial_throw_loop: - inc durakLoopGuard - cmp durakLoopGuard, 20 - ja ai_initial_throw_done - call FindAIThrowIn - cmp eax, 0FFFFFFFFh - je ai_initial_throw_done - invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax - call AddDurakAttack - jmp ai_initial_throw_loop -ai_initial_throw_done: - ret -AIInitialThrowLoop ENDP -; --- PlayerThrowLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -PlayerThrowLoop PROC uses ebx ecx - mov durakLoopGuard, 0 -player_throw_loop: - inc durakLoopGuard - cmp durakLoopGuard, 30 - ja player_throw_done - call ShowDurakTable - call AIDefendAll - cmp eax, 1 - je player_throw_after_defense - invoke CollectDurakTable, OFFSET durakAIHand, OFFSET durakAICnt - invoke PrintStr, OFFSET durakAITakeText - mov durakPlayerTurn, 1 - call RefillDurakHands - call PauseConsole - ret -player_throw_after_defense: - call ShowDurakTable - invoke PrintStr, OFFSET durakThrowAsk - call ReadUInt - cmp eax, 0 - je player_throw_done - cmp eax, 1 - jb player_throw_bad - cmp eax, durakPlayerCnt - ja player_throw_bad - cmp durakTableCnt, 6 - jae player_throw_bad - dec eax - mov durakChoice, eax - mov ebx, OFFSET durakPlayerHand - mov ecx, [ebx + eax * 4] - invoke DurakRankOnTable, ecx - cmp eax, 1 - jne player_throw_bad - invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice - call AddDurakAttack - jmp player_throw_loop -player_throw_bad: - invoke PrintStr, OFFSET durakBadMoveText - invoke Sleep, 650 - jmp player_throw_loop -player_throw_done: - call ClearDurakTable - mov durakPlayerTurn, 0 - call RefillDurakHands - ret -PlayerThrowLoop ENDP - -; --- PlayerDefendLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- -PlayerDefendLoop PROC uses ebx ecx - mov durakLoopGuard, 0 -player_defend_loop: - inc durakLoopGuard - cmp durakLoopGuard, 30 - ja player_take_table - call DurakAllDefended - cmp eax, 1 - je player_defended_all - call ShowDurakTable - invoke PrintStr, OFFSET durakDefendAsk - call ReadUInt - cmp eax, 0 - je player_take_table - cmp eax, 1 - jb player_def_bad - cmp eax, durakPlayerCnt - ja player_def_bad - dec eax - mov durakChoice, eax - mov ebx, OFFSET durakPlayerHand - mov ecx, [ebx + eax * 4] - - call DurakTableHasDefense - cmp eax, 0 - jne player_try_beat - invoke DurakRankOnTable, ecx - cmp eax, 1 - jne player_try_beat - mov eax, durakTableCnt - cmp durakAICnt, eax - jbe player_try_beat - invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice - call AddDurakAttack - invoke PrintStr, OFFSET durakTransferText - call PauseConsole - call PlayerThrowLoop - ret - -player_try_beat: - call DurakFirstUnbeaten - mov ebx, eax - mov ecx, OFFSET durakPlayerHand - mov eax, durakChoice - mov ecx, [ecx + eax * 4] - invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx - cmp eax, 1 - jne player_def_bad - invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice - mov durakDefenseCards[ebx * 4], eax - jmp player_defend_loop -player_def_bad: - invoke PrintStr, OFFSET durakBadMoveText - invoke Sleep, 650 - jmp player_defend_loop -player_take_table: - invoke CollectDurakTable, OFFSET durakPlayerHand, OFFSET durakPlayerCnt - invoke PrintStr, OFFSET durakPlayerTakeText - mov durakPlayerTurn, 0 - call RefillDurakHandsAIFirst - call PauseConsole - ret -player_defended_all: - call FindAIThrowIn - cmp eax, 0FFFFFFFFh - je player_defense_done - invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax - call AddDurakAttack - jmp player_defend_loop -player_defense_done: - invoke PrintStr, OFFSET durakPlayerDefendText - call ClearDurakTable - mov durakPlayerTurn, 1 - call RefillDurakHandsAIFirst - call PauseConsole - ret -PlayerDefendLoop ENDP - -; --- GameDurak: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- GameDurak PROC - durak_start: - call ClearView - invoke PrintTitleColor, OFFSET durakTitle - call PromptBet - call SetupDurak - -durak_round_loop: - call CheckDurakEnd - cmp eax, 1 - je durak_finish_win - cmp eax, 2 - je durak_finish_lose - cmp eax, 3 - je durak_finish_draw - inc durakSafeTurns - cmp durakSafeTurns, 300 - ja durak_finish_stuck - call ClearDurakTable - cmp durakPlayerTurn, 1 - je durak_check_player_attack - jmp durak_check_ai_attack - -durak_check_player_attack: - cmp durakPlayerCnt, 0 - jne durak_player_attack - cmp durakDeckLeft, 0 - jbe durak_round_loop - call RefillDurakHands - cmp durakPlayerCnt, 0 - jne durak_player_attack - jmp durak_finish_stuck - -durak_check_ai_attack: - cmp durakAICnt, 0 - jne durak_ai_attack - cmp durakDeckLeft, 0 - jbe durak_round_loop - call RefillDurakHandsAIFirst - cmp durakAICnt, 0 - jne durak_ai_attack - jmp durak_finish_stuck - -durak_player_attack: -player_attack_choose: - call ShowDurakTable - invoke PrintStr, OFFSET durakAttackAsk - call ReadUInt - cmp eax, 1 - jb player_attack_bad - cmp eax, durakPlayerCnt - ja player_attack_bad - dec eax - invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax - call AddDurakAttack - call PlayerOpenAttackLoop - call PlayerThrowLoop - jmp durak_round_loop -player_attack_bad: - invoke PrintStr, OFFSET durakBadMoveText - invoke Sleep, 650 - jmp player_attack_choose - -durak_ai_attack: - cmp durakAICnt, 0 - jne durak_ai_has_card - call RefillDurakHandsAIFirst - cmp durakAICnt, 0 - je durak_round_loop -durak_ai_has_card: - invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, 0 - call AddDurakAttack - call AIInitialThrowLoop - call PlayerDefendLoop - jmp durak_round_loop - -durak_finish_win: - invoke UnlockAchievement, 2000h, OFFSET achDurakWinName - call ShowDurakTable - invoke PrintStr, OFFSET durakWinText - call PayWin - jmp durak_again - -durak_finish_lose: - call ShowDurakTable - invoke PrintStr, OFFSET durakLoseText - call PayLose - jmp durak_again - -durak_finish_stuck: - call ShowDurakTable - invoke PrintStr, OFFSET durakStuckText - call PayDraw - jmp durak_again - -durak_finish_draw: - call ShowDurakTable - invoke PrintStr, OFFSET drawText - call PayDraw - -durak_again: - cmp tournamentMode, 1 - je durak_tournament_return - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je durak_start - cmp al, 'Y' - je durak_start -durak_tournament_return: + cmp tournamentStage, 0 + jne tourney_durak + call StartCasino3D + ret +tourney_durak: + call TournamentPlayStage ret GameDurak ENDP ; --- GameClassicSlot: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- GameClassicSlot PROC -classic_slot_start: - call ClearView - invoke PrintTitleColor, OFFSET classicSlotTitle - invoke PrintStr, OFFSET classicSlotPayTableText - call PromptBet - call PlaySlotSound - invoke Sleep, 400 - invoke PrintStr, OFFSET slotPullText - mov slotWinMask, 0 - mov slotVisible, 0 - call PrintClassicSlotWindow - invoke Sleep, 1600 - - invoke FillClassicSlotColumn, 0 - mov slotVisible, 1 - call PrintClassicSlotWindow - invoke Sleep, 750 - - invoke FillClassicSlotColumn, 1 - mov slotVisible, 2 - call PrintClassicSlotWindow - invoke Sleep, 750 - - invoke FillClassicSlotColumn, 2 - mov slotVisible, 3 - call PrintClassicSlotWindow - invoke Sleep, 450 - - cmp cheatSlotJackpot, 1 - jne classic_no_forced_jackpot - mov cheatSlotJackpot, 0 - mov dword ptr slotGrid[12], 0 - mov dword ptr slotGrid[16], 0 - mov dword ptr slotGrid[20], 0 - call PrintClassicSlotWindow - invoke Sleep, 300 -classic_no_forced_jackpot: - - mov eax, slotGrid[12] - mov slotA, eax - mov eax, slotGrid[16] - mov slotB, eax - mov eax, slotGrid[20] - mov slotC, eax - - mov eax, slotA - cmp eax, slotB - jne classic_slot_check_pair_1 - mov eax, slotB - cmp eax, slotC - jne classic_slot_pair - invoke UnlockAchievement, 100h, OFFSET achClassicSlotName - call PlayJackpotSound - invoke PrintStr, OFFSET classicSlotJackpot - invoke Sleep, 650 - call PlayHakariSound - call PlayHakariDance - call PrintClassicSlotWindow - mov eax, slotA - cmp eax, 0 - je classic_slot_pay_777 - cmp eax, 2 - je classic_slot_pay_dollar - cmp eax, 1 - je classic_slot_pay_bar - cmp eax, 5 - je classic_slot_pay_aaa - invoke PaySlotMultiplier, 3 - jmp classic_ask_slot_again -classic_slot_pay_777: - invoke UnlockAchievement, 100h, OFFSET achClassicSlotName - invoke PaySlotMultiplier, 10 - jmp classic_ask_slot_again -classic_slot_pay_dollar: - invoke PaySlotMultiplier, 7 - jmp classic_ask_slot_again -classic_slot_pay_bar: - invoke PaySlotMultiplier, 5 - jmp classic_ask_slot_again -classic_slot_pay_aaa: - invoke PaySlotMultiplier, 4 - jmp classic_ask_slot_again - -classic_slot_check_pair_1: - mov eax, slotA - cmp eax, slotC - je classic_slot_pair - mov eax, slotB - cmp eax, slotC - je classic_slot_pair - invoke PrintStr, OFFSET classicSlotEmpty - call PayLose - jmp classic_ask_slot_again - -classic_slot_pair: - invoke UnlockAchievement, 100h, OFFSET achClassicSlotName - invoke PrintStr, OFFSET classicSlotPair - invoke PaySlotMultiplier, 2 - -classic_ask_slot_again: - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je classic_slot_start - cmp al, 'Y' - je classic_slot_start + call StartCasino3D ret GameClassicSlot ENDP ; --- ObserverDrawAI1: ðåæèì íàáëþäàòåëÿ AI vs AI --- @@ -12971,6 +10386,23 @@ player_ai_throw_none: ret FindPlayerThrowIn ENDP +; --- AIInitialThrowLoop: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +AIInitialThrowLoop PROC + mov durakLoopGuard, 0 +ai_initial_throw_loop: + inc durakLoopGuard + cmp durakLoopGuard, 20 + ja ai_initial_throw_done + call FindAIThrowIn + cmp eax, 0FFFFFFFFh + je ai_initial_throw_done + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax + call AddDurakAttack + jmp ai_initial_throw_loop +ai_initial_throw_done: + ret +AIInitialThrowLoop ENDP + ; --- PlayerAIInitialThrowLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- PlayerAIInitialThrowLoop PROC player_ai_initial_throw_loop: @@ -14527,79 +11959,12 @@ SkillCheckRound ENDP ; --- GameSkillCheck: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- GameSkillCheck PROC -skill_game_start: - call ClearView - invoke PrintTitleColor, OFFSET skillTitle - invoke PrintStr, OFFSET skillIntro - call PromptBet - call PlayDbDHookScene - mov skillHits, 0 - mov skillMisses, 0 - mov skillPerfects, 0 -skill_game_loop: - call SkillCheckRound - call SkillCheckDraw - mov eax, skillResult - cmp eax, 2 - je skill_game_perfect - cmp eax, 1 - je skill_game_success -skill_game_fail: - inc skillMisses - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET skillFailText - call ResetColor - invoke Sleep, 850 - cmp skillMisses, 3 - jae skill_game_lost - jmp skill_game_loop -skill_game_success: - inc skillHits - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET skillSuccessText - call ResetColor - invoke Sleep, 750 - cmp skillHits, 5 - jae skill_game_won - jmp skill_game_loop -skill_game_perfect: - add skillHits, 2 - inc skillPerfects - invoke SetColor, COLOR_WARN - invoke PrintStr, OFFSET skillPerfectText - call ResetColor - invoke Sleep, 850 - cmp skillHits, 5 - jae skill_game_won - jmp skill_game_loop -skill_game_won: - call StopDbDHookScene - call SkillCheckDraw - invoke SetColor, COLOR_MONEY - invoke PrintStr, OFFSET skillEscapeText - call ResetColor - invoke PaySlotMultiplier, 2 - invoke UnlockAchievement, 20000h, OFFSET achSkillCheckName - call SaveGame - jmp skill_game_again -skill_game_lost: - call StopDbDHookScene - call SkillCheckDraw - invoke SetColor, COLOR_BAD - invoke PrintStr, OFFSET skillDarkText - call ResetColor - call PayLose - call SaveGame -skill_game_again: - cmp tournamentMode, 1 - je skill_game_exit - invoke PrintStr, OFFSET againText - call ReadKey - cmp al, 'y' - je skill_game_start - cmp al, 'Y' - je skill_game_start -skill_game_exit: + cmp tournamentStage, 0 + jne tourney_sc + call StartCasino3D + ret +tourney_sc: + call TournamentPlayStage ret GameSkillCheck ENDP ; --- GameAchievements: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- @@ -15232,3 +12597,4 @@ ENDIF main ENDP END main + diff --git a/poker.exe b/poker.exe index 2f4481cf9e97411dbcb595f8f7a95ec87ab815b8..bdeacf0d6b161ea076976d964c75eb36c3f7e746 100644 GIT binary patch delta 138086 zcmbq+2Y6IP7xr$F4IzYVfCNGy5UTVRLNTm{5=B7`M7lI-mqluJX@VPAB4tICD~g|> zgjGJUA)*2z5LhHA7O(+=(kv4f6a}TT|NG9|EfM|x|9SpAPj=6FPnk0_=g!QXTek3E zR^jpXPjxZxf7;fg0i6W$DSVr96b&*~O2gkKlV0E4%Cc&C zlxgO3Q+G$zPI&8mQ*v*U>4~SKOtp!$u)xI==BMkWRc+-MGt&VF%jX)-AJe}z*GU{5 z4~*p`;CsFv8&$XB8gP99KdHBhO0&|R34TrYfi#x(u+fTjNj4gWp(PSl}jrdaC zm5Ig#vLb|MXX!^QEzDzdOYCd-+!VX8b8-)pSal;1pj$10+>=4BHo3we*Mi)%AlD^X zpIV`zw7xTlJw%PRLGBT94T9Vpaw$RXiDdn=3JvcdcKW(e_Uq)n3UVKi+ZW_MA-6Ti z9Vhqdb=@3a=guxEpo@Z%>y*q0atV};4|2814GD5B$la%WJVCliP|}-RT9A8)Ttbk0 zgxt+*M#OW-oxdjI5Tp+TC9BBo2y(BJ+Zg0Z$Q1{iw=T%7 zC$}=lZ6&uP$n7ULXL)?xJDSu0H6Vx!;`ao(%jB|yTpTr92Dwynb>ZR8nWU~>F{125 z?rf0jN$&d~H;~-HAg7VrbA|nI`+m}^gOWw$mIb+$4wUH5i3 zi6cOK_5>}R%mK+HYAwj@B!ig!P{GKUum)qkSSdS7RNz}QpWy{$^!|6n;hT(!3jFiG?6yhTVM!D_ATpePJyka+ zR__3q&L}zQlU0jeUT476v}8Et%e8 zv1DvydWbn>&=BsuNAmLf^zA>uZ7ZWo>w<-5lgVgtB4}~9?HMH+2$9>iQZc>2h*O;Yk{=W!+Q&XlIjuk@&3v8vnA{SzFAa*?r2azBKC&v$BWLrQwjv^1Aq-$X>?OVo#M`8LtlRcSb^IhxA^ISvd*d(RP1$^u01z8W<>D)Wma z^IJf?mg#S-AB>jC7egjSnexS__#BJ|&2!tHfSK8u0EOM`mKl%$f3Auxs+#Ktktcz$ zkk~x2SPE56#ycM=w6QsIoTJo`k>ea(XnPn)Z)cxE+b9qZIC~b_MoZ$(LfaS+dCm@n zwy_{`oGlA&<0R3r)N+nN$R7V46#r!IykE68$0@TTUF6nR?OaW)$E;*;Ddqym6E8l3 z1x&bkeZiw<5zVYc-QZMtS3bkugPEgRHb<7oY)b)!HY?;;G`hrv<)X<{sL7n2h|)L^ z)hgc~D&l|6QF~?aDXhkBFcn&hRw(DUrs|s$LaFMwJD8>&nWfGDB~90hBN&*! zR)g&&-k0uVqgsnNJe68lbGC4q6|9kUI@Gi_Or)jfF+{%uv9JOAAGOQt)7Qw;*=ex* z9NGrIg#4}vt`JbA7J!Xmg?i*)3iGSUFAMW;kavaoTD8GX4)d+Z4-fOJ$UhL~-z0x$ zgoAXBD6PW^Ey>pn^SjAg!~ECe1NKk_?y3X+w=h45{E0CCG5OEK{BiQGU14BCT>u-y z{2cNxh557OmxcM8r)QK>u6f}uQcI`(nhoSrhskhKWP>SNGAs^E+G@jMeGtV~gh^ZfxV|YI&zzua9c9}M zi?Km;3(>s>nioVrCHkp>-X27c68+|Jy>6Wpmmy0G%C13%C7d0NtQE4^PyCGLo&q+r zgbhB=qG3|Z^I_IogWV|YS?ZW!Ekrc1z74SA=9C%M9a#ssgSu;|`!yDD;sfe7hOR55 zTxxL`v#sb!MCjj&Z77y&R0a;62&qROsSZk z(aYL5^mFwmgyn%GR9x{R@Ze=_#a0+<{ssE5y6HTTNxBWro*))i1nD{KREV$8ZXwfB z%Z^EErn?YZ|7VgC^{0)Yx9v6~tdk;tNcq=q~d+?D|!yK*q1WR_fb zHS<{JUzvf>SQR-0Sw@71sz)(YMP;nfU#Zv7yhi`HUXwdGVg*l`<;b>TcvwAhJapeQ zIoi1cCTE<-C)c(p0bfrIy@r-Ejhszf#LR zA@IHs)h9&t3sFp9CaXFum2LQtVj3!}5EKqZ=&cH2YeLj+cu{(;Z2;NHI5xuK5XBTw zitJWJ1&`ZO%NxcKTx!`Aq6QhEZmR_CT|>c@A`dVdm&Tm_Q-O;kz>E<3ZUh-dEM#Rm4GxmW#?Kr-)I=A&OX`OkV*I_8~0P}wf8wCZ8w5~v< zTr5O?A=RiWQlJ*;Ml9ouVUvEHt(3pC#ywmnkp+R)mrlTAs37}oqafQJtS^GEKwc{S z%~|~>FfPNetb9rK64^|;maG8li{Q8447lKoT0v*6Rb-8u!rAJOGs(UNHjq_M>u%B{ z{{p>50uu@3^%<}&2Mx1}Rlthn?$cLGEjNrFmSDMqu`za}W{4bQV4jK=SFs`VKY{3fx-&s5B>rFE{^O`m{{h8+!q4t1Cu4VY!&zYT<(=Ky^f0;iwa`yB zPODD&707$;J{h}H%Fm;k`iaJMLj&3s%vc(2R5$!Nm>Cpsh4c$LYS?6$F_ zhL`v@|&n82lFSID^U8jxyrX?*oDD@MFqOr(uDsjmMXhCx%== z>3`xV690vQ$A>sAj5AL>2VRXpOF?z_@5fe$Xx{+oZkY!4r#L|}J5^XFXI1SS%NYS> zF&7)lnI%3^2)SnE&~^{uFHsm)K+{sQEq@L}5HpgzY#g~gC`WRiR*yc?seC(p_?HP^ z{a}f8QKHs?@*CfQs!8esDDm?jfk2nGj+8F#9QP{+$G_7DH>vBQ#un-_-NYND%7j zX_H?QXG}NHA!()_NJ5KsO+srio>b5sl-UNB*huk+ZL3on4_pSiy%iZwzWW0>>Szv z7T&Mn2*)(9M{21UaW%GY zAd9f51}%du1UVen>g4f=2?YW34{M4L^Vx9j5HJRwPJRkOu=kK8g7bQxgy>so>UpVJk=}T`xG#^kF1!ZJ%R@-1T*tW!-2KD`=8@!O5*G7F@-hjF zc_ew6gi4(~VV(apwRvQDnUqQr1Ie^Ui+Pl}FUOnIda34^<^%ri&#=DSyU47Mi%*v11`Uq z3ojT?v%1`uE6s@S={XXJS zh{u!CgVE^_1Ea4EM!(iB%>_Tv)&*~buBt@@7fk5)WJn<_}E#=DSb|B)w7rHqsm#Hj% zIT#3pO2J6~xopEG)`hrsYV!DcdXkGib9XoO6}zFRHKWrlpk!?G7*AfF$fI{DS_M(Q zcnQak=U`vaiFhlTERZ;InsFx7 zY7eE$3L))C>HY}mK#08*520}?#Tz2TK_}v^WUMe=coaGbN6?1a`y_w)9O_$<+M?=N zxcHOUH^2f}9N~rY2Y|Bab_3L6WD9(*yE-)H_Kum!!09mBQC+LL2>P?3<3OnYHJMNj@06(#^_Tz*1#=Ei#ld7 zE6t9|ZX2hOC`UZE?+%^h=Y*1IerY%6qL{Itp|iN`uw@iiFcsWw<4#jSQ&ovdTKr?s z=>{F2-72;tI;|R!Hb4ZM%ZFZlnQ(2wH3`2e;rP47QsNDWM-kVF=jHb;wFGw)!p&u! zzZ}_E%)@4$jnT+p(n#x*I<;e6I?ElAf_Q1(NFUTevM9{H5rN};H98lddf z0RV+y2u;o-;W(taZE|nJTC{}4a>dao5QsL}_~D!-m*S1M*Ja~}Q*)`Ha=KYf(;ia$ zA{g{=?c+B%eXRdyh7|lV4^>jw^8{$ zvR`7W66a?R!JYOflW^--kVmnTT+c!wki~U`$T|g7)@vReCsICx_EE@ittD9vtm=1@ zqn;wnjy4GIAX-9OLzP@wd;`|s3WwHK;?s$@B)*e)b?C1lzH~0OnnVf(>&W+~UaTyF z%Mj!pc9&;RGMSRI2cS4td59OoiH|4#74b1-hmrjdtZ~&{I_MB`@ER4n1Rc~No*_Nx z6f`8ig&r1w)mE~hW*^W$xV`y!p5)y_ow3;9E_({i;kL2KOw;oMl}Y$}Dj>e#&VWS% z9Ru=gLA6ozv?k$`2Y+pOHsn5U_Oh1#%JP(m>=R@3yzJDb7&`dpmg#D8^mWTY-{iPQ zX7TpXkX<_CNk;-dot?&!m>J`*uC~6gJTv*@6&($lNvYMJjtY$U7{?=b$9P!R<6(Up zuR(Q28}DO<2U9561U2_Gi>GT|)3^3E&i zIGUHVGDlChY-N+k^)@o=I^xiNqRmv=M8QUMJImz=ho-!InCi#7)Z~GGNT3x8EOK|j z7z8YG5HODa1n~l$U8l1oILj07@T^`QA|^V2nsw&htN6q(7d+bah0y(BKahJcV~HL3 z(CTv(KL{+4#WO20nND2N%XXkz8_G9Hxm=y*g$h|kaVLtGOR-#twhf8rQrv^$0x6bj z&8i{sFpBS^_(3V=I#*mc4iIHGz??z(Fv_!}oQqlUl_58YjQx7`J8pMv2KZ`sc{=N8 z>^+KRGfuku;5u3$i-1Ul+#riUV*7gv&1|5X|?QQiE}7>sGkA{E*5EhCP?a$7u5iq<^|7Nbd=*h9Pm@s7mzvpVqB42<$7 z4q@k4?c%iL+%c8iREfF+u`BMj$-QSsyw-$U=oj`8;>nE35#LsuKL$|k?=1P>Pe^?p(;2mJ%nt8 zOn?HF>Bhf7ECwtmseE}Nqa{+~`wwN=-A&s$bX;^RDF^?nKiPdd$_k7Q%W!oFUM#gf?Btx39- zE6d(Md6ri`ElutEJ>|nwQ*Ho5=YOt();SsU}gT= z3+m^`QG>If0$GerctYaC5_Cy4_Z(CccwT1~b=cwOFbj(`q>g)TT>P{ItuNXyUZfrYB|bvYxV!P~JF!0~hn;L(kU_p% z=f4V%!T}HBFJ9%6d#ZggFKS;h7u(QHo(EK888SCa#D`dwsy?ei@o0)Gu$1?;1a!u=eo{?!9Z$W(sF5Q>g6}T!Qr4J!+e+4A+ zeh_lb%JF`OF4tyLwH;LLcZqFxpk1FKP)`Bt3A{xhNdeCh*he6+N18lNKoIzqz+mA7 z5U5PoZW}*M&Q`0$cofRRM6~0|{?hl*j2CwT)b8d?@D5DH@$Wbt+__g@+C9ycNSQ{N zo3doE{x`Da8ge?9Fux)k?MccLf3rK}$oUP-+3d>O2VqGw zjK;z2kH+bt_yV;R0nVfyk?=lTEya+DtTQ=damVnWAwG9)o4hLLOj6fs(XF_MN{J_Z z_n6IJ^w?ldza0f=Ih#$FMOoL}R2U26P!PwytF42oOEfnx0xRrk7#q5?M5L@>nlLVv9sf zByt>*b+pNAn$8rrP2M@+jPf@QU-3lNp4ka!jX1sxWEf>&OgZ(}Tpp;#u- z>kIJZ%l}*YZRZvHOJ_pfK16+#x7%TpC%)&&wghFR8hzjb-xr>Oqw6#r9GC&-Jd9p6 z8@F1o>xe^mjj2VDe+oROni|@INHv#&oioZ?YqWkMY~43x{RFICp;EdU=AFx%H>3H? zuz9j!UR8T0vhZlYxXa0ixU2&>OkD20Kjiflhf(#2JI8;35aBx$waZhxKY*RW?HGFo zeuQ1O++VC)`klRW8aIr~YaH1)L0+XAOa2Y z(9kw>FX4@COh4L+-dy;|?pp~^+ePt{QcOe9G9;b_P~X+Nma8h}=4S6h_Y$cLQ2C+` zhlcCqlfb)g#yRV2wW@(NgAKHQ*T)Ap>al?OME#)r8CpfsCs>%F5!eciDnvh`?vHf1 zD@46Zs)dW<*Fffr4J82DlYfDt-Bf=Xl)M#Qoh*nFuJEtlz^2p@?S58n70N)sC^TQ( z0B*Lh9eC!SFLWw@u9SySd9qag{U((UO64`|18Cz^9|ZrfX%V7wI7CUTM~LceP#AUH zHY&syq>E-OX)H@hC$uN66-?FzlG57y<5e1@jV$|93Rnh@4e2OAxkZl zB5JCSc%YulM>lLex!3c=V;t57vbs}LSQ{BT*TR9O>Imf9;!C|6uW zX?U_-X51v;= z-|>!7RbRi>DifFp<$A__*L-;!GVZXI0%J<5kzjuqwh_~THcFP+a%VkEq1PHa< zi2{)kBN)d0p)lq{SiW0Uy{-Qzze8qZMsVOsO+3aH^%7qTobx+}NR6YVn0_4*7NgVEtTvB^YF5j@ zS+gqa5rCWu#B?r{m-ASdMVCu(8$NEEY=QMa6P7OzEM6NG9}(+BtdCSA_AarW#B3p~ z7+9%=qdQMz#e09kYd2P^D#sd*5?bGA2xdVKlS|};!PJ%a=&8|Kj`{_)Jhh8ht$cCY zU%_d~Xz(L)dWxKA$|Zlcg-si>@*qp9@Zy{jW;=Mox zvM3E?(UV3mq88S?s^yzQUcTi6S5d`guo7e09&%A(kzVAY;$@ys$x-9{My}jt!H&Ax zr!4q8K-h@S#H1FD)fR4SYNad28SHr|- znA@>udxWL0fl%y_Kwf@-x%X6R$zv7pS891MM3w7M_vQ8l9e1)33cJLboDBm~(G|#| zmU#aHYtBVS^bz;9lCx!wUBggOaSV4&MI`6jSUwc9Ym}Y)a>|T)Fr85)+c%@~ zwCZ9MN3IhH&LUz!{?8aD|JC9^|VRbp}|k%x)YyLp>2l=KySLyErujOeZa+FVs& z2*zLWJ@Zf7dS2&iZbfY%zi){4Ma{EWQKI28+{4_-l2Ea@KI$TndGn zL{Vq9YA^pQZkwzLZ{U(`K#YrLFax|R9i$S7vvDl^VRTL@YX zRxlX>G?0}Dh9}Tp(H3%{N)#WRq#t>xU2IJpm5n#(Nki+)E%TBn?`Vt&axBi4qjW){ z9C~qf)Z?YN?*3nfV`O6!X>rg~D}Yy-%UQIOpm+@{0`Eg)_w%5Cbv?!8#Sl=w{0P&@ z06gi^)YXs{a?%?Nbg@Ju-S!K*H9+c%9D*ZgxtwL)87}KQkJpz8Hj^Ng#4&)y3?$NfSYml(p~eE=tsG4Kr-GKOOM#No>J=GLsa zV6wV5!R%-dyh)**RKk5+1yTOqc=f@mv)t4&Idb%k!;&h)9`|n*wDdQIn*PbKEcS|O zluCaqHQ}F2_3U?FF)L;L*K~XIgcCEH*2;>u?!FF`omA&_`i%(Lr7nTnYOp>r6|x5WoX>%&Lf)^9h@ zQEs3^jI(c^d2t&xqHi8SK1BA-#4EwR(NO>9vK3HO>*M!gnDp#tD<2zCyC-9@7S#o2 zbWeh{s0uiH1qA-Yk5dfl<9 z(Vqe7*9c;x?A<*3Xi*c2xXv*HTfMwu#m3~;Pw?v1KZuib8hp!Dl(3Pyn~9<1t^~U zX`6oowSkn3@Fh}zT?6J?L9$I062e33R4k}@q-6XvNJ)niNlAyJNJ)o-NJ)nekdh8_ zNlAa%q@=&Lpn`4GUOBEqAspl8m1L6Ab37^OnJXma`7exo{&;1?Cp^U_d<2~(Xv^6a z{xwo(Kj{;owWn~jicz)YSs%~NZ%k4Li@Kqo&CQY0muCif zQm9?@rSpf1>7?%Qe}mfupM#Ru0z+&*cu2FyWs>&k`#z05l_~x5bg{JFpAH^?XcLJ#4h#Rhb!rhSeo)Ik-*Mz9fSeA2?){v88c1b9G#$IF9w zmX1fk_05Cl&NRDl0;5Io{MlVA%2ZUsi%SpTB!m&m*zhzl91a8&aHQbu284JLs@TyW zhCjFM!Jw3cm?EVTlTzu4jJA##7XFHNwU-O4m}OBQl|rI@?!@t@lls~>dLiTY2PejXPy#__AJ3r(%Ph^C%6H3w(HtI*VUrA6U+ zoH?5S$}{Hu1P4LKCnlc)m^lTS2XL%wH%V=P7*7$RNYOK7^9(>Oo-UV2@go#B4T+rq zi)oU5pM|0sY14Si*U8ne8ceHxP!K5c}93r%`MiRCQ(59Vr?g&=7%Yxc2lapwK~B zUb~snZdxq8(SNZlihh-c9rU0{4>;d4@i^v*_krW6i<~lU!zfbBQ3^YPc&tti(++N| z7=x(>TFpW~K8M~@lh6XJ9MnN@5FpRA;ZzO2>!?5HG;(VdDLG&-C$-u28^A>*Wg(A| zl5+uzQ*(ixl$;Ajkdkvte^Sz6Z&K1>H&Sv2=tN5TYeh=>Ye-7YEor2rzob6{=zmO& z%)wB76Say?^k-$G5?Uv6foDTia@*LPd}q%R%&gh~4!b8IR_FMmtEx#=JdZV$>;kr7 z8dAlE1kqllv$vrwx`X{_j|(p=j28_kDxhd3MNOqBM(s)#bIOs)A|v#&SIc*J%oTNH zl<>$nh?yF9wJg9)hp#61GA2AnW9<_MO6Y(R>@nI*xIubxkQFyBD+h&e;IFBzqFNFI znfMywlH-~gY^jA6=bvz)4RM;{#B3xR1K7VsH%>Zt+=gg&%V<>V;rao6xU!gL<}z-k z{7XKMFrwSSLTKz|i>U0Tu{eR#G+c<#Z^$p+BB82mc4n)(cb3%@q&j^38onX|xDOfWmoOS}-vZ+(xB%k{YU%n06Ea$f5Ex z48U4{jy12lo&hNzms|@|e+H_Lh>*Ha}X7p_5^+4sb5jCZ|4RrT*sbz|6A9Xh? zX|A5dJ|orme2D7$w)gkGznJoWNX#jJg%cBZ(bA!#iq@0q^{$S1>fH!b3izjM?TEar z>rX9CV?G+A-T-Osm^M!yZ!E`|tJ<8Nct1x4-auQ;-ipDusGNb9$%GHe81LdT## zTZrE-g6q8zGcy{~%j()$Y$}yDuysD8f~z?-L<-6lI|CkWGz}F=B z0YUK+X$*WgyTsE?wiURl?WpO=P4c84LDZi84Gv`QcTB8kA?L4LYB`B-xdzNls%Y8& z@Lk;G-Am1w)uXV-;u)HNn~e{eQw|bKKaNlLwTyy#@QrhyAHXh7UOjpgWcMX4PFVc| zsDS18!}^hD8rH(OF!lknW0sBvm?&}$gflm72Zm1XIhR-{*jja(PIuUWAXlt5P}SG11>?A`mYp7yLQNDh5A z$E8q2?o7hfCl1K3px1_cv?l`#K>1aQrcpyrscboIjlfXJlv!Oi~|XbP+9tDmb;n+kmI zqP-#%@FbDlqMeL}LbNums($dfv>H@cNQGd*R(q5-p{j0PnUY3XDrF&44iHk@W@W0p zp#BppR2fBALR2QaBU6fD_o=F>6ltcJVZl2T#M>(3-ADZ5N-`vFI{O(l_63m5jBj_lDZi>`mZai52f%IEbkCt1z66{kit=f zza%W%Q;X>uhCd)|G_eX!YQI7_8cr%{i&SuCGXyjCVGJ5noTCz{h#X@6mX73_lAhPs~gpXwP5 zWj}?9>?6%ICG2YxV4rU8T}@y8V#B)Jo0t*56-g#v6NRk{UO_^ynQ*1;sYCk77n75D zsqGprwK=lXea5_bS&w_EPTPJyxa!gIx``hb_} z#U8*E_=87(?4?=>yk6?ViG99Uq3f@_^g7j@)w8pzOw|Xkso#)Z@V6}%AG?}@E3Lpl z)jK^T*mbJDW=%5hD0W|qEl9<9CDme9cLhYVW@enA{@4;sTO?@HJGK^z-PSuZ=BtI|=TtDagbwVZGIuTIE|SCN9E0-OxDM z)PeSH`Sv4qS3y1`M%{gCP1Y5Nx;~Kawy{@Cj>oh&nT@wW!t+jo8WTud!zP)`7@oY8 z@5){Xpm*hC;(97%=mx6YPt93U&bAk+j6^OuM^ikE;=xkP1{YUe2#Rw7s$PhnQCoYM z#k2#&Q)p_c?u|vY#YrTJW~ZYn3j@dj+1v3ms-$k%N$?F(x@C4N8+V4nrrL@Gl@Kx6L_K_rF}1N4^Su zJ62^l{JR41?~Xizv9Zm5jV-vlnBUnJ#$0gwKS$Xh7-b*v$KPT*V#MZCf#Hs5WIy&6 zOf&E(FnyYwR@J~JXUf)Sglc5H$(gW~D_gbO#xvnQ;>5?yFKGn{_SV!a zimVguz9Nu@{a&F-a>qyL`3B3-^EH=(DkgPlfjTyF#-OEnPlGt{Ib@@r1a)kIi%GBw zs~s`>d7v^8_rXHjMB5JxTaJiozy2xOPNwY|$Z(SfP45hudI0)F$50sh6Nv3yu=4f- zHV|4PIKJ|7xZdN3D59>CK?U!Iuzj#1%u=x2)4>)|OWw zMd4u_Kk8~@!%!0p2`dp44;@Aq^5UFNRN0T#>CTp$h)GeL{~8|;?Z5{b2)7gPvPc({ zYh18AcNCz!h=|da=h%16(9MpI*(Sv6Pp6w^XZloEM5X6mhG(mC+zMvc%Emq9u}{HEU9j?CBa#Nh zB`Oo*aRf-by)W3piA&I~ZQx8KBKO0$R^Y4@1ZCw&NXYIV8Ze!^3HWswMe}}jYx)Jr@m0gux(_j$HuCb(z>>3PO%)l)7 zFC(fP!rE--oc*^E_28f7M^x9XL#i54#TuM{asklTb0lBBPMu6fD7#SA_?O=Bdn39u{1U4uf2$NdK6*$ z5BlVdW`+jaN3CdFg;W_tl@mU(WiL8tIMb~frhGNo{_f%tB`4dm3jpO9b{wFZYrl|U zIoD2oCMe!Pu^b*ZgDO8UF2v9-Mq&d;j)69@+|UR|Jr)|+wY|c$3tlHx7Z%mk(hTdu z6-Zby>xy1^a~)SN)WB_%vw_1>wg#DO%s18rnNY*&RJgjcQ3H|BDu08V6Bn4gzw-LZ zysKtBAB@?8IomO!33Jdi+R+cuBnKa3K*3o@?4_V@G`6oqE{w~%1>n#da@dv*H=#IX zf~fEaD@@ALpl8g3)&(yEMu6eEfBOf#Y-W_#Zr~$7H>);8qqU21Jq&Kxbp z)~AAw5<`xbQ)N@g5gVXv2s?2LFs&7b%Tse?Ro4;dN8lg;ac(7RI%79L^ON1H;hY)M zvUZHq-X_Ykm+RZ!ttVfvRz!X+^!@K>?eIXbX2Oz1eEJScK{NYbEVb}uC@ecd{s!eG zI7G@GMLbG{E2IdOB~+=8W4>%)NF~0UN;NT#I{e|8vMlKMig%3BA9+u6{ReS+;FxdC zjA3g`Br*$#hzHBPxpN3xdzA3QgfD>QBk~3RHj5RH7jXzwyGXsc zKtv+gGQ1j(50{;Tp>~a;hbg)MwhWI{^2bWPpeXtUi0-C{@s~BAC_!wYs3JuzDB3|0 z?o}}1MIfsvvc7 zzMnWR4ZlkKEb+R;-;s7r|&TFQO%$A-rfYFJdO(2_+b50jAJ19M&>cftp5*>(G$rFV|5k zIk}!ewC>A#;?B?IEH%FXS}$RHrR*FgC40O!ZVjfYMl9lG0A+`XCTgdNK0@?KqP&!d zec!>wKz&4K66Kq2v7@?!XvRxGA11njs8!2a3v@ow-b7t|hb|niCHw{94ur>3xssOQ z1zHzniVUJ$3PHEgD?k@PB;twMh+4I!L_Z>W@di+yP{2c_bwD#-2KqhGDnt{sM~O}+ zy8i};87{Qo_z%K|2=iY5vLA`!Nsrfn4*xGu{sLVYA8mw-(?oX=eVizlLhvy7b)ePO z1D!(DOVp|zB|4VqV4_Qv?gMWC-MOBtryhi75U!-{Bb>4U%B_fwBx=>#z6o>+(Nv|{2p?u&Psq&F!qT-9BbxqNp#OtuwOo|*V~=Zk#7mALp~e( zBmTF>pFW&Usv)x!ajZ+iB#NVN*k{YD5a{1ns6` zBoc$KfL*m5?7h_csz}e+^J6924W0~shDT5GRZkm^L9&b&-Eq}}_h92}d)Q@&@Al|9 z5VxlIGV7nDoooehjA%u14Uawr;s8#2%a9iVdyb}cgE&^)yae&jOY}9qno*xD(YO0* zrf;IwY-nj5D75o<5w5+Wc!P@1F42F7;-gFSguOLgBdFL^D&iuIRx%Wd3F09t=2DbM zkqpBuYBP-1MAs0_y9>HeB9>@PqDzRb9|<&CoTrCqq7LbNF3=e9Ezxs0+RKI!%~^#9 z2<#TIm+;}m`dfRGUArl5N9md;Agmx(QurFt+C(!B0F4v#iLM|TOEd}RDX8EhL|sJB zqhqzLi-5+9{zS(U{g$Y}g=u>wkwY|}=w70QxGfzuPj5!pM)*y_12GBV=Zlhw-nLjD z@nN#73Wa=+zgF@sgjON`g76y7N6UDFuy*n_ph@BjqCXPtPjn@2O|VxH9}xYVC~q#; zM*IS_s#r&K8_{M&o2&s^O*}=^OEg*fZDKarlSMku!NpR-{1rtl&j;lcF`DR%MS9Y{ zdR8gO3)*`*{zHFC<6BYcGTB?Moln_BHzuPgK1{hT!89H6?xBHeqXhxjw{sT$71^@W;Ly**THTC3D1|iPsh&NV;hfM zclpxsQGG>EOde2Qq15{X)kzrYHzowt`-(JZ%lG7n_DC|Ep%x-ETA2uoYeMRlnJm%B)_BmtV$9*4cof1x5w=R^M#d571zD7#cgM!8t{~ z?Kj)P{(%O+42>Jq;9Vvvma`~!T1I%E9GCsLqNr3*S>(cvaSh`a+#)GX!ALxYmc(WN zoba!h1YYzFi-NS^YsI~ML%f(Gtts~(l~1X1eS-3JPUZ7$r1RitEH zmXlgQ=^{|rexmrcP`wH$mK#yyNj0G2a8Ry57JF3NLG^uTMx~TXrA}1J1{KI+pK3R# z!#xqDQ;#}*s8a(}xn4Co_5FxW#UqvF+VjjfSUK=|S!P&*=J ze8aEkN7;WVD~^=COIc^i-l420QpR`sige0U3qZyP7OTCE`fF3DJ{i-Ywv*I-5dKqL z?nE;L6I5RL6uH}jjs$bR)NFuMV$fo9=pM8awb9Z-XIg5 zS>iIT;UL{a(Q63e4ZZ~J)Fe;`NbMR6>gpCy?}93R9@~(}YdnpGO}93f9x~Vo^|nI3 z0&>w9EY6y6{!KiV_*~+N#Q6@z^QfLymG~Iqf4RuFBHtf;AZrB*zz;J6lugwYpq4{% zM=56c;+v4TKE?M^oJwjGsYFnvmZeaX2Q3Nr<(36=vn{hgI(lYX7W2DFwq+i^UDNWi zEkz(^^hDGTGMWkW^3fPXHyEt{c0}EU_(bBHh<77iA5&&S;**I#PrMoNcx^m^MF0Xa zj54gC@LC^&1prl)<3TY>N*8e%<;Bs! zi-;Rho^b)WCCtwNsxbG0`hRcCa#6;!R2e195J@bRZTSb=Kt?$ZxJz6HFT?zn0vYB5 zG&o7z2=fjAw?x?#pq%lF=c50(PhPK>U7X{-++wr-lZ z8WjIj`J{?@@OX~wJ`)w~+ujmD^CR*-WcaP$=6GtlYJp{YRiKO0UxA+Z7z-bf;JS{Z zntYzHe~*pMqd<9V*AwgI;K@?lHh#{W_C>fT4qtq_58vU7vQzi-LhSrqJo)JQUv%b} zO(#X*OFylinV0lmn`~4=wv^UEH(zj0z_PV#3Zj}^ZdOZJ*%Gr$fY8{QA; zNjAJm(3xy_o46U-T)BmSj1aZJiVc_peIj!mB>FzI$1+aj>q$)<$^2g;<;j#^;N$aC zD1T!HsQV!gWbu->IEQT!H6nHfh;euG!vJz;LezvnjA#u9%$MryJq*uLj)vL}%HtsS z*VhJ+zCHqUb*+H(dD8JN?IkilfDumm{D38YP4**{*=3?5rptYJ7y1=!OZbG~wuAi@ z6qqR5QM=bHX#bbmoyclz{l>?UN4Zq0Bq|gAo=WqnR4t@rrc%Z$nEx^C3WTUlnGLO> z)cTd|%XD@87__dvEX(r|y+EZ-GCH!{fE8Pygrjg9+KC6UdT>NGmNWVF_7rrz)bTEgwW!Z46m)Z%e+IDSRO!!l+H8 z(d>{BU5giP1mk14%1GV~B$6Vnazj?EyL@AlDvBjX6t!w+M11^B230H8U9=4q#cj4o zqXQ8}$9OGBS;^hF>(_$;^1?`jRmGzbR_mmUU4wV1nKJj1pKn5nz{5Ugk9?h#tbE(Sq7xJP-e*Xd5{I`R}txqytv^R<0 z4P3j~4wQ`=V`fsrJO}3)7FPwYy?qapKf(C9A;|q7XO?*T1N08&$1r|8%#X47D78$& zC;wc0hZ}aD9)j3hw zhQw@PF;H6vMhaQtHWt>$6SK4x7(DxhQarVn_HRD{KP`35G`))F+5oK?L}C;q!yj<| zuC*Z7k8w3;T)jXI>gv8?ne+Zu`f_(EVsH)SreMCe%sH=qsCe^XTsCbMFy3#n3vH)L z_9UY${m|iL7i_fEbm$*~5K4RErAaEJW8l>gdk9o9+cR4>lk*O3GY#ISL1p6VrPlD- z4UBc;9{eW2-8f-V);iP%il?7P7abmjen{5N(0UGFaej3?K0gC2md(&79q}|;{u1oG z@8saMkQ^I#kosgWDEWB99#G=F$$Fim4STf3gE}Zx;NgfH}U>`T`is4V1WZ(fBfk8QTtu`*l%~4d+Lpk&F=njZ@lXr z&4d^6I8d3z={_K2x{xU)j^Z9L~(Uh02cn<(6rp| z?YBgL z`kqZFUF&E2+>@Q*i&1hPnorYK03ZpR7I6^s+X2&#XkA3l}YaS#U!>_t8ZnO3s= zDz;(x9suz)HVZKo2e6$A5GpzHM65Pq#D=)F+?LX6L_tx_K8wuYH1q z!^pb;yQyy586YM{t3YKET6)c7Y$$4-&<^(M7@nd-{(pvpYG-vvf2Ef52F0f!w1-6KWRWg zySX@1kOXA@(Te6l>mR6STH+lTO+*#t5#IBK#qi$VaPpYpZFJqo40qB6E}w;5<0J&M z9{b}c7yCQI-ckIC8X!jzh1puv7UcwFBe-pBit2Om%!4?L(aU=rtO6TKa1X(gArMu7 z<{Jcm2!qxqc&<_zM6lD(Eo^9N?R5liuPrX2fg+Et z_P7B_GX;+>r8P+$qL%3}j=9x?^x~hZx#Z!<1`>b%4pCkpPaTfZKsyiLVi|1QHkq}L zbx|(wJI*v!1y2bVOdatC{e%maT9d@R)LOG<4c?K>pygp)TeR0RMYURRW*?8oFjAr8 z!{Wu6teIX#h_4^-t&bEnTtWFys1oGSkRL?Z+EyiKBR*Av7#gmDU}sS9juKcXU{ib; zboBxSsv!;pv4u+68!QQ3$bFS=vOU>ZWE5r5Qub za4?#bT|?WT1{TV~@n{QacY?CWkQBUMnM6jVZ&C$+T9$UZDi{}7@RoI@84c$V&7*xo z*+3=M4*|kuk1qHMSja%6D-rD=dPIuI zKs58;t%m-a6%YEwJm??KMw5(2=Q~XhlCm{v^C&0X1r(( z&vMk32YXj|DYdX&;0cf3D4NyUXQ2(Ci1GZwxybRHch$qv#i8+WHfc|hguN#W?~XC3 z-6|*>ZQ{NbH@9;6h6&Z9EJpd4wwPTk(YjzT ztilZ-cvGg^wh~pSGPgdWv8rg;@{Gn>t}pxtm1@dk9c0TLIvLq)1&reA*~n%~K+wTR zaGo;+KNtYV*%p@fk3MA6Zz<>Fqt0O;bfK*0G?o!Wmd^uIJPO-jiLzH@j}C;$B}V*B zhTLBAp6ZBulnrxYhz}F+Gy_kWXJd+R=A7HeEmOT66q<-Wh60`!qC&gJD!5xp0*__& z&n)53aA#*RwddCJB)`i{*RP*zmd@%Ai&SAlOBH0ie(hX~D10^jHP<; zxpFN!i7z~o$mLm{y}iA$y-mJ;?$?Y2X!XQzV=aB^3ygd0yKec|E+O(U#ouW?1CL$S*M0Z*+(Cs?J>8_Vr}H)aV}!=7zGrITc2u* zEtDAg_k{EhMCfN4`WVbkva;3%N9n$;Sh!hrxC@JzA1EQ*PE0jm1LZ+(&lE$-qtQg$ zi`?>P4ACsnx;)D57UWk=108ORn*v47>D=5R?ge2CnleDBms&0YY$vJfp!g?8pbt5Y zZO)SE99}fe7seo?r~kfy&57ZKHxC9X(~aA57N2qMmgn)6=(Z6vS(iNv1w1?rMpm(r zSpGBCT9?7QZL&F>T}3=<#5aZvfo?GaK6KK{c#LDsbT~Lf&V#KnM7j{6-X6=V4lq)# zqMY};ZS;(XF!*XOu^H_LzeU(D`QLt97rNyFP`QnEb_=>KdLO8aaDuC(;Vm(a zVwAq=Vl}<& zVj`Jn$t3=n$bqQNpHji1XZ)F>5B{@xFKRpcsf9~Vx@8aGp#A8_(2&IT6tO=<4oOO@ zpYT#kt~ya~{otQ9WMm&J7Y+z{gtJNYn}1G98TW=69pj91-;ADi4g#w;>&Rez-e1)_ z;)HTqv!?QAd91Gi#EE?thcfNHV`$F(pv3Xh*fz<0$IQW2!F`74pZ(RdB7|~W?WvEv zR73A@$(l^073xrvG0TBx<6wQzrB+hVAA-YYA_OlOg2y0O5h?iYQu~KE0KKlNb1!8P zC%_9&fe){grPd_T5L$&chK+4|)ikmW#@J>F6|i`aKJjvEIV;q`Z7O?EJv9_&qD=c; zfHo3}DDdn_@Na*+*f`_9%RWLpL6zP6x0tjvPA>(pniYaN0m5%gpgU8=D5CZcj$jGJ zDshDg^uE)ZYh5XfsWE&9p8FHqci|J8OzyoGvE3kE-naSf8;_b@M^F{~m0D6mR1<^3 zGANm(qn08tD36h&1ySs!r(j6p+&k)J+3~$_>N`-8Ihb(oQ=}b>nQn?4j^VtcB4=X= zZ$Z+9@nr$S%@FBQWG&)d!oK1Jl;JLEr+(h%G4*?CHohqIG0Rqdd8r@=v!y(_^ED0` ziFWvbpShN;9GL&6wVGO`mL!;>A~biIG-`NyrK+46q+<@cSsWZ0 z3z#Qycaw1!Z>fci#6rR?i%W=K9KqVrTbrTB%HL9Q<#;p5vAnlfk?W0c$Y;Ka>m$X< z`8_a(vtQ=f_{p1;tn)t%`6ORVYflP2Mju?9(vaL9_ery}g1lPlx5x+4vSpQ>on@fG zMWC1c>{5Y->MX~~S%?7<#fg~C*ed@oZbCq#1+(IB2HhBRPa5!+wlA^4Bc{^;9r^%% zM;jwGF1^Y$QVni2Yjs#K8=qTmHjjup()+piD08zGIIiq%k-5!|mOnPe9R}Ye(8V}5 z+G0gs;khbN=9K50QRXVQOEYZ`3J_nTfsLbzog%8zQl3-GeXO=x6#7JLgqGWeG z;SE_cdvALkF`LH!hp{(-kFrSK$LCElAwa?eNFW^HMvediNw~sb5CRB@fpCd}a=#3U zn9P8lW0)iMo2_CC}7Yb@r)@=;BCA)Y|gEKe)7m?+8l$fpynu!G3vG#);dg^x~0wc@_3_1 zKcO_gpFspn zX%tQmTIknS-vna_`?suBJ$=;4Pry%)IBYK}`(uP-LmU^np3BuNU2(zoD)xdJQv%1iHg+$drhka*NFZf4{g0oSIIHA~9pQ4ebz;hbA zHQMTyXf%&IIC0b9M58h;HWGh=X#T5leq%#l0@9<&&o=I)jr$Fdbm4fla4+n`&k?3y zU_buG`>qQyb)J)0UtZ{a{J|6^6(gw{%pVQOrnl!T zLtMkjfEZ2&mq2ET*0&(AqsA{bN_EsY{~s0Sf1ae@QLK1XMfiISTZDfEEY%cg1<^JV zE5g=xkS*+FM8M78zOGxUr4_NJ*g9$?5`ZpvH;&vDb}C%bmSn?Sx7=(e;|eO4Y!@c* z;(MezT4MrVtikqJcwMf+&S)WQYy785e}{8QhoKgn(2IpBjpDg`P7|FZt+zGi2};U; zu~Pk~t+lVIv4}Io&}5@`-{=f+21==KJq`I6!VPDL1MgcSlZ`a%v1FsUzupw_&sb8{ zoBq&o{VC!crCSTCNaOWo=<%@AXQ-PIo*`-h;*RJ~!c$_r)vJfm;ZcH7BsdK=k%sPD z8ljk>Df*}`q`1m%@A1BL&0>WnXs-+q)cHc}o*3Sy>ayLZV|%J^SzJA~kwSHPFIIf( z;S?i1Qz-S2`UHrNG(}bFv2Dv|6RmwIMk@|Do?=fo_04H4xzKaNxg1eE#pX>^zu*Wek{q2f+)Ob;EtF@?^ z(M$`WbDZ)QgmHglTVI&Y6y_r|rjWGy(`hTx1E+hg=nzo7Dhp1B*k>vWPSmv@#}IoK zL(KvzoniK_$^z?nGvgf!kymic*EBfoXk|J}Q`ao7;Ha;0aN02)4y-V++TU$Y6Y7S+60n|5HFDF_p=R*Xw3CK7VpxwAp- z?Ea-;?Z`wEO>6k-r^T!%X(50$vboW=JF+esjUb$$z@RRapn-ZlkV_vV6~21 zQQiG8=Gek42AZ3_7!XrG*Ml6)VjIe_p&>Su0cbGFQsZn7D8Vs-U?+eqYmIZbO_(2n z@S)KuyD@527glux3Wr!mAsFvuAW)rF)dzp!>`lUN(J=V~cbSNU{bqDlwYQ&k1OYCd54O9{l5+M9bKr zsgR~lD#O=Xm^7Sl$%M4iNy~tqaJ6!^eq!p2>MSPRXvy@vT_F--^@QJmTgbc_Sv&Dv zo7KHG!;7W$Z9S9*TM;Diw}z{j0>UT{7i*V_Kn7o}gTo9k$Um$<3t|U%&0VfL- zr{yC;S3azGt&4&yp^69bc3z!7!i|*%ZX@E;dlK^R^yg@HEL~XG{ZDS4$gPmv2FBV+ zShT6r=xLqJk7rIrFUy#wJVpWV!b$6`b*&6<9D2j=t&HB?qNc^*H|@Dq zjzV~M)|*==v^M(nsAo)kgIpsMF`J?4NaBbwVLj5?NS_U?_%|EHPwhML9ef;as*y z60n7;*FYd`Y@BvQ_QZ{&d4+0t1Z{nsVf1l<(BT`P3$hdnN^OHN97yw@Y%delU=;I6 zd*~ADA)vWZlN{HPM%G^wRZG%nBZxF{z6%0w4q93AYQPG&F*4e6 zAeR#6tI;5?>!UL|0SydjYoxWW7vBo;kvR$KZhjDRL|Y@hP5m+do-gZ71=io&8Xf%b z=q#z;12OU4!L{z>$)hn($M0KsR(w4>R9yaAx0^^`(^Whf7WN^MfcngiIZ;JwPk|bIlMp-A%P8{| zbNrY9#RYj5E=Xw4ff1#~`6+1muf};W0%e~JoNKju)zWi4182w1vY+9-o%xGQ-6wl z!40{Az8owTgq>f3L~kuu!b7Wm+ZNgNaV)^NrN=^XEXLtvYyCaw{Wjrn=t7QKq^dI` zsg@7Hl9L9IariDsJ6Hu2g4_K%GFeA9@ujNaQ=>>YNtq%ZDfqP;rtouLM<)Tm*k*|R z93EH3o&ZWmrt8QA@N3@1h#)y>AVmt0o4#hDC>Dq$!6bWag zqdQ2`fNcV!QQ}lM*8?hDq_8{6*|_YAWybD-GFldp*DdV0w`Ia;Sx(+z735Aq-Q-gJ8B6}egRti zF3T{LbZb)q%@ime(B*(MXaAJ|HR}a{v<+dBP}p1rNV8rJNVE0=(yVVF-P)F5xR#Lg zx^h68^-X{@=UV`=VbnNp6FNe70s?2Ay1oaXX8iyl&H6DCu1!YllY|go<9r5C2VwI9 zAkFXe68 zgoJfBK$>+=Kw9WN5=(vbx1k(6b_gI{Il}=x56*DZj~2p2BpD|VRXq_<2C~8D8Ubm$ zZmPr*H`9hL2c)a+N}Fy0pl?LztAvi6mkZPskQb2Vd>x>8=pV=%0BZTy3L$ajfHdoy z05uc3TLAqotnU;$vc5;4W`G_5r1kL#AkFVFi6y@$ZRi<0_Jw`^i4K0`ug3WbkgeZi zhuJ2CY!%f4xd6QhNVDDpNV9%VVwrZY4Si(C9ss0!&LKcOh4W#dqo_(CaP~Wo0@SRJ z0n)5bNHkfWwxP3jtYd$)VF4ZZEOq+({tlAD@P? zqk95M6MggnG*ejT2w^MG4H1Z}hXc~A^8snrqa~L7#@WzBJGKxIKDme3seoP;&X@0p zd)VP<3*?oOg#CR1piV+)0@AFnl2|5QZbM!>_BueE2GEWG{aaX<3mrM%BoN2HTL5(y zy4wJ0&i*?knu+hRp$F{fM*wjys&PIB=!~#_M(D`;1%cS#Ujd|9Zw91UZ0cqBUC6=s}4IQ;(j{(v*U`_zKMua{q zbQIO`AzKPLCjjzm)=2<0>tu;0>r@*`vtu&=amNDA13>*m=x#zs1@{!F4WK@Nx(Ho= zK$>%o#4_y=8yfDnqw@jLw!nY{s7$1uD1>a)g#wZFR6v^bOhB6T0LH)T2s$zmeFGpprmqF0S(i&J6W?S*x7e|_0ivye`3%szU`<1` z2=4$_9P|z^J;Sx84?Afz;v6{J{~N-a<1xCIo}snoO&V8vhWI&*2poPdNIlip841Sk!m2?qjq4F4#R#$vRL(wuXADmDHR=(ZIMw&} zFEm3EoW@OzQ+=D)BRGAkZ%QPX1+zNyS3k&cjwL?xCjdeojSn7!*&j^tAB)dr(CnUBh4n}3^dfb`3)cI6;iD6QldD9Of>eDrN1wo{Os5ut2;|`WNjfzY zEJ$leK~38fRC2H&qag(qVN+0v!GiWx)A08-jy_p_?7?4(&^XXkBD>1;xd?5MxOXa3 zW-~!r#kCT%uzt)E1hP*qJ(nEbWFR)Y>31A53UB(AM~(Jlqogw7mvoR+rv1_ef6$te zaJQEWDBJ_`oy`urUM=5r=@%HKgYDlE!uG#Yp$L(_vi>xXlhRXCS9G)%_Kh0=QPd?PFF%Zb)I=Nqp#fs@zpC53SCVbksXjn+oo&re$$ z1{iG{fATc^aJlf;TK^hgbfQ<*K(G8hKAg*)>B6uN_p6Rg3Hxg0zOLT>>IxZl8<4R0lca|v)uWEU54b4$52kvJ$kx`Y*K3`4$E*4#p) zWxq2deP*pZ*P>rI4jxd=khF?SOot;M91B$(F>hREy*SXwNJK=Da#$Y>MBAN)q~?Uf zAQd5ZAq5uNGfUk)A>UdUn!bsp?mmEPQ3bwy^G%XUDelpvcmsSKqEmg{%&YKMm+J-{ z*Bm#MBrZvoG+fzk#x>Turr1EmF06X`oF9&(RCCYeNci6D(I~nsjlPCZ{5Z)j^%=+^ z&)^#8{g9gfYMc+-&{i9&v7uFSHJy4MrW-uZ0k@=dRq&0#P!;H~?7a031nAwxy9%y# zHzE*lKY=Ktc(n%NS9(=jFpvaQkDw5kx3h4vlqDfC9ohF^W|ig`6Z}A-CU_u*Wud_xaFeye ziv&a^FgEl&AXk<1Y5uvR+VyI6)h2+Ng4QM!*&>>=$&9-q<6TiqB{9v33AmXKpUu=s z6KRG4c_)fxtVmP~so1ChV?;x6!BQJ~dtaxD7)DHki za(wmYUHqwd+f_aS)I(DkD`bO`dC~Qdy;OgEHbVy^d)9sz%74PPp)waAaQVf z`*j9*gpuMW03Fkzc*f^wf;JH)>*n+DWmfwkMw|Xf;&7EyTX^JgM{SFE85eO+6f>co zE0gtA)QgV=0p)C3IK=2>;C`fa+fd^|<1*{Rp++8qsl$w-?%;+m-|hsrQ$OX27EmZE z1Ex;)$?StTMEdk))=k5V9!8G!!Z0JHg+&n09&Pv=ipY``^SpW_lsvoLp1| zmu|1g%W#Gwf|&{orpv_Q3i0M`xE9U4<6g9cZ=XU>e`Pb zn4E9O;qF5g9$ZTxN}mBR7hZ}xn?y9P6aY)?Rt9x-;TIkn&su)`d!PwQ!_S;`>Q z2XF6in5&rfEf%$fs$W&k4mat#Xf+kg(ZIWVJgc4PR}9{R~Zm>V_A zdqJXSebL2Ps8D1u%UG(vk+0}BpBdt9IR~yoE{vuLvGdw3QZ~-nEUlN^#t^jKI=3+> zlMJhwZh?9iMU}iZUx&7lh567LF~S(w+9tVN-4G=KYir#IV*%J49bt6stjq8#8iTpu z9w^I2dC1o+$B%mZVXOZIM)$!{tmi6aJsi!Ag^CXQ&dmv=VVMfGT&va94_mh&@kB;! zqo{={4~Zj{z7<)k>mEedZY@G(KEjM!kWe%F_`Al{8A?x=Gj1h5HJZQP|jdqPL zL~@qsihLs-CGzDP!#f;#04cxy>Qje#A5(tIlsT&ZLww8)q#xuPok99jzR}Om8KxK~ z6gZK^ufPB(Ga3>EQwWW$OySHerpkx4vX;q-FK6{~&F;rp-f+@_^^>PYrkYEbu z;XF}lNpB#j(2BRcX}DX&^xozyr*-Z^qcy80>?CWxLVAR6uTPbWvb#P6MP@5 zNl-g)%rP5>uZw!hp6V%8RPx?vukVpf>yQvf7n#aLu(EP#iE54yQCF%Xw()D zO>|Zs|HURW9)lFDx3vZud53Et-kW{oeb9QktJ(8q%1sWT#tR+e@FW{%Y)=n0rXHSO zhA)?iJcG7{tNd%Ejqvu3FLieU_8XvzM`-xJfJ+93+80^#M;qsH=a2s`+ofZfxHzXC zWzT@SJ!q1OJC+K-P1KT>yPfT)pn7nI+)f{G3+yexi3K3zi!sj=XkOAwr{torI8(zz zPzNQb+YEOky*e|6Leyty-wDV*n3u^W?+WxqvS7}GQ@-aY1C&)zV02@{C>b_XtXdP+%jJ7}eIZsbjgh~nJR?fcQz#bb>2=SPHV~mcC5uM;`&cU#HjB&+fkiu9oN{^uZk*~>1pe8rh)b08BmJB;P z?#VdCT95R4nJx=8B`*=EI#6mk9lq7(V>K94(;(#aV~xIXsE?<{8tt15zdIaWpFDda z@E?pdy8CIz`g%pITOTfM=<-Hts8O_r;_)`rH3cw@XT(~;diU8v%zM>a)f6_ zJm7JxFF0F>b>{hqEK(VW<<{dZhzzVgo9e3IBwgxeY{7+N2l!T$y0Zbx>eo~19t^k^ z`ti*vb>{(gRJU;Wrl_aDri!AOL~xP)pa=J7t0*E?S_5^i5~+)V3${z7%eO9FeO8z> zD^jO{k{Ji9-6HipLh3&l%w+YecPq8CHoCU>tDWl_XIF}af7mhD1Mi=J&YVd1i;Ym~ zTCi5H@aGJgI(p>)#a4|X;Vk}C!OV%?4PjoMYn5lVl%;tfmpNjz5E-o0@kZzFXcSF- z%}d=x&BS5fVy9Yx5gUW4Naw>0@ZOcy^zlZAWKisB1B&xQUFTYB#~VXaSQJqo7YfNgx9hkqLJ$S@nmJqvKWA6l3OOIrZ;x^{C!zUc( zVo;cekeMdB21L?lSs2L77E6FFb}#;_#)~_#$x0+rMVl-<5`uD7G&Zc;pN&iRpC8%caS4iT7K;eB*=}g>fJ)trMVlSzs(6(#?gI#q)4q;?`w#-@ zu8Ic`6RHJF27gDujT3fodz1qVrXRl2k4buO$@O@d12lbo*Ot1E0&sw4J*E(FGS=TjnWr)$Z{UW-(U(uSt*3G_n-PHxHDex zTE7YlsrBw^R(#_mXSCuK-FNkh5HGdD)`N-5nmx&AV_a#ioMaSnjriUqW7K8HUuyI- z0Ibn3@K@csfE7v<{{`G%N2v&q>ffX?g-YT;6|MGwThh5I{-Xz~#`8e>Jmz|-^qruz zD?Qab0zO45ODq8_0hyT$RCfU?bu)I<)R6;R6%`Wx0bv=eR+YMc0xW~o)urxV0LwTt zS8WEXDwZKSSang)5Jj0#TO%6`Rzw!5=d8|fF!ly)m%kWEV&%thHIEa9l+;!6zAjf! zmTM~`H~@dtuw1_i=fQ|&TYS+j*Ar3>#uiSPf^u0B{vF{)SmL-U)=Ag^>yFqS_WiBY z?F8Ka2;gf}HP}^A^Cl2D?Shv03Q?2`WxFI&Hd2Rki7ZmD&b0?(VS<6!g(T5|Sd-Zm zdKIE-oY4v`QiqXR256ioa(2He+8RE=MDDo23yWwsAgK^oMDGBW3c(`&eZcT92XjeU zhmR&w)40?b%q1Yr)_QTW(eeCuf*6)Mb!d&(J|hn);Y7(sB8T;yi^q%vsh6iX!Wp!} zlZ~!%pWkeCn_~1d=2;g{fls?}(7Jw#F|x~7cnPeg;Mg}m{D?-BhTP;vf8ccT3Y;*J zi~ZIYQ;c?`|80s`u7E_g)aSv8mB?<3_{3aI|A(Qg8q&-?f>PvS>a;|@fSB0B;njUC^`2fqv)PYN-r z^2T?-JoFpEfPm)&`#!O8_^AvK#M5U$O9uN?VUb#ikw4%+j_<58PfQO8he%Sj8$UJ9 zSMjTbqfS{e#YbJ_kgq)8vH~~I)U#9NDz|POB!Uke26c$~%M;!Cx&TOl$apP<6vUc*nbF3N6eZ2`R-g8Hakq?F;a^?HSR<)P*cfY>u~r!Et}}|% zUvIWNqw;b1zid18?1=?BYR003$B!>@6OY&n)MDeSW3}0K_a;acU zma;X%mQ1oD#jnXkh`Gd)uIY4@uSH~yGu8`!L)+90k{sUdA=X56PlHj8k)V&AEZ>hi zPIYY}R8*!!aTi~0LX;k_Fn{4%S{*H$fcv-k)>D@o?Wx9iSNVsC3QLaW5epflYz1auXyAx4G>vO)~Q1STV z>vLJEEmYa@$32ZqMyg^AHh5s@9AZWV&cqeJt1FDv6e2Ru83(eJJ-p-pTwkDxRhJ9W z)y*N%HK&zS@ZyfcK%gCr& zf+&^Y{pj=wK6p2@{su&6k)FEV*#eY;$1&jM^nii5gD}7h zaq(OuQ*2|X78-YQq8o^tPyZMl)ysp<2y+f?Hp@LnJDI~olP!C_?#H4Puoo94|y?DVqqwkQYx%D+3 zWrDL478(EH5ZR(Abkv4kuw#=JTaV2%meGL2cuEJNPRl-w1Byri1#s7{%CQ)o`DSeF za(2bzX0dMi7Q*UYyvD*|)v>q< zm3^mx*8TIbeMtdnda)cZy%Hcr=o!HJqj;_|y2i9&SH&#h34wV0SK~Zu7jxRx7=!T- z?^*-Wv9kds2ptQjaa0kj9*=rPAU}?%0wkgN3izwdG#Ln0-2{ASGoj6dwh_98P&J`# zfZ$EzqQdJ`lfeKRd`u$WQm#4%2neQBtOMk*Pt3CAJy+axTj zjxv06LadHxmt~Br?0n%vy(Fjm+R2g*k5w+RzFvrpTwv3Ejd9t1Bjlz_TFTENq@oDo z?gx{2-<73qa^q0oD*FJx!AvSBL_J_KVuggIXM}T!*EKW;Bcjw0zqX$4Do1aGq|%&R z6+;lH^Zy+~VxDBJGnffsU1iw%1|damUa~mgW+O^2nG>ywX$`7E*FrFpM396n0ne!N zH~h%&P!#-@VlR9DudZ828g&0$dBdVLMGocjb_j9Vgz;y*=qdkg&%2 zSH1Wmq~^aG=fx3dy?Zs%Zb61v+rw433V3raepC+;;%b12zP6?Ag#aD_m9JT;dr1_I zgZCPOIj-1+G;pY?K@dj^)&~%6AJrWrNr+-$^2UJ~wp=|*ARR7I1ygi~Th9)MW16~+ z5yw3erYp$~9$$KLbm?wN`Umpuk={9`f1D#fGS*d&88WKwtv?XHu3HTG;%Hu6aiz_@ zjm_O!yToXHF({y4$jCl|fe27^oKaVQsZTC&V5fegLspL(=bu$e4%Xo%#)Zi&{F?sB zB`ZUl7g+;6#@gZVQM-BH8fQ%S$B_C6W|E06v@7r(@V01VkZ*Y5-MaW{>qn1~IUi!? zxB|CAuH367-{P@9h$sj@>%_1DSfO_Ax6HzAl7fdEwhNLA}FaDpb)nH zSJo?JgrAIF!AUuRU(;7Mo1%vZ3~C%AtX5YUeVU-~=_{M$rJPt~O}xtJrl&pZim}R^ zzOkqte9s74_YSY(A6=Ko6cEQP4RPGi5WBI4qSK)ohE7R`Ok}Q*?P|?^G3@tI{R`Dv z98tnTIH^b#TmQYvXx5JV4&IS^hp=n$5DjFPoX>s9jH`|ALn9j#vLwictwetH81uDh z^q$Aw`UnRUmSMu{A-i!ZaILih$@`-qKIi63ugXIOPR70t9{27#T@~VK{q^L9f0;N>-~hs%}$x=IBgJf(al=M?SxO2 z!%SWbxfAg^)noi**RmJ)In3ECN*YkN6Sd_FJZdfvv!%%a3iUT)qep9SvS#zu2&>~K za1Mo7Pnv#wc^b%Mt2jHHC&Qg9unp=8p0Y=VO5fRF``4EtHxVVA^ZHK^+%u?1wL#j- z)yJX}YjU2O{mhpTC^!}$+!d%!*jFnrC&`azIed7>Fq~mCSS7;~AE_r-`B>zq1BSPY z7I{UEY65xJkIFY+{OSjN2*)$1P(2BS1jqEpNv&w6EtsjbXt|M_4heC~GjC4+V%!&I z#|!78uf4F`Xx$hM!tkAs(bC$x9A`ZiTHh@<`udSTvvK;8gJXu{sMp0n)%C%U5a)Al z>B#ssIq55$Th6md6MZR>Vmi090XCSRRdet^ha8j5htSXp)h!Tx?2#d`r|dHBKpATa zPPan5o{*g@(&9ttc6VKCbRCNhQ#tK$O+hW9@dU2ngZX}%y~x)HNVeXHe(-*3WW>jn z(0J*J`Py6wraZaO3SVoq?TmEAH)kJ=>}2VL@nm$Aj6!OWHLTbeKb~aRV&V`?&onI& zdEEm0(5f?xm%16jG%-vdSv2?l^>VM5?fb<>el~PrK8Fl&2mH&WcGIJQsoLSi{#ZTg z!#w$F^HOVM2~MJnL~OM2mCXJhO>GreMwICt6cNYUw_Yo?+sy+@{-WIsL-Mh8_nR+% z@C9EckBXY4IxqFxveJN1bCBHp;>5|w!LQd?q9k=jWQ+KQ&sC2`r|8D@{g))ii(%}lIRJ*(BX&7w@5 zzMdg2b+(+3AKZlXHbOHU0@w_E{9m-VZ?u5pAYi~PqbweETzk)HhbiaDHZi(T_3~JI zy}14!S(Mc{Zv_Ybt8w0KLyy{!5&4`w71Y5fTI@P1Abs4t0ZP??#7R*JcRl`34^8mMuv-2QZCAJI-xkJviu4N6@)O5IJ$*&9-eOS;C{51@{Y6?r={(zu;A z^r{WnMV>W?!Uhw5p*XQ zgD8>*i|49%7QyXoV|Fo{Zf7%NS*;GMjDA!9AeMK!+L+Cr81_yq3g=Wv<{Jjmu;taL z!0J?oFWW8zhAB#(=cJ}e+ChuSMQUfZ^~fqC&yW6wJ6~19@K>mi*1!p#&R}0P0!Vxv zB~Xpyd6NLogPand5~xnpDBNmsRE-xV$${ENORKx`DWD61sBwncIn?ZvRC;d5E zWxoH}GNS{OH0x*+YgVX!14BGeI}^8yumhz>gg>`k^#pv`^?G}pZ;IV=d}H&RY^B}{ zqHHn$vZ@{4zPd+nu=wi{C(NT|*i>`iH~oZ?cv3FU>uWmso<==s81lE9nyAUu;^-XkIj3 z4LToV1O{qMa48(4>-Mr*v06b7rP>l)6*Z6`BApkEs2T?@eK1Eo6Qn@kx{K?zxU>HL zzzoMApUFumFPGXY>5O5XT?&%SH=-+rS|~DiN(5kwb3gB zqe65v;io?fPHD{xq9 zf+tQ>i>K&3`-7P)P=N?64xuKM=DJA%haHiwKw1TU91aF|JvF!jJRC2R1J%YVOmf}$ zgb2jsajvra5YTzP!aU1vw!?cE4&as*zQ&Qs1FrR0;KYs;dbESLXY{0JpDjHR)}hQ|oJ95$ z-?cbhqjF1%B2~7WJC;)zu8MY2&%CwN(pAw+0_fTeZQ)M?0V>U ze56J*(B9J982<+Lm7?j<4sQSsJ1F4c@J5LB_76@h;W9L)0c@dINoB^IW}wln30olB z7hB#kBOg6xW0}!+z9f&luoupyb%OOmwMgojs`$1T1~zol`w(N`nb;{B)3Ve}t2yfO zButlQj*i9BP%w0P-m%y!2pENNSIx4lfYIAO=(6bSjB!?b6FSAb30p74(uUpyoTU+8 zLL-pZcN}2Ja$=Uf9O9Og8o)I48bq81csX<*NyGy&mW!1%xtOB10^3@!2PpC8Tp0kR}jnAx%tTEHytp37O<#^x~LN&W{6v4+b?GJ5svVZ z2}fTO*&*9L8gYfDpDWJkCXc4!EyI>bIa8EWsHV<skx;3FbFWZ<%8tZPq<+hJhqubO2ExSL=Nvz=jM?J1`nVZ zIHA4^XSJCQ-%yO-70HKZjtZx%A7Iu*Qo*(yxWM}RjYgL-qMG66OCKC^nD>Ct(+!Pe z0EE=1K;(o#q(J8M26f&IO(hA0REu@$Mx*m!?1th^cg!x3B%(IFrF^3uNc1h^hWrw^ zj#S)|Y7V%;^jC2hW}T5o|JQVVL>?7<_d27$3!?dqF-uOemxn<1@j9ckA9<8qM#pFW z!0uMMMiP8Ed70dbE$$QCRew{K%y~rSy53XZ0m*rghXp*v)73g|?6>rEX@DI5PB=WO z?!jm!7lgRgZ$9+Z3ATtoL5YFX+0`*_iocYf8r$~7@DXGIt zL0Fd=;?}lF-x1>eMg1-|*P`5N7^2k(ED-~4Ih^9l(%m`LGZpuIA0x?YQ^8hN`VTT; zBC)Wv43U6|@Gc7MWv8Dav&9pI^h_>E_J{Xjwl+xX8SX z;h&MCszF%&7j`xlnQ!mf`~)I&*39PF1=f~Iql+JYS!~Csj{lAv3{cn9&=R6kS^S~u zU2tKS{)4}l9e6n;jCp%RTO0|0&W39yQ&P8@o_6;iuV$E;jHGy|6-mU-pu;w5XUvZ!q#2|h`9ng#e&gE>vJmYmbIV6xad3TPAAUh;wAF~gvJ0GFI)L*9S0iA){qdU) zGXbZsJ%hk{4~X^dN;sDbPUUPU+=ZZdoa&Kezl%g>5^MkO#A*LEEkhO!G@y3c4h{sFDo&PVZZ^W}RCqg8s*ZM|v}htTn-OOb5n@r{|IC+mQK)i} zq4~mRxKPh_V)7P_nM&dhKPFxcVf4dAe`bWGg+r|axmHoU zZ&o;$4!3YF{b_1AHf?blFq}&VT{xFMH`P;cr$s-xe(^tPy?u3mG6X3 zxqr+>q$~(@D>BB?IESzi#&V+`j{!v%bi;9K%wK4hAvg5z=YK>;`zk`KjiQB&nXc|a zj3>@c#?O@%noB98%oi&VoqaG6#xcuiYOLC|qpfAsr_)&FWr#b>7*%AJFs+zV!>pcn z8GS}QJ1#otae9didU}T_Mcs&kqb=S@VOGnLbJgT@#IlMh*s|_2x?MaRv`4N*0~dE) zU^RB-H+qub4eNC@npGx}`@$Ts&|t+|;a3X8@PktRXHPxFc;F;*$Bn zH8RF&ObxW;-Q5rKfokH*j$ZI>s<4HqM++3-&*fEppN~doS3}fQbFGAXjnUD4Ok8ho z(M-H3IH9#VQdWGt=l7JTYekUw#B7~ld<*e(OsxiIMK7T*k2PxDaCqvpc$S8r16(pm zd$>B$(Z)9Lz%)|y)&X|j;=UU01YMVOu0uhYFUBPGFuY!Mu2|7j$LH!5C`1kM0b}T> z_I0cMeMU#umtt{W4Nd`f;g_SW@%I_m@!4{i;XJu?eEb|A@B{x3Ta z?<%jh0|~D3mk~Jfq+sZyK*Eq6K;OHS(Y(p2&0j>9*#W1oq;92OkBJWNvgnw6MIFp$ zeK#A5B+$q=q3#kG#`r|H;mxl@AGq%a6vdlcH#G7+RB!LPegXFse16jKcC70f{q|Q{ zU55T1g~1lW4`amn5_OwHopS_w)2hDT=+W-t){$F)Cn24EyD<$f=l#oyd%#%fuY;o` zI4L!-BQ0--Z?@_HdaTL9D^hufuN6Y*6k~8iMBm^89*eFb)e)%>(Fu2f^Twq5GK$nH z@+mk`IVMfS;2IUTML-OX03PVskLV&bl|<)o-JBbQ$DhuwzQQ{FfRUDbAMoK7Y0UC| zE8{`q7v2GNJ!IrJ!{i(Wt+y4NFs(e+?1zl!CUe3bh#yr2pQ71qDT3n}ypzER49;V) zg28JTyq>`o4Bo@w9SkmJ@OuV#daTPIHZt;oMJ=-Nmbw=quojT3f~QkT-5xv4dJnjl zA>0^mMKm9sLpappNGe;mk zBsy521iV$5D-hr5B#vta^~-YDFKv;VdV|u74mJ{!;y+EuFGUX#lu}!Sq`>P5ZD8U6 zp`CMMWKs&esHU)ThlX*mob_c&eUd^{=O{wD-PeRM~l)O|Ms zw;_S6B3;7wAzUqCrw~7caFVOyG+*=$4YZU;S5)>PwLKF(e z-K#Tjt7<4<-pHbW#3ciFso+ir&LkA41Giq1+>FKMF}(5U zIK-PWKy|tufmsYNO|!6-@Tk$LBLq`t;8+0xsG~>MbQ*VcCu`KBcwoq5-SDXKl>d9s zazo0zgAn~ayUYy$&FdNV!t&si-5;eqYk=Z8Tvr9RGfLfM2-iYDTmnWo;Jy)I!&R{Z z0dpT<&9i@mhb#izcLSgAs(4Tm-1j|BIv_+fYyZdQ|_X4scWtft}@l4C^Ym;a%&V0V;BGhBE4M=zRaG95LztEVCRoxdlvcDexZr z@uaEvA-of{@dbqNwC8C^QJJ>!5M<6u*qBF}Rq@zy$Mrog;2pJzpnVJwPNBpXzpO59 z9QoMEqnm~DaJ`{xhew^p308GQYMNI$yhXz?5M8e%}sT^OxO~;$3mo6N~bYL^&B%+|id3F}3#NtW8~q*a4TF4A;9y z@)E+B?wAAaTQI*lQOj%+0+Gu1rs6~35h>KAA@q&N#OXr>6SHPjJ|lD(L1|1{aQ%gW zbN|GXJfKB=L{m==u`%Q&JZJ)6GH^$26TE1UBcUyP12Jol>-in0x;@Cs!<)5f*g;|K z?)WA#ey8kn<9>!9Y7^rVgi5fyoDTCgYA_9r8B8z?^aDP4OGiK86M3}fECepblN~gd zhM+VhPW37FRCq;1ECgS+f*}-^&Ao;Pwpju^8G&C`oU3d%QmaQ`M%gzuSbw0v@7}aV zIO>gdAOXOlUu)2lc+3tNqhE0dkBO^ox_2O(t85ZtbQl8|dRv9-6^#evrGzZy*ovmRGX(f|ulI`b?xY+pNNh7Zf1O^*i6M?6>KRh-tI&kI% zOs$bm8AUmWPAnM~b{+u0%l!Q7@b(I)5D4nug!S7HsNztgJJ_D5jE-@5Jm<($#tbJ0 z@-6w+O`DAN*4z!o5O%!#HyC{w|Mmu>dn)>M#YtEBukgET@8Y=)Mz`$i2694t{|Me2 z^dxxZm!~< z=2Or8mk8ft0a5kbe`Po`QP2IC=vl0~WQVOzE92VuQ_1m#19(%VzQ6Psuv;%e7SRUf z+^5S1s}cRJt4+x0mgX`~JIXY2=v)%$df`&-AJ zGuliemX(0lJV+`vg=03|D00JUnxS@*LducEWFJbhXMu!~nN^UyeeXwm9qTiXp_|Ql z-pKU7-Ix0h2x`(9av(_7B+0O#vBpxfe*nXQgo*&|GRFhdF^;3!&PtZ?tOM}c&f@S~ z>h6NDwzG~RjGab=VQ0}pViuDJdHU71I?Y7yD-Qy0h^vAwF`QJ>f#)PJ0)a-ZiVy-d zPA>lVug3Y14Q;TY=WOUD8+y%#UbUg^Ka4Jju-R=R-?5?hZRk-z+W7h>AP%!Je+XCK z*7g^Sj($eD$~l#xcf<DzU0A;}R>oMl8r5*j&GB)!+41G(kz&3)^ao4dcE-OSOjy4kazr9Q+K;3f8BFtUeDnmiAwR7w|3@Tkd~prBiL>}IwH{4E z%o;J`MqQ`3c50kdF$=^+8x}UWmkfj!GFF&a5q3smv6VJ_BSlGExdu77ijU#;IrYEZ zy^P>wJzS84QA=vLr#57b1`Zn3bJ~L1Yyuc{KKP=b4 z230=C9#Bp89B=AkQ)h_E^a6EWg9(x398r6t94mH#`c1nad|jLZe#1UqdDkeZ9O z)1E>&rl8Aqxw$xWmED0~H)%_TX=>Uy#eNO5pS#Lt+468NqHveb=V>y3>@w>bR$_eSGBQ8UG7!^9EPfO|Uuo({s_Dh9$S{Eg9EhQ~XA z2=OORhKk~GIP{JX|B;SkTVhFe*hzpkBL6zPUBW2@g8En6h)t><1xos_l?02Ba-Fxy zm`!g~#U^8LQ&cQmVWM8EW|Pq`?#I#AsZGW}5@u~Sddx=hl8j*5diJ;MxAW50@B0N- zjtg%pH7)*W^H)gEMFB>f$AKp(uDTN#B!ap9keH_CG59c|egeFGcl>b-W9>J-dSbNo z{AQzdZXWKiPFIIe>oN*`s4E-i?;b~igQA{1>DjITZ87A9j%}UUZ1kCi?Dy4G&OWOx zSHsgDp1C45yBlZG(}C)CHXiTgj0IMQ+hZG(bh*F;c14Jy$WGm?8@3pkml!0M`S~5> zA|~tv2-?7ey-E!sN?T-dQqI>EVSB2_wmw}EszvvR73(0=KUuN0#EKQz*4zntZKGVE zmV#Nty4AfqYTYsv=WDr@>W{W9=hlxU^giNf;A)dLGLC4I_F2DJuT{tb=Kz+n^wO`O zYJ4Cr%E?t;j({#FO)Qi2CVQ3|LP2$DIch3j7ldPWtq}55u5y78dt9WMf<>D)=gjA= z@M}imgr89?U9Fl|&Uy~sswbIo1!79B&)d1~q)sJ*S(_3exjfa?D%@&h#@*S4e>42D zeRMRsWg`#*`@k;+NNP>rK+Q0$2{^duMl?fqw$+79CyL40_&XxinvT)zh@D~jGgvR}K^8dI zs3Z?Oda=r=JFF|(tGId$=C=WZ5r1G%&I+f#F(@^4l`Thu*0P_4p!$XO_G%joDJ7Ei z!VaVX?|%Yoz5X0pt^E0!m_Lyi9 zQA^aEYH<@RB2|VWYb2BC_izcRnH|_*qVzajh`3k|+KYA&dAZ8gBSwcgj=KV@CCri?lK89bFiYnO%oa|6 z)vcnPB$ki*q{6SoiP*1if@LgPXImrL(1_IGPXU$WX*b~tR~ery(R#X32;tO=gl_>< z?9*`%NZcFvt%F%fyO^abo>4kp0xVj|1kE$4_(BcLbCvA}UI#qIeKaSE=qh^)zdB4U z6sHol(svn4{7^jmw<~a*X)z376o?HFRK1{FH-5UYCvC|p_9 z2wm3`r=H2cOJr3X_f*gCF_7R)o7sZ><;#UQUrBd6MI{G(*oU%4t$cj9&aZ`Yod~|1OS%?|2K2X^`U^cA1n3U(4?0WL6;-kR^9I68Mlj3x8_i zS^2J<1mvqUl2x$1eEkg%WP^tPDh{qnK6OxsQ8LHUgPnHNrQ)sk66aR*YP=`P0&)*K z0Sa)9L?B-@Knb)iVp<_-CnTy7v6cbSqSY_0wPv@`qd5qJyOvgG@Xchy32j=h?l#7u zw0GASw{n$nTaB@hgEyAk^HHc^?iC0$SPX=7IaH|m*mEs)6XdRBNpE?WLVoa8JF*e~ zDBe6LC?o%8AL*~DJ3MAfaGux!$Gd$+ap!c-KzSeIoqZwa8(zfu+k0u?YMv2UYR`uIP#}QjW z6&c-O5`dWw;03J@5zvA!Vwv9|-z23dfM$Wg#L9ff=$`Qgb0W@sgOu-*@_O}fnl0zdmVvV=c{mgVXAl(scfjTzdgot_#*}3^a8*vsrvDmr!_EYdd1>7N6hwcFl2TA0a9T+77VxKj7Gu;#qS1r-UTojwi%&sDJDmw~TZhH{AY8gTQ| zdYHX`L9&4R6HvjMO20~t^K%4X-U0d&5XT@qB?_qK$&rrGdq`IGBSX%()1w`40Wvvq zWA9`Be{dV~BoThHz{`hB*#uNQg-0_$dgy8aXgRD2JW9|Cpy2?J0iYA;JK(QlZzC|o zWAW@Y_)A$$Ui7m!s!WGt?OO8=;zfkD_{_Ds78zEtD1PkCbyjS;kxvLFLNwq~JPF}k z5~xc-s^^+x{M43|-Vw$23sDU_+fhE~T^{`@rZl4@p-$L*x_TKD#z=*P6H>J}#;}Y4~Jk z*mpSWQ}~1@^)GGZt8eX2quWVGH4KfHM+zboE0Jde-21I{-d?!l4t;A)-)k(K|2Ps? z7CfUy!xURz@B-$YBsCW}vypnZpZ+rqxhl7;UX^(7LlFQ}HpvjEpM zmy=WcKqMrxI_$%R$(O9b`;4qORL+8Z#sFiSb@x8w!wfFRT;()$u{#y0HFnhEE4f&$ zS*808H;JqF8|8j>vnJR!?9F1uncKEJ>oD&Xq$#eM7QjcBniYpp%aN(y@e^DWd!&zu z)$Sdj$4?HICEY_bts?dgtem)02bUZqv6wfBFmDnOz(MS;!`UM--ACpw2%L*NVys+c zGCp%i-Fl_urpMJL99OOIheo?r7%B6_;`J>;0UrNoox^;2&qS;LM@FkQ93+;3Azs7n zPM;QI(a|vBU4iI0kgfd4$h?STg(SODeF~EXY-ASOT`#$ubt6`iN4Vag3c)o>z6b2S z06Vfh`;pQ1JSL|SvF$t!Y-M7IltLy!uP(*#kB#&CqJZXh6cAO>7_{8@2RYgsZ5i8bd=~PU&))(;pAJIMU2D#T&7(-EgZmg%P!(yu2QA)U8IwQ+gv~3I2-UbPfK<7(q5eyMul%3{i?;I#p4bR?!+#)XU&e zkPE?*>I5!SoHgDE(?YclabYJ@OBwOCPgoroH7h;>9;ZAwi9+c4);M5sBAcfUs4IZ1W zzC)AbZ15bWd&iD%6H9kd{gJ{vaWiCIb3;_$61)Y$B2&Op#t@pWZqNnmjlu7N8A#+n zm?J6MxjOzC0=R4^loK`Og_?ya*?V);TivfG-_N^)J_UU7XbY0Eg{rbLXyJEgLACn3 zb5aiV==+f^f=@i@*ZAm7h3)OtEp&}mumr->GLi90l(ZagIQboSVA?KX6g7&~? zZYyXj0_vGnkchmr5{^M1^_1{$3`goaj1}tF_4ssx7CjC3eefPpcTIo=fM64<{DiN%TZAsl^4@KpI>e-Hou-^&ac)gN82|s6cHJJ~F@V{Clj{ zhm0$_I({xlSmair4@u*NdJ|u!fk*BpvrNfCU;V{Gt zxYxcY&EPkR;=T@no~{ZyZc5$D5vT^_s=(-ou=hpl$3sS*@uJoH3*(xO7V<1OnuXKk zH$E-!>B<`)766zk%i8>f(Pc8qfa=3n@3Wj+1=b(9-vyX1fZzeB_*CDTND##av3dw3^9>1{?o^x|INh_PUqE$QdLT6zcmmmDVCYa;P#p|VsLFzE z!2pG-EO;dtfKatx8cWAQKUrfkmQ>fGF7G{shuxh!h$=XW+)G!#$z#>{{>2)+0@Wc{ zaBQE7M>7aW$&N0qUbaKQW;;=}&a&?K%6P%J$r@E_^q^bds#<(X_f_leTBAct99ZM2 z`x~qGTJulOw_)+zDCYjNt*>h@0N#UuN#BfBwy z?#SUwPM)ZHdMqw=Y^4@(?)j$wkG(gKkE+PRhHu|=Lx6-1kU&Bb2nYxS5D1YaY1ROW ziopP)tSVxY0BX_=C`%`F5MmQW1uv+KwCy(Tjxqrwm?(bK1t4^Idb!t1cSKW`b(186Ozw7Ny#{REuqtnBg;$SY6*|#0V zB1B;Sx&9wS9GGu(c*Gd=jcsW(+#51cgpC)!!2~W6Ov9Cu_H88X^uL2(P!!Jf1NyI$ z`B73NYA50NB|#8EAlHC9HnK1nl~UlmM~&1U{sXPmjkFM^noDBU$r>N$+;9UNv&P38 zEABod{6$X@q^zrr1drqO`myNFrjDHv1L)0iQ?gV|< zF!p_Go1-I3dmOV}5`#piZu-u)GX@UM(qu4- z@QsVVw_S93vv{Dx9TCtQ5iD{^MHpEvA@7;pXC);k4GIDw*Jn)dXw<(VwRm6uQot&ShF z*=TjrHpF(nG4iCXCw}u!+FYqfQHH^y4dKR>g!cf_JVX7iLz|2}CvAOokpA(c?Qz>C zc1z`Fz@ngsnFTl!!vw0BYQ{jO~YN$%#Q0X6^rBiIhZ4a_(Q;p!=l*v66o z1NrdwE^#G=%{Z)?3UiznH~SKkzKw!YwxsEp@V7a>Mmh(-fQIWkkK;EymXN}nKJxdw z=+vqxy1_w1?MF58XA_8*!T_mjP1BuLH>Jk0dWrGbDchv+DC1gjG@K|EwBkgV-hheR zVOE?TVe-4^5iL|cQa6xFdMZGhH;Y)t!k z4vgygP~y= z-2+brRc&n!3aaB)<=;*J(>w6`k)=tkrlRS4$}HzEJ5ctJ?Uw$qBu+EFz^jU>Y9 z)Vf)mm^u#cEH~f3#uNc;=6}!y>Z2rYj>WLx^)ti3psu-A14vBHc6e}Ti&nK*+02~vGrkE({q&p0b{<3_<5TRN(%amF?_ z5m{1QYfs-RgbS)1IK(Z18K=%*VPU;##Q$vTMLC-Nv+WZ87yoR#W7H6cP4pV1M{(j@ zza5@z1?a;r#(7+jd8l68AUY#%5c24z5HQ5(c@`7+KYVZOIBOf!5iH<(p;wWrxL)XJ zRGy{$V7 zEK6Ep5+Rq=BiS|?GwW?>bTH}QqQg3%<^h7VYnngR^=)nA&je|E>@P4Xgvx?DKkSX${^wM^|nb6(G!2cAOYUOesDr1?57ALqWaJSaKvfC zsPT2^SwRSRhV#P9q1E-6ND;TgLC=^*5OJ_)sVk=h?AFo;VGWr?HvfulxEp6)H8+no zG-TdOr-aM^f8O&-bPfz*N#kC_`1KdtFv?Dcc2q|MPfQm-*ER??4?!NzHUIe-n;SWYw|HH`OuwI#P80@Cy3uUH=eY01-ME9pBU*uu7!Z+J#9-&pz^-fPb{w)}=?U-OO1-_WXVHopB0%Wy~+GcKr#AJPsH zvsy*}zR#u0FEZ16kxCrR+Zn@63e(68vU&N}7gU%sAVHN1TAlYG>oxjD!QF@s`bEKN z`JV{BC4V#c_NJT+I2@CX1SUMq66pdEefLJrj1w^%fz>#GDou8c1AUX zgg}`OF(EKG2r*`mFCivGV7wV({5ZkO*r7`nV*k=y{(?2pA>%H-ylQ@m;8p8|`xx4q z4hU$;Wx|Y`F4%e`-ieUi&wf&;xi3P>}zxd+hCN(FUBprZkG2N6%@a5fUeh=>Dsikn}+0jCq0#GV`7-t{Lm_ab848}{1W ztOQDgW41C`B`#@TD4#9~q8XpvU>oN{GR4A^YT;pkiP@`6tZ&N1F{?6>hB7@FF>w+@ z!PZzNH8Un}Xb}XSL0I^O$!v2OCVQCHu5R1~66;;9k~+%k#QZ`opheY7Xn@49=* z=F$4aoC;ZA!dZ?nWwCeTw_hwxNXmv#aa#Mfr|sp=1kDCctyC6cEcs8$}C_8V& z#e;fBgRQ7rq}$^IayZ`R071^=gVQ$jtF2oi>1=Z_nXI6krCkwoA$hUMg8mP}gL6#_=uNqV3ump6Y&#}2@n!d7(+quyd|Yz~NvwRKq&8s}{cVND zE{1c>GlHfzWfM*HaN=N6-MD0!SasNSYJ8#FQR6s*e$8>4o-DIco)!(U%vRhDIpqnN z>x-8u#?iwa1Q)evkbn5B+G@3D1eHuHEL7%8LBD80P_}BD6PAzg*Do*1M01}A91-cH z13M#g?i4y8QF{ZioZ#y@Cac=H?jXP+qDb^e1j^nK}rNlzbfg8&ozx@stNI^CRM(I6m zON{AJ`oIw@J`2l*DAw@|_uqkR&OCx?*gr;!ouR{coM8emkbp*2l%4=GA4lnFzBV9( zHDrpAJx&n9Lzmeqk#T2Q%RLDI)#4&0Y~4_E$$`2zIISk<8=lJ^;AvS}<%xRcn=|`c zYJ2Da;fUu!c-dR7;%GYp2ov;7m6<$*(HbPtk?iE-oHw^M=9+IErig{_Soia9zl=Sb z2->1C8#J0ai3b_#m}BAOA77t14p$%Iom||svgQmy(2{in#ZxRiVGcF_ z^~1&)yPj}UJ%UzJR0QA$NGCVD3g$E=`Sn8?%UUWvQHS zRHRiolHkBwjbj~%P{No`Jk2R#G~e>X=}c@;w)Vo1A!5`xlrL0p<&C7&>4qTr%W?#u zdy>E>18W`xaV_b?NZZ62m$|kJN|nSWeUi{vS!qCJJ-5B7OAPBNU2vhUwG-_{E zoTEPNj@WTYKYC%$!>)Gv4J^7^8M-^y;NY_5t6qGqi`aSAq6j?(VFa7J;h>n|jxYja zii*fXOP)r6G%#XX>d6xTZ(jBB#`ChFl3|o)tnSsIRMdYj}loG`Pu6K&RoSj{xj3Fk8zXB|tZ00QhHw_XU<{`M2gr zqa%DH1`+1vn^DTt{h=kUaKXYY-ZX+&1j|uMRh-`?nU71)&1m$)YVCc3zDJFY(fV+7 z0&}DF=z@b<7WAG-m1z~pre9zn4nHww}=pgO+0ygPkOm`n5gDuRf5u5yZ z`8jUhLzIulW|)S2%epFBPn_~5mTlY*y@&lP9{7~w12K&LD8ucl%|2X2F%N!Z^l7E1CGL!nT}`q*O~^qwkb#?sg0NjSa$c1SUd(f5k~Ikm3&-`u_Vd&EXf%*Tm|pZ99xZv3h6T7ZV!vcQkVT zfiz~)Xy0)aexc#Y`~=M|Xn5BRIzQYY!EMrFO#@Sb9QZAGyZ73+ai?W(AOwd%(h#dn z;DKzoIbS>!^(J>61_Hxi6+Gm)mf-^|>VYAEReuv#@@5sdEKBGwfsL^Ot8t8nDG3UU zb=)OAlR^IFc*cHch%T-tDzK{2Rf2>-VMzkb{V=lEaqd)E0x6*>VKmLvAIKSjj<}j0 zZR*?^=mufEAhQl7t=#3w;ZZseIE~#SQba(Z#=(&goj9JuJm{9IyY)7~@3Qe>z9o$sQr2jw78cFk@;zGGFhA`f+=A4vhA?cY}TR@8qrb2Fw$D zPiq1+Gl|v?J7MilYin9Z(>k8k-vY2MqIEW{CulWj_0swUtyMnS%V~d~_8)0wYMF1) z`W#BNdp6Rr2tdf+8kUxH@(X>EyhD))bA_0W1bt%IPMH`7{5 z>!O#@`!=W3-u7>>zd+}Sv}Vz|pVnct-bCw{wDzI(9$L@R+8I{7R}3RAVB#DBjkxLP zBqw;IkV$j#KxR~Z;yIcm7apTYGGGf$lJ@t|B&l9XlO*_^ zG)Y?DMw2A-0-7X+XVD~ydksyJu9pQGCO4=w9Z4XP6Ox}MNyxr5NgAfnB+1v2CP}#% zm^e)2^1i=*i8p@d<}a@_qT1`}J&8p=ZB2t2WkOzj)c@d(OUW zT+?3XGQ_&}`o*>#6)(2e^P;%%A9d<;lyA-|;yG;g9NTiT<>+pWsOh&=|c)n7+NRfk4ag2-7MKla2G>`!s*d5v{9 z*F4;(Mk;QH!tXN9(xLcO%sDhqROXY!$$}Zu0jZdWR7{rvUv+(S;IQ+>s=$HB!Y@Gw0g5_M@{5L^ zbkRT&_tn1oXuS6pNTq$j{M_HYD_fMc;@g=zr61eOJf%3!F63b*hhWig>KLI+c^wyEr#L>{nJHcvvyGID_U~*BtI}Z7S%Q%vy2dh`$qD!z2FM?552Gz0XGwjlP47 zrcAX38BLjN3o@EA-PW{WVLbSm^ZNO$xt@LK?fgIIE7>%$L&1g#tE@rBiqni(Y2l|0;1lYihjCnh8H4H)5j5sXEwJ z_>{V$wE)Mg+S8^b!4xh{jfD?|C3LBRzC`H3PcV1TUIXlc#j zVpLz17`l{+gWb>gnG<$P3*3w55im=!n~oYN(%89niR}_lI$Q8%3L9Vl66yD2JMrN_ zU@6Rpj+ay~=!NYt)yq1wDfSocs<^3}o@Va?(ZOVEELvd!-;J$|5$vgVz5+OYsStRh zSXzjJDje!!t>CaGTytbZ(R2wi8^gW+bmb6^i;-N1Z_!KdihbC<@YDa1V@&L&=e2$t zBDZD0pYwK(@pv!2Tham8=k~@0|IbWAsi^8*HZieg;=m{OVNZQ8y$`*$x>z5Yun!5| z4%>hS0;_Cd8c;sii+j5+*3L=B5=KNeTEzBf#{Q7$m9d;{LMUdOn`zo!Unqq#wvJ*7ec5^Z#rgeE|PQ`slr{d=CR2|1U!dPs^+7 zQ^rg&Z@T6}!*v)u&w>*+f$>+CA~x*6rR{R>;TlK3_m%X*h+pl%$wh!y_tia<;1IBH z7H{L?8w4?sK=cSSQ9-e7%wD(++s2x?mR1}@Oa#M-P1k)h-$nR%EqQ{yplV3@&S+-U zs`_9y7)hTH!z7&$9~wyV6B0v1_>Ua|H>{Nm%J?UOOe6pH&BNd_HtSH~zstwyxo+Z{ z%jOzCr0Wy(_i~I&`srPm%UAc)GrGY;)KzC1hrk>f;%($rbzPRlV7K}wR~w;zdS88i zj`2Z1y;CO8Q98>e^sbrEuf^p3Qu72Q*!h2Sw_Mo7!tyJAYm8-&x^)mELf5XjEj~nwTvmt zDlUS!zZKeppONfl%V;!aTWIZG18aRtOgd!JyJ@5VIFP_^0Sw398{_uV-v@xzx{wk8 zY$IR~0sZ_wyl)@l{u?3B6OxSUdH|>);1L2^yFaISBh2of@Qi?Y7fo3VXC+L27n4x) zc2vPEjG)bhskS|?TFE4Wo5k83gsQ5DjDahMS3`W|TTl}*wWE0x^IMzGB6{w2@1em- z1BUrBthK3uajZ-EZOw968(w0SGHrCepV&W>sh?WF^d^}yVQMIfHt$Xbb1TwxZ$})j zoJzzN8-e&XoXzWLmB_s2gWbQPpXNz%|AXG25%2xX$M9DuTLfdE=IN5}G-Jp?(LmD= zpcx+_W%wv&GVCB;t3hQi?Ynt*LfFul5Cjv z53!Phh3OV1NRIm&vXscMVv;Wy*ALQjeUnQx?tZlwmik>RvzR!O%Z`uFK*;7)l0SiM zZ00Jgn!8Kr{~iZmYdT+O$R6l%9KX1c!Hl!GxA_BATX1v^Cb%^ee3@4EN-hLWjejb1 zeu4c9t4dK#9MLV&SuFF<0KDv#d4eS)n4 z+%i^WE;6bI>w{9wMcCYS@MDb5eiO&ovLV~5>K8#k186ui^z`W#a|Pb$VS&3CICkMw zA9V!oAy?JE#6?xR=+)_uM~GY(yebAAVe)Dr#+Ne|)xX9?y&3utL1E7pg5Q{-$B#nr zAqH3Dcoz=*Y8bHa9waDBtm@Sgyk?9;RP-LaQl9?FgNiX^l50x@liWNiO^UsqNzCDl{|? zFxQz#e(-7JXXc2o`` zlEqs;DK2m4z|XpwTgsDjt-9;a>LGF` zqjcVy-bIV3*`$)N>zIaav(3-at&$ZFAz;7NbTfpyR=c{7FuZK3mE=Bew}7AZ2u~Pe z)vOTfP{_nTR4hL$5&E~7l}Bo#`QOPZF}}V*9I%IOx;a74T;P^isTiyTwef!zU)C={ zDO(qhd<^(hHC>koOTqgofpyIJvXUyyh6dKL*q4>;gIU!wTp^?uLm;>OE-Q6h2#nDl z*6<4P8(tv=bMX_h8Nc5_P#Cf!9zT-cX8iKiHq>}R&=2e9<3DCMtywAMM8|IY7;(mK ze1fqXzlH3^cUZge2`o4qF0<;%f`a;CiuF)El16bJIu9fI)j;36l~v3RQwCnm!F`V~ z@$*;unAB}JawQBE+R8NDo1s9_0&0fEY*2LHeK$-OBVMhxTR6iL1CswuMnF+E2>{~| zGH4!sT&5LUIE|9wdV&uin{zGK-XbHB)?(r073#+C5@J~PVgthZQe6`L52=96l?;qb z8=@zPNkY~<$xI~zFn5TpW}H048rJywq80H#P}7H;Jw)d-0n>*@pAmZZc!Upm7MKR~ ze^r0uh)UpSX6^{RqYtB*;_P-fu!ooBqYEoh=usleGRdSWEg2{+*iiy|gC}0?P2nPq zng&dUl#{NDd-gw(9z8G~a8@{IURWiUXI8|{g{9!_`BBx*irAZAj;dC3%iic+kUGYh z5qf{;wWv7OLce2A=U&FZEbI+91cJ3mXqj{2%Y7xSztBpP`!Zy+S+|TcEMB}OkpnAV z*XC;8?Lc>y^181YhZkmkxDnJcmAh8Kv?~U{jH=Vm!bgZ6nowPaKx!O0EM_)iCAlb$e7&Yd#ITL{9#9Xnw4-V)q}UmM46 z=zrC)$m*RIr1{*zHV(RgsCS(EWthy{Aw07jr(pCB$~ZgSJjI~wYp4ASlU4Q|)qpQc zLaxLV9xKnJhjQ0q=(`{`v7V7y~Y%mp3;GJ z0M2p_3^F)~#5Iat7~X<`pi56?3Ke$3?ha;+=|tf|4z_Z>B6jQEacT3fHG6<5Y$Pi3 zyCfSu`59+38l0g_+KMK_z&tG+KiymaDmXG_-}W;ANKTI$-4ia-Dz+9XCzkqz(k9p$pxvb zZDE<<8L3*9Pzr!Gjx>u=^8r?9Amx5bg^u8l`S4>RouLGTc^}uMEq%M})UF z?WdO;m6=0lMxAhO2QHkKKhT_ii&Wuh`Gd^sZZTp<>s>EFY@DH3NpHP2wjq=8HuKo( zVtgBE;u&o@eCl7|x+&LWL?sou&Ize4Q_^`VbWxhRb z-uw>w&wU;@-X5*@^Tlk#zN%D)k!Q|9p>p%N*WCOpTnzmKo%W(B;MCi>Q|^xrzmEsE zHYa?DI&&r5YvAs_x9VTm!vdL@e*-|T0+eU=Loo`}$sUG=Av<<}(fr%sXb_)7+#`YS zW{J!9^)*WfM#!KoWlA~RX3oN_uR=c%L0@6!HDd2zK@@EDx@I~(2tO0U9@M2OU7Pq} zVO4(4AbfMux%Nn_n}HuL@V$2y!4`-S>cg#K-eIRtp|DUFId(qC0C+?`SG~H{*L?jE z!!;J0RGxX*ijDhf;=IU6W|((BV%!Q>-|~p-w6Lq&Pd=tSBHPg(+8V&>b>D8hnB_8= zMpai+j*j@79r1UV{!-x&v*^rmPe=6*?z6<;^b?Z&0{me_fdhUweu^%HuWHvIIGlbK z6WJf5ea2Vg==GVB1GxVoVj2)JZT>{Lnr=*-&$Sj8=+`?y))odX>lGx0C`VuDg-Pnx z=w$!~kQjkjddP|;t8%|_l-W>^ zy7AaTuB32`8x{;$grf+EDs(ABP9bV3p}y;-c`l0JLf$Zt{AoJ;FDf3G--t@2zYa-k%$ab%*NdO7N(%{xiz9r9s}Rp*9>@1&DL1}ZgDzF^SudzuF~ zU1$igYMECp0DyZ%-D1A&@#Ke*Z%?Cv#<#cmx#G#W23n} z;$xoj!5lP;|J%m^_+b8+OCmmQCM%2FEQ{u3`Y>L&Ta0Ehe@=C>GJ;nGTkkHeMj+xLIYZI@hRLp$GdlhJdMo=M3!YZ5w!cRgUN!aq@v zJNX!Wq{Y_nGZf-ygEtG@wIvY?eFaK{=HFwRrP+{via&K$IwXb_!yZ8 zw4-n?pU~5vy;cPZIv4qCS~t>(1A=s&i&d*wgowD0k)uR21UD<)Dg6|9hUtTlmrKU5 zq=u!6rOA0a9o^~0eUE{Z|_x?vL&buiWExNptuVZ zRJj^Qk6#lSZEB4yuvjXv%lsU&4*5K7>ub0Y2Kj7sxl)fA{Rv4(nP?v-p{`VW_5LvJ zm5d&Rfod`zrh_V3kn%?Um3kjv%LpTvg9>i^8f{JinlSEn-N$NW-4dGyv->bwQnPL{ zIz{7Yt)um8S{Kn84bA)~tl;)2inzKZR{Wg9fwN{%<<-{&EIx$9KLEws<{&P&#M(g? z`>-L;#DEK4g)hWQZPMV}55^jM6?YF_4R(b32AYK68km$XU~1?I^8g9I-r@EKMA^K6 zY0X^mEAGotcH&6C+1PcJKC8_T%z#{V6dis~wvjd&YgjmZSvFZ;LV5AaWPL&cNjTS@ zLRAlBl7Dr$bL!RlfCcO!I7{y#!SN?J#Sjj8#3AEnIjN&?!oAYZDrVVfzwk9 zs~X^^+KdYk)|js9X(|=d@mF!T#8F@v=GA)U5T+Bpa0p%9oZEA=LA8P@N6RMXB17AN z+mH#}n3Ag}v;mj8r;`HQ4nVqM`xzvRT%RxkOlCP)Iz4SrlX@1`9=``}Wtl-xcsW<^ zFbVXqX#@|@bICi*!8Es)*qno-Xbt-lXcJ_1-Bh#R8&adNXAr4jw4I`-GygETgafK$ zrsyd*z!uzUfv}kBd~vo}{aYM%4=-#$ z1vvVjvr4FJhfVQ^`_M}ezKZppDOimBG{-nKMNjO8ctUms8DD3}@jiYT0tSHra7~@=o zLNqfE^eGYEjOUE1+T`txGbgPF+#7G%V|Yc`k7b5)8e;f4y4F>@(hxDck$JYpzM~Wn zRxTL#!3Z`RV6=as3Mv?jEBv&^Q3`>jY1g32?GsZG3SGt#ymJz>qZFtM_pY02=c$sf zv0z$GQ#LHo{bl4s4BMIZVR4V@t$!Q^fR0#I!zQ>gI_Ux5K17uZ)?+fku`bYtYMxYFLtN#HQ(#>RqYXWlRRN!8=qdM_ss>oF&B_dWU|JA zz=T!Km_vln3d(r*-iBqfhL)V=CJZeHV0OYaSaO z%?EAV-lEuQj4gtqH%;5FwOpxE!MJy(p43NxJ+;*rM=+9Yt2#$4+py_XS&Tz7^@JON zE`05S!HR8!FT#YcW{!X4t9eF&HnAy!!fahOOCOPK6`#g3E~hP2tPmiU^^nM?QM;`8 zSJ&HFz+@>B$FmXGi(!+`G0`fEHI6GHrmG{SyokvcF^!6t#zjm+Et9kduYkJM2r%x#hJ8m7 z%AsX^C1M=8pm@OfOIWcaYr;qGL zDd$P&`nQs2)%7u~Rk%_u4iHpSW8XZzY9hER8&b}CTVpS$XyOMWtCVFdg^|Gkx(`NG zXv@Pr7eG;zjep#r_ZbE%2rwkn91(Ahh%ZOPlfxdS@5n(j(C*<|z+n2np{Bze_5)bM4E3 zD-4#x8sU&Z2N`IHG9lwE)^6ynsKs=1E!q_!TN|88gcU&W*V#f-S#LwjU{gIfG(s>n z_P8VpfT7UhoCLi#l5LANN2H8>8-<#X{}!c|mgvIdvefxNS7hxL34bO@*i?@XFs;Vd zq~jP4HXj>%5G#hsH7dW0eM^UPE$3up0@&$Xw;twjUV2w6*04vB{Gh}zi}_ha3cYA_ zhMN|tNb#83SQHynJR&hj_+t#zc0OSkJ+~(5Bo1mhO_()4n2&8}NL2I#jsw&0l63M+ z*uyMhW`oTJ8Q;Yf)*asuV2~inIf;PktuYK#CB#J{;1FMo%Ab~fB?ub3_P!!;7>OsV z0qBuy=BX;y;r7YoynK+Q;M{o5Won)%DIAgfQy#{f~^VKQjLOr>8%UoeM6G%szuFW_tP>oY*zaj)}@{77Mc@N*~fD8W$9+ zS_z4D1`bw={)USA9jxKxbgun`HkS+OkE-yFSf(k_C11az4=H>4H|_R?Ye&->vk}9URt0)59qrPf z0=?^C5_GQJ4hF0<_<>btFr?(j%qm^H1Jb^m!!T92j5P&%I)i<&K<~u=fdV~;|F(})AvG6)t5A1Ks277yje}Io-<2?7vz&33YgZUJ%XCIj8+O0Jv5(m# zt33HLP#ep)VC|wrYa4a~GiY2yzx9Q!}L6dE?$_wlM z51jo(8it?T5M!2ugq`Sw7+FZgGyDm}= zwm&$O^dur=@?^E4vY={yv8%h_wy;T!DR%Wx);?k_aj|rb?uy$IG583Z6?EfVo3>g( zjlqTb;9ekYQ%NNP+1pE1+&3_vjT-j7Q;n^Sy9@PhY{{Q5#Nh}0KP}X67*4kESq+Un z(#qIX6EnVk4>LlQ_>+g~v5gKhtt{$BQIVeA7ed678I}!R3@FZ|tEsKV0Yx1k6gr<4 z>4Wv93yoM0wtz8paTD6D_;b(Q?7FhlBAS1TbARy3%b1SN%QdxpUf^>^xzlA#ZXZld z!{vM2?2ZVllZ*SX_ZcVG*-G(o)n~x3EGyuQ`b*a1s`ed}ktCF|gL1gq2WoL~ZB#g0 zK@HUdJ2u@#8*mv*QT|+Wj~i3r%I4mV1Tdd(0{EJMM*s*9656|OD8wB4O01D)!t+Do zl*=OM?O@jbL=kffVuxo)P2P*2an`4@1l2fCHAP^~DKnN4Yc$@?YOB48m=wpv z{p@E|;EW=asl$mF;L zu-nY8Ut;1yJ*4>!LGEINV0LW8*z?>_Qw~x&G5YZq6i?L)m4#?rZ z760VJ^T9|_!-sxE9S8Ntjq*8&r?Z+)s#a}T}-Z%uW~ z&llQ?h1=jslFv#RByE!9ER)9$TODJ_@be^W_cvg`90;OT3Od)yjjU;@2A)l6r@wHM zk#?t^*g4w#<)$#>H4%0?n4iw4d*_R4BChX8T(2{q0yln_Oy7BKGwSZp6S}z{XMkl9 z^iRU*?x*OmKc%Y5D2yr-6_^1FPp9 z;M*$K9H&RhwZuMue*P@;2hx{natsI%YO~A_0h&9<$2E5rz&~8vc|9%;Rvza32oH<$ zhnbIy2jEY~E~_Csl8>Qh_dqw9i-;*a$(y?cp8dV_JjHoXn)Ez}L(2BZJJt&&fVOj6;KrYnFp#i!R01U)!>Q7?6g@vLd?-rW!{8x+2(|G`kO+tCPKP zg5+E~fTJbx!N>(NmyuZDLLgOwN@Y+^Klck^T6G*Op%u^?B+)qzDu*W(S+sAD!U>ne zLD#%J`^2*R_+8XBANKBv0qD5F4j?;BwV8clM+p*j&4*+h^^Fgv2o_r`JQaD?R+h6btCd%TI?GWuN#zcu#VkA8z2 z2bd5TdxAjof>Y!83NT(|%N`zP(^xKBIM-5!1j!eUCwiv%u_&S*DoQ2G7{R}YpXP~c zh!KHvKQ88k#gAIA3@9?+d1*zW_MHFn`sB|XVs0rJOL4^*A8>IsAk zOOWEA4NyR){_*x6{uMvlb6QhnE2}J zA@J+7i;TP0=*d^BfiZVs{$UJy=qN{_*hurOs+$--ZCCS#}5)T*A4#yKLj_goO&C zJMa1dLwJ9GSd8jY^o{|sg|$D<-97Hobs4i-ICge4~h zCK)BBS0Z>u#Pn6f^e|1htVPZ8Re+%z*6PV=fRZA(Z&tY02t|Z!JhE25hJ$|GKnh&k zj|u%6#N4^&5y?w(M+#;oCa*xooO@ROR^k#pNG;28FLdXc1waY5n(^QgqN#VpSB;A!}=V*h9P9ZnIRo9_^&`_Wvq zcU6y}t!x(t{c4+Q80+*)^be;Q2iEDm@wVcrb^2It7Ry|(U(}9QfMOTbcT-W+WfzsP zaJ@b_6@jbjILHDqqV1 zb(JFU!i82x#4~T#H+FP2(hsceP*A-bvrOC&bM92=KcG{a(->IoFw9NCndHLGJrxJ7 zI1ZHD@^QhgNkr^xP8TvLx8 z-*14L%kh#eZfhbLd_js8u)_By&Yddxl{KDMx6mEFtt7+!^9lqpVSyZB5MmrjSR~E2 z>}0Vsh=jCx@Bn)_BvsD&UP2*Wi(%5*7)9h7a?v6WCM;Sl>Bc-mldfp69ac#b6$YW4 zS|EEE1ko|Yg0=GE90F6&=3On>S3548%Mg5{7_Rqbap+I3mS0zUQ8?)*hdqv0)%f#( zo-rKhZN}k!o#RI%!8*K4{H_NWgmdkqfT~i$Vp=$*Nol=ogFd+(uv&OCnJV5(B>u)z z8*t2xRAj9bcGOxHt?>3mEKE|p)Sb49W){Z`UgnbC1n2mbpaSWChImI>K#+>V} zq=&C!tRSSDc<88#E?bR4+i1+9`ZN!v2`iD5b(boJB?VtPg*Kw6sKLNQ-1YqtV^tEHBQR46_dguG}>;$?F z#DR~+bo%C-Z#4JtA99R>`*70@O2^&zVfh&U7w^-rNdl^S1IPgT4P0Coya^Fa=Wx#G ze81j#0-f0!BlHb$c28gM6~ZY1k^)aKe4Vkxs)}8n3qdGF? z3tBfcl#lD}e(s$QxFS|(;-a7Xv9X8*`TR<*IR`#5IuXGrBTbcdC#g%`a|6sew&XWav-N8q=% zbLDf0NNtD8HSB=LRDQyrqjD!$4LqQC){&A=J%EkY$8(I&@X*?b<6!+M#`;ckH|}h6 z-@CI0hme^TdkO7mK1C=x1xUD|jHiHSnek_gdpGMzSy$3|#s05xD4d@5!;@QwX3nC+ zi!Z*2S5_kqJrH4Y931>E1L=C-Caf2Lq1~JG%M*!I!ypHmuVG@_z3+?Tn)@!ecG;|V zx;pIYZch^HfpFYlncMuWPjlZNcFm7B7t=4H4Ve#*m!@lp4bxvP$wyv{H~{9Y4Bw4jH zyO0USxCgPL0slo0>O+!&?*5*v%8YO-USL*fj8riyAJn_ejC3A`Aumu~4%#_$K})m7 z*6-Q`kZoy8v)v2m?Mxy$F!IVwHaBT_<_`wDr@b=BJC90GMa! z(}n{R(veNjxl>t=r(i8g3A`B*n4?Qvj{+tQbH|LT+V*nc9f8J4Lr?2SdhI~(I7ga0 z`NT%L18zOG=mTvtjcHr3-+rdCYKz{hvoMS{kxb$h0dvpu;QUJ3jon-H`RSOe5Yh11 zNu)|s(ZI)+%ngJ_M8lO^_5S^5BQgKNLK0_Age%q$KslT;7}7BjG*3J1WKMW?rt#!f zoEc&!(~J86Y1aK4>98Gqg>mgTBJK!=;7oW94i(2BK#OVl8++tsOSiFH9pT?Q`<6$dWWJhHup`v(g@4j>2am*`ob`Y_e0{$%4 zoNEItHrqd{)!cV5;ugvPpeSg07%C4!WlCo39_%JNL)c=P1L`i^D5sYDK+0qSbg3$kZ?)$f2*%`w_iAhc222kALy_Vlfa4 zGnBas=4E*Ng(Kp1geNQW!-QjVPh_e7Zq9v0R&(WsaB}d6x#62XV~m#D^wi`pMu%tg3o)7Pz6Zg(OQD&sjWI@T!$>xe zfT__BKjNjhV3mg(r6-*7Hg4M5+)+ls==G(++TK~JqbYZbQ!$*BX(ddxHRd?di35pr z2MPJ>2cs7=7$Jo?5Dd~qLNJMsyN>W~xpVE44ve`PGHEdjj4!w8eRy$j8*fYVIZh`o zP)C4cVZZA}2t-U8NxFGk`SG-mG3YPW*wH-rS72k+JA7QLN&4=9lZumhD8Q8p!EvrN zP-U#K?GW-Sl-qa{%_|Xd*w)&77`Ee=+bOyjbSw}?f)$GqPivof>s*MI-VqGVJI364 z7iRa~iA5^s6=NgDSRb@XS_dwI!lRJo^uD_Y}OUG?Ep8 z^0lh~uWg6a~$#gket13P*xKg|*T=#;9%IzFl)?((i-H@B4&Gq^iLGwQ~6aNbV$90y+e+`*nr< z7@#=U8;xcd1Em;$CR4>`-h&F1KiE8lAHZE291>F(^(dZeDZSaa=P^CyQrKG;#WgsD z$tU0Xy}_)(h}O+*c;;V}=cFJVK_#vsR?vKJ8Al((&S{jAEQcMzVHX$D&|!MuRjw2c z5o&hD2)a=em%GkmBMMHZjRx)0&zg^8BVoFOa*S6IA@|7}+D>^6OWDwL?&=0Nynf|B zgArQ#fhp!%csu?BEcw2{<{h*gk+Iw7ka?PCevQL~0j(9p;8BXf4}s$5WLHBbQOtK> zw~VXAC|HGJJVu0DV8m_BF!IAK4G|Na`I+UAviX{EKBNyBL6|4GA@f5REXliDC=kHU z@1i(HIc??&n34ZDW~ETdUw9nb^YGvQxW2;oR9m&fP41QF^#iE-BM=|ItGBZBhsF8E z`1o{3KLD~E#But0@72Pp(a`Z=MJ8b(HlaZ5nC=)Ti1hFDp9D(_tLmT=k+2Zk)Dm3M zgF5Ins-Dohb;80izgiR&o-zSd$w;IA3B6ZJE&%&Wn3=X(ci^hHl3zIawQM$ExyFbm z^}hXp!9$5ZLqz*sk`CCQvJZLSe%*393a8qZn3OLwHa>}Sizv{hF9ztiKWHScI&$B_ zsvF~;iC><10R=11oKFN79b&vmB`!J*%FWC1#s=rY=s#);vFu|p3*O}(rCNBaafI=L zbPW-;#&HvLe!wio&q#FXF}{fany2B1T%`Or7Yl@o!_Z|1I`*7rR9TTvDBi^c(L6CK zW%zbTWO>r9*%9?@gpLTm4DYB*dF7b|1TNg&0&kYJ%AV!bjmoF=*6aY8ZvjV+k+>gV zx8ZeIc~4dH6`r>4Y%=+{5b+)rqUM9JaS>1U_SR!P)crN2iCF}&`vgq6<`Tj8=nV(K z!Aw{}@1jhGt_1abTdtXmgbn4w5}NOW?&cm!AT|(jDgZT(VbBL6p>XLdOvp)?M#FU1 zj?pm9gUL-rG;u?|}m_~zDH zGP-yGz@=M$l&bsYaEbQ$Ym8U^st@eLgt!W;oGeP2k-NJzBqCac`%#$R!5#oSJbQ@| z^NgN4g+b0iR#`!GN3h{by!`v>n5B%2<@y=u1~M7PfQ#|s?z9xt(X|cEQr@J=meIKL z8U6AlEMeFUM?t~lqFCU2p{(_|wHPufe{6%dZn~s_NHFtf(jH%j^W1?C(huOS@|3+v6Fu{k8a&WitfBpv2F@E#qW%W|E^+LbkD?k>&E=@w3< z-_iQ;L^X5H+yF1`O-QR;bDeSGSv^VE%m6gF9nf^g7N%zE<20u}0zJP6-@T=&A(L)Q z0HL&18Z`z=saQJ|=?Yo)0d`D<+4}+*!40J306(C*k>=F(q#{&l!cl)ZM#zq{$Qlnn zrzed@%c@>a<^g=9Kq{Z1vd*oC_$*05)t>M{%@7}_lA8w$s>b3Rdk8O58E2l;C)hR_ zS4Y0<+C;iAYTDR+s^5^x=lPF8d&~rd3b(X#dClPvE0mj2#W%%Wpb~xvm z`9yNj0q2z-2V#kf&f_w2GCXr>HcmaS$5V`>qVt@{JJIJH_rZ#aE7mk+MS_dfUY0=D zKXm#*2Wn+P}HI< z7EcpSrSSK=g}!cmZSAVUl^NZKKWCeJ348zatz zm=yqIj)SkpwxL-v{T(tf&*ZQLOMM?aj($|zzy6Ls>d)X_TZ*;&U)Z|=N9Mk#;aK|I z?+ts+)mS<uWB^5!seCt&lN!}iqq0L*O;jOq=7*?^f@wHROxZtmKrCtSM- zY!|YgpNbtC5zV~2J6yHqK2p9z7`$(KuQ`;{({G}+;Ov6QS7m*nVG!x&U>IE$py2I} zg3cz){2d@PQz^Omt#ZwIu*}Fc@5QgSwfP~IPs~SuB4L$dXw;lrOEqXuE2Z}yK^kJfBi#}TP<)RmhzEX6z z=rcs0CHg$k=Zjt{`XbS96Wv2Su4lC3T6FuyvBvGy`mMg~hjc9$svi`;k2mSs2`GKD zuC<5i4wVg+3pE4kMySAJD@QOe@w7z%c1UpdI;)C zs8^x(L4Ek3?$eIKa2BdHW~Wl1hCoe%x*jSYY9-WqsMkR71*l2D-Ht!MGk_n3D&DGV z@mqAQ7t{!-E1|B3%7-e1S`Bp%)MHS8hdKat80zGf0>l)a+e7t$x)cht*xC%J1yF@h zb|Bt^|3gqOKvh9~40Q~u4obID?lCa(D%1fee&})(qZSuK!WMUc(vABn^yKasNEeGc zv{P%}&!-uv8W)JG?gM$h@qUHgee(UQkeHsEmwS3FUP2sgqpoosZNS3$H+XL7kx9@7 z;HTg}ppY<4dm8q{h`qSDCCzdx@HxUr~+&OJaU{B1JyJS`59m}O-i z9X>`{T?VEPHbIO>dcF?4MNRP10Gk0kG8X=>XS#1Ry4_>%`2UyU|Bp*?Lbwzc+r}?n z=*ca-^`@JPij3Gwy-&rgO5ECC5x-mi-d2(LhMxUaMRB!mw^d9njat#oS3FLufO-q+ zUr^sb{RE|#jMLgfT?920Y7*1}s5_z7L2ZV50_yKj??8P8^$S$|nsHiBsG(4kp%y?b zg<1!-9qKixLr}+|eue51;~%GWhZ+ub4b&p25~xR^{_d|>^kme1jy`4Mw2e>?LT!h7 z3916>O{fDMu~+p&o;J9O_A^r=gyOdLHUUsF$H$fvSM2gn9$&?YJE6Q>dd*wNPiE&O=4D z!^9C($96`aEPL0aq#W%Ms0^r~P+3r;pvEN`H)PrSC%{+&wH9g}R2fttsUnnR-_W^T z26mW2&4cnlt5R7-{8(TiJ6?EZG%cqK`fwBQ*oXOYC@MB?H#Cst~uHXsN2$j z(=CTB%phaqKke-+TKnxYqhjahXj7rCgPJqnD7?!)t38anpmsyO2~{&6YtF44$;NMY z+1s`P;NMWc%{SVwvtQBe<{Yg%)WuK(p@u@apvFR72{q;Biq-4vmA0@q@63v^W%e6% z$HE-VSZF*Qu#am6<7ZIE7FOV(?uDpUi!mBnf;}-yjNk6H=f%R92{jTbXNfU$BYZE( zsX#RPbgTH`W&0;~TTaCrf46(1Qa9&_9GW(b9phvuh~_HMwK1EGDX-a+ZJUk7>Q{ze z*aJ5*E_f2vM@AY^8hiEdP^~b(P`_WAdBDsM@2CUnyYC_te7A2l231N3SE=7Z{8C?5 zENNONE#q{IJO;2e$)@#!heaXIn9!@FD*xeFPAN(3aXfGbL z(VF(A7Y&K>aD&2JrG8tRd59I37zZY8cje)b!u&UXn~hd`n&v|{@xUh&ny@qmD2ViI z{x%zT&_g6y`ze;1XWYxm!+Yv?yqSj%DwRezi$k|J7(#{X4ZA&R(4#rp2T(_${sVOZ zs?GKstvyr{R2QfoQ2n7YpoVR)D16g?Q~Ti&p0Kcp)|-*wiw}0#_)f6;P_&AZ#f_=L zLEWI2jkX_21pDF_p;C->%;M+>74}9Nsc>}ZjJUBZg34+|<)NljyMlA!mg6ygqVi)?D&ZJ4!?dVqOL zOBfSjXko2k6t8!IoQn282zR2G7G%^MjGixLZlJqbB?~5 zw`SHlYu>Civ)=RW-`@LM`#fD~xA?c?3j@YsLbeOvD86}oVJ7tq-y^=b zxA}KW5I^h2mI>mYk1cweGe*7{e0%x+;7fmp|FC?``9||?;QO5~<=xU7+a`)XG)@YF zS&8^k@nt0T_$f*Jmr3~7@yPEaeOP+q$E5N9j+6ay>6oK@r}-}MUFW;a_XppL$N&9L z-5_QBiizsHWQX$Q;LFQbjL+mN$5)%LF<)E0PT~KYhJVf1nXf)yGrrz@{rQIQjpQ58 zH#yDJ_n*ZtmXrUJfNu!jD85O2Kl07yb7H)hV&NaPLIiw=Eyx(3F9BadzC?V9`I7J@ z-MAoQvS#mtF9cPvh1x=Wp^4B^XeSI7MhfGEMZyYUt*}ctAedzd#FRyN$MPRzj{`^sXkLb zs<|~$^R+5keXYMXR-2(M)i!BYwMW`pEuo%XxAgLQUA?*9S)Zye(AVm_^b`6k{TrjL z(bJe|Y&8xWCyfin4dbElr}4)4WW+bqnc2<4rel^h>zWPBpocluoNUf8=b9_b_2wS) zlzHB~Z9X$UnwhPfmS*`@1*@9%oz>48Wi7CNu{K&etz*_LE2aIJt=NuT*UsYiq4*b#uA-+`{fRZVz{uJJVh49&@j`kKN~i z`^Np`X7F-)zW1fq*lX=|_WF2(y)oVtZ%TjOo@E_$E5RDL!;zc2c>U&e3jck+At zBmMFIa(}JA+289Q_0RdY{fGW5|GiIJ<&25>z(kA{G6{JEQ7A4{6dDPwg@M9EVXm-7 z*e#qEZVG=2al|xY@VO|7CB>RzQ?au+P@E{vrJlRR)8b9>Pce>^Mk*+o(w9;zsh>1f zS|F{Lj!IXg7gAg~vs_3nA=i+-n%wLaPeZIQN3JEJ|& zK56OoFZ2@nmwJ1Bkp82-O5dkn)}QMMjXZ{Bls8%$U5$yxY-63V+c;-jr^cU*#AYrt zpDCDCsckoNkU7;{U~V=Kn3v55=HF>AJJ1GOW5*bE_`}U19|rts~ZN)bq6!-_B&` zw@ce~>;`sIyS?4Ro?-8^kJ_j0tM)xR4psJ@icW2(rPJN%?~HY(Idh{*?{p43XPw`j z`_7-v2Pc7>%FXQNaf`Z!ThguU)^!`ZZQQPIKXMc!@ewG$VJET9PSJHbaMvgBhkyFa)jgyKh)rb`bo{8Wz`C3hURG%wXd{>S}U!c z)|+uNn#VX*o2UJvZPbovC$*c}a~@@UJ)NFO&#vdz3+P33Sud%V)2rxT=}q--^)7l} zp6XbAnm$us!Z_Nj@70g zP8>I-o7FAG!z*(S9#r5@<{=&RAB97tI083ABqc+nh+qgMg~~!tVSq3~_(7P(6WS}B5H1OKglCMA zqN2)PJSZ)EhkbwQ;I2`QbGAj>7)bO(bFORZ&LkCfLMXurY_xbJTdkVo7ACGP9Vu&5~wivyIu^9BBSv&SdcHVDwyNo5ZzJSb42tRtc*T z!>6&;#TsUfu_jwT2i9C`1xw|ib=A6SJ+od}@2%vlme1|Nwr-cO8`|CNG4@n@rM=ER zWS?Oa-M9a=KiEl~)J`U+prbm)qoLHr37pB!B4@vI)H&tcbY3{|-1KgKw}@NK?e9)> zXS=_+TipZh1^1TwhnvRB;^p#+c!n30^J;nxyzjkH-VfeES;1tNVlbD%zz|vdRdT*%Z=&rj&dJ)s61I-B(IjY z$%o|M*$VGL0BLFCLW-%BP-=hzzGXiI%D6z8sVr31DW|CCdnJ*YQx()&;DEHWWL~YX zrqYzqb+K)K<`r2efmv<74fO7Ee#1XVgE}3+s+vmg4o(f6$ld>-6pV zLH)FTMSq}w(Bm43jdVtSqo|=6C5(zjZQ~oGbyUJ&j4_ouE;rU12Y?FKjlZd7O0%FT znYGPU=3sN2ImKLSZZ+?jugn-LnU#e)mb9wSlwE1bS+wE_>ymZDs$+j+x3)XmgX}5x zT6;U2;~J%UZO1qnoV@G~J1Wz6&iBqxXR0&XS>~*9PB@nW=Z5pziE)#<>D;_@ZXMP| zD|eo|+}-XTa!srh*!78Cw!wT0S2?XCvuDD?+* zhPnV8u~j|7Y`?EQXQ-#(1%08J^n6{dh1Q;d{ttS*$^cK!i^-*{pvRz$UQw^De+`7} zq<7Q%>qGRB`eZtPw!Tzft*_U2(ETU$i~4Q-iT)Q8pnxGW!%Id}yt&a105a1!Yg}Y_ zKQLY}2~q66;nqZJYS{lPti#qh z>n|&jo!TyFSGL>PeeI$4SbL7W&Atin_-H3`(mQ#aqK@S>becPDoSx1EXS%b%S?O$a zwln)L)9?44Cr%>XP)=8Mo4B3bx$aVTy}Qpn3(S1resEKGx#@S^E8$i0>UfR7nO(fT z-Y_qi;7#`yc&oh4-d^vhch0-+J@o$aV*FHoMn8}5`Q_LRZT)WkVBqFle~G`--|wH` zF}(_RL?;+Fvm&XGQ&=Q!;a!{uH$E0$iZN0WDWjB6(j-5c87-xDQV%A_7%87@g9z%u z5IV}e&x{u`cClSVT$#a{!vdvzh^fJQmoR9>#vNal&ZVY-xz89K*1Ip zYv2a^Y53rh@z{7}#4|H6y^EVQ%(j5W;pP}~qWL4$+h-m#FPhiP7iOHOeubFfn&ntE znc>~7@2#=cBv$gz)&^@ktl$DT@`3dhB$*T}nce;ZhET=+(r#jpvX|NG?H%^-_Deg~ z$>`*A@;OBu*(n=1Rh>r6?jg<(&MarXvz`h5$jRV-;Z}9OW)gICzjp_^Bit$O40oBk zh8e!wz2`o6|910uMS+oJz4l%YZ;&^RGH&(`!xZBAB`Ml)e~iDv-{|l1kNCg&*Fc7^ z{ZQ`7Nbkp`^EIIcWN(-d%o2VTeiI%Ev0`SncxADL_`NtuTuPT;5TAnkva!D_Nlm5h z(nx7$g#T|z@1)eAylk-^ACdrF1}H>hPafdl?i@yW(4V+pHz zyK%@kW&Cd3f(wRYKDn9E46>O;P2F_O(q>Jwso9#I9c4~1e=#?hyJ3RY%sb{EO#TmS z@XxI5RNr8SSGPLQ!vn3+))XkjIw~K>P8Lz#;r29puD#s8 zXg{$3wiB|pKXYbN9&1HZYq-B)gMFC-Hc*$&;=4a2<&-p{az9WaRF-f!M5?*;s!pkLIt z{A&J}enY>7-@)(d_la1;BL5fOM{t;Ke(XQ@W5&nC45pV832B6ELVjqYBa{`Y3k`*) z!goSHVGy`)rZ8VP2W|LMcrD}+3-Vq(u@jhYqBvFDD;@&%{Vt}G3V;+Uf)n~lL)iug zKzc8wl=A1YESHyS%Kc!AA-p>T#D6Tm4CItbPvn3($|g|VU8a0Gh+;{mdna|6I#mtP z+8k}Gc3%5aOAg>JrGKOMV#BYZ)9>gpMixUeYS7z*jTsRbyUh^(NNqEk`Av->T+jU0 z>_-KK6AwqN?p6PiozS<$@gW&h4R8xT9zXskNFOHwupWrWr$um-C{{z342%=&uWt3`4L!~qO zaI`Xsowx|T^DBJku=1O7S&5^jq0LIGmDD=4T1!ZEUv(^eXN9_kM%xjwowMpC^@e&+ zeXPDxKd5oF#99jGYhJCG=4v(3RDuvzb%J(}hjwp<<($^8X!rPIzXe#Or1^3ItbBIl ze~@vX2pRvR&!+_cfUGn61^uS}Sbq(}NoiyfgC4g3K>u_OLn|1Upg zH2|9~i!Y=T3WlsIU=Du+Gw&e`6(&UhY>RMEI4|6QSp6*|6Elc;5ok(?m7rIxAm;tW zapDYdnYf;YJ0)I+X1ztGNiAiO3Q47;S_m}*rHRsfX)6@#nsitCOL{APM6O9Br;tCB zbIFQalJ(mFnBEJJK1mK{Gru>X(S4NDDjAjhiljIY?Fve5rJm9R!Zl1OqUvf1buN!; zqE-twdr7~p-_!rlKk4zPcL~;OU87kvZ2vSe({$g!c|r{>Po$mIw(3#3DG|Z(nS!aH zEzN*1gPcSBwVwx$=GJ#x@+Y1GW?Ag6qJa*$N8R)8RT}7%Yp~%ed-XxTGrS94eE%~) zCunyJP-LrrH5^-!@l%+s_L)!&Dbt0hmKSQGcC?1B_7#RhReu%s2uFnr46a0CYSvsn z{-RS6F4u~i#o!>Q<*IlKwd;)-UrHgRld>|wgb2CR0@pT?+OYfjNrS;IKT5Ntg|OGP z(q?IQ#D6YI86mID<%#k^nJ6lVvN^|=yX%?^02 zt9GVQm$D152I^ZiJ)Ls7!e}8v`PsI-dqy2lCkk z_Bo5<@X!dJ8LyGe;+cuf&&+Gnk_XnV~OOYO!tt zH<_D(DOx0OP1kcPpif+JZ-P{xfozg{X&IQsJQaN7dsV!KUP~|VhSFf+(46nBLnAxn zo$}6mSG*hEQ!r0L6tXOSF4)i)u%R-3P5*1Zk>A{J?f38pfrTdeGto*n`7guwaxy07 zG5;;U@U<{j2=)t?g&3NwqS%oKv6H4cA1PkxX{eRbK6uPo=@PAUJJPyJqhAe`*CSEA zmXlE3>Pp>6=^U*5#8AGfJfg-i(3E^=o%QV&Y?9tE!to5C5BxpSIoX^7!1z*5HK&2| zEo;Ajz@KJ}GZE~!0wre~lJRBdHf!b`oG_J}$;|b;qugokHutcr zc}=}e?ENA9J@$D=yi49=FAZXj;kWdA@z4B=e}E2&xgHZUje(PzmF@}U_-CHP5??B8 zM!vZ&+!cbCLQ*jY|NM$r9$mk)I8^*WT)=?&m2Lh+Of039zK~Ruzh=@CkX;-#8Cq^m zwGgkkq*_s}u70UDhKRKV+t1necD}|m`Uu&*)1lo<%CTr7y@{6=} z+OOJv?I;BPy7ny4K4^&|2A@|Kb)ENJRj&_=Z?E?T)&GK?e~Q)eR&Rk=Hp^JR>%C?C zWxPY@&0-cn#jjvCL~!W`Xq#>>F*lmq*daGjdefuydR8My`WO_J?baE9`9~|6oz;G1 zzqJ!PnE_#WfnkB<=#B>#tKih+oept+f>dpD_M+*Ya?U#`*aLal^`V^B#BI-(52cjl zfba`|@RV$Tf>5f845%(>C}Ut!DS$n9xgsde3#DAveWPlaZi|ZBiT6zP@+e;sykI|)MU&Hg;FLpFI#*J`sel&<mp_Y+DG}s^OPh(Rq#~b(+;(pja%j3Hb7yQ5+jExa^dvy{BslXzcF^Y=* ztMb+r8l(Jm5W0f;hhrJd5EcrnS)zLZCdXN$H-*Q-D`sXAF&(bK=Qx8B&OuqRIuNBf zzF<%B`>Cn(Bu^Wh6R$8zpNa3pcr4b8(&tj)Xt5TD9@Lh;k-n8W^A?9fEXPYffmv1} z9qqttT&D2xeD3;I1lJqWG$ue3$rlGLJu4G-~LMuL-BAnVj&ZX;6`lB z53G-Lf()#xhK*DYm$<#qT^J)w6;=wHuoCaU24lr9q>gC9G5A0k@}!@12c z>81=O zI@|O=QFBr-8>$+O_%nAk#^95rHopd(jER8Baq|Mulm(apKxPU*iKDKzfK{qEryEnZ1UIIU>UxWox zn*wb`$-N4V_`{FM85@%)BJ1h#_Sy&&5O3!p-mVw+vDfbiPiWBC00mbRtBURD$iXa! z**Log#E)VkT-~f_bN^_!|Fq#K7Q$RH1RW>Z`@uLGZz0;<8tQpmd#0sjuP;YZ z-4-eHmoZeHz~HkRw(&J;d^a%a1Y@4D35_O{Q~xs3Afr}c# zg&XFC8LF0Rm9;9f+uPc`C{i7#v(p0;wv0F4n-_R7{C{)b%8)Ar^r=C@p@q;<=!KFI zzTFMNPO=RbP`mF44ie1}R8Vw)&Nty?3SdT1zNIE0kkRC}1 z<+NDn1rS9{xtv^$KX!d2(e`q8c?w?WFF2vQ@xQLgcQH>AVyWj)^8Blj*8p-h#0Bl7 zj8zsW>*=T~=q4|5Ph!;+_+UA4K^2^^rh(c~?MjRFQ-`Xf)rsmfb(XqNU9PUh3f+ed zdJzls5B0Sgqs3=*ri?ateofIzYL&GHr~;jl%!flsW@}5dRfI0KYkRd*L@#bJJzr^Y z^dyL|+4VfkP6_L!3i^3>J%Ex-)z6@p-_V15)c3WX*(h#QV4t@)dLRPKGFBOvjC)i! z%wi-(r^#!IkpNegO1H!~8)=S@l$tf>7IQE1>lK{)gt(z$PuIlWXlN^ED095c->Zm+Vp+WRr>ZwK^j94D!h1=6q6t&N?uTUfwK-b}ZjgudLS-``-v zhH615%PFEORuCHo2nN0B{E^}mfZ=>J-8JG4Uhh$oIyb~Wc)RcMXj3u^6v^YoHU#6h zgX{L^nI4y_;ncL^LH3hJqVaB%_oCRHkbjdOM9e22c6?>hJgt@P%0R66CCVD6!+j+= z>>#w^i($hDr5F)kLJhh`9{h6V{3Z2~`WIl)z>_(zt<|@p;ojHZ>nV&JMqa$RD)@5W zGU109V~y3u7ULia{T{x3$ui`*}t&$5%MMRISZhr;zTgKDaZJ)9~G0W3ApR;mJuzxL>ST7dtSX7{8&K7iu zbIvW^!*l1olO8lz2us~&lsAsZ*JSFy#9hn6J%F`xANcl;VV=}WMTAE}<0}PttL=T` zed`6Cp#(#jL_e{1!(_){klSznzJ$Md30eI7zUr5XvK;OF&i?n{wYemEw)zMC)Bbh; zf&VsK!RSTtcmqkvaTF7DWZ7~Uc3-iEJD_j`K(y)6dkB~De*?6n0r)H@=u8x=i1o#m zOtO)9cp4OyGxFvqOLL@k(l%;;7Wnl9mH(5Jf-#jXa_@A!yXJBa zc@Xa1MEOTF+?DcL#?&79jC?UtJwB5CNrA^(RMD{O%PB#1Ofq*iM*RRpu7zvH*WHB{#5g6 z)wMcWQvw=GwUl~RfSb(dsSIT61ZW${=vkz1LNSjFclQYDuloqv0jFt`OiWg{sqVWvUwi?G7gS?I-o>u5I@GNzKzuX)&H>2(TP-JARtNnm zp!y?XVp_noZnzYyA$XuCZrxDkz(TC~y~b%0GWX#9NzK$|PRw~9tF9fo@fz&a^I*St z;J#3r`jQ#Y+4>QAexoI5huR#3)vh;M>k_I7+hX3Yo6-Zg#eTgHZJqR!nC%K(3sHT)72}KQ2J7Fi5+V z*VXIyZ;oOY@>FmihL#8kATJ($aUk|h|B3(3kLeT}vopeOsi9p3=;x};_0B?nf|ozQ z^>?FH-lU#MAXgH!sv0n)iP%Q$Ck_X~-2rfigk0zoG5khU2`@ z-{`3UW<{~mDjC)3o9`(_sNc^wRszs=BOd;4+{Z@yU?d>9m%6BiJX-5yq`6gJ-!R`jwls}Xg zOws~?a#JnN6s-f?n~D^-JW#iT%uhhA3P7tWYhNQV{|Fr4uU(}1p2B`}5P_(~;9Q7& ze2_MLtLMN@D<0LnnbE}d70q3`JUKAN-GmXvsJRT?l@PPN_F)1xccQnFnH-diP*d5d19$F7 zCT=z@ygq<5Uv?fw@tSlbGEKKU@tUs8<_XvgTX5;lW1(7JN%nO;WR|QnYEfS!Vq1dh z*ZkKo4Ffd;{ZSZn)1si|u5cxfkBzxa3+F^mZHhv&Uw8@tixpEafD6MND#95CiNOef z*Iuy%T1Qi~jvmmf(*&ljIpd=)I1 zRs^NSEAy%SW+b=}<);E-6(Q+Z3Ke8Fw#*KS{7FrNt5=fvVj~h0Ll8Y?1sLhaK6YW*^{Y5|Z-8NWjAEo)!iZE$;!(W;Vqw>Zq-?iw z6}#XsjPtm__Efk9*?{iFa0|+tb#Tr@k~R^NHlH`J8Mol98Qe0T@&b}rX-G2Wvt+9r zv$;ov-scdc-W3IJuVK6XjXv_3o!b^b@0D@z+F&9CRC}_$!2ZR~0!)*DX_XLYzajn7 z9RNRrq{ROTaF=n)|H86M=N5o?J8oG_yLxW(!0mu9I{=YnoIBZF2U?3m1g1Xtyq)(Q z^$w#{Gb1}8)Ijjv5chY~egJu?Nn$V!viL~M2DEM<4Pw#GLEm~P<-mh0AvdJQ=VO5< zQF1E<6-BY|dMlA`?WlB9`qJrZu@bUlyp>jK;O(|R^Xd@kC85JR3C(0Nb>Bux{y3QW zrur_*J7t4*P^(RWf{H72g^iconmW&}=h$A-!)lKbex1 z03D@1Na$6hljJ3?6qwBK#*nU_&M*kqKf?MEp!GW^4U&2V0Ci82scW%RPtb~=-1HEs zzT{XIp@H1+l2M2(k+NAVa&(&bi@-uB$hkl8UxY(ACT4YPO!zy%abZVUgk0=WAwtKM zLB|b+?*lB=QPgcdL}|NlEDF6p6Fw*ZzBh{ zBgYk-t_N&Rf}p?TkD|>(n7^#BLlh&S(kqtzK|Uy zGP1FXuNes$xHTBIO#!L<$O&Kgm;HP)6ES7;zH*nX64dxnt-_NV$#z+Qa2G?8Hnb>%A^I2ij7N;$VEq4y$Hg%d zg5WZM;qo#%YQX4v!}k|PT>mhO<2qRG4GK>}!gBdhcx1~Ya8nM<@D=}L?Fe1{XKp+o zEBk?{mCDp;X@6(;L9$!GKi&x(|J(L^J3)Z|ScII-S3JTtPFJTN+Wk~#Cc(L#;Pk7` zAI>X~o$Pi;nmdmGKM0w9wYSR~#H8Qgp9y8QlmG1bgd}1LU@W&qJ(?i=jB<1Y%`>Bz z8+cZS_tO!DZGbq27j!F1%chZX;+h45k(L zIkeoKz^kW3irY#&3A0h_WV?HHU(P_^xlElc9pRDE8-eyNXCAF zAXk#GMgvlgovffY2yc$H6frzZYn+HeHc!!NvPHqT(spy~(E&u`Cfl=^^IM{0i$Cq6 zsNfCI@n$L_kdGa&;FUH2#!ZTJmCfRFF*j_grStMF_hhup{n@1pRlP3&n9 zw++9e<-L&K$uUZD)V%y0Lsetek7m{{LdDyn98^v+A#S1M#f^4*CDJ?-)jQO+Ju=)F zZBn??G1itv8G(J;2|(N<@&U>93^3s^|1992mIct&)Y~!6#|Fft<`9Km6{T1YMO*$O zJ3h>?N)W9Q*lg9|#f^;SO!O{BU)b?zB-rWEOIT%WCNOu(r0)V!9BE@|3-j%6o0RSE87|z*cUoI^Ir_` z#L8_~vS)d}c)y~4UnSf8)C(1o3=E*M7^Sfx;))4}^h9LXrG$`=5H)*=e3db3weZBC zGHj?hG33GQ*<}bBhl7aCev%T?Yz1VIb}RY6)44wCR$IA0;nM~3GUV1>IQpkhw=TE5}IvK}see^{{`w^tJ48#18`8#XmlbO>i6t&P-Xjd(fCVGI7#?e1>DacJv zCv?-4SiyV@2>OEmiWBl!5OA0i>;vC91S*P$H9Z)^?{h8%x=X=qX$yYdA(rGt8lo|B zVkh+Nz62AS8BD`VpacsN_)FFw@5K7u&$?#z!^0+_1EkS}!_a z7D>Rp{AC^xPz$gBa&Um7>t*z6fR|zVIL>Zn;V_)i&!Z}S2=t_wMqwIFG0G5vX%)Tk zVJJW$k6jyK+S9}d;xOy7m=;lj&{7)5U*s|owAxlTMCLh!&DQZqPoX8;z%>e2PUsn> zCGA-diqgOy$M~9WFNM0^v7g&1Ag*}4c|)cnF;ZeR4#Ik| zbPl=~IRX6O#wU242mjVZ3#5&$6fJlLv9X>0F-Yf=(6LR$uPdPg#t||^c>x1c zqdZ6_B%PslFqOqLkF>xVbinPHwO0aU;lJ={6T(Vziut+H(aCGpVs5nqrS>4_J5U@A zMVXCCv=*qkA6Mfd8|*1bs3fRFGEG%Qst4-nkH9dE^zTM#uXG<>Fbzn@l1p*4Qv=(g z6=I5wN;DDorWBI3{o~IXOx@V?L39Y#8s248QEt7 zFru{D1f6&gp@PYgNwJ&ztR&RkfwVTohzOJW3)pH0P>p{lo|s%O8qK;Y^g=_z1l=I9 zBO-5UYm@;$iMRAe0B%i9Bv_8Jh&7RxTfu31!D%KC1U?zr5YNeehnr3zOi-4Kj~@Y6 z7f}BaMYo?-tyaj%Q=qH!tz}$#Y$hvufKY+RrAI#&*Btx*(gTl4_{1SOkeYjsY+#PN zPVfRVA&fa?M?yByD9RxsH^jN^NQUPJ_h)w@dG76zA9xcX`3XW&CN6Tykk4;HoN%Bw z8^?dUcYvk!2qh_=pPYP?3N>wwC@~O1I-gKsc-KLyDJMT{MLUK*K_+x!ksMrwfEZlU z$g7>q(^wQ~5<9R5uX5dy6IrPVUi}YvTIbP$ZK*v&^R;9`K6kLF{+824=XTXOx0KSg}(`1!2F~8&FW+q9Vb1aZ|jHLvqdIi9>UlX=o zNHeY{+oAC1uZCzhJmP@Ik?0-(V3UFmvT=5)y3HZ^-@D@jk~-m)?L#Ek_+H9LpRXJ# z^Z#F%-~GRr56Ph%1(EBj!~V}P>;4EcoBSp(KXgXxWg{h_GVdzjCWg$v4Y*(u*6T8w z?qK94et;F`hg-O$se)<*BKjf(giW?l+|I_jBQ}@1lDqkZR@zUj?1_{?&d)ET)|9^n zRJYlyh{6smvCg-lw6*Fr3yno1)U(4Z&{9IEN7QG$+w5N|Ox3#kUK zUuBZhp#VEiU7d&lx(8@@f9iJ{X^hJ7!e(d#y|lp*&zQ#@)f$x8Lt0|UU}g|RA%ebT zkqK&(z-p?uMpF-OD~6CUT!>V#lXT%V2w_~P;OB_yHsGNlz@Z1y;KXR4?xd-%QPI~% z4DD0}VLcbMD~5nx#;P7z^+AObkY;CL+pUe{pL>x1FqD-E@?Ru6cdJNlz9|9TuJ&}M z>PFo6qhv;Jk;{2*zq6AQlgRAki0-LOZmz34UxV%2BME#@iua$RnC+39cb^RJJF?oT z$ZF>UHfnC*xRsE9+C=%eMVNQHn7?Nb2E%KL_t68%6y3{l$07qBf*9Nk_4wla)Lz6rlSP5~JaEs_+*vo|QGAaRzX=`p0CAZ!!WG&LX()8# zGmE*RTgg&5GWB2$fjERa+r`|^?}K$-V{?XgGwIOh3rG^=p{!J$`P*Fjj+o3a(9C0q zL%2T2%ReC=9K{-ruOwsAW>YFE&3F#GSf9_8&{D~YsbWGCwjvGP07Ayqf+Sjcj$Di3 zy_F+vS__Leysha?zJ4a5ycJO>?*f_A=a{=6*sftTCL0-yBD&3fZ2+bm!eMLZu&mWj zlF7(NKbOMS4U9&@MG7wd!j*lmoXY584W5>9Wh}jK5S^eE%$D3~dy$ucRCYFnP-w3Svf`;6XdDbC7TEU#}K8?!PTls&(;9f3|A%wpv8qW?61mRNZke2;A1SX7{t5+YEfFZ zB&}PQ+1eHJYfyC3Hj{gqrMUGWXbjI-uOjr^riOgjZ{uzJuXip4VN|9Ap6B&kKwN^RIzH|wsnH)59CBY zd>1Q8?i`H5R4*dRpB((1@SKKgE7X#Ie#bIa;6N@QK{W=eF4Uil2#38y zXDUq2yd(l)b?Iwlg6^nG<5&;d$Q@rnC3 zbK6bo{JeY}kLQK_f!tO=bc4fk;&ipt2G&*zjRBRv~0?wIq@`HWoUSA^X*yQhhXCnP*ooioNk80^!~aTiAH zJ|Q5wE<7dV@>BR(giVoebA~n#K+v7y#LQ=A*90?n12Hc{$ayYg;wMcih+ngxPhpW} zVDuK1bc)g@(rm^{OX>0Oq;)^`=tZ(S_mKNuN`G@xkzFn(myy4L)y&}MFZMtm-^r=j z(>4Tg8h6dh;Prd4NZ%8hN*ky-IBc@ia)s84C5GqV!8lUsf`9-*J;8Jo%Fyg9Ys;jMOSLiqg7jhfb?Vct(yd|I}fpFnUkj~Y|?&F zesxO#k32^vIwgU&s(usFhP|VeI)$v^G9oXV3B6qU2XFP~msT0a8Ig1iuvU0~HVEBq zF(~UW`1K0MF@OFWcu9q|mN`=46?&=yzhhDlabPFk0#ZIV>+uF(83WZ-`x ziF!i&jb(cmivOB*o0wax9GthQ0I*OyZG>jm8f&}@WBF%NsJl__LSHr+j5aa4oJ4~) zGP|J0O*dB&hPgtG<6*NDwu)P|t#7$Z9naLW;-ZjS0(@4lKbL+LXLy6 z#6v-N#=oB0I>HP)i8F*hcyfV5)!XFho+0Olv?h_0g1}6ena@XNUSi04MCL03!0Mva zH6=jPfwkP5pG6sp$T|@RZf4}rtfqChI=jQ4!YKtzzl4-`*LlqEq`aY@<8eus3VM{4 zJzfCduDBMd>9X9^)uhkA0mip+JE6{o2e8AruH#qjx;IT8#HO11s%i2s(+lzb`Qc#1 zbq)K(3x6iK@zkcxlDCZ=KlOOCFoLQ6E%L zVz6Mvh9ClgRe}Y@jvcX0SbapLgu3tdd* zX3Quuy*Etq7W-#-r_S(Reoemj#-fRnx}>M4wzE`cU0LhBo6ei^u>C*fxyj3J5q$E) zP4WFx`NU;2<$IER51l%}pzPT!%j@TI4US86ZJYjKp)Ir96(3hSu17$a)j8$oOH7ZsO!sCxmZ?KYRsS4(Cw{}~T_VEtVe{5@~Tu%JJs$GfFDbzEk`W#L1C!!A$R8ko8yy}|B2E`#xIj0Y6S zA|COl6uOL`5M*lQi}9{Njmw-?(F6=oQ$&i0mB0m16=*U4xI)Ufyj17v3w4el$koT8 z@H$IjGfP*VB`9hdfEjM?qiH2zxzc z4bUmVW>1+RK%%GYEdkt~vJ7-ru-{WQQGjGm**XDIJY{JZ^H3H~*?0j`J!P*6P}@_M zf`CT3JZ0Adu>6-v*L0w3E}(0A8H2CA+@+Qu*UmK3h}~^tEr^xcSSMn|HkLzdqJ^DJ z`Em+fYA3m#ST`G+POPns%_Y{*#_lARY++|p{yT;C9J4Hcp4ewL_7<^iHueFrbvE`b zv1cvpY|3-4gU~`d$uTCGZDVQVO|`KW#75g#Ct_Dw*x8idNuiE*lEK89+1T~O(rj!x zu@gtFGR`Ho&%(~8Tv6zKJIQil8*S`)VlUZPC9!fF`;6FsEbMH`dkuro3_D2;lZ>~q z6!M1JSQBEG+gL|p7h2falrN@GT|3D@VhJ`jg4ls0mLm*ezuDN$#J;kyvnk(2q1Wsr z%ZNQ?W6uy}<-LjDS$Con#l2bhj}@teuV35Nl*(DNL7QVTB3m19*s?W*){BwGVV;80oq25XFA1 ziA2<6pxFauVXC?XC`I3|g8_Jfr3dNJuaC1>UmQZRDN$C$pQid+yf?|aQg|t@!c@bP zhF%YaA@9pcl*u4%kzgg-l05;b@E#P|%1ed>7#Qi*gQ6oa- z{LXf-pC;oNZhX@X?1ZvqL0{fQt9ITorU^ zjCh>l_zi_Am?NgC#x`QKN68C^%OoUZbR#lYErI5c;UjXnno9(p47|N7FMr6;VZ#Hy zYG&stTLdGm8Y2ZY7VtfwStB^!`<7|sN+7Ckj>~mdzrA_ZLOU-+s>(Soy5=Tfe|j(F!j!UbQS(@BmH)Tmm4gNdKHu^x6}mk9XEE=NVLO{uAwUJ zH_)rZDdz(^L(pGeh&F%d2_5w3voSE%$ACDwA|6SlE*&KRtZYIRKf=?|%&Xk@0_Pvn z{{qlyE0j}i=HMfpF#{>xUee4#!G^ToYAbc@wn7@(%I@BXnlj9s3e(h*4lY-o`nx<{ zr+tDR(D@^JT;av46$CI}_P0>0nd~Z^Y^WsLfMnG-Ac~_FSLXv&w^6hWL?c;ZDD}sB zVLS{k?5J)9Sq+8kzj!1sf2i%?c)M50HR?};FCRj3^eSf0;I3f9GL$WFBz{(Wk585^ z=mho?>^qQ@i!;k@`KoGVyenT#K*CX@M}+bMzB`dD&YuQ>Ev&OY!3X^eIUXmwot0x! zo@xbfL`b*TRR8o+A3c}rpP)PBT>q$2-wmJ)_75rbO#pC>e_*L^q5zkc`X&L$^Iur% zn+zb=-?`K`MSyly?muV|d|&1M3lRUJ-j&WP)T1(_0`M)DFbip80k%HK}cRDJaf zW<-UZ)e9ixsYWPLD5}B=ko~`QKP#e|>o-g6T!XpGWabc2Ms`@y^6qIxGDa;!j5L&xt=6#ruy1zA%c9B<_#m?-8FA#lIzfT@;@- z4tT#PK9_h_6#t!g`zU^bc*7_@b3AZ&6kkgGzzWCy<^{liiQ=7ze-3=qNVIvUn&Ro! zO;NGmSxqkzAEn-1eya4{l)g7AeKYaW)0C#s*Hfcn2Pro4G_j==>k}2biFo(Z#AGOG z9u?b9vD&AJy}}CG50mWxApY}dMd-nL*bxFs_kBaSK zEfk$5Hj0%uA}ZF0_`uV|z9qR^RO}t%txpph$4pYAVgraDdGyrET1?x10@-rNO~gO7 z#4Ors(l$qBmJxpmcqmVOg^r*wQ625hp4MfyU=MsQcS|m`61SZI;RO&5_p~TGnS3TG zZ7fRn8$cOLN`^&wfRw?YSonIT$pJ3AT9|nlPg8IIa3oUx!4rL58`v!cw}1Lm`F3Cn zL&(04TKzjZq}7yb2{|rpuDAvrbscpt8PAd7217jrlrx&Gi7sO;sekU(;>{thDc^x& zi%8BNfMC2p;jMr|>Q|&tKl0;SetgM~Pw=7be2mhvgm{3`dHHHaH>gf@BmEsbyNKt|OJGr4mk(D%MhAeChn$S}O4* zsli(69einL+*fToV-X;=g$!MOpb;s5H8%t?9g+1RR)vMh>fx@~hfb7&f)EI~L0fnV zEfutzqBLElvYgn@$?EXC=0!L)=ANj_U;mnI$z6x51Y|l+CbX#j4S2}m>hZ~;e@eG@ zy=HM^iv2ZQ?N%`&`55R=TB9XmHl^$X;DpJJ~4QE=B8lZ=Wi;wt8jbnP=+GGxwU0@ZVkP42M;1#xzUdLMQ?;^IkYe4R4@IrZ-$dJj>9iFa{AL%= z+NA!2ut;bRTU+ON&AmCb%wKc57PraiJ-cP6uAa3!gQ01asR>(yy9R`J1R^doBN&o3 z05U%L8?GKUJRc7cg7earCM|7same2Qi<89u1H$`cqBeTmSgs0DJPjZLnqwRTV#eEu z;90*R0?{Ua^=(i1F4#p#l$eK7$*)wSH#x)kT%%*N4b(lq+VN*XNb*x1l zVN-XLI@zN3v8lh4T4Yf>+0-`JH#SU*+Q_E%BK0lmBM>47*YpISrVyD40k!ZoNYbwjMM_Jh=68D&>c_7|+y z)CV9srPTR%^&|NhioHm&O%!{QDm^EwTn_^xtw8Ta*)5d4AF__ND)$yhxZ#m1_d9?j zdpBjjq3q<-Wg&`bQZgj|q6By7W3;^s9g#?~OKqV%Ic(nagxhcWkrOJKT)4JVOx%)ZLAP2h2 zfrdEHbq>Ua#%82@6#yso2y7slRtgAx3AoE0+DZr70xepOK}fHo2}ijO#IVzH3?2>H zy-t<;1*`w5a=+|ABP~nU^W?_nF~F)2ZJ2gfCGI((iA&BzeEm$sA5SKZ8!1z*VZ(#- zQi6Vr-HVg^56E%(4~`ov+qf8l^MqM?DUJpV2-loRD6h(W9(Fv$Cf^e;0y68Wx-ZAU z1EkXzBSOZv_%d2fx!h&+=Jv>KcO&?)aOmVCqoloY8K}Zni%|OrSjws~5Q|l#?g2C4 z6TSW}T3@rt5X=JI7)l+2_9goDBpdAsG!%m;6IT>EMOPaGx~dW1T9=@FIBoQxYC#py zPz=6-xIDqObzPwC>M#|$Ryeu@eGX_OtMxN|U54O~GI1>7MiTOd3}2rMw`^t!FmoNS z=SY?NxD_u#JY$1)-4$)nGxW|-x_L3WkAi@Ysk@hKM<Oial(2`2iTZWp~o%KG<4HsM*wK=H;%y zwodCWg*zCYm{uZ0_w1)$9QV*^4kOJ#B-$j2_KAnio}$XlJou*$V~{qOg|6DsEE~2_ z`&E1giE=Vl3TzGC_Q`)wqG z<76&Zb|%%7bj9i{PmTTunIAwqSF^znhEM=E3y`O#0M|X_7(ji)+p#24J=>xIxnF_! zc+Nl=@Y*Vuzn<|2v*`+9H4nWsw?#|AH$3cmo09w~GDGKG+$39UpPf-br^)u83}_*v zHC6oa4P-Bdits%u)W**6&!3>{Lh^TjZ!{$oqU3K_!{&4|8|HL3uht5lC;2e?{qSaW zHT0;$kPye2 zil&4(&QxR);y6>$nh-~bigSfVs52o>Oe(q&;aY7ueD&mlNIY+AsHz7V4sHjC~F`;xqcM_@#XniMmXcLE*%|0jyCM`*Z zXE@00S8LHJRWt-k9_^!BD1~fc%tHw2bL%eAt*2AP=THhMK5sCZp#L}M)JPV|>YByz zHux(*rx9bggz@~tEX{%5aUd2=bI&vovuK*jqUqt6Mbpqb*5Ir*A~0?9V>ax?{GqUh z8}{9;Zrro*IHK_k(h|7sw6v#e7liBrb8UTEfeRNo1wH^!?-qDH3$Q!wDyL(73^&h0 zuIT2=RsvmCTtC=QJbp1^K6|TYVIIX9jv6CWBL|E!_hG_)@wwz&F z!GJAim{u@g%NeE>4A^ppX$1qeoMBqQfYmm(^DHI0gOkk7X1vMg7K^c zJ9-v;LP0hWUtS20;1+D91m|a3qNiuU8cHzeVY;X63G&$v${GDQb~W2wv5_d7K%l0H zXHh97*ebM!UY-RrsDTZmf=xt|b36-%lgw6vgKC~dgP4pBN4xTOc*3)wCx|+}8QL<3 zij8kAx=%!FQ5#!Ypk|_H(NWMU*!Z-_F%kI{pXF?V6^z(&Ho*!;Y&n}?1tV5Vvl=`L z?xQrDWCbHwa}vQRzO|gq6KCpBbcVEMrI0ng+%2p)u-JSxD~+svWJOTeYMlAyoPr{8u?L6$W~UAe z?usO?U{ApZhxrOUZX{MD)fQReh;W&3Mv>PYkq6Hv@}m~vR5T(J{fJER)f}wj)I6lZ zzFxMQ0X)ksajbe^tZgRyLekr5*-lhj zrj=*9pK@6Pdt^f~o(Coq%)vZ0*@>qnyYj$f8y=Iy!NImTr&-gU+v6R~I)R#V%v#R! zk!KQR>tkJl4Il?i;RN40mm!&?nU@4=TAIBBHEqnEftq$aj@ZF$9jNI@)v3i$-C|a~ zbvu!c$<}dyMS!=l@E2eu3PynYp)!c{_+&#zDG(g z6!E8=sLVOHIDSps6Ys^Ops`Gmd3p*n^5I9J+CfOOA-5vY08q-W70crLg-P@Vp9^<{y>3B{A} zVV)N_oQOy|>^8du4l|q%Cu2E&I0Y4dxR!Zg;BczhOO}1%3)i!3;8?JELdc=V%>|W0WZ0~foXV1cqVb5y(clmwcK?qe(*&RR-U7oU6 z1ZeLm`(A(!o-(f(e~zb&2W=2{I9v;$`YvKe;lG=S-7Xjo=N1yXNidwyy`I&mcFbg%1 z#KjkjkZg|7K#F;d25Oo8!+FTwf2GC~QMn@OHalyew%IP+g<8+GC9n{oGPhaVmWU6h zNtc3#q_@~Dfc+)+pVZ^WB9Tq7&J{S3P;#MX?Hz0iTza2_e%zmuul7LzZNT5yv-WO| zUir#<6myR4B}pglAl^Uxjz0N=?xQeHRiH_Q6qXYa^p_6_!iQiu&9_95uZSe-BVDQu zbkFzA#E`SNKE|PDg>E$gd`)5tFHSB@Qh7{h87%YKw*Am5UH&n_tMIVnVKMlq%e>mN z_C9Uk?dajNcNY7C{nBd5Y%yPb43ge_%)^<+r*>jBk^L6>l;$6yGtX21!`8H3XrzLm z9tB@N{7Jzeg5nm&;k4TvnjVib&Xh8sd{Y3ZpHNuaJXjRmg2mfo)F+F#H$RL-93wGH z(m~bHvxq?z3=Ir6SomS6uWP8f4}!*dv}q9_DcXD%CofOsQJb))gO#ry#|RVLIaKu` zy$h3ED|DV@%~NeajdjyyBeJ)aw8R6IH7J@4UqZvb4b5Q=uJviC?l=m$g<>^jdv@XD6fe$94+s!%rg8}X zcsD<%RVMJuIKC03zYxai!h6e;T_pp2+_5h?SG%INk-7;o^;kB%3KB%gjrydxSVYze zU%@a*Zb5SO`yk&U8GG6LxRl@O9{?4HNOjhp%k%Zt*|`wfB}s2_>m|B~Hq@LV>YWu-xcOt8!pf zB#TT{o4d#oY3IkS zM(6hNxQegW8@?D{aBTih=zOj&pg+Guz}8Wh(2!gj^6GnlZru!MHKF~GS5M;EopG47 z2SHOED7>D+cM$y)&pENLb3N1emCijAU~7zyGZ|q z^jSoQ5&Z(FbxzJ~f=7M>$SES{Eec+x6{M;QNS{jjD$=uvjwSk_D3BGoC`fV?+)BYT zTfzTWMo}<<^!-HNpn_|G8q4UVE67NMR}e0qG9Hs-^XbU5Czu*1n7MpYXBemBNNi7*TKhfqXh5AKgmq4gG*L2$wlDAcLXH93<^TLjTZD!Av$6-2|>I zX&0#JUQ$0$)3hW$+(thWVDN<-X;|7$s)pHs7~V#kweU>W?dS!VBYPe!4&uyn=#}26 zu!rcrQ532TA+;Q6$mmY|XqDCeDd8if8WeR4C6I6o$%9G$gk;uA$XLy7#jU_)V=7S7 zsiX(ZZH&16 z*g?oL95MO+lrnlISv#Y+T3bNmTtwvxAI^dIMd}gZAkxwc^ zpa*=ivk1~OlGac(ox9cQI6nTtcob6e9G$DF^L^@EM8W5A8s)6spwz`K5B>7HG`yqB>hBEUGxB>N%E1j6QoEw)r428ks!;+ znlBqFMjcAL2nlTvEkE>Ao|^SFQp=!xKX^tar50097Uv0SxWg_15j|PH`hWx8SjvqD zNi~C;*q>civ4gdo$z%z;vZcqI-D!#7#$1Ybi>h@wYFmIPQ;N|c<8eyW27$+{Byup1 z;e%FouVOZW=+IA+kzPs|Q-&bPuC0ue6!q*^c3HN8V*IuZ1$c|RESjc*4*TgSu^+|* zBaNF&ajGSw;*Z_<*o#mI%u7ivPBShbFHyylmkT@KQ_kzG0b}+BYAk2koj9Esb`z!( zjTu1wng5l9asa7!ku#PrY9^j|NN1KU&&E9qo`phnITWaaJmnxykJ@ld{gmOw5~j6az0 zv8dh~9lcAacO%)iQ*QxZu1ZD;LTVU5Mz>XXPZ=MYNyW%m&xQFJM$D$31zeaL2H&sh z1eF{=Yay7+QND08LU@LfBUX!Wt5GYr+pC zY$M?#P56)mMZzW$MyZV;MAE4`;Nz#uzg+c3o@^hgJ33T#=z9pJDi1wAfMZJ;QmSvi z;{ZeA2tIcFEKqa8{3uX!+d>2J$+>`K|T}w3^e>gwoHR(k-v%jyUFiC{@di= zRUu7l7+&6qS!bsixvZTOd2>@uz`WQP$#h3Iv+5=Pw-bGvCIVD+v(fjiVkm;DEQ z5q&OV(&bO$;%GFMgmQespP>)(pwe-shKyjQJSpHtlv*m>gH zQ-Pz{boxpF?CyLm0CsjX3%fcx6*lrd6Bc%gJ`n&Lc{>HbM&5@4q^%WI zdRr-QG{aLSJ4#3Eddl7wRy|MIRsrf;udp9&;3?y-OyFokytytwBTpIb(Ez0}URW2P ziKlEW09{7e(5rq9_1P@z~PbW8}VzX-X*+peQRQuuW!aL-+Bx!F6=d81DSh`SRQe&kvDx{udxHa znytsS0QVX*`IWXF3mWb{R^>o`$p7t1|uS!6>HZb zD(^9*mC9o&14mJL7orE0%6n8Os532tI@2c`9LsP+?1T0S2FKSj8n`kL?~gfrBK zgzqMtthN$fK)9(|3wQ%OkGj&U?baJ)d$?I)TlENe3FM{W-KaZ>ak!R_Rxd*SeTF;; z)n@#*4;8p+13R$$xo(vq<3-@=Qr7Agjt7(2<9JmEbnAB0#WN>q(zFuu|F4#si1N%A7%4MIgkDVPIKDY z9=56hHR!fW> zFwT0P_J0P(y_K#`Hoglur)G_fvRJVyP4>?|IrSQ*zB8Ko5hwMXv8k6>se7NCx|peN zj;6leN?p%*AU5@tAmaqRWpFoQnCJ!G{yA@`dKv|fc{{k1*5I#W)L_U~|E$A!jkjCz z&hK8l9Q*sBJ$Un1zcPsv=sy>FEuG0oCdbh!4BdE~)&k3%sg=k3Cb-<8$2zzwh;LCD z?IX8yQjU$@Lw^OgjvC2n9S(N&L}Y9pzY}2{oYxXYKrdY)g(C zr`6*j6}Ar9-%<@8F3xJk+gMs+o^N8SptgD5IxI2pAWf!?mGK∨8TIShPU)2pSaA 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 ^xjTv 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
5GTryIY_hrZ@%QkE@0mR;a=6c6FNMQ6 z9n?;cjsC+r)pLe7qMsg~)!{m*d=sAdTmc7r>7ue(mQ0+>nCK8~d1MslPDw zve`rS;b-Bk*kYpeeh{wCs0~kk$p;82J5UkKO)HPMcqX~;nIRq z>?##p=D2QOb}np|J(1f5z*a~;%`Rj7WC8G`^?Cu&kH?}Hw0F}wm2`e(zGJSZ2 zowFfx1fZ{@6MF}|D%sbB#689=(1~LeQ=hFtILQ6{L~5=XYCgF>{jkPj+)ddJsJ^S3 z5yq}Gu|iT~NRUh%PQq83JquW`gWinAzHA#T)_Y`l3ytxnW=Q~x_Nqm?4W%L`==*sN zGXJEw@~QSy%ABkA04p->TaN5p*3G9lt?bxFFc&449pfF4cv_Br1a1sA$SN>sD(O@Gi<9Y-FPeWA|X61DHiPfBS{Sc!Fv9p4gGfQ=_Zw zTtAx#DjQKPhjF=1n6nv)RbOG?5y6lzU4-KU^y;k(;NyvV4{={Ip)nQ7oC#GUPRnNv z1yyShsJC%0#edQ6`imi4ox;cxG`1qBXWHk?VCAevINp<9=GXwh4_QxAnPX!Jb|-4q z%dfHMsANzoNr)-Bz*~}Fy=#>26D>S!K+m^>X8`=NDjIl7hprziP-h{Pe4Sugz08DY zFBaOd@!)U4U}$z!)NFr6h~x8e*_jqKfPOycRh&fxZA{a3m~qIg(Q|1exs}WTEQ&I3 zPC4Z70#%Mh8V3}k z(Ak2ce*~x;x_Y=rYryKxY5asb`m32Y$Z95rHnngS2EDRrk{HDCA)=s)8B4IzEXR9YI7r0Fm=` zUN2^k-J1<5-^iyX4R#^}h>GSA70? zvL4|XptCIwm*z={*vyt2@99MU8e&i2_sU)sUt{@Ye1p;#~AE4>x~4O zw)fjKP?D>wQa5ct2X}JFBHN~ZAZs;O${Qaz+6^6J8|$Stm=Q_GDjSrV(bCwUCU}qI z0a^JV71u6HJI$?QmfD!3UjKB?9NVhtAcS(y(?y072T_ ziQjERU=6pLUs*}O3u%Wp(^hZ+gEYzF>!L9<})HYi@B?c>mkxE^kP**xRoZ!g$ z+IM8$Z>eS5*jTEwbNgF1T{&-oW##0UyfoV3Nvs|}$6?vTaU7R16}pmLU1hQ`O}+9k zc9ka0yo@Cf=jjZ2W6w|jv0N!J6sn&vs~(G7E_xbEZh9J%=ou7RZSmm3B3-7T%GklI zj8;5^dIv_bx~n41LGL}p_SI5Ea^#ikaX(cY3*;=WNOCQh0M~-E@K=?if3CL)4eXJ% zV8PhSw*d*Sf~um|gD<4$4)kWS9!&qhw^y(AVju9?AWl}jLFGE{3J~$sT8h1VDWEb3 zsm_Zo9`0FC=EwmoYrC#8$GLzTkkOv&${cxsE&i?+&m^pEV@a8o;tL4QeZUR;Cowb+ z>ogp__*ZY+j&Ix=8X4*nBfYx16PndV{v1bjM?dx7w5qXWoWY+eOi0Xok{FfiPUV^@ zN$KLvWsK-TO%rf)`{hFObi&%vSj}cr4`Gzkm8X-ZOPPb*(@#fFYEuh1Zh9SJxCaC5 z4yM43x7jg}Da?H_z+Qx3g#xgkd#B{~9*{h{lAwcH(0=(Rn|Q31pbMiP*K)XJugwCW zP!+>x(-r7|%*AyTT6QytS_?Lr!)>`<-(@~!2JMvs$ zHad!rtrMHderN42iZ5&AUtj72zFKo#hh3b0>Wa%*Kqtu4TVXV|NF4ChM&mj;4|H;> zSH_kd7o|_*vmL59v(dh^2^A=CfzF%it|^JwhYX94ykh+FDF7{$cS*H|mCQ3>r~Y&me$V%!1_{gTcKWQ6+WfsnUuRv+{wtViricH*x(?-uqY zQnkQu_9f_}1!XVq2wP9lnY2=N395;7CR`2+cP9OeJs?h2yXNT51S>%7O#11Lsmwtt zI+HQ>^0!EF>_xahe`E1F_92jFFJA*nWdmULMh_z3V7;|3Uk1>Zb^wIDoyGUyy&pi? zo;%ANO#oP)cg?}o-GE~}*Ut6tL=R!(5?r3G892`+zGmfs%~eeKH1J>Eps1#VGh}dT6W?AfS$9uQM;#Ict-8fuI z#9Lc^$xMhZt_+p4W`EquHC^c5qWYsb6^L0i4RKz70S4@v{Z?;nCRX`EN9}zRoAD@O zCs}DeYOR^;XKl4QTSIH7n-VDQY%0Ycw+*YN6&-fXX~MeYC7#A0KGv5srxb0`Ra;>h zz`k@QjMsC-H_-8T9bckS$}mQNRqx;UtKOT>dSF<{)+Klrh8Y<>eAS zgfR2Nb9b5JFkrS`&uwLnUjfTtb%Rn+RmC)g2fTg6Flne*W7-XPL{3&4ZyE zYqg{xCd3j{s-UQ;qDDm>Txz345+r4x@Au5TyBna-@A>1&2ky@MoH;Xd=FFKhXX>7d zxA_TaBV)@iorgA)d#myO7yb-(W&LXLr=aLD!_n@a)_6T|PumOkk5m_mYho{%4B&*? z!w_~B+I_j*ZpOt58Can<-56i!r3@_e=OK%;(CcLJzW*Jf+C5I+SEyY0g#mz$gJ)TwS~xIs~Ks7S3JWko&iWQLE>M6sOD<5&MHC;B3a~bT`iW$92GW z!2vvzd$!EOE9_TtM{MA%%x`r=lMZ%D-_XWwkXE>VaRKUQHud9`HlL=0Vi4mGL#LMFb+a``X-DSfw7tr^zhOO7UsTL zC%>%W(w1%A;j-Swtg;J%0Bo^nq{;wh1#q2!rlGOFLc}&uVkl7Ugar^76V^s^N5*5H zl-Nw1lUYja&|;Bxa;`y~U?~?PX${7QE0~Wec6I_aJ3kGV4d3~R?*`Nz(}vQ2f)uLc zVlB$TqsvLq0Nml$-gF@5S8eYJVoo8O6^*~;`C;EZ4)ngr=;(z1F7Ui06|CGVo5Dl3> z7(fn_+2Jm*Hzis5ZRO@$yFZ2@v~t>{Jr1BHt?Z})u5b@xL_N~>|!wz~FfDI<jIR|VV zw%+5A5tE%}q#;fjLH>ZAff=gbF|QZdbn*WsnMNjJso8HSgUJk z%Q!Swuew;+{>~EfckKKsWj+Un>^-pqm%@7?u}8DyoowqB-s5oyY8{Cnh97GJdx*sg z6M)K1xQmzhGRUASoE{&&FcK3BxdA_vIfDR$n^vs4zg~e+iuOU%v(MU^c6n%fSV*1? zCm2@JQ?bpGU9)w@WY)BgBoz-k!?;Xf67Iv{D77P;yR~S3Uod-F`fMN}`U&tF-5tL0 zBW<8O&9z}to;~*L^TF+GNOhLSs3jK$SBA0rYq;W9{PqZdpnhdp;dB^+Ff5*k;8_8` zVX3jk`jS0H?Mn!W4uo47wX!yB#oE3T4@t8&ybdizlQ57bR};fH2;@Uxw- zmY3}gr>)^IDC-bMSGa7KIJ(1SJH&xUc(;qAud!rbxe8+D6_s=bfXvPqHEFjOm1Oz< z8e^$hb7q$8@JC`LyWrU6|7EPC1C9=VO{`=$9J`I$+t5omSeEghnS>TGQwTyeKeL%V zSd`ni^6?8@%QC~QcvO0T|39R#?VdZa8u3p(1$j6o&BAuiU(kX4YxkV|nB#ga9yTr> zwmBa5b(53sK-_gE(#=N2YIGN*7SJiihDTY3n}akB9X)orWSC@=n3G-NWMfhk=}l7jP}FK#d0?#NjdOv8{C3FZcW% znT^`Z5zxd!t->uVv)z+uK%#l9j(_c*FXFDR;;ygbuJ_}vZ{cF|+C2$0d>co@R=Cn6 zHi4Q1S{-CY2x8M){JhK08~B(9@KG(8g<%2MI*`)(g**I_wLde$sD@Rqq3p=_bXwv( zETL~OG!>r)i%z_pj9{r?r^1`9%P`oi{VB0RR#~A;cq2^Fv=yIr&x`o-PY(mOOYzY< zxr-?e)K%@kcK_)s|+YAIds)cND=1}5@QtuEJF0<>!E`d*HZwTwvKfZ)Ub{y z@-S84%2&afZcu zg<2Apm!kqQ?2lL>hCC}t1`EVd1}CO~Cqnd4vRIwvuI?-9#Z>6kkq7KZw}!`Vl1@=n z-Dj*?$Ku=bvFZ14@C1%4s_qR1Vc3wh<1acUF{s+pUPugNCeVY{8H@`m)U{X`Z0tzW zlaLnkaKI;8eg`bhRj2_D%a93ro9PNc(9Po5bv8Lda7yUJb`J+S>%;y+wB_h$vI^x* zltHnrJ$>s|BC_3+m^0sFDC+_;UBQVF_L8IL#wh*?baLYJ7Oc}nN7#voU5Vlq5%o7j z>4C)MOx576F`BBCGH9w6S|yV|LB#7&d*S_fJPx~<*#996cOoR?m~XJHT@H+s|2YmL)CB(Zt?@y0^7N%W2P zKkmyg8L9jrS9pf;Fk&DPPW8X8`;a{sVPKIb70H%O3SRPmbfE#@qSqyLVY`QY#DWr? z`PJ)4G*c3RWss?BeVSr zWxd@N1t=jdLgO%JLCFA>J8)^_E&RrLqwu$pcg5fHjV-7s`WA;VxIy5i!ut1_{tEm? z=OU8y%sQOmzW{Cy$>>ZQ&xI_}L322p_3VFKMjpmnxkfkN6)#u0KsuO@KB!Ri-H9m- z%{ABznEUla|19i#d%AJV})-awJ${tIAlvWbetYx>P%1)QUDCD#LNdwpyAHU zN8Sr?ZZ4@R)H^e@uI6;~3v6rLTL`2$+L~h#rUk=UM*Z>d)Oa1{A~48S%VdDf0~mFC zh*F1;ychStwCxCtA3FyZI-LkF)z*0Fy%%MJ?L!)s4XVVm3{HUb{_(g}4sjxR=(Y`y zkd>80IPjIe$@g&fFKOZaV5Y35M(y=*CuW&WpBBP#h(`1o&H_1E4@f}aQVIvTmX}K( zR*}(C0AV5SuW3_@fpszR<|!31!tpg;F6SaU&agamp9#xTUzSKLUjCGjD!lxuqsFT3 z5@po2v9e9Hb=c-RU%jX^7_mZvhO??ups*kn{Z7XKQ}3eia%2PUSy+mP0jTUJI>jjw zj*OWST9qeBridpgJm3*F$5*OKbfy8Q>aebAo;o8Agp>>=VT^A8QLIjo7&$h`(up#V z@en2f$yl6~{bV0${A1vD`G_0bBSK{pa?+x zke$}>>crZfMF;?)Lnf^;?AgYd`(x;D_YiLRf~)k4=MxIj555(|3N6)3=$ zYBGzOgel$B1s4LCQw?K4H(a>6j;tCIHkbXNZv8Bo>s|Q|An|V(i;g@S$|O{LVDi+^ z6%fFqoUFhc%S*7Q2hI!U(E)BsU`|7pn1>-p*2M{}4t<(jS1#(p`m0(YB7@k!o_2xM z3dl^roBViM5@CE85t=Zj8uh;vk93<+R}}YPsGSz~fC4@X$TisMp$wIU!3TYC{k{p2 zprcYk*G1S(4jE&NQG2?SLxc?tjg)bN7vROG-!>^%Bf)8tYUhZ(sPGX3D8XILg>gGJRHi^MJ61@CIw*uYLLdnJ@i>ry(?2LU1R(F$R2@pC z+L0=^ra<{FRC%+7lF!xy4c+}HkSS!rnUB9jfS!*j9z7w65j5GQVpt^9<KmpVDDiSUBl(CV}2#VWIm6p!I8XEEX0C;liS$#;Smh z@~92chy~^rwA*}=jbD!eZFygWGli;Xe}-cv>Z2;!U*PTpuuw&lq;1ogl+#$W;$%Lf zDeazPQIw03nSbq`GTYVYtwz>n%9smUaFTc@!p$4;QIiCQ+u%$Oomk_&1&&9MDm1vp zyToy)LhS%>xvp>1dCmeb8mv>{B4?~7f~Z9Z6?idRyWwPkJq;k7e+98{wx0csoc*}M ztOqi~sN}G22i&qd5AHBhtO3hb4=}J=0WwL%i@2 zNrn4TD^)($)`rsQ#nF$+%O+MEJuyKfljxGV?IXPeaw#IZ9dbIU-E%aibqU-vs6yo9 zh8zo2EHps<1}LJJ^3_z-AK$BU0W+)yWWfp>$APtCT2^3LgiVSsvyBT=twVz#ZN*_Z zUK7v4`<>Kv2$xRB(Ic!AbDX)@5GyrV-9XUJ)&Z zU1rq2h6ELAFfhP#Tkg_rGGkc3pa)`p_s+#L`t@hi70B)^63#$wFU7>Sw>+|G>)9-u zHeDI%rvJw9+-cUqtiU-D7SNEkCRREvRyD0sodv!KolaDZmO(VLbjGq=l!yY8<_ZTy z>1>X)nDlRA79mFM0Fl5ix52W68}(tyO%EZ954mMY2(il(1c&ENw+;?nHV?^C_NWFjUm|*k^x%|AmpR$T+0R)WivYnWm-WCtT_|hhSFKZ(Ha0p zzKVLPSL@YF^i;XvctRIp3>SGg--5H6_@jp_GQ-6cMY~ASwTqNfyBu~#odY_?v1_mP zNu}S4J#jJKon49hVW6m)70Qnuzord4-!%W{j-KH8T0L;QA8NGJ6D$avu9X&dp(6iy ztM>14a}ZsdyS~s%37M|ltDQ)7W6dV{@hO2hLfj`wTCkJzpH;(gnb;;y>fiReB&$C z%Rhv!SMH+4D6g?J!+d-1w|Js{Qn^}(LZx9(kc1HBuXI;bHpfrLJk94%xdbJd%m26u zulJ4i<=Q7TBS zf?wlg&e6H-=OO`5!wavvOo45fJcaYoQYWD_q8G_pWnh0GP{QQl6F-G? z^gDGm$L7Ia?exUa>Z?Agyu7DeX4Vtv;dH$1c03SjvLnq!?DSj&xfs;^;UD$;y3lBE z0lexfv^4o5&Lozl_Cq;F?$hLItE{gemFVLZ#EN9aHLOi&bhsx@nxSqQ9`(}gs7xS< zO@HYd!0kJ$LfwPB4b@$GK&FSXio7I~p){+c%N=fmIp&?6@-~)ye0Sh*txGSdSvaY( z$Fos)5vtRkl;AiGaMg5mCk%Hq7SA@H`}p5Bz-QrcAygPHorcpDr_LdEodZdQLuq(t zb+)bi1O=%oV@`P6hFL%c^-a)Sm=R<$#tKP6eRtu&Om%|p zMa#mu4>!!;W5X6Y-C6N502(ixk)qk-a5h=k{B6s}T!Aa`I`^Z@ZE!5u0o%c|78fnr z=U>^J3q0x)J)x{{=`7q}EJINAR5TzJ%hedhub4ix%F}#uJZX9;+is_)c?3ek8h-PG zFLy%?^Iv9ntcGqtRluK#tTM&J~6i zEyuwZ65-S_1xu{Amt>OX)8y2g9t(|2!irmH?d&5EgZa=&OkkdLt1Td>#YMtc`|mCI zz}9`!5W89UJ{BG!aZV}O2jFo+h?RU_TGbHPcOl#>5MXyFL)e{G%ecRDq2!4tt@7wT zrrFKzBH2;+p;y9gLYEYBb0O~^5S)`RA)^b>VzOvSeLXFyRYx>u$`#VF@ghF@1V!Zf z#`O=q?_=HLM(yn&=6VX>jGmKQMKGLQX2vHcw*czi#qh_+y1s%lTTMbLwF#3&6NZ7B zFieNk<5{G4W^7>5|CpcZ*7#ruo@Ec?;MAn49iMH3P~1_o?N7*lQS`Uwb8mj=GS~5W z?LPzepf|rjgiTq_#xOsX=Tl^$A8oy4Uj;5St|F-k0#J zjX0C#DHe;Mbg$g!Q8z*RU3mZldDjS$3Kn(DOb;q|;SBJju$K(XNBsgz_Z5LpOHflhf}F=whc&n zIGY`69ZbhE$K7K?_Fs?=Qu28H#4XwUWPB5o{EK-w-eec9HscVMFoHjSh|xhGWDInK zZWQjH9mnI1iKtHwq3K8uT&T_lh`3u(gq~I(V?!VAh!svjoO%nMqBbmS1eTjf9K#aY zA`i1x4U~P2NOY-#rv*h6`g&qJ$-*gUsrD%cE zqfS7XP3IzTY0G4*1-IJf!hI7mNqn}|lCFb%2x_`S3dzFV&802l`SQ&L2x#||;`>L* zg413ci!hWMXB{&QE_9m7KG7t>M2|&bm?|rYdR&RHCK4Gv&A6XD)=*NNV9nH>|4g30 z_dR2)tY}2&8O*Whpax@&o$WU2*CI5+S}ZRSfoGh;d2Bp{hUWvk=nVBF;Lwq&cIWtgQgz{~Xj#C3H`eCsNBe@D6Sf3cc%x-WqwQNChBFWy{}5m(hL;1t@s>v4gX$8Js~ZVY;h#~BIti`_UFgYjbv%6P z3L#3tfw&{N6GAhr9}eO&tU|(;QsX7XVeQlKOD00r<==2=$gm--7jz>xpt`hzM#^g6H7TloWLrQj&5F z@}=_h=@%%c4Xa#=x;Y+^!iZ%$LKR>~)rO07I5mzZa4|upogl~rn3wkD(I+uo6A~0H zd2t)H_aj()jtfjmT-P*ee}ag_l}*F)!LQ~*D8mlm^ulh6G*WwTshVEiQ-Fbzm8LY$kwcWOtKA7V##PqqJ6-92qc6u72&EPkS80ztG? z7eeCUKVQ44X%GONW7a|bQ=2EluYGxbT#aV%c>hrCC=6sZpN#meHGEzHD6dd&ouH5V zregTWaE~iMj6{e&=R4l0A1oewME({njE_iKwX%=$$f4@+6e=&!+lh^lQM&_a)b(=Q zuj57ef${nbj>m&)G)Rgw?9-h5`V8$CjDH!V#)-$^zYAf|FyP=1+LdWd3TnP956BBn zlqRZ$6ZN?hPMMyBc{AMpp5uh1s0SHxk~+%?=~b&3GEPl!LNZklAsZoLqhwu&4u_0M zosm2fpjki;6-@k0e+LZBd_F-crGCLTT8rR9wKEZRp0w0=rFuz+9p_7p6|w-N|F2ex z$W{@F3mLeq_#1H=bv(S-fd6Q>UN7u(^myhLo%u@j16?qP_d_T)1%|)o=@6W(aTn*D ztkKPrwdpz*(iREf$(oKDt42r^v>&q7V4cdN{>8h*!u?imyym(}*XHSXA`6Tbm&j*3 z_PRD}@oq&W#Ji;?hd-(I2bEYHLRkf`uADU(FC3j8?P>kQy`dDb`K@wu082=gY>CU& z;|m-X5le=aLX1s_Cr?31S}2IuawwdvLh@uuB!X^ckT#h^trGRfeE5^Zka#0^Hj{`* z^CE8CbH#{_IwhVF9J=p_TynQhWgrP8FL-s%cea_u@pd9K6YY>flS=n06CnozQ|71!w7$Yz z7!R4OmLbGhUn?r9`I)xvcEm%#v;sfUGbf6~I188IsYr+G3+u3h;TnmT;>Q8;iHN!2 zN_B)R*O0d_Py@kt#R{qaXr2XJsl|}@aqma%AXgBlD|C2x^PdhLdTCwMV9M-rbr6X~ zWzl?O!z(WA8Gb-?r)zX?MEfFCx!GJsQ0)?N+8`x{28u4v<_i&5E)tqw_YL4_~+gjlh_Nv`_TGA(VHw+0{^2yu4EV8yK`RVLzwKCZ&s) z?Mo>)SxBWCeIm=(NSkH;<;~qL^Fd-~0*3G-R{}L!@$XY0$ZqR<^ZE_s2^h%BkkH1Q zmcCNL*^Tlche-9G05>W}HB@X(p|n%SNws+4bCpCAhV;rhi^@dVPmmDDKA_B$M^`P_Baep z9tcubF>nnJ1gBYBhiQDIg{BwfQ8&(iYPc;~OD^85Q(#{T(7jLS{FQ1o272^(5vwKw zX948m=sIUimPEcsYV+ZbyE&LMDd4>oMv=Zj$2d4XFIGs!Q}rJVH1oBudYJH9CS<>E zL&9iYggS{LN=Mv3+2^;KD}h4wCq%1rAyu-xqSqYC*90)fcO|Y`KE@s9G%K>`^R^jkRb zefFtQ7p^Ap<}n#m)-v?Sa}l!aK%%Z>GAfy%Pai^~`ky{v+El71UWGw1Y8Zs^*j?^g zoh>Ca6;rO$-QNGq!MJB965@PG!I(1gE@j@$2#TLrq=kN9#Zp4oJE!ZFgzXBg{zT#t zz&sc5B0L63A{)|}WU`SU8t>w~4)&h+pvrk_%T`R4xnbutEG<;P`c8wYacUK8P4>IjWZsB;B!ohECDo3|mm!S&5_NK8=GBSxK=3pf^ZvaqAi4kTf@x;9>yD|oYRr6;(M z)1Bib74)^zIRZKL0H>~f1TqF5-1-p>!_*@WK``ADhalg52T*WNP0#4WDaeNmr33|%RKY!$#~V!H_PWX`-sW5%Yd)8Prr7VHMkZAVwQ>lt(t&3XD?Dm(vfsx z9nP3|`0!!8y14$+Zl_c^!d@U%78uFq8ED6;th`1H1BAdWo? zVO+-i@Z%2X4w$}K>NNJ(V=v;Y`Z;D=4#l;R2---vH_yLiK5|wg!WB$i{Slcp@5NK` z&a3Y({k-Z})q5%OcYO5?OjRP8oRH$V^A3RGOQ|%copEs@wI+}4@eFS}8O%3`l*f<< zh!Z9|oX4$Fe{BJ9A8pMu(!htjp8q-?03mDfJ&n5K4kIp_mf%s1xE=u{=OPOcGRm8m zs%Q(~6pSTt)w?c1pd9+ogQ!RN>d{1E(g{BnfI$pO;;ZK{SAV`*u~EWT^YqT)tKVX% z&d9xmGLFb-?qj>3LaGQiEoSqskGX0-N?5pR-iH{=E0VzA#0>`!tbI_n+90Q8Di=a`4tJY2dK8D^&#casHoIQ9xiMn$v zK9pk!Y+U|4Fi_LiQMx9kv(&HKKxBrp-hRPzP<3(iS7fY2(pbeBDO%^151u+tUq`_s zEll;Pk!->&kv+#k)9h_|XtuLYJzFg|@=1=;0XdyH}*6L6^mfJP(F9a(EzV`7CoVo{SNtXD8s zDCZ4Ylj)t!_5nz~hX)q8^UpDBWBWTCxT?w7IMsRqaduAyuiE@%+?N*0*!(Jd(PACz z2@Q@si~_>b>%U^~sm_=fzxgW3Bu4|mjLk1G7Oy(lLY2+e!LO;~U`^QFFgg5U2~hR? z$NOQqCf#?3N{hD`QrRs)C{+$fZe;JP$6m@s+=v2JyI?VPix*OCQO_*gjwm;4Q5opV zGhbt-e{3h!9Q7@XsZ_s4Op<^oU2-iYh>xLgRfXt+53CrjUOBlTNaU1-u9qXlAE3_2 z5|MdIafKORUSY=1L0)weBvi6QL#%!Ie~uV*Ij~$x`3)c(1q5iy%&}@yX05@Ht-eDf zM(ZkqTrC%9)j+4*!TC5>7(heL_0$hb7A8~V zn=Hefgm^7htu|^oX%bRf!=ebtw&KVtlgoMZh;m38wEUg&XmZ?E?_B>iB8F~*PsGsv zMYi;r!Vi%?`zH~4qy7;FXz?@oQZ0VA?uE1Ye0-vJHB-VSE&Z{`s-wPUj13)fy_hD7 zUe!F$2`Ou?V6Ojv1Xpza(tMIqxy3lb*$Bgk%9Vc<;jjO~Rm@>O#i=3S17R0u4MESHjZ4 zrS?99#Mmj|tLw`R4N@mO;n=6uVX$VYem1Fpm>Xfn3;n}V5SBN%f7noj?S;fg&b{qA zvM4?y=(uO49miAIRyVi6W`U9KY=EWnB`g0ptyfb4yN)hsLCK;XWYm$t@QqYg4yHib zsDGc{xvIqWia_ydb(ZZ#186mMl6ZM*(m@QQ=0o}g5^uf%>c81qxNa3PWeP;ZQ3(m% z0;zSUb}n=@lJ7`NU_Bjp8O^^?yZ;P#V6L7{V|iA>a|i3i$840|oF@H|NMufQJQ_8?^=YPSz8}*GSV(%J!@I&=>{f-A|GU|i_={+v^LoonP3UBouZ`8de4p_*4M;s`lQyjP|^r<-9 z_7%}y*oOZ?LNbgx?t{fPJgJM-JHV(vNQXD)L_Aoi)9w9ILJG!}P-?>-w7m3W8g>7S zdr){w+>>V1JrB=b%@En*o`^)#1KPHR(La|E(mj-08~1oZf#@>5mbrqrJ4@;H(VHEM zn&?rQ*31Z98oeAF#G!yRI6I1Y{m@k4E?5|y2{aF5=qXUH_s%7C$4JFJ%4T)tZcP1d1)FGya=b4_koPn>lr#XlTWKW0%y&^PIS4k`d4sc zgVoxZ8lIcQNDBeh!P(1JAk+(Y>at)_X-?=zeD852APUdTv08JBT0@J}TzDY?idE&% zI#(%tpgpC~57oB05H7OJi2`kKEbS;f+Jr)87{bA;n~10kf$nPLy5+XV9OE4X^cjm?aCV~qrB`6 zq~wo0SeEOg#1m$GG!lBZe8P}#iZuQgORb!fPM%QfMWZ4DVP{3lONcH=HT2MnV!M=)ildng$U3Q67m}FVtCjTqyAy>`{I659?N?>{GfF;@PrGQ z^W~Pew!rw}>{Qp&oKhk=)OToyc_IK&FSDtFuovhOT&<@|&=jFd zF!TUjf}BRWo@8E&F2T^9bRG8&!hS^86uNGq>wLPdq3de8uAuA3bX`PO16^LaB6JnN zMF|k5ir2)j4@_!01M+VuJT*;`->jyo@|)XKh+l1#59z?>+UCQwSs1a^XVmfe70dev zK#GpSSvETAH}G(f8}&oQ{}B8w;`d16hvCmO>U$9sVbyv=(>u#Qrr7FT?jKR?O+z~W zam8Ly4H{7Fy^{WvV#`a2QbI#Ea-7t7nVEzfQ4zw98|5v-^V8PNgd6+A2;0H1EQDPx zVZFT1l#3@B1BO&Rl{M^CQ(zafkaHUHz-f4K)3qD44`xAHZuliU3+Z8=!Ft<>gC$fN z9ci}UM|K!?xbC_`I1oTql;cPjb!pzD(qwNWl(GYq64tngFWg4BOMdnMD0T>l&9f;` zk0Ex^9*+wOAS8J(BiM2wmH@~InNMoZBK7YmSJkK;lI+fK3-L+mQLl)*aM4zJVW!^^@4`$lTCn*n=m>{-qB!OQ8>Kg9~gv%;f&)r~+w-$a` z9_!zL-}0`4KSeLB=1!I&Wlpop5SGdN8-&j`>eoqzhqQ;FLW39{j502)xF83Hf`7P` zA9r=dUAyza21#sZ+_fj}QgPS5xT^y$b`oCTMk$(ZB$Vgl{PVw?9F9?a0{RIin%a88 z-57N#D8TYcJw|;u3IkgNm@$nsbM^=AA#)aCEkqm{4lflgjMZDg%3y6+biS{p%_4WbsP+Lsq#%G=8jZ1T^=2$9p{cuN=Rvg~ zW7$j?jtk)#X>cx3f}DfoR3L^wNULiMKLIM{p#gG#l2O9b&{5FBZye9{QB)Hv+yi)H zg`M&x>BU72KLKxBF*tmAOOv(C9tE#Z)B{WRUZMO05vqy%)PyVE3(q8m5aVNCsyn z_JFo>B;L=k-?6aYuIK~oepq7X25<%%8}KOJXrz**#zTR^-Y#~G8`Eq6Oi|;@UNvgB zBDZ=3JHxoG3HB~h;JYIOSFJHd9Je#M>uOLv_Oau^lR-=0hkfjD?Ytf*!P(k*Wn3=B zMLE$Vy_Mxg(5Rh@812W30=YFc8TIz|4x{!AiDV0RNaRUUjMME@a?|KqqDvsj^)J$H zlH&kgLUf+?uq8)>{9da!&!~MI(N^zx|LIn5p;5a^e9QeOc{j6&fS0iOkM~mc8-R{H zYlM@w7w}@qVUdjV4_=@~NO0&}=#UN8&H_9h>DJDf&>iaquMJe422}l9JE<%7sW^ir z>P4(RY!S(Ddf=RxhYlJ6<}b_!$Fk`N>u*})CU}}iLN(n1aDYy2l3t8&4I$0SSXLb& z)dl|@43}lLelpnI%1eY;Z+q{m_H5wljCEMn-`T>XVCz6$1#7Wz&ArvL!rQ?7w|Iypk=+VBWsU_wup{q8VcAl!O9E>3NY=YdUAl5cGJaDBC0 z@s^eam4Z@v+xtDKo(km)!i8Lk>JQ+3FL%E~(*2JY9H>;+AfFJtZu7@)?B$CTX};^I zr*Rq?&v=MQL4fqI&yhR#kRa#g29I8gu_H!?ln@HUt$G*stLG1tI{LKmw0Sg0H; z9-mOwt7f1aD`uaHHHzwb?WZFsajck*Gt$2@DCt=7o2l?8juq2=x2j(v3Ah`7mFY6i zKI_zeXUKQ65~?2dJ43!6IW}I5S{>Tq*?4)}ml_(q@n-mv+Ud{Q=t2mz^v>7G&}jO8 zC_bBVZ@daV-O4QA3iEz8{wDPR;bki;{JVS)>j z6WVuzZ?w9bjg>)m5(^vSyG-3gED2hx7&Ogyin<&@;06vajb&Nw=i;u!_pFRKDqr9` zS50FM!Qk{4$i=81<~ybS3<(#Qy9m}mrjn|dbb;0g{SNhGnq~SQ)m5%x!H=-n=c<1Z zHUZ@K41HRMw#7rAW#}e`o}!*cD4HoFS(IoE-woz=#@(TQOK2o!8gsmfP;(_dYB@52 zAZUf$1>r?GjX#~EA>^Qwp07|9tWO#TN_GD!@bn)W3)C4*Aq~r9wzpAqg&KuGuzdL? zS(|t4+Tm)<>jGjxbcb$r=Wk}C?i{$)J$3UvYrl5&bQD*Vs~IS|(qt+rVS#!dU^{z` z6Coi~i~fyz&ZMgXt~T=$I8BLh?bCY>s?^qaM#c*nuti5R1PAN){`gCBd2 zkKr->EJMoN6xC&rQd!=!5I)1G7b&gx9PRnD#GDIHhEX4Zr`clh`SzzOYcMe02f+>dYyepk_`Kr2jV-DHfKiy8?S^F zqG9q3FxAIGje05zSl-jbQZ5(`B3C#%2_V2^$_vX@9J?=NcX^n3I z3_B7@*D}ocUWdGx;e9z%nWXGe$t|pcm z*+v)3igeP&vLd_bVoi;Od*E#J4lV%4vyD=VA2iXwhW>1(VAviB8;oW;VItWD5A_gI zV8s6cHLC(L!K|`pB0KHqjS)LcZ;W(@a>Jp=_nd6K!C{J`Z05E%IFH?nf-gFR5hGC^ zMkQ@|M=GsLt8dK;iRH+Oo@>vSvm&aIu?N11tveo!tz5iQNpIQs-D&`s$3H zPq?LVwlNaeGDEzHt6jwaEQ#%=O&w_M8MXNcw|b8Y;8i~|^dwbAE#&MVSk4y4u+rgI zU6{m9AJ$QbK(<(SY2D}W+Os)$p0MfqDA>E3B@h>dJG2FZrQs3pyDdg!!cY~a{uHC}!>LXBFYT%`-^ zkNwFnzTrMYKThPJY7{md%kA(wl#Y$Z67h!al-oboYEK9Um{-`zFvMNH1?mFZ+eGil zs=)UCirxw}!S?cq5?h?1ws$qXV^z9%aWyAf9qJOG>K;UlTBNr+g&f~-bNwd0O%+h3JX>(+cdLRv?YDf12Sv89jmh z6Mqu>r}Je0wB*%JBt7;PY6fEd=N78jW(wlK=`GTWn3CAYIpgG#3N=D+t5}#=(-GM6 zsp!VFt2fzVAMM9ec!^63aB;Byhn%lUu5d6G>M-2w~zuE9HfaZZ3ihLa5@v}AF zoe3A7MpR>i*5x^Bg9b|(Z1Bz~n7-15vvECTcs3p$^NsSISD~If39OXb4Y*{1dt2iK zci$c-#$^O)$PA0S5LC`Z1IQ~lAQHCl8*g{kmvjezB-=_<4*V@`8D+Jc$4(seYh820 zqCR^g=Nkp_bcNbJmMkBv+l-8d!=C+%2-W^kyn%sqk0HcrvlBUiKSv-JOQZHq^ubY^ z!8=%r@R+XwRM`yv9j(;taRIeO({YpH2?pt{425`V&lvdQ>?$;b*P$({2C4qne(*=E z=cxVQZw}eO3R6hS9Q8iYBy=7EcLK}KC2Ji6uFUPyYABwam0=ym(K!mB-_;ZN)k zS+G2JtyUl*^vRfJ9_Xar%9zivRddvhh}5IR-qbXb&rlDrFz)^=s`(EOSc`c&U2wKpF0odjuN#@h(hd+$M3`#IQqlThjb zyFe6A)pN`zeK!4t{~}WTdn5v+4;Z>YD^rJ&3YO~wMJQqlJKf&Ck5WHQ%763KIKg=O zi2URbq{~2{1{t+?#2nE30H-P1Poq>mOOXc2zPy!)9i@gM6o@(IzT7qGi_a8uwQV!#$Qj%0Dn`-!rNop8Rmy|jJE}a$0`)@Nu--x>j;*GdeL+-&wLDix_9mp(6TZ;Xw z(MGK;X!vA9B1PzZmhP~}(wW2QrU-kfNO~xANzB83j1c26$;%{q)5XqlPN0r`E+t#l zYaYfxeQ*gjQh5H{84(h50T1C;AV!ZKARl7#klXI1l#BN4yI!q!Un=GTwi!O-TW-7Sx@Q>6bP{}F)B|GQnK~2Rm zi>==knjYc6c6(^Z)<4)wgatC17zXh@AAqyGGLG>$4O*fuMF_cCVj9ch?@%-t>!&}L zqlBBlSU;+rkatLRxR`}(iMsV+$Op(~)HWhU`+*5;ma4_iHp}Lz_O`g6?KZ4MQqr+z zq%*$~^{97o_DDc&C|*GgiCA50yFkJ9Q2VKK7AVr&wJM|bml8p6R!PFcasSWY@`p5X zi2CTNUyUg0}KgHhmbgxbYqYou;94lIe7L&AH3=^MX(*e!@P&Qba#4!j>HUnl)lK zO8BC_r60^~jpn%9!g)kben&$d5!R|wr+A2m2$9cT@wn1(aOPph*hRU;Gm)(pJcLKp z2ZPjxB69dw|G}MEJs)U461kRsFcwwe>G*(WBbS?oJYrvCM)%lkB-1^n`zg_5OgR>L z+6AiH;nI-x>j_|DDv`i_Z0{`KlpPT6z>TeVXH4<1B;KhSPOG9R9u5Vl=xqEel5U=Z zkC!fg?o|G4T+Yzp_(1C_FivYx?hkL{L*hWI$giNrxK*%Cyy?csFyw_lDAVz@QIs%C zkgx^ThmB`Gz#T!+naqL$rEK>5Am>LcR1=Y?1h0SNKozooJ_Bw)oE=zz^gP z`MhVyb@m0rg2x}4da(Y0rPA=X%gP*Xg==qtOP^}O~?W@b>gjOHtN_*{90)puJqJ|7x__*Y zp|L`y#(ikqpW>BNsiYVZOJJnAcdJXBA0hBIh4uWsPA$R`0!hwGe!{BF==LXF4Edjs2Od1X(8lmew)3r{HP#yblkyN^pGy7ndcx z)Cbp;-RHX^+mWs5YxvqdsWVDk|A5PM-3|C%>i1t_**m}hmY^oU+wK{NM3be6!Eou- zYzSO;fK0&v>@YY}TyPABV=U5-#xHfEaJ!(8b@7*=n!n(Da!7~?#q5>leGC@}R=Ql7 z>gg{~KU)G}@=1#GL}yhO01|{{`_f{Cj90%#N}ktPuXK@KOY4I}?Z`hOvfU$LC;|t! zgedsac8@p`rG9~QDD|dDAI!ZKdCozy(EP@dE)Ze@tkMzR80u>DRwAYuYk_P36WE;0 zg)iSzif?%6Ji3Qog0C-^4@=X9o2m3Wuy6gGJ@%@GmL~L_&Z=7nghb9oT3k?wTp+)l zN!71LMhE!u$uJH(5-6h%U4SM#?c)_sX~8}eVJ=3=}7RfFa);&cY7Pz8X0AuSl zwjLL#n~2zm)L62|QknT4)*H@~I`UYDFSi1?qbpX(xH#_a-Gd%TbV!Ka{vGnTZZ&|j zp%I1V?(m|%{EqxZojVV?+lr(e)t(3|u&Z6vS=6>7H4K(T(WrZ;*a(58kbSILMwo%R z?1`pF*BEsUMm(24JH_)zVLP+n)E)d3bXjwZx_@!tRcGPC7s*debyf;km{4(J$+K92 zGu3dUH~vdv99fChsmjJuHmQO+>C`b#X=jTrJ<+P ziGbB9@HfaDJx=Z>L?M%KrWjRkb8uh+OyUw!7F+oBr%5*l`W8TUS2Kk&oC0HY!(mLK zaaKJ62$$vHh4lUF!JNg)azpQ4AAj9jjy*y-#*673ybZ2L06 z4d{pCAIzEIK6Y&9Ew~iZ3zhmz|I>g97r!$7_X9>)nocRnEZw^lX_6Vou8IYX)v>J^ z7=}3;2Lb@}-TswZrd@u|3D9W#7E>~m3(Y=3&Uog<=E=TTL7hKanq|~+iw|zq>P!J= z?)Ff|6~vY%E8RFHQKPa*|pTmzY`ew>Jt&Rfqob{*O|A92D|*~k-)Gk7fI zU4jf1YGR@+0fP*VxtU1LQ3LF_Sm8##G%@;C$VKYr9v0mUd9G&x$ks}xb%Q>om~gEm zxq10RjFH}$QAY&^-rlTGyAi|wwESrNV!ovJhH#5Gu1a)rssAa*x))r4eIya&@1zSAL zcb@&QwKeV2uZldczX_`$Lxg6_OoFnlIv(}dw=C_;lYN|C&umAt*T0TtHYwWBW;rdCH!4%gAGiOaT>R&;E^P}5&N0oXXjcJ3;F9A!r zx?3=1)Hfm2A;EmToAn1k9n(GSa8;J8N{!MLAS2Nab-SMbC))MGWoXDe9~vUwHh3$w za|2@}a4_frII{~PEHylom~Y6fKLO21s^Eu6E(w;jq@mTG_P^R?ma8ie6%&vIWfkf< z>~yH`u?yk25epwX0&+H1z(0Gy5&i0TM7l%@-Ch70$qeDwFjrGpI^*k-@gUP z-@D{64jCRrPIL*3V_pFq{1-S-or?}@n*v&#0N`Q8iG~ya$IWfGJ2(T1_0&ssQ&~|=nQWnnVJ#LAl_1VX_ZI@?^tlZ_V6_sTdwX0 z8%Om14uup)JLE}wN?F*0AT1Gg7M5KHZ|`>`;q9OBsH!;th-GQy{2h2oLeA%)#p+p5 zH`R8n19i51i2A#sdf-i&DzsG2y^1g<6yFf}hu zJ4sz4pYOucfLDzK>8kYZ7>hMDZz_G^4oKc0PV55T((_GzN2A5i=$YQ#xYUa4v$>EV zM<;l%^ujlMDg%?#dnDR3wQdv%ZeR0>0IKH`P>mB&SPjH1Zdb$5C;r8|rhU!Bk|Q^` zTzRhiElq8R+&lm=)?pY$cuXAGM%{1WSbBI=LQdZ3 zfg?I*;Z+46zE>;oo~dnc^H_n_?|OTtw%cBGdr7yK z%jycRL?ov}HYZ(vN4TxoRgF2Y7dL8`zIp*3-(w@f^Sep3GGX#sQIP_iLhoY_#asl9|!dm#K-{#ZYS8H>8xF*3uYIYq@VmT(i?HPx^D z5a5qTgf(k4N)21Y6N(I5#8X4bU&9vh)KKzltST*bmiiEc zy5@T}(O5GG#bThsLUAX6@3}p*r@9ZcaLs=B1PjJ$s^y|9cPgB)Eb6t>W!dRoPo!&+ zbo(OjU^3*F4%f#uxMbYt_OvpnWFIh#Ch$IcXo9sO#}yilex@Do-X;qGqMMht+zulK zI2CAGEdjldMPRSf-{ga`sykiPeBOb~XbrzK?$|7w}j{a zwK44%4JF&di#jo!pf}vI?LL>$_#7*1!`Q{1v;$`=uZAgy zWl|lV$21FF8#!We6(4xVIZ@gg%lj&ZnJbuHlmVGf#`^PX4)R3Fzvt4>zZ8kR&P^M+ z=nNbXV<}{Uo^Ph|L@eCZGxc?c2zWT_8`9QwLW?N8wP)&^@d(a;M(qCHRa|pODtJa; zq@i%5Rj*NAl!t>j(w~y7wZ>yxaxkuX4$4JlVEJx3geYuBYht0X>c^*R7Gw&iW67?D zvKC zD)5rpxrGKsFJW0|0(daHtfE9&`gr8XvQ{L@0uZ_^0)orh#?Nj}L#h2YNLamje-;wnukN=6+?DadmP5h*!}h=77{ZmszS-6_k< zc4zv=D+!m4$}bzPtAdOZG~6-zf?K1UmU}=`YO1@5u@y9IPDi+;1M8I0xEAFuX<@H| zpa^;19j@NZ3BH;`ZrKeWB$!;``P;X$q1gfYsvS0xUA@tEt{c z;EdWY!Bmm~*fL5Fqzy8VMybgd%j9K$Dg)`2hO(B1`B+=Pf^lu>V`f`WWVigtg+8-K zKWrIvLmGvPVeldk9$&!uFYanZV4p#+9d{2vu|SDaLGb4J30y&ifdKojFsm`@~^Y zcT1#XsHv6=j1&iZ4;|mgo7ZB|qRVK!7H+H>T%%iXfj7S_v*#d)IsKcQVGE)i2A$64 z;$_s0M2;gzFgBXIg zqhS%o!ftyNnf0JBTbXzHuyj=4B3xF^U5hXStFPixrw3~p66Kd<_T08T{B5|b<>K+* zAR#7a&uwVfri;h##8TGc{+8=p+VfWRsQCEJ4VQH`{5(E>osqdKg(jGGq(Hn+5uzTO zy~e6LWNc!VU|sDpR<(n@kfAx8LlYxD2D9RnxoWv_CQhJSSXPdTfQ=LNB@K@xa!`y4 zVKa>Uy>YCFTtvKp2+jh_yAFJXD|m_TVp!I}ZgBokd|WF>LIgSDM11}=z-4aF8UV{g zr~-)=L&~ZXZQqVWix(r&_U)N)ot)`Xe7s5X`r00j6mHbLfKlhW%y+)Ib}jO7?_(D1 zN5KXAktcw4N+K73fynKbA#(8-C~$igA}bN8@CXP}m<7+HYN`Lsw^_^$NO|VlNa-4j zl*FI!5}oK+@mW%hNseA8DtI3G*RGWhtGf(^)apX)L`TQBqX&GKn%jT&KalhU<84eP zkXUtsgT&Rxj29&T=M5q`DZY3D>+jzQ7bV3@`IRAHBGE~c7=M{=q;zKjh}g#fVsSbu zSw|`7B|6cu;y=aMKp|^E)pbh+h<|1YI@prSP{>s*Bsr0cgomz1qU}FppR5Er`KnjJ z0nn$#Cl4S2W#{(LS_IzgWau9Tz$43C zhim%Ohv>-~o^SB>1PlNjnFyyleQE;|f%{4G*I;-8sDc21K5;+Z3>2RE+nU3&Ss5+F zX(~I^Sx;@EE37mpB*$~o4X4VjW|&*GD1RrcKgqygnkcc5jVF0n@-?~dPvT53wVb5C<=iz=@pWppP}UV-(= zZ0gE!nHPP+6DCPLmy-oWftSKOIz|HAs-}K8fZ{N>yTjvgtxR!E^@7VKm_NzoFZQe5 z7u}eHp6l8Y%5iPXg(S`HFTB9eJ$bi85rB=`vtZHY_6i8bk|E!M=_H--OI9}!`kG0F z`)=0_V5xu!X}vn>J1YK?ZR5CXEd2FpWv-1UzzI`+Vooqtl@+VX)O*02Fg2{L z!!Hees82PE~X`Op36HMd2wdVAF$*Mat^b)R{UPn!64w@XRHYVO|l~8a%aQc!#r%y zA-YNh-Wm(J&)5hC+*Pw8S2m|7VRPyZjSQ!^_GX7G(^|jJ7PSrE2;T@C8~zKOU~L_B zX=ul0oKLxo7gy!I#haby2cZsmZfIy@+IQS-_-=r5P=@cOa`i`KK&lUQs?hL$3CvYU zTdwMm1_Lb5|E#tjJq(If7wG4XD57rn>;xBrb~>Fzz3zX?cIRx%%Q#o?G+aAtJ(yi{ z5Y2K0Mu+ET0dVkY$Q8(G{d9nPCk%wJ=~_DByfnoP2#<5sAAlvEL1qHgqI3sF$o&TG zSgK6vSfHBy3ywRC{zkG)oeX#5+^u_4-DT+DqZ4NiVq!bx|4KHfUHV5(N}-spTL$BW zSyt~kK?7(F4zv+m8oDqEM6L07W_W%k%qwcMh}QQv_)p5;0ujkwC*po!&1Zx;|8490 z;ddSLL0sCsL`5@8(?UaWs5`SXGn5VUkuyuPLLQjB%z@?Z*~!C;Pjh!5U9-;1A_*$nYtI7NOfFQWzoGGiV( zqVKfJFQv-u9wwx4yWR5>`(&csvw{Z>_*3UqYL2b~!-oQwfmm}=AXbOC!`?$?g*$qp zq&GW11AuP4lc9H!lBS|vB#Gn(+GP*zS~(o9m$3t0iQ=Kk&C21jysR9uRUdjToJW{6 z&?%uJooaSENX?;4$fb?iZAerTrQ6Jfe7Zs{L^myIDTf==aEg?=w+V@K8F;(uH}HhU znV|Vd4O1I2%tH@B(CW+tXs;h>Y}n#iJ)x7#;oylY6pej0FFrX7qD!`RiZn-F_|Yv} zdo|v27Cfh;qB;<{3Pp1gt!jX0CCW>xh$rg0A^>1#$_R}xFUw=5HOREIWpIjMZtq&8 zaF966PMaATV^?sKuArwQsr2=dLr{!*Om=OBnn~!_{tGJ1Nzg~nOO)(%&%k~tV5fLO z*P6?LStudFr~U(`PB%V!p&oH*GUD>virQc(uFczxT0!*q6Ydac{7x8Rr7unN#e1R{ zC)KW=gDKKa`W53>;zuy(m~b|sC)I=O!U z_1<0ODI~>$T6ynlR1cmc>G|?JO%Wo6Fm$rEDHiO+5D1q@_bA_8v!LWdyZ%p&bnb3mprOd-H zftd;{Nu~b3X!({r69{WWf|QN?5s@7mWV{GlZ?CuR%`{%zWjymXXmRVOnS)+)77{3p z0~eTOgIZxwj~PnAwPFPOU)H>ia2-&Z3x{%Qz7PbLE7+@08zcTsNL8E)%2^#v;VbI1$-v5x_F z>3}K1kU)oMCnV0`O|WB+$H{?#B(`%yUhRga4pNe@eDz-+qGEu{iUSaebkAD;EN(*q z7%ZSWKgn-JxPLgpZ@oPTu@V&0yZlTx@#cN5=u`;3(H4jbyB%TB>^XD5JatEh{6Cbv z3w%_?`96M@-2(v#bB{di7GZN`+D|0n36~1?vTit*EpeT&l4ki9*TmdEPl^H$m+8|4%-jvvYZ8=AD^$ z-kEvlop(^X<(P`R2!vrNjf*6_OU<1@^~V?rH0-&blH9xg311hFT-qt>u6qMswr)4G zu0q1-Yo0XVwZc7qO!tAcA7kFp5BDMJ8i~TZ$woVZ*aH%q$KHmxRL8E!EbMGt(Fv{4 zCuSL6AWZ96Fk6jUwVsIH_ytxJupgM55nqv6``JmzM5kHEGz6EK=(4J6J?}jVcn!c2 zAS;3lE#BIJb(<3mVgi9E=3a0lY`S=yhs_p8Ct8ylEH0UN>^6Vh$V^QAGA-ym5vo8g z%bOw<_=`0R9LB1O7T zhRe#cQtg6>FW$MRwI9mt*yXg|%>3|d&II^z!(UD`-qKIqpzh=YIPjd?S-7KdNE~HC zLbMP(U+AS34adlXg**In+Z%`6jd%~C%rrs~>?}K5?vum^aop4L0G!RyAIw7gp3&9` zp|!;AYL3>Xg9rm71EaWo4~RlqS24r7iV3WK0|A0fG;GTKx{6tJS1}R9(9sL3DJ@X% zVz@~-IX;TaiFa<=179KR>b}pq;gpHpj{{G5P&poiVr}3zNsOkkrx!Om)lvvHY|P)a zq5J0JTsd)(0vh`OX}i_e6h^HBIFVZp6{FHUAq$fAn^7WP=W6Cgf6~wCljVs?r!-eH zPst{6aJn&cO6$qurf`c6)}x#BW=hMFBqy=Q7q#}1LrXaePZLFWgi9^Mfm?Wh>$#pD z-}%(x?bgocU?Ztk!3vjDi5o|u_}ZgK&}`Zajo6ZK$4I9i6DkNC6RIBRJpHddDpzZA zIcw1mvSI-4pOL}T9(^BUHaub-b1Y1Q6d)THL`vW}f5+!9u}5}Z6b;d;0Mj_>2oue1YqXP8_^A5M9ppTyTAEQ@~fJ8j79Bio`FEDtZHRrPw0(1 zcu9?Lr6?<55)$~rMc9Yl!!q|DsI7{2koGi+c*vVX=!>}nj%&^E&FYK+fP4Nkbl&xt z=hZLqMvyZ3sb^R(uKkaU1;}}$@%c?UKdWIY3iJqjH5Ndw$A^bj{)@q=&ZlTWmuWR{ z(U|VUhc=b1>Jo zuyZhlwy?P|v$n8vFqOBk(Xsw$VUuHh(82~+OCj-*K2C{E)O)C;ZhAcHq#%vb06GYq z0DVM7tM5Fx5mpk04K+eBxpe}O@>7UW`*uS`=*f564SO{D8p2J^l4?7UMWPqp`@LaL zoj%D3<=S=3XP&%ltX^OuO#WI0Ds-JrbUzZ=f7tp*!=B8nmg~@!sn8h+wVRQRj<}u? zQu3Lp2-<~H7a#)Wy1A)|e$S5GvEQ(7B*fjRq!R!k&7f;(#!6uRn=5SeYxrBubOyQZ z#?a@_B!=T&Cc2Lr#?td7<4W}tP`YHK7C#DtX==yk>|Gp%yl9?<0`=Ao4!B6x+C_$@ zU0m*Jm$>n7<_I_)9BWCCoZEOlwr)c~~6;EC42Tg-i9H?VbY2Mfa@OO1B$hF>E5S zR$p=xUSf$>YPGiP$knc{<Th?{QnT%x zM)7PFPq#9~CXhrmY>y5&uLl(4JPhz05yv-}c(=srJJ4yzWoe0tf;rLQi=24e4e?}w zEv6YkA4H1o_M6S-Gue!8Nml(R6yoOTK3e0lmJAg{4`FxU78IMP`&};h*7ZiR?nrta zqSlsoOB9H~ZUCcX9<1Am9?*$EC~$d+P>2R20aEau)+`O-6a|F#&ko(CA2&Y3;@tRSr`nb_)OQ8n?Lk~VAg4urN4 zLTb!Rwj;!GthL^tolyJ-Qb#QUN7en{aJ4NxBF~jgWn_1Q>XX7CfSZRrWig+jzHz zVu5=9=qh%1<9%X4MPKopASQa$C+~Pn$WNYCWd9z?)hjTxB~|O*YTT#o!ur1)5W0s- zc3G=wb|1Te?TJ4bCHZWP*eM?4oP9CwYih=cU5dU#c^k?DIC3)*uc=g1-{y3L#98*!+n+P+c_`V<;x*vdJ&KlXDn(+aoC{%~T15b-5>7!Y8c&&N8ss<1EYqib-8rbbzyTJk~uXlT3v%DVrgGMvj`9 zaF|P?+UB4ZkDIU`pg7?KsJ*BL~o_IwjTWls^}#B3K9t91FHV9*VRLs%DKyAMMD7If{BGo)k5p_#S~z~M34{TH~GxqnwNGf@WU)D@WVVw63maO|-w=*4e>5~nS2j8GrFq8oyB+qDcFGo=(p*d)+q ztr316!zZAg@(JA%%D}Er9^g6e$Dr1-g8)P8cmx_bshLjH1!$pePHVOk6mp6Aae0yQ zm+{T)O+Zj;3Ki$CreVn(9vt61i4KJ8RVhI2YL?4S=-kjDUcHt#fOg!EE$9SXdkN*+ zkE0ZOGd@7|XFGxFb&tG=+buf0Rfpe>@J-wIkPbL{u%O=bH~3^xR&C>)6nE;?Ce#y0 zOS5dg9~sKit*PG^q6t)cM1GzT8j@ZCpUT1>{_{S=jv_BHpSO%n_59oGaF+ZKgX{;9 zwYr|6nRo>IB%6e)zDSj{U#H+=P`!ZEct#NQyE;{PyKv8FqOkgr9k`9;c9if+2M| ziUK$r0^0>)?(I;Xn}KpGb=4-K*iB9Fmk1}qv~e#y$x$9R%XKZ32}@JwLoT<8Eh@PU zuz$EVfon86r;kt;RK1|fk6NJI>Ogs3blXE1pi=Y zhMEOv;s2hr7B3qeK@@9JA_DLgc*c+WBOHEET{$kQQ-#}_-$PiTY*8UbxgIH;;5A)5mC4(99ZL;f)=X1N&c;(*OFS&VJY>If=`O+6L*Q2M6N|@DbSF?+F@2i5(k6bO@Ny)6VZWCc;uUIrYC#Ei{{=>i|UMP%?caoKD9}j|s z(=z3q>tcr%pSwSGt_q#!KyC75)T8ZV=;s5hud`@E~w7z*SPDdQC zssrWHHEs=Ggg6@=;WU1OoijGHA?q|6X^{MFhIDe#3p^d6ic^l!t>PJL`^J#*!r zwqynh?7!tn?9P3ZcDF+f?Lw>JNfCD+agEGab&Ij_7V;GFjL?_WAack<&d~vQ>jEV# z`un)JGcg;M5l%gX#hNpP&SE+PYvmrU&)P4kpSxo8Is?}CSznl9=WtzT)cB3(4kN4uT{WuX?Gvq1Wz|02s0&(JrMUn>?Mj%;+(wsl!L4*j>o1^78h##K(&m@YCCxpX zE@|nr=#oaBN|&_n1iGYY3+R$o&815kG!rgvKXC8>InK?ooOM5je%1N{knJD%k+)8r zPCIg%(>X6P+Ucx}M@kV4?8s0wxGC*jLnQc-Xy_^R4B#7c zE_dq}z{FfFnxq))hJnXBIUnHDmmj~Omc513k-1ve^my^DI}v|rItNpylf0l@dpTG~ z_vk*178ooteQNqK(Ne0wNc3<<13hR83VOLrjdxhm=)M0JKwKseT1(T--A|xg7V*yO zUxP>^ArLQo9U_f~K-^1+UN$CHjfYgAmo5V3^fT0@#6v?M;Op@Z?U4A_E?_ET(*vj< zmrRp&8OMhJ7KY0FI)pSxKjzkpb^YYeC}pmvxGY%6XAmI<;KDMom}@_Qg#`k7<5SZk z{(x?8!J()Ks6I3-orznPTKFb1S&-`S8Z6<3FdiC)2Obyvvp+Z!Av~HnPW+uLCY=K; z4+0S?@1}AvdzO)+%c3G7&Y_0-m~_`Ik9=Z5<<=BL8zF9jS~luY^gL8R4a02*sXLl$ z!)t)J0c8_{)h#L#F!=}x_zZO$v-u{VQOp(C%mt7)nd(iQv&W~6n-1U+4_^TH#fCS( zk6%o(OJu&qlZK1?tmC1R_xSvP7_8L_Y;=Hj^onH*L_BLRlD2*5_qVm2br_joNn%B_ z7i}GBZu*KdHBMas(G|MH8gD!q2Ju!{n{^?;ARt^u2VB;fNdxi}47i55Ta zRlzYM{7~o`w7WZ;EVkkResZ)+nIzO}1p=X8kN-9a{c4POcGV1_W+=@{CJznk&!O! zki$HkgHV>sIwc3e6s^~wb4Zh4Paxzl{2OwRnhY}3%>R|cAl72n_T$$=Dm&OvzW-GV zX@{R62amM5m7>~5pO%k~$nx+_{HUw{gfa|!9M?Bh+C7Wz3hn-sFePwnAuhG&^qtza z&J4Lw9^VG-Nqx1JK|83(yA4XH5HLrk$o>hz&;W|(bHmhj81BFNw*)I8w_T2XM0N|M z^H88^p=@6CRlNPpO)$)XFivF4zva368mmUbNC(0foScWPk9{si76cwf%}_`#2(RX1 z&uq_Sa4v$$Uu#A}a>39DL-Rlf!uCdBp@mTO!%?uraJ*vz`yZKN$k3<}`p!1gmsmpE z3z^GM)(<|7f(4_vfonO`t~vT=Ea7q z(lZIdvy*IsoRR{84Q*G9$@H~BeyOWy)wKZ7DdwsJY*7{;(X;d}p?xn)=5GBez;xdw zNY~Y*k7R}-);p3(mUiD`F!lT%she3zIht)|CFO9onU$2|+3vd%?+8d;Gf}VToR^_T z_J1C^>!bDkBAI}eSu^XzBXU-1W}+$SM)w!i{2Y$ z{?e4ITO~!g=l_TnzygN-FVw(ZkEH7SKhpli$MF9IEyzfybPLhPVjE6HP?b8=D8k^Z z_!dWSvSmB^IS-an5i&gIlsi$m0W)h ztveXrj?XLAaLL%EYU1oo<|ow#>E*Mp;hS{DAf!QedljQJo9=7+0^)oA_&UL zkOUa$X8!raRU4%LnorQ{ZXDgm8|$vnTUC7{k!pRAc31yne=}(uM5@QEW+5`TjNT}K zgfn;UFt|JdOsgWN2a0;V3A8kGKPYH1?y{&CH^cQiTq5#1W&uQq=icNP_J{)LBvjk? zqGq8gd9p*z-2idm#`pFb_K#3|Ou7`Is$%rA4tPFaLAB1>0qySxkJLy)hy&>>!xra%|D|KK?dQ+|nOXnN6brm3q%Pa0OWXv+w-F z6^Mr{QSec1kR<=F5vUbL_RA3F2xRZ6i|!N)E>*{BVD@PlE)Bv1StEK?!laix+&fV} zNwg(B>v;G)xM&5*Q7hy&#~H(cO>F4dqo(df(tGz2V$fJ))!g`jif=dE-5 zxF`EK_Gry(Ii2kYi-Gu2R2&?`n5%g>k8Cm{5n z5{goCjpfBi{m>Odz0?R9EpT~&;~JW&-y7zYosZC8d#QVQIARr|am?}Hn7SqnXWe(b7Yi)v6cpIu#;UV>z-9@)fX(sp zMaV#bwTx969;~b;ydpB^&K+(n$L;Y2^)cHId(P#56^Ci8+%Ap`WBE35^fy+% znA})Z9hxpHXi!8^5wAiT@{!f_5JR2tG6>{M55iskVt-Fqtl>wzglKHNxVgo;e1Vri zQ4wHXdo2f&xh>xWfg)ae4Lh?9gs7H0q#P{e(%A?QviS*t=4znh#qVxK{6crT0b!>U z4lJ>X{=ybiZ{74Y2xMMVgpUhxAs{wkvVep)$Eq&@F*--{toqa7-~*M}O-@k}IOcR< zVY0eUOu%-UGI^+|9s;vHHeR+e)o*7r{+(2O(|rpTU_XOazkq0F%GL-OJ@j6G12@l} zJ{It-G~gwbcCcS2+r0&2RTr1a?xBZ7q9S`_7cXRY)v?)y&_*sGvMVZ*>@NLZ*-15w z)@)*D{qO7u1?)^@2YY$A>SonFi)Awfiku~mH*0xo%@bw4JBbvwatKyQI3)3Lb;Tc_ zoGUpp{Tk78WU7Z+>v)-!DY5tFY1svJ*PLFCBcMr)<*^QRsO1QXmn&88fugpzrCOaZ z2!{1CfFJkdtq{m^?>!OsE`@V_B6l%)-C|Mew5D}Ne;D~)GA6#&=`><}HlX{AWUag7yuiHa$|48RI>1rI>U zZ+lyHbFeC+Bv%gdc>3O>2JwoCP$BYnT{JOX0ih=~EjoSCQ1a}qi}LWo4f*h@anw&= zk)5b0ko8E#l#5YDav)4Qel_}NS7Sv1ihaY+Vsij!?7J0TNqz$yF79|4MF8=-jgnFGt(45>wFu zQ9N{SMrUC)5WND^X*BGiGftf)=$w#lwS6ElqAN?oiabuNsF)9R-S;yc!#+z? zV#>D|Q?FwJI;IjowH4#I&_q&crUl56^ni3+AR~AMTkoQHAKI~4Y5FU&lm5aAxusGO z!1b0MVVzw|0=)fkF3LeanOKW7_TjaQGt{?qP;Y1pfl_o|qe`h`v8G^UCi-OcUX;qe z#A>A-aP3dI+Tofnu^3+Z)#24tv(;e-Q*fMV0|J+USpFrbFN*pw)X--1Dl$MLI&=&} zU4liOwNI!rQ8A6aW})AT(nQ6jI>qH027HtWZ)9NeJkof@t%=olz$ajTBwIh={rf5cZOX@!e_90jER?TwjD^RmheJkB^Zd|*9TxpDD17pqAp z9__jU$Hk0-K_mV&juap4RMK}|3~KBX2b6WsOt-T71qRvw)zn_Y#aFXgXW&Loqqr#Q zo7yz8kFzY}G+Zf~S-=)e&W1zKpGnSQBxYvoA8FY55Tbz_zJlb;oGwA@n9w{O3d#tC z*I>~1NK^mf4&;}DFvEM&Xpy}<%C;LnuTMtfygr$}M@c#w0FO@qa{(cp91Fs*Mxiec z+%FaFL;>mgluh zPWumNX@&z@ zFrF5#naFvd?EQE}W_<4ZJ3sN$*b#WCpN7Ep#w+runShaQ)xXI^Wd|3v&W~qJL#F;Y z2YZ|o(^}q&_7j$5hUTm06OMM_p4Z|l!0r5Hdv?Ou-u`e{Jc=r&BNF9fgd3Gl%D5Qr=&b%u|Hm(F}^&*SDxuB&-R&Y^JAc3=inOvwxq(L`rjR1GQMhaCZha@*u~Pv#h`e1@xKjz?rEB&ew*E^OYIi4|O{kErSa&mCqar z+fL!$(6()ibqeEvA_i`Ux%tM2unm1x88D%4;3ECZ46$Mgq_&f>hWe|C@B9}>=;(db z{MLWF)M@md)Q6_J;q5ABa&>JIfm0Z`0)bw;#WHP&=@ud^8RR-D(_X`X%Na0{i>XZe zcMPatzzD9WGVKHdPG>+r`+d46z-|BMIhaW;psR$%~dElii5z-mpiFSYD`~DtjAw56r?|{|^9A=fj)KhnYvTRA_)Y1>UY_ z$;s3sjGjp7FNo8f@YHE(73Yr{Ym^cTI>+Q-2)> z5z%YBva^G(akz!3w$e2LiwP%4_UE&1hv4sP6n2Ay=9pz)LX3X*CW?Az-+#MGPmK;O zJuO;LIwjgGnMH%%JRE^xf#fuJ{P1MaQy7|$o5#=$rRRidwHL+4XO4+ijk~0>T7AO% ze7r8AuBnxEY#?0k1UZtqQFsGLt8IMQao=NyIO?A?~5%0(2ogs7-%NmS? z+!A45bg-~IaBM!uU1_=Ar230tLfxB$K5bI1@iUHW4Ev3spnE#S_{mE)x%OBTB{ z8#^)XknuXLy>YJ~3{89tmt#1wL$-@Gdq0!}<;uX1*O7^$-z5TFU#-e9SAaS)bqz^2 z$(-ZWmK<5QZR6@3j0eaGkagqgJh&IVJ~F;qD7}_apZIDHn8w>wI47m8`Y+yV0=gAg>ze>lG`~K^b3%Vjt*iUwh5VmRs!PiC$;t#ij4jUoQZb z+6R806aX11@l$(#F0wR8rEq}TQ!15eR_gqxNUooFcs7nv@?Sx~o4B#;y`vs>eMxpM zMY(N)j+Wj`sV-oQi#4(%x`9&q3)tU@B{G@}jVuEtr!^SBiH3*@!&gvYnA`5(9K3ZX zbQr3|Ath;z-<%RN`N$MSw&qeDnHSE=6zyQs#Y0(2b zxYJj!%uT}=K#6I4?Ux+xmQ#x^sVN-*BeCZslhyVG1A)z2g>`5piqzgM^fJPp4eC+_ zGP}j{oZu{YeK8AFFEPIlaI1bia!Z&oxcQebf8e^Bf-B%!PuWLNtE>rHn4nv(=b(^; zDLDcN6js9@EHH7n30I9S`?e*ZCO#t5iZK0%%mWAt&Vtu!_yxYS;LurVGr)chMO3NZ zFXq%^)vrbnwCWiX!_`klURZhYsWI%sk4!h$!W+Axc|Csmn;Y@{je(0JvANB3ckJkI zG6qG*W=gi|`{3~<=I02EomzCLT78aeaV>D};4))+U~L=1mka|PWQO-P6|<h*h{kF{7abgK`>}VcV*#i4|O;pyk?Ku%ur!v+|}|lTxc?R8l)qZ zZoXbW~m5T%|@33R}V`PNtwigyzc7CsKTk zC5@g|LTLUz5<>w&PGrF<*u`M&n<={BVz(ROD>5=86V;VK7z}>nt4KhY4R$tTbi#-e6#9yWiVhWZSuMr%MJ|Mc#1<~ARtt~|UIqxP z`2qo~u31u+5u50gt{IEo!CgKqgR%DlfZJQ7%}8cfU@aZ8#E_nAX+To73>}@GP^+qY zR>*SdP+@fkHZ7>s57L#2+=SW*M)Ru_-?YJ&L5j;MB z>vf}R>W_!yfJKM8ek-Z7e zOzg7&ugzCXQ0+j#1r?Ik;kT-JgMp?%Z%aWhQ=8M!YdH=C+Ws*RRE10+=u~(K^bPO3 zx~1V*(P=1dR~sDzH4ylN_?kCKjufSDmOPv!` zA&NjF-}S_5m~lQ6);R`+W{c(wZu$;;(5;|-5z{?`azjPxON4seBF_j93SFpEELHz{ zz)LaLOJO@i_hp^v;fLb51vBBqbTKvwT0N6WcV#NwE=JsmbkLh3^+a>+ng=^^qm&Ro zAubctO^AjF5oS@pHw=ry*7c_%{J@h?UCPB03x5goJlOHOWP4t{e2zTsgd!hn_xY++zC!+e1zmhG{7q>5je2@9uRj*Sc| zdDUuo6j-bqgO6;N8+KduP4GBho)Q^`u6rFhSoab->UY|GJNF2b^W}JKb+=HF`^#}X zBMNa9`tTs@0VJ8wJqDNZi{5m;oE*uMquY)H&c4Euw%AExuShc8z&#ejCztGu^-G7# zB*SMjpn8N>^H~klpGr4Z(V?#5(|~5R8i`TXF=j2R+wf*A$0sdHW+W}^GHB0@8RXRP zpPK3Q>8tSHz{z!IfeE1h;#q_*$ztoGj+G(5>goh5czmH~iDMS@_$o9@$wB?$pmq$5 zz=|iCB2V_hu;NMgH1LYZ$TSC5-@!gWGajtf2B1OQI;RYHk}_(8{MuM!T6Le0IeiF* z=mdpStomIH8H9W=CxY*@$$G^ip#t^6wJsCRQg3PJw^QnXEl8wU{%)XW)!mo!|C@ft zf!}5NxC|(f#DAMa;uZnABM*N5DGR)sWrr?PH%d9t!L>nB;*4`GyoBWlrJfe5QWxr2 z+zn^!X^Zo%wHE6d>_Xfvzes8aA@&ZaOIvdizPIWFT#6%8Nt@^6_@sT!EYiIN3N z|9}O89GM>F@Sw4K-kpec^TvtSddLH~;MyfwPa?AE0$Y3Il7H*iN;R4#yo5MizlB!a z?^2#0Sk5ot(M9|SE~}1gS^GJB!xwA!<8-gk?q})7i;KkZ1-h@-?vLoM)b4-MJx9CQ zERl1znj`Op9&&P8y2mW%c7VCPrfEudSJ>??hNF%yF}%=Nb@q>rcC~Okt2qnMe-LNefBG4;{wOsG)ozE@@kKJ2dFTOAN8g{c6JO0_)& zJ`5}bxAM6iR=+_CkM-1V1g*P+%BuelJoZVGa*WV2dkR29*MoHPnaL}E{kvf=VwpDd zCT~CvdLk}n(;@6a^)7T4FiUlR?0!JVw%NVv9A*JtX4qE|j~ng#8G53|{MZ!ibY-Pd zT%%KvVAN*_J*JGwD1+pn{&tU7#`Q$=Mw^7GHg-!PugqtM%8`PEqMl5pxKgJeYfy2W zV)4U2g-+MEq25{=Iw`a)l&6+^;OM~n02vyiK88rck(tnl4z|C)^?e#?_$}j3RrdpY z6Nw?d6%&Pf*LG2B4&LC!4!Ps6&gNc=-pp|}FKe7j!=R(bLi4btnA1}PC&UL&n^?!@ zBpS5inZp;U#g69}kTJu0qqC(K-U`6e8q%)SmsP21B2y}pg%Qnhwq!bq{`ShZJ~2YQ z5NiS*%n)O(x*O3ERN(=wS%E8H)I zoAwLu?!`iH?K?mlg9DEm+m>Bb#PFz6KsbF-~dF;P7Ux)>j0L2z-C zm*06PD0E|JhH6FGQbUia)N|a~1>j=#E-dO)`-ND=m(kl!?}zl>NN)x{>P>i2tvw)O zyM~-W(sVq2OsG!UEmRUn4zD8A3GPSUMijT*0>~9+aWKz_BRgRVuLDl9+uuT&GS(zp zbU{D42-ryGchV&p*1@Gy0n)(!(AyPy%L?SlWdp~ZTJ{y*2-bc=r#F-8TEtLLfsS7B zzJ5s9HS`_H=OGB5!P(PsJ)RKAw4T}BaR4tcmStl}mkFW1{uPPWF7RwT{;iFxW{QpH z#yNYi>!zLH#yRg}^HzB5qX=xr<>orRM7tS%EGM%ngu+6EKq~}2SF3mlqgedW^epJF*>g&vU{+Qo5Vo8ormp{Y2(R{DJZ`YY;ezKhxDvx z!RM`R8fsC*aT@a-w2?jHMC`_``1A< z8XFr^e=~or7E@+#bN$mVbQu?idh1=Boyq)XFd?W^i{OQQ(DFOZ+I4s$C{Nz%!tw;}c6A~~{LbqSf+awp>kn_#@2#5Q zmhQN8f)V9VMQ%lQzc3D3;qJ3jkl^b6CJ7|065iWQPB22UK}k*_0)>L=QY zx{S(WVzUsNW;xVHz||(y5^ZLn1uDakJ<^Y6e$+SvYkC!XmnW*}Bj9K1Y7 zj&;hDF?y+X4Qk?&Z!B``7|+mSJo%mYNR30O6yqfOI-m8nmu~+D_XmS8B<=z?nOR}y z4#O?sexYoHEJp|!2C;IKDTsu6X>zRuF07HN!X7-`XWA-NEL*LwM|dp9^`kd3)D^cM z#lugo<@h7J%QD{kYWJ0#0w|(E>o)}hcyt-Eq5`zyfhVCx6Iff15cUV0FT;s?cEK6Q z*Q^sY%MQPnFzc~0f-(xG?w7?CL4OtPE`nrxZ9PC2ZdrY405>R%523-?MBs%9-l$mk z7v8fj+>DqAW0<(SqU7-61WwM(@Jk7^@&sK_!n`!)nwN52lXBgea@_-04a6G>b17Vc zy7^!#_WqRXrzzJRDOWV*dJHa|c6rKGyl%*Be5<(hTkZQ}|fZv$eqKe}<$^ z=|}WBdcAA2E`91X4A0lro{m`4|iF2QVUw>cq7{YVEl2xD$`(P0@f*4uUoOX zkbBp=aqpT}pRK!3Ml__|nPd}i%3`fjWl>1e>4W_&grO8ngEV9X4;CtTw268c-TnK4 zYycGj7X0bBshw9TcxIB+rxOIEZF zhNk4B4SU^E$Ll8c=?2Gy=9Y?Zwkg8-BLl`&%|Y*_yY3NG0;Y3xCWV1Dtsq~tZZBii zZTLCbwLIcB{x-nqzFM;@1yikIF48bu&DHyjB{SS{gseG^0;sj?WCQT8aiokccVxYf z5bMceQlmb?!Dzrq`VAO++K*`o(p2lotXl!%HcT`xVcrNY`?#yPce9%hH>g~x&jRA=Y?_eQ>~U_RHccql@A7VBm8>MSh`eDJV^zL9+_6%Dvw_a z&xOs96x(27+70WfGjlrNG};`*u(Tf}O z!UXC*U}B#^uN57f9Xd7OXeP*A?Zq1fa7qY7R}KLEHfy#~;M$ zpN;(KKC`(ClMW3)5{_d0%SwcUa>a5thIHH`X65(DPcbrOvNUR^8Y@p1g(xp%)pN#* zF+%@dezgV0%0Y6H=7p>p`i7DLtO$| z7!f3eVzH!%^@Ey*$ZMIN7iWeHl&^gk46Hx66RjV*#mJOIyn>lP^zmuLGK@z^H9ud1%cRwj6dQ zUe0DJV>6Yn8SqdrXSpsZz}1ll{yeU>mJBY*lGSN{r?g2jwC-*_Bug6zDW_!50@~FeZw2 zqs|#kv%5yO%}gG24*M1^}Gcw}@v6JbD{vN?z%0 zm(&kooM7Vl1WxBV0ILw`^1vF-F_Qbo7y&j+~9mU0hf;S@6qpWgN%%#GGA zuhbB(y`WBnC-ZiK++Uhj1I6v=ZS=JzH&DHPj;+*~fsBa`2$9_{d1^`p-5o=zDUwPP zc$cn43jZO;;xD{IR|o5LVD90YW-6dA;tEA`(Ue`0;kQwCeYX zN188ME+<PT7`#y|WqnSaRSEOQk>&n8xb5KXAm?^1P#p8}6j$}3TSnLC6TI4^T6p1LXr z6;0q>wig8%JsKhAhp0;^>fc4XC8lYn&$}&v?M(dDa|*Y0w2|PWr=PcTU*nvE-Q^dM zOt*bqb^$v+`YEw4n3y*uQ4v?=J)2zy_6j_m?Qe{=chA&a-zWTK2eA{!j&|XzA{lAJ zprK?$rUCQ}sgH=cog`J%%RB@!be7lr2*uWpf8`ZjbB>g(=+p;_Gxa@$zDOz-tcJ$t zVE@1070Y1D;)-F|uI?Doj0gph`L%%09+Ysm;uwO|z+*qBd%#{A`=Qw<^k9zb+- z(e9MH|4ipF2vNYkmQL1Hsg02@Rs^>GwaJmwC0TrWavXz$lZ^OQ&WRbCWo(p-Mmhk` zP-c;KV3Zmy=mceTir1h6O?*DG3vqr7W&x0dIjhyytw}r){6V>H9wS zDa(L7J6WicQ%Stj@9&Y9yfn#p5siEC-SS5@otF<*#if;`in7|^#(Pd?Vdfgv4(CPv z+oF?pmv!zgJM!Lv_p`1BO1mM6$NQ1QtA!});X%4kx#(A^Kb4lqFrfQ<5D~f%beOgJ zAMkqpU^To;UoeP{gWT#B@yykpjpEUrp9k%%hNlov8`OjTYQt*!Dg51c1C&1SFJW?) z(ynOAb-YPX<{L>NGpD#7Or=PVepZCllih%4yQZc{vaxWcyX>;z7=E8uw!vZ^EzoC68>UW`L#4`zXvW83gD4J=n; zW48z4%$?ydivJbDH?#MwyQsyabt%Nw{oXFUg2fN>k$X<8N~3N97jml9yKAbn2juh2 z8b6Za`&cDmx%S;2_{6W=Q#evEsDiH7=R5=5<}ZT{fcGP((bT}4BaL%*;SjiS&Rg+0 zdm88Lz}d#aR>}v>_PG$(u~Tt9i$9HJuVL@9T*#B%Yn*IGy_!uv75{+CyEWfh5AkVo-WyB2BtqWwkCv0va& zTV2hKQq5D4Pr_s_>c4t+7E2t5nscBIHeSz4k^UI4sp*NknGYq}C+i+hkMUfskme8L z`3dU24UA0D3S%T#PXT-y`aS~5r>B0dzV%mVN;l1L*M!0Xd&N%m$q|4PBy+)XsTPYy zXOei-QdrM(f+7!z{#_O0(I`|4>Wjj2V&AC^k`1+^NUQGKNTwNSGpCD=NvtMEbYoym z03)NB6Gx9wPRDvd!?kuIbr6v*A`m+V8j>5QiKui^O5yMWtWvd(A+-(h?63H#Qb!(b z)x8A2I`5wzvaA&oZHp*27R+dNnzE{Cnh!)Hhh<|9*BOMqhiClU}16dg+9EhEv< zwCXdY8thHZJ62sMnnhPrYkMmAT?NJr>yE#|hts|b0g5YTUzJ@M%omCaOjzmFf-H zRAlATYjoWdZneHdK50Ev$xmnI96rse+l|=T!!O{wWC4mn0ZvflV9_xN(-VlHOw%j# zBM^0^S_MgyE=6e z9-rTHNmCOXts{KLMAVKYAQwSyf%9vECkbe8pD>`B;27;4FW%Z9tH*k-fb7Y0>(G0y z_8BYPP`X3sstHgYfZ$|8s8Ws6&KwNX9C1cxs-JqjQ+xxk@OA5`*vXn_z63oIEJyxn zdGltp&qcA%2#9O4F8#_%SIeOefETx^fw)Q8u$xvJ19-)|EC(;j&&@2{5ucM?xJ@75 zUwlcm7FEukKvtfU8Jmfx=gyADGM!I-JdszuoWuRXqnuBB*+tXwa1dS=hoOb$4*>ZeB-Xn2-t}yG03g~ zE~+67$uk%P-^1Yl{0+xbg8}CRxi&y|Z^(tuUjMgW!}@M-dmVw!Lt5yKh8Nq0ea7h% zjZim@^fQRmv%B^gc5O4vBlfm?k>?LZiVZ&nmL9p88}1VyDa?$S8=g-2dc*gJl&=?j znZVC$YjZ;qDRfgkGYzdvVZ0Hlh@pP=3e*p$ zGa){6oydgILmgCAtuABGmP}bLZME;;^qOIJ5P68k4S8Wx87Q`yGs+}RFR=Rs>gDu` z3w9t=TqzS!h{z3f1vX#ZK|?7}lFsSD(~XcB3fbFJc~@MEDn&NDjc|}rw}{Dz0826j z^l$A4jZj}ab^^T`tQ`g+4n6z52cI(RZ=HkZ?{e|xG*>~eJ#-~ABwF@kXh!?*3>~C` zZ23oaegcZ)u0RK$rJmR=O2pkWvUNuDR8A_RU#2n&se`)cTYj|x*XAxcmqmvpg>I@3 zt^ozH@7;a{T?`X4W#A8`j|?W zYg{vwjW}KDL<-lzYPQC;d+pp5)#~(Aiq}&qu28vxhzMGvw;s1J`{%$$bzbe2_pX=P z{uLwM{w5^t|1i2Wm2OWe9aooX4btfr2*fT%KYxGyJ7|Pch8dwk`_}*nT@Fq8I;3_- zJq6^cQ7_F2J52LbHEShIWG?_PzsyrJ5hN3swCOR*>f5jK;IEnh_!~ph)L;+38u#C( zt{pK3TfO_BO^ET48UB=}Qzg9gWZC;l^r;21_nnR@kN)_~%#y&`8v%f|(#!zdKc#y( z%#6YP8r=gVw{`Au&lYtLs=%|QEou#1+D@5 zs2(=ZPr9z6L!n;km&gJ#;F$>HflrsoIwbMBENf6+Qp~Kw?>a%L8tlfHgakW-%_jzR zWf9H^N_`n!0Wbe_23=VMYGx)2TfdED=7X38Tkd9H1fQ1s@R`xF8ecq-i!c9lJx#c5 zKa^x})8+`eP3?M0Zk=K&)XbWen9MbDIu0p(OQt}?*|G|Lo$C^~5@sA*B!NmR+=@mVA*C&(|XgyVRO4*Vrd0&(4t%ytg>8jIOx z<&DJ*g+UK|cb@`|=C+dkQ(P$f9UeJMo~gT~nMjmu#rel^)9&k*wvlNUBW)tE@lm8= zD?suGS5KNrm>(dFCe1Lcx8RVAB#8|>8B8xxR6~jGKWC1euFIf?n9;Es2UVfZ$l&*P^B}A_$5mN_2h^JR{E}>!JWGjw3 zagRzGFE#^>M{tt*yZB8vQ<~IakIWrRM2Y(qm&=jfonVBe#b6bNq%(gU^I&(rZ<3{O zn?|*<)R_20YR&(c0c#OddUrz80Y}7Fr z$G4|Ekj{SqPwnA5k)?ZA`7k9#k@1rrLxgolE52BC-ijZ-Jb`m$u85u1qOCPYATRMz zeDppOJ3I@4bt9{eG!m@GCp7I!KL# z@I}FugrDu+@}+#0)i7eGYxv0I+QSbr-N{bp3E>mbX5k@D=dCD?yO~J#R`VpUoH5#g zb@@hgvWR|sW)hiAmvOQrQ;!!U!xTAQ!rZZML>FL0SoJrfATojaSH)pk^&R5qZPlL) zqK1JrtNuIU=!=67arCq5DVl^ON2~q~vL z(J_vB22eY#Hprhl2BTGP&jbu~pIkpUH0()i)Zjy*fKV3DV4FO)yM9oZ7V&09fRfh)~^kjL=bf;c#(|qXI!Zss;Rrf7?RRs{%7<`0I zu%-XI^sjn2SR3Sa!pq=uJq(1Kr>E z##p~Vv9i*%)eB~tm#IvqLJ1*SLrFcnOWE6NcoiwuN zgPn-@W(3>}xQ@?f__us_OJN(Vn{>_(4|CM~^<>V%)Nv>X>H$~J`0f^YSV-Gx3f_sp z@E1YOH{l6E(ky<4qABq6NB$HAZ$rXxX>b}yH(ctbl@$td0t6OfPH-7}I@+#HrKJ3O z){*A`%+xHEw+=fs#QJ8|(x-SUxWVFb9_B1O?yNka#ic)9M{aq zj$QFA{?@jUBrle$+LgS{Y9B_ZS~`duzmMVMUo)pPU@{Ud)bV-kSL|87d%}36b{ni0 zQD6`|#-k=Th<)KTD;kDS>=3k~FM3+KAkAxp5=QDR5#(WB54%|b2RExejAMskDXjD0 z0#+B}_kzGI+@OFL)ISx}H-_UcHlHuHQo1fV)58+e-`R*TV%JN=BqFu+isWb=-!FEd zm#|DD{R;Nkk?HF$Kuyt7^HBt8zdvZ7#o2rKVPipD(h7H_-GZJ`*#lwlgmF4sGj_8R zypQ;3i$t27WISGcyzw{;Md|U_Z6rFay^~Zi;67S2iAyF@sAy_D6mj&zZDp%|N6KSHN4VHVmuLr;Mu!l+?=p-o zbp{ZI(B5sn=ta;aA%97?U?fk3_=VdRZ7+?3Pq`v}+y%As&`2V^!)by2OQeE`-yTfV zw_pO?Hx&8r8^l81gqMY&v8?(zNF_UF@cTJEietf%-1YoHacwlMLwCpLUn}fqZefKi zteSz$u?g?89(Y+J1`c`VIg&o#KvoSa2U1x=Li|Fj@9Gpdj1)E)o0) zmvob$jW`FURlf>VNTC=OkIRa$hbN6A5aNM1$D@Z$&nx_u_FtI2gX}r4Vh$0WVAXF0 zlj_Dj<9+Zl)Y!AnK3iKb_~$#R;LJO^g!(&uOGjp7| zW*>{=2IBZZri-I&tat9wy}~71*f&GyUl?L^v@jd}p-5KD-H@y!%w<0og~^$c1v)8I z9jdmQ33L#jO5N6rQBbl##JOV3Ph{WrCIDcLklwfy5O(gsf!Kh^^dXipHen@e-}W+& zYQ|!Jj=RJI)LRVt;~()}<3tIv6|hwT_=mj*AmgX8$WW#|5@T5v0yDc{Bo3uUhHef` zz^ey0GI=`0&LG%j4E*S$k6>+wc}{^zqnlDe(~#(E8I(E5Y4Pt`;Na z`tpl5^1eM#EUi*~khpfsQ6T05k@p`9^bvGWWP$&zJv0~9zDgT7sY5Dk7hXoJef|%A zNDj~Sob84`#qhh=C18&Rc-eOnI$OPj(B|tA)yW~S6?#twGAr_`y~RC6aaj+7ur>P3xOrLTD^u~Hpi{CTOMPFPaI!h zgeJna5lgO82BMqF15H%{m@hiXz8isfrA>N!K|e&z9A`iE${SQ8Ylm>ez8~?>`GEdF z)69wXr=Nbxm={^x&n4z6WG4-FmuA=)vmA)p1F^vwXeRA}*x-tk2fVcf>2-`5JySdS zM5k#--{|Su(Jwl6!xG@3eZ6B4f(U1bo)pjD4J?wwH#~(VNewJr#cCg11mzOq6+pi&pcz;-)9>#)E-3g$wS1xQ`np3-=4waqmlMwOmc#H8(KK} z5T{@~lKhIHQlPh~jSLmKIGbf|VFtPCR~~Fv@fmDL3C8gj5u8$r z1Gzl=4tCroqDXOux_~KI8+$hM*~*As_^5e|kV@TQ@YZ`EOtg%bArl`xNzuROszqs6IMvX2kLO;|@gZdw>n_#BZ zX&Bm7{0Li4%2=xYir{3f9a@YA`dK&dvj~3t7X1pkkGe%K^AgxcS&M#5lWtKV6KT=U zkz(IN0C7d8+Sa}k6nS{GbR8v^+J|GXb(CDjciCe{k03=YwYmPs0kgwm$vUfS&R-bB z4&db-V@ zT;$!4Am8FXYT$3N3;#Bc{?RheKLTM1@7X^BM<6;#JLH_5A=rw^QZv2COs%3zk)3)4 zwr`sWNFnnDB2Igf`SMiZJ#j#;)-Ddn)%u_kB0OW;VbZ!p)x71XhJ?m>|Z!TZuck7CCj=)M0a(0d-Cg5JW`8aR>S zQw(mtIR?vcN6`E*&g?pz;ETu@uPnlkT&YjZB*_78yzBQm2YVuR2;kMGr_oCnxE&Nd z0Sk!Gt@gu6Yd7*U0F|O?mGgm6axB`iCGLdEev@Q&Yhn)f1&Br4)^GvNwv09Qz}p4*%GmhNVNYO6!;jr z)XOXYbv?7W1-ZFXyTE3X{mw=v8;+o^UNaYL2mnJ5pFz!R{MnFOMf$+%(ScN^J}4yY zl4Qh}N-Xvw)KK%Z zKQl&(xw2a^MF`y>Opd(0N~)-*|6zzxSL2lP8`kYyg{Gtt37O)lXZaQw9#K(+4lO5FRR1Qy@J6DP07q`&jLq1@+?L+6iTJIkSnL zt(DPhkYBh+yIbL2a*9?nUd`|k+WiQ_aepeMr2a!5;->7@;(9&M1)|5WZGsPqt?U*W z?=$x3(WAyr_2fqfu|d0T%?nh7f$7Uidl$-p4#-rsG6;>0U%$5>9j`SuE>+i_C5kaC zSKesYrKMA7Cvt{O1Z7vKE?^4jp)gX|cQK+KA2lB7&?L|YRd>`Ml>?5c;IC@U5aU$xDj`|~_w2P0IClhKe^T|dQg(fp{ zI#0uv>@<|zLg9KdW26K{csv4?F$W^QUxJ%<71OPLC1qI+_aP{Bn_7yqXUGLi^^+|4 zM~LM~_!n!l#{FY`)KffoU!eV2@ZbJDEL3oqDjgH+>lD*Up)Wa0^?}_%kU)ugNvE zCTWw#X$Dz*UmYRCpvOTEW8?^P?tiV>d!K#uz&LHcul>HgrP*ii znKf(HteIJ}X3b;ce@Eay2mjlD9sjHM<6jf_UzWT&^D9>dS)cR3FHkvYe*j$@0L=hs z*ONX25r`+T#AkkVnw(t`0KFZc4=}~xF>%fV%#h?Va?j0{^$*f8|H; ze;c>cI?JfV{Z{;ckF{2rp+@}I1@Kqm|IBXu-?|6?lED9M_}|)r|Cf^Z%ecv9<{kJS z?}47*%s|i25ZTUu)|`(I@{)=FE^)5>EOCA!;(W&LyT0*#vwJRse`j{MQhbZ=x;nFx zZ9`5d{57A5VYI(6^Q#rYBtsoGUGH`gPf6HD!Y%;b|4!%my6<^faA*SWd<3|9;J%C3 zV-H|_kS|=l^=n)4?|%m>B+onKdFI!4@uLaX-c|3qtv?RX%o8;GK=a?k>+4@{^5FnUWd44op9k@DQ2R4=0`=&lkDA@fCGKZj+|@xMhalgb+P^R} zKS<}8_hTrKy@<%}VDkSmj= zE72vPnI|1AC#?#>vpTQJ%~Z=^{+M4~lQ*16T?3{m^f%mid2dY+{kj&4B;ywPgJ}T57>tn9~2>v586&+YO z%NtL*j?9!`xiY`S#HJ^TZ~RSZJipCt@#ndX{w25d-=l%d%<nb;;-@jju4iW!%dH%_}&Q)I}Tua{D-ynfJ&v{@j zcV5Imz{;fmeAVnZ56IL6UYBXOd~=B}+OTM0y?c7soCnsrr#W*TSm&NdQ$}ULu_R&_ zPrA>GfxHm?Er%cV0HDWJrkbAOgRwH^`;RshBCpzOlR=YNbHRNo?a^-J95+%MKp0)=UO z2`<<^)ld79tyCoF)o6J-{SY^%lka;?W*z5z;y&)@s^7(ZZL<5R`_4Z^v*kxtz4Y%6 z;O_Z|3o`vXeBjNQbu@MqgBKn{&aD>x-RH{gZ-7NkT3HOI{2DYfbC?<(1YJ!~|65U> zpPWrT{fbbB&U64o;ZIrJgqX?v?c2e`$BEX+x0rU{DdP0)yKm*EE^`Gzb(x0+V6_Ci zJ^9}IR!h+0?R6WHvma~V@&43h2Sp;W_K)cL<)_za_eW;>aF0poK>l&$|zNRk%tKIrf@=Fb9GKox5de%I+JW0gfC8 z2@V17PdUyNkEXeIR^H{7YxbJJCvqj$L?6VwBG8R-dubv191Ex#hw#iSG92 z?7U^SqWN{nxa1zn{|BO&@~t>1BGQwYkKuPv1S$b@@4DPc+e}iKbe`p1a%GOu#)5Vx zLiPT`=cj5hS{?o~s=u_D<-ym>426R(@H^Dd7p}zkQ_HKgd_|s~=&p5~=X;A5gZ5jQ#X_EZPJZmc=S!dd__w-#>8^Djx`m|%9;e?yxGbiS zs5|AO1yX`8>Z>q`)Y#kf;B$V|ogcc(Z1=*yOZaYUo*~9=sn5G*m|bYzbaereO6NEnYD1fCiAL0Js`#&$w@BbY4yNc_` zo;>B2OPDZ2k$+3oBO!w_r8jU`pJ%&~Pw;yM>!$_NOrh|>_dg`h@BgG=QLOTmTP|S% z*3JMcNGS)trZ+Rw{{hc*QTNzCp$E95>fQO8;=yn8 zt{=19b7&o>7$1C|cV7qb)*M~krMoX0{_(Rv$mRY?ZY-O+{3&*;$)_tf$_}=-Uw*`U zz3%bU%*#3Y#C^o_GLu|z-x2vd@qM{F{x2lYllMKPZx{6K?}7#z{@yVk_LJ#F`BvqT zncx4c;~p9tPjdM^P3QxT@)gR=SLtDO%k{GWX>ap;c+)mN#ZO&k7QuCy&kE3L3Ak#` z$3G9?eXAvS{n8CfyBdP$C38OhNy20$syR3FzXO1<rh3U$6Mo zy9M~c*}u#E{?{(QrAU*5sf%)jI5iFyLwDp-o-_G8Y<-`yYq z|6M@d`(>U!!Bgg^9DE@J{jdASUhn#%F2MaMiRg^MkAxYlKz`tqJ}`A4OCawbW9mSZ z=ljQ)I#{j`tUD1cSLYDs=mV=(V*0?^-0Sq=7v?;$Ngv+sFXTlZzMhi5f9x08$ge@D zy$%?yw@rQCG3Nm}hxz_7Y*oLZ5AS5Nh(4e#KcWxs_GU-N-s?_6S^ZhC&UxUkHIRos z9(K=_EI(XFmXDL=(@)T=ADQ{#Kl4~x_a*$8fARdJK4wmR89&D2o}YBnnXkt|u&0lJ z`+@-KyvdaPZ~XQKepuB^rt_ci`*7fgU@@7KNAar;{3vZUogKn&ao{J_J=1g?zxM}z zNNAH;BZ=yQ zd$iE6_PzLhy3nuV0n+U*^!vL{;MY><_nY6vZ+oF%M=|*1q}j~%*o99oDGYsNE}_4s zeqW_x%jNQh7Q(U=7;~DVki#@LldsbQ*uB1)S;-{(?kCU|#P*qyrNReS(H&=G9JTr@ zAV?O`K1Bn{Tt`WxbX>jtuD5N^$mGec?HO5j-ajkzGHZ`Af7B<2E{V;@AactUjcjWG zFL#rh_woztxId%!r}e&D?^o&lU3!0y-mliX)qAnt7wCPV-WTb8nci3F{RX|S)%ym$ zZ`Au1y>Hk14!!Tvd%fNp_1>cQ7xdny_kDWr(tEew_v`(D-XGBWC-wemy+5S)hxPu5 z-an`JNA>=Bz5lu1zo7Ro>ix@l{|CK)L+^+5epv5a$Ankidf%t_AE|#z@4b4@=zT!% zLwbKj?_+vDuXm$yuh9FIdVjm#uhRRw^!^^bU#)km_hP*-(ECEYFVg!my|2>y4SHXz z_uYEmsP`>;->&x^df%n@dc8O5y+!XE^!}*c|6K2%*ZUXren9UJ=>3y=|Fqs8()+`D ze?;$})BBY!zk0ud`~TOjwLhF;cHkD_yW+k6VOWhpWZihU>x|zXIuvN3hr*4Tz>-{pTvC@Cl^}y0i@jlx}gK?emQ`#?*RSW0i^7K1g;bJ zE4VHkF%D=XZcnv6cb7bi7B5;t<``*xh5U)ikFMum%(*4zp)PSGv)=}1+RNAzB|#@wYP_@a7JK`O6tsf=j>qDVnYf0R*sr?Q_)2fjF4g^Y7 zS64^t?a8jVnJ2V*+zI1z@jeg=-I{12h4K(4=kwc_!RNL@2E)6i=B{{0mHA~;)z+41 z_JWQ1_GLFhwEtQX!tdziyAGigcC>a0+stb9OLla?O)u_^iT1AQZu1k5qf*vY<`2yJ zwnS&#t0KP-W$o00j?OL@Y`&mAHE_Ur{11KCIOelL3t39GX`QNR+AAp^GV2rj?sd?K zx3qP3bu{nY*IH%v3AA`C&65{ z)_!MOeB14JQ5DSR@~J!OiS=Falj>j9($XPKz^n=JAzX)Ad}@M%?IixFN5xhOx|{b; z2-KFQ&aUc?jzotsKlbs1dtvkvZabCvsUVigFI<2_>zDa1> zu-?qRyf)qzZ|aQm{G}P&C>}K-6O8guPlvg8p z-fc-}X?!}*JfF?vXm4#crg6rWL{rOpl{QtTMc*W>%KY{WkLGm= z*!W9k9h`07-qb3R?`NjEy~TU}?2N6TLa5!?k=X0e|2vYd=PeSY%3NWpTJB1Ah6(|YlbxRuj=dWH) z1&vb>8#b+L?dmjtCVcU{*0o7nkDIxdZ*S`2#h9BmZ1N*cr9eb}5eFg;L>!1X5OE;l zK*WKF0}%%z4n!P?I1q6l;y}cKhyxJ^A`V0xh&T{&AmTv8frtYU2O!1X5OE;lK*WKF0}%%z4n!P?I1q6l;y}cKhyxJ^A`V0xh&T{&AmTv8 zfrtYU2O!1X5OE;lK*WKF0}%%z4n!P?I1q6l;y}cK zhyxJ^A`V0xh&T{&AmTv8frtYU2O!1X5OE;lK*WKF z0}%%z4n!P?I1q6l;y}cKhyxJ^A`V0xh&T{&AmTv8frtYU2O!1X5OE;lK*WKF0}%%z4n!P?I1q6l;y}cKhyxJ^A`V0xh&T{&AmTv8frtYU z2O!1X5OE;lK*WKF0}%%z4n!P?I1q6l;y}cKhyxJ^ zA`V0xh&T{&AmTv8frtYU2O{4N7&oVJ< zX3xt1nbjA)X3w(js;aB2-nwo}b*)`rRkx{T+w55vjklVV7RT%}sS~MFnZen!mc;Cm z#kSl&cdjoxd)CsJ-JaMJ@0dMnS6<-k zMa;f1Iy~H$%GsgO{`5#+YWA#^G5g$5x*wpS^q6?8irJ&t;gQVjS=aF-DQ3$8=*5d- zwyrJFW%o8U?{006&z`jy$_|eXr9i(J!j2AI=&P`Gds^Gt?E2mD<~?{r;ksn=p3dFG zt4$=^;$2-55pthR9q+%;n;J>?pSM+;?A@K*34!$Ij*p&84`$N5LG@uF=p^qs-l6!| zNNOa5S6|AW$=b|`q0|5YQ2yk}bnjrgXK*}iPo;WOE&};@HZ?plls(-?u9lF6ZS8Fk zZ`U_>EkNT(LfpJw1}KJvPi~m>{-vIP7Vm3{tL%PFWA2RR8MAXG!~1QCsJefcxsS(Qyk=TcqG-+H>y74 zAeL95yx36mJtU)9O_4Wpc`h^DpB=Erv;F7C(sq#~|B~%V4GS%Hcm(ghtnEz?rcX%F z^V#0)sUfLbwohv}#EoRmW(hi#vLo5!+0%A-AUiUYqb!VOG-Zc!y;-VQIC9VUP?mHB z<#WP~6kHrgk7W8&c3^a5kStO!M`QN;BSWcIBqPU0hSI~s5JUztBsvVgvZn_n;WMNC z=ZEbOl{77h4vqF@Z0}H(GL%57u{2EcecJ5M@JLU#!Y;LCaHUu2OplyjXqP#U0rCY$ z`cgw9TEH)k!vv*^dJ#nEcK}k70N^drJWqK=I`pM_vICO0W9if9l$GbwQganHH*#Kr zX3r`sE3?PaeM9My!ST}wkdv8#3VWzmCCu^E*kH~A0c3%f&-KNN?CT?`Gg@(aVQ|bo zKa`cW+)rKxQ|B^+sr1-+xH_2a5jH<@7RrYEhQ>!kLiO4eD^}PuLz%%G@6U{$8t)sm z16is6|IE_gE6dr8U?c+jdI7zNNaVwt9o5{(GTBEhj3e$>lxfqvH3*6fIsYdwaH`iIqy97-W%jTI2nf&h;LT$N^4L>;3u)hJW;7Q?H8&+KG z2dma^-o9;zt=s(Jf`9-4On~5!b0Om8sX})B#;UE`H*KpCuRMDSBKaZVw5NSmIz>)R zRt-Gibd;un^y*9Xrw4meLn6uOEJTQk?qhq#k7uNTA#**I!e&m{W!lXgPK}7zS4D%y z`uu3W_ePHl1aE_NjP^O`e37$=qx2xbrNsc> z>b+;tEaa8Gb}0KQy-8X;oE#2R9G`F}deLZJ%#5K&p`3klC_8YDM-(z7%_|wSF8Y>% z)T^1(sy#lBnC$Dna8A0A%peMrYLQ{z4eK_PW&5PhB6rWG$U1V_Q*Z=(A3gPXII#%X zcszZ|p6a0|S!faUWp*IdH=G$5)oye`>cq$%A3q1{$NsWa{865t7Agq!)8(u^-q-hL#hPAr-2kxh|^Z#2?2g<^7PT?UwHb+vxmO@oPF`h z$A4;%J@MSr&%7C2q5%wNsh<7HfZjmUUPxa%dIq&%Xp|lbg#;yad@wz%s+wrB3+=g) ztewRqv2)##7>H-~wR3R`O@6Vj;ON)}4vabwL zsVeNoZ8z6d+wEJbK3rW3Dz96Wt~WdQYE~3LMdOrcYJ4E|C%^c76Pbos^n`f1 zrSS4E8WKR(Bk+)Q4*gUwlqG>)0ojS2k=6WS;)%M0M+qTvEU;%d9+|<$1N&HSm zRPx*54UWVs-rN!I>QvYX<^RU7O4Y3=vLh%?w$B$PnF}H;j*TOCXx~dkZx|0=m&1o&mNaS$9cOL)$|m)ulKq{UQ_w^rQW;K-tzFlyBFbDZ<-Oyc{`Xncm6_vR8$g4 zBs*e@moHkh2)q-$><}uI8-*7jE%48Si=@qj5ju|$KzQh0fYAvZ zZ%{uP;z4+1A4Xl^pHHDzhW(*>&|^KHJV?k8P=GLR9|)3Pf-oE!$RXQ= z!pMw}bP&bWVLRH(U?C6gY8(1Bu&J|Ns87-owD8pMRB5QcpTeIXT5rCBdlL5&t_L@Q zoALO1^GmpEa4T^i#NC1WDDD%u-^Kk2?(cC&aX-bqhI`i&>&-meN?Z-@4&2?iPv9QK zeGPXEcN+II+}ppo-W1`k!`0&2aQET<2>186^&6|JcG#-*J5;`Gpx3#%eNTJho_5>3 zJKoe~n-eW@>6l8jNr_TjTD+2rhxT}Pmu*XQcG}zH&56D7PJ2&lJO1Lui}MsegpawS zskOuIYiqjKcEmfo5*=~ry>4%6-(&Y;Xlk)t3EQ0P=!my>**g{9#iYQkbA0@>aU!cLoPZ%Z`q z(b#PmuWVOSTWjaurgkh}-Bb8>#FZf)9x;x^?~d<Y6&Ub5l)C^{yS}rfnOxZrf08Zmil=E4?BfRa;DLbzSw2 zbyYQ+jWD!olW{EML72vmr;wYCn{L`zyKM^=N3&tu%~&3>J8m>2w(jQjn@!!uZQHkR zs=3KjZP~I86~4}Ft=feiUb_{9?zd|F#!XOEi#15v=9ucG=#bt^Szwpx$)4&NO1*}@ zO!rQXX3z3XF;>KSe|Gr1XNs{;U{>fE@5%P&Mnt1_Qc2=WX(&={15;MdIOa038lhmI zwunjMBxrl2W9gaH1J5OWqywh13&%4Ug9g(5<7XFI)Ot_5cm4yIAaR*KHJYGr^ot<@ zRTg_>1wB=nt#0bPccERvQ%#~{Z&TYsHNkA8zR>mx!HvL@4F|}BK=JeRi6J{Iy{`-e zoVe28A;#^48L{C#OUIZw%fmCM$}zI)vA5Xs@CNm8U-U&8)EvtjLNn-B*!{-+oH_Mh zgdhmv5}mhu$fu`0u_pLpx^MKg%xT|XCzhevv%c-{4P!e&_Zv=!Y<&VC2F+p55SWje z?U5opmKs2XSBo4X)fxB9)&5lq&~EzEGJG5B7oE5#b1H*U?A6Ae@m}gO)stE-wi^0FdGd^-zAW{v zub7Fjo?&%kxQZ1V!%yZE;}u?f!#!0<5n>@7nS@cw>APZims-Z4Cfk#S0ZzT|&1w}Z zePdm7_3F~uvoI6{*Wst0Jo@}|FWRRVmOLH!^00sQtV_iQWzH};nClM_Oqf0&X5gPW@2u0wkt*;+NRQk&7O56B?I`=ese;{8pV>BVdRn;&ZuSa;u43l5^J*# zip8Rf>^at-?j61G8sm{yVW4Y{N7YhCWjyNPwJ&FM*wi~Zf)d`7a^_Ub(N-FOm<4h@ zlpBMdp41p-N-Whw*+HS%e21qo+7z125M`_^7!65CFTda71WUbf({4g(cC^Otw;H&<_>7m|Nu?l4Svm+Up5rXiN?CH&( zb+%jI3Nv{|%d<08Z7N$#<>P0Gs-_o4>~bbBn3%$jFvQ#sEs!n@5hj)s$zQflxH)^) z3leD2p+JyjN{ULRSn|({u{(KYD#ax66lAiubTT>Y8Yg>4?a6e1`cz+PAmh?;({aKe z%hbdm1}L50z=SkGda5-kkhK%$AideZ$p#|FA%C8)B0q`gF=%4AituT|G?8h-CJ-Ay z9Yvmw3;!3p{w;W4BJavw1QS^=g!bdmm1w+a)retJ-SqPGz zO`_Uj(YKW_5s!mN&Zz+~O&*cfHU)s!{V{F)f`?oCa6!I!iDGA-wl;ZtQ|InIP5GH{ z4VQ6&&VL8tRUOSuOabp{>gZC4l?uV!asW}2VC)lwuhMX)n1gW7oELxy4J5*Ba{yA? z+QP)Jk7J3WQs&SDh;{Ki4SqO048m_@#1X`IJd|nnAbe;1_I&sa-OKLr&3J3$wZdVLU89nDF{R#3h=TJ@IqU<46*J_qB6rrT*n;BE{J=me;{>A zns{N%RTEy)Rmgyb329Ht^qX8Y1Z zfG%AcCbo3x#3GkwPHD&z6XrFt_7!@&zF{c~VP}}Ii7}VEa+KvLjQ5bNGEvl*9l)Ff zM}umM)Tmcbh=tWsq5KvjZOgOTETOs_8AvnfrYhI@ zSE=Pogt6gbnOMzNxN5$H`tsbcC~AFnWK^aQ7K?-nakg~jgi5;H>yoHMhZ&0XWEq~@ z-t)O0kg$wl`4rV2zfi81P0Y3SP_S^a1TN@T{n4Hqp$m)t-|R8{&NLV*t3(ev%)IQl zc*hYIj7O*JI23QtjRtt9>L~=&>l(t{>C}C8L4P_`r!7(~=rE`0wF^4csk?1zSb$}! zZku`(giqCNhqaSS>bBJ=lUIb$`i~*wWDw#i3>9@S#hYqW(y&=yBnyUo0du@Rt%Dlv zQSlE-m}kdI9)w~1M@RnyAH7so9=lEWyv|9CzCJNLQ;(%4x-phpMA0&k)&&5$&*f z%=d-Kp!!{Ku0Bcd`;!a_`Dy1IZi9fMd#%n@%h|d(=9KMC!7nDyS;PIUx zj2(%Xi)C>W(>qEf&Bd#jlDJdZNI}?ASSRqD*w0VyrSO^5d$?r3oj&2M>+lk$8+BC? z#8Y&sV4AW=m`bca-+w`7{GY)XBENtjxdu}#i@@SDd-Af0rhsnl)0*{6HI0LvOJH5}>>k!3m_K4D4}A6bvIpDVu{ zDOk2705C_FXz?q+JFC}uzGZf;1nSZ(esnRG_p0jxNIT39e{~qiBqT{e28XMa2r_^d zcYTw`)vM*MufVzIJZ~v7zr>{A{lx`aw{5F&Q9u==kR=UxGT#TDPu>HOTR40J#8pI= zKVo-akfd`L7pQ@#UKueqW8y_&W!5^dYj}0mTWm9y8XR7zcBkH~#21SlO6FNi_*89Y z)1SIm4-!9@!n`OcitWQCIX*_Hm(Z!6?4Z~Zd-~J52GUu)nMW!ZOp38_cqnx|HNp~+ z!Hn9arcw}sREJr_B+9U4KvPGb7gM8`s&;`ackCDIopqBHq#0I{0d{>B%4T@X86?p& zKAi2ta-vCK{5+E#NwYYZ>89by{0!`E-cWVa*B5nlre+ToL8NAF%8_c2@R{s6N{_J^ zb{pxbSa)@Xu@1Z)$><6&G2D-d(bmgt;Rtu38!@r2CNn6R)NTd6xL{}-BsQQ+bk1bY zjE`hl+H=;kKr`4-Gm@C8d;2q5he%c|V_u?;Ev(LGh7K$6C^oI3?1{|TkfljdpJK2a zqXJD{EUiTK9zru2+Hsd1mV|cO#>?Sfo{Z(-syz z`E((%VtGJYULOR=I$Cf}Y4`}L!Elxt%!@SUK2;!DQN}Qm_5N;IyVQY#(KhIO9h1r) zHj)Ghv5Jk6qU;Jl93EE*a+YSTRo`Zhqfd^~yeG>rHU+qOB_~lZVTvujG(04g)Tgwv z1c|$b=GF0q-ja2lU1FB$gc#hz4QoJFrJhIpEM!S|HfU2UAs;&9iMok8bfLv2NOxGL zWQVZ#`?5@gb)mQnq*sA`r&lC;p^-Dgi3K%DyI;RY7S*O+x=^j_8@JWgRkN7EYem#_+EBP1 z(HG+p>YQl?4Yb?Y?5rK*2$+h$)Y1Fgz}pmnN7h4PiJ`Jw`Zu%c6V zErC{`6e}Iup|obxF3lOf=xOzmn4i;fRGWr;3o6v2CboCWdTAwe{kE;!^DT0}-HFOr z9gr$8ECbI|ig>CFODD}*Kmn^HixsQAY1@_!EN$PmW1|PuL@+AbIoOCdd#K zrFj8GW>s7%$<-fr#Rb9zc9FHHq8?IG7U_wSPi2$Vz zD;6i3op5GN&35O#A92mIt< z-=wY7^PexN-L0Ln&da0Dm5cX6)GDu5vC^#C*145fk_v@oZV z=i5L*o83@-%O-E20#53iI1j5N;z}<_ra=ZBO1*Cym|z?ZZr)tEYpMDhN8*+iQkirq*L@PD6$wl3r*G_ zE--f>X2W*sAYETw6BPot* z4J>r3VPkhdf(rQ11fv^GupEVzR4jB+vvEjQWj`amN*@CP$@JtN9DB&f)JF0k#e$wx z#uhA`8KT34j{~Yq%3=gBqwHZMIr2U-D)whzE1#&4Pc#@6+Sh}Won}sl#hNm|SVe73 z(bMJAEHuVXRL4W6C|FuxjStf4O^>A+Frg&8CWA3w8D~a{{ehw_$a)T40u!#pZcMjO z4gFTE@49A#VwPnuvRq|0)xjy-ODF=(r0N2>L^P&0ir7n z?FM(2M7-UINIKe!UJSbo-OAzTj=lKwQ%^qo^pp0v7mvR1!xx{Ut0}zbas<-63Bu1Ul% zV3F8JSR^4kp>zqKZreG*uqB00VCR=T6Im9_v%m!JW2`5Hs#MPi7IP;HGh)TZUlx4n z5*LaLpU3;tuc#TuO9IOev$%G6wD z{d&4z^rNY-SjF7nssNu4HC+_o#eSQ==6bPEzr@0-KR%M+SK|m}n|6HIYFwHqdY(WF zko=-U7GCowBsI4JW!?iJL(}JJ{`|R`;M}?MFEIvK8$Nhx$c0cQrhUa>z4UV76RR1RYF3i}J z)svYDG6fc&PxgbFOYbg7e2o6DV}nAuTTl%_<9yhB!3G!G)ZSuuClY(yKD&I3HEY&* zjj!A_JsPyEJfgSm)U8X+a$Vh9(|JC#v6eu)YbO&Bl zAOz<~ctQgib3A>5epI&pBROPg=j>V97a&?fX~_!3Ta9esD>K)awPrtHFAbkbpJi## zIO~Mvzzs7^1 zm019Ei>Q;xzLcVG<^T*8(z1DDWE7#Ea$WR`p5$XhgQ~z$2P|-KU5xAPRReGmIDGPq zCwyNzp|Tg2GFvPsIxy8dE^C3BTz(f?|{y<=;{PL@m_p9tGjHWTmf6ka1dH>HDc>&g( zpM&59aOKTLTR>}mQ*jp1wBJ+&<;2gKpMPPwO)Ag44bF99Z(Iqy?EXtJc_sQUMWejb zLjG65r0o4UFd;QmW>EVVVMB8CLb6t@3!94R9sIh4+UfpL_r z(X%YJ<9wXcZ&nt7$%%qNHbIO)f|%#oER`N%;{z%llBQoabwG`%=`znI2@BE4pwR0v zC=pTeJze|qtYFLMpkUXKmz5`bhFBwhnz;sD&xQ(JfrV35%5m)Z-V9+%&M#sqxNJvZ zUuxJNQ9Le^+!LS3c0KAy%@~YFyO%Cs=yugH1&W1TL?E-h*f_{pw_6!bV|Q^Dl`UPt z(gxl&p)4A>93pg%G~`*%57G=R=RrB;9qizt6?S+>Q04K7CtALoBqk@%P+Hz$O9CQW z^vNzeiI%Pq=6+w!AfrD_k&N)2h2hd?49M;Z%u|$reR@RJ;W0*WVd%=a0X=gFB9Q2u zmLy9Oht8^;pFPWAq_Egg$LUbo`$3Y&E!}EYu%$&duE_p7=jm$nrEGAT7AD_UOwl|- zUWrQuyc<6KtI*|PkstTyo8T`xJT3@S6;~sBO8ljv@HFFkFJ(^`b0}E!GVLGmZUzHo zu^_HuP~}ga${i*Y-fcQpAhGJXDU^3N6W%qB0C*}S)30tth=(p8Hy_idWjcbv=0HM` z(a+$v3EG$O8<+9gJod@{^AxdM7B>g?PTUo^cjM$3&iCTpfh)qj1@}JOY+Nz!7jVCZ zyAt;+IKea%_a59;xVgB?aPPwXBJKmYx8Z&n_e;3<fT=CuJE_w{Vgnc=o8HPRZ@DWTPn^IXs-1 zSE70LB8et@ejE~zvhPp4T^oDNWdpm@oTV=ec2#+uh*OjUzyja!1}R-m zm|{xf9FyCa;W=Cm6U<^65G=L}NL|*99M%k?n6XywnCwI(l=U~5TeE}XcEJ;RZkR4E z$qtLAEVHp*@ezsjh);~mA#6Re_M9z#7^c&M7xE_nIa>4PC-S2uCHV?(q%FuqcqiA< z?5Xh~>3XHuNQSO~vkd+BQCB2dH$ufI_7d&I1(3stZ8V4$C2@NKsxX3S!{l#gH_#wv3?!FqERwjO*NqVDgn6sUINBoH{P&Ad(Dy ztAsNK(({SjFbg!{YUYixypuFNrhn6wT!m#5);SrWp`+3Rl zrBWF=GU=7fiBZava+PIRDfY9-)MI8qHW|oHd0hgFC_R-rlN}h$EVL(j)689=Dv2V9 zrIzI`vi<%P23kbXKzfXw6xbRDL~~0+8aO8GcdXFE3d(EroPu&We1O=!9Jpi`moF(_ z8XSPazE3$W;5gG(l(&q^!^3gT!}2RecqC4idb1~cGaTa})x#~eQ;ix1yP-S!-DK5$ z^mvB6lg7~kO_>9>lg7WFD)U-08!}R^+9<~xUO1TL$?v{b>8Kc<(Yfc4Mlb*Dri z7~oNG&@J#XU67SC@NV@sgMI|EPn9uKiO5Yem>42!l(KXRVi!9q4HxpH^OmgvEW4)8 zNOMM?&?DzEBQnSo5kVQuwci1g6o^iIva*Y&?Y1=gxO^EP7_o5}R!XpSVQ7S-*-oX# zL^@*HI+J0O`!V4%^@c+S&R-DPopg2Wm+Wer^<=CZ51>s}Jvm2}zD0&*G9f^bW65F) zv0Hce9uwYCE^-W?uDOMNhicdzyn3oPJ*@MYUP>xf<@huQ=5!w~Ojothvq`lI4Qs#Y ziE_;mkp*))0!n;&twMJyYGCDkN1PCSI<4o_##KoF(?do zvST8Nf69A{c;YTVo(o9ab5R*{h3UGq(^h)q?Cmlo{ zt)PM-C^^rWV_lfpb@DTnTj-qx!_4wR>kfih3jd^+rVF9j410$OQy5I9(*`*!^(d`| zg@!5By!aiKHQ9=PR64Yfg87^TYVRorDfjsDN^~5bxcosojGfJXvP8Cxs9g1uzZYl& z{pT4ktBoK(M3!!l$t;uwZT>kqWS2(LGp+?YZLF$I?64d3<50(fDCp6rRoro$A4fbF z9`K9|=S*deAx?3cu?qNMIR=+{%PAMVG-kz0C6g8a*QDht)vjj$KqndLUD@}jt8gAa z^c~fx$%E)+^nmG8oWksznDuB6(T(KnPN~k62SRVW-)Zm^!^uoPODRX`zG&v!lKsZ% zEE&>pdosfa9&{|a4?PG-S8KZpGf4t_Rp#&zM@RQy;*h1CoHC&T8E!~VpfZ_f=5u8a z6i+=6pE)HbuE=5)G?`ql8tspXp(DrKG3%31R-{J}7JWxiz-G^1j2=DxIrxQWa|OzI zIcRKjN}~8Mrzpn^yF-0ksz_})n_4aCOYEr7Azqvi2!Dv>;`p$GsiDzxY>n031A1;T z5=YX48o25kG!_;%yElCE;!T>eX;_%IJ;WO9t%B$y))tkKfS*=j3trH$K(>DP*R`Rf zMM@O0k$!{NJ>%HGroV~#BTx5^RI{DBB4}QgZv!&zJ%RGiR z)$Mq(g@8N>zNh=Wq&`UZ+xS^1jL+MpbVT8U&?h07(&JxS-u*w?r+7JPZfljV$4r&K zOXB;~Q9*YpET1;=ROBE!#rt2e?>8H_SIAc!WK4g8F~vgc3>^@vT5;`Q2d*Yw< z_0h1k+3R#w;TDD0&$H`ppOT~QJe3=w0~OkF0UtFayOE2&dE*i7tNoL=82`%(7Q*vB zP6hTyCO%$)k->>&l0?3nquMxD_|&PeW-U<9iyqF#DE0^FI8k~kSme$W#B{G`^!e7A z@JgKL$&ufY5zf4;#K*SiXI$rGd`>YCVTooRt9h{2#iSlFzC@MBt}mLrQ1WA$aK&5g zL&3LuWC-gSk3dh+>U=A{YUm-h=pY$Uu z6IW|OR5DrI$VW5ykuPU#FVQ!i<*l-WU6$T8dscBp_^qhm&DMm&WRFWe-W$C6fTRax zaJjeITIVrEn1fyGzV|U*dgMzt-{iybp|?v)69^MlY#YV9xP)Vt@$c@2A;J>ClY3(P zRyu#)S0x)88^wP`tf;us`4bL|_{-H;R8-)P=oIhG`fI(Ui;Fkn=La#VEFi@-osKYl z@k4hJT3dwIym_%2j}`MEkjRixTv0(V4@l|CO6+`!itxFDTrxrU{`~+XOQ2H2D=TXV zl<@h4%WrWB;dAF#_~A$xy@U`6FDYqc<7`V&5fvd;T-zdn#j#jX<;vn@!rJ9YSX!!j z#Qc)AwXsHcP*SqCsHicSOeA4vW8=-Ga~o&R!n33V?gA=(N=a>Pvb(sbv2or!Aq-ul zyQZXM-aH;*R5I2=8p(OZ#R+8#o<%h^jq|VuSxG$BqGcpBQXr18z^q!eHnz8@qN1X< zq^PJ{L#MhmYl@Qhcu`SNMa^2G@>0_%te$+W@xcYIs0Ic@MP(&yn+%JO4=zZ#s2fGp zuW7Fd;4ad%&=avc@S>>+pG=Gc=YHF5QzkJbF&e3;WQqvWgOl%)Nii-4u8F{^Qj+l^ z0&dis!ts7D@y9PgQA7 z#V^6X(n_iXm(2HLgVYCDlUqtk0F+c!6whsuo&ETWNDf^z%}TcFgp%ha zX_F;(PmBbMZ4oaBND*TAPfQvJiCsWY(l#bnSb?u~aZ8b>u`tPwY|)Kt6rs|yR_`Q+ zyhlDDc#BIKV>izuV!>6Sf))Trb8S9tA#XD&3E3sdMmtZr;u01t!YhrZF})5_a5riK zyQDin?jv!Ln}t^pQKC9r{4`o(s)wNMwnZ`b7C;1NIS69)1+Dag@~Sc|VUgk!%A}F5 zLJ)eF7LHA>;+KoU024h&vW2H2Ui>uaBfJ>;gSQ7Puf_8vMOz!QEs#wQ=*XE6h3;GX zV*-g1D_+@HQcGtcHOS+~spNhudmX;>IlRBY9cf|x*-{(H~dGjvn2|2Gt zh9mhVfuR8f-4<}5=7X4%6NSkROftE$QDt;;asg6o9$0dIai!#@f*xa1qTp~B*kYRL ziW=!MeDBb2BWcN{eIQw8fEo(*AM;SsPcht@0JT;D11N@@^XBaZNODtndCZVrmp-pi zSTPx>n9fC*DnRsRYw3szvAEy>s4-bnvr4+75R|7`C6kqv8yR`mP^R78MIfFEiVCJz zCHiAqV#wH0^t4$axelYx@xl*6a*^<|E9v&iz*PlR^x}uZ=+YuT(|=Jg!wTg z$ghjxsQFeAg3NnL3-&KB5n+d_v5ww6tgrp6f4CWiDp8>{0kh*ufp;iPpJFWnfkis< z6Cf|rVTWKTl3pfI;}AO~C3EMg5N%8%s~jRmBJ*2p>CF~7C<#}3qNAp=5=m~wv=U3U z5MWFEB#<1`bp(JdZb3K*ki!-06say!6%!09FhR&ypWqr)X`vLJpi#$a?OJDqAtU%E z?S9dp6ND98DxzARB#&er`71$S7LSSwpAcS(Rj(BUjS@y%_mdOd7#|UL#VZj3HbxVV zul0jvj0im0CvFiM;yl~9mX{!0#8u4hBABD@L^Cd_L5cK&yFgmhxOua*dSq4%2|~j! zTIB@`D`oJe`4Tk3vTh$Wh9*R@TtYHJgQl*wEPaL1CBk1XRLTGYRH#ZJhDfv#U?+1b zTWX~Ndy(xH2A(p=(qKD}d@`O0MR$eJ*eD4wLXcsIe?F$7a5b}0>GO#6bM2B4x|6HC z@k>5k@acsF)8Bju>BzsUry*SUtkn>UwDQ3n5_d<2g}i+%{)jXTNti-Y7Z>tD*5wxYHpkYOE2a0a8;z(~L{9&0c;d|8!&At;N1tv^TbPmEXjag)|MXgO*sy z7Gw@h58ru>H8puj;9$AO&|>GIN)@-z2F2!K=gp&C)B5~+7J#}yq+fA&k}i~2#3#BD zunae+0B@XIdUIo=NInD=_GqAr;8v`5ZOIg?kHA$b#4i`QR=l!O2&bLLT57Q%Ou}AN z)Y4+rxCtGSRRNU?opTa!amD<(B88R1z|L1rTZ=@W0=T$ROz}xMD?l|v0VcYr+LJI> zREkgp8e2j|g_O6DGYznXRc+lQ09)NtNK@390G>%cR8=z$8oYDNqPl z503i;H3_$e#c+1(Ph!3n*|EUVO0~>x z2(VthI4eZz-l!p3>3mp3%d{DEF}8%-!y5ui6d&~^0%oiz?0M;WzCg9#6 zgA&E3`QHxs61m|B`L_fP)Sx`8CO!G=z^pul%)1!)n_)I~#C+d132ETr6Vq5+;vL2q z1Wok-xYpQ4eu5#yRDjOU6J=A$-@-`L(^VMukiBo5$GBaE(u|cb_J(y2MUmbDP2ysZ zjkcz!Xm4W;YH+Lt>2OildA6cx9+r3XZ&B5zhb?MM(p%EC(XWW)7e-G5jgT&(cN5Dz zdaHDFIw3GMG}dqt<6<6$3n+u==Q;^68NA3%;L*p6(cTuVg%0T~yfU8{p|M0-s+fY2 zrr;Gjw{*JdS8OLr$zbYE5Ym&^mNc%UGt>y+sT4c=gd8h+Qh<9h6sgq#kJsOkifGXV zjZ?&~`)6E4cuSJrS3I;QgR)gl?+ztX)ad2T`-!0sIAa)8(kIhDxDe0;3@G&z@sdOR z?<{}woWP@9NnC28)T}+y8nomB3=&&}Pe80b#3V8ew?)()@u_4+8e4^ofC@l) z5n&XdQ@W%k%2hO<AiL3BWwJC0x2+!tpo*esTeidobRh%iMNRiF z9~Hf;^q0*2&-Zx+AM&B}`ADjjMDsY=m=C3Q6GM3(so22$@5RssBh+FnnIdk*E^J0C z_T&eUh^nHZWNm^)O=Km87NEvf$&QGY;%*rvy37frYDqz0aZ8I=u^f1@r@#o2Slg&} z%ZrQmi&9P1Dsh3gNgxG)rJ5n){-mT*S*h#LtcHmUrRR~cu4|BZxJ%|r$Ti-IN^BN- z&7G(ur6BDEcf3?@t}CVX2UjEKIs43MU_+ zk`5gPOuCA&E}<7p6@>aHUCoqXHPQ!3=QdSD@z*P;{o!OaqCiX)If$z9CnLvOV`>T$ zgI%J*eR8m9FG3n_LZA@kuW6Y;S0PD-5kq+?KuN<1$lxKAm8S7$Y}8-jJXU7`Q&k)_Q&Yens!wY4pk zPIgmXjYtXvw2;mOp2$ZG$y`LDMQQ++1?fke=+tCa?7=K1Q7k&HQ`vp(Q7zg8ttz6A z5K%5d6cRRX#zIzHEb@Z^R}IwBoyKI{%r4dVWo0U9u4Q2nqcL=DUJ%)6OI8%Rweh08 z^JD=`kw{iqItqX{%tTQ0Dj6h;GC=V-$WlvrM?N7mtx7OQG#_n1!WT0PkbvU-O1ox< z0nl1+(m@qVv4PjP5Ja8GXC^tY+=Fa#>X-MhjKTapw=`3d{WP|yzv?q^X?Sjvbuv zE#5ElA)^cp&A_KyIYC*Dca=vDobw-LA2hzta#jt8A;~9;CM2uq*~_5BaBizRqsDSF zS3y$G%ON%#*TPZV*?zXP+vDR2OdCpZ-jb=t(-d6(e*!mYz!Eoy#K!c4rNdGi66VV^l0Ok z`_p5*zC7CBZ_lPihj~7l8cO>RWv{q!w%Lquiimgej>qgMUgy#s&P9g8m~JcJsn zcWR^f`e!wC^9@`%M2Sy|Z>io|zJ6mZ2dXTz>$lue&bKc)8grq1ud;mIwq3THQ!?e_ zI^8R&JpoqE1p6lEx@|4z7?cry4rfv)Vp};jbD{c!0(1hgOR%x)Ob(tbe`1i`R^7`M z+GjZxuKY-PfDg)auLO{9aog@y3$2#{@GO$L`fUD$ih?X5BAyw{^3^ZS;o&G46P$d> z7b5b$lDyq22eq)5X{%8Z`Bm>N?q}B)IhS+jtP#pc?s%4upFx!oihOpOo`*l(^YDS` z{~v<5o`)Zv9)P%yD9mplpWM~+@NalNW|9vc>Y0a`!lMx64G4T=@_;BHPTqSy^WUfa zfA}{9;$t5xasNEa`>tK3?%#W-=X8JG`~F1FBahmIi(jrs6LYGLkKZm>yLRoh)~AW^kA3W8`S5bSNfwTu z@GmcZV%M%+-MB>log*>|-V4Jg#Q$|wF-nU6vlqXl{5HD&+saG4_hNek^sTWze@gC_ zFJYD6?T1f{A8XK0gf+yx_~i>1@S((O7uI|4V)fN8P&rQL-Y**t z#m9%QPkOZQxh#5oKJMkcFId2#M&;$#UhBQf`K9Ey-p5x~w&0qQYpyLT^TOo_B(}B( zbz{MT^74<>*9Y-$SaSo)#hM$|`1tDW4cpf6xjFBh7wR~7A78nK*ZaJj7(bTS2EE%7 zets9o*D+(Z+^08Dwtx@pUR&n#mGJpeG=BJeFTS7O8`i|!zn8vy!^@{{jeKpF?`%#R zUKpRR7nF9=M2#;K34jo+|f0VA$!ul4cSvU2(4K@iTH{0023=aZNF`RJvOFNVi{ zUVZu~k3?A_UmgVQj}hGuFE8hV$Mfe0_(WXR%gv)l9;H5q-zjqUF27s?I{oiNZ8)UN zEHO*XGPB&QFe}X}bDded$b8Uz$ZR%Mrsww_#r+BHAns4iBfB=3&*DCZ`$OELxIe~y z9`~oXKgazQ?yqrwi~FCrFX6s|`#SEQaNpX#!TbQ1!u8``!JWrl{-F(K4(^w6bkc@S z+t6tnI%`8mZRn^CowO%HZl&QE98+vc z%r)ffzW{w7?&G*m;68%IR!!=;oMwV^_{?%%R)qk$^eb_^qnL zVvfK>erR7$LaI|#RaL1ffL(%Z`m`|BI?$0)-q~)xGGkxlgtz?hkD?cdQYAW~9up~g zO`)RTec)9ODe|6y(O0{3Qw`^?)Kpu2#k;vJ(HXbRob%Y3NVd0_#J+gDEo$oQjLY|L zk}a)?`h9Ip_qMj**`PoTEquG8;SM=op`mMcM!6w8S>NZla{QrFi>sXHK7Kyu9QzKby9@X6QZ3mqdDNw)xnCLQ)ENIe|jWq)_m zo~Dl0=?g=H8(Ny$o8uRuA&f;y2zeAx5c2n{Xo7F9OjkvZ^o;g-U;D5Oj2J`82|Yc0 zzVK8pXa8s9INF{ujw5y>D^y-RWb`7GHV4Tmoxy7Xm4UBEv)Xs zrcK{a3UO%S1zrUN6ohz0+}+yTmFT#4T3&hKWnFhHxd<5rSd@yePXQ6(0FQ=_j?R4- zDXy->y=8YM+siuQcPHBJj(3!4B`@Q`{TtP3YG3ynmo-YgER9(}se&fxx>o+!(HDJn$?`dngyS1xfd8cEsD`w|B%FY7?EEiH5qS_B)gDhMTwSsIA((Y0H*|Z5^$5wzfC5HQdy+H{MVu zwXCay?yOD!fhP*szQDH$x*PU&B<^T!i|e<07cE|5-goPwz3;oVa>?@D z@4I!$2j6$=#(y>5Mu;K~L>!1X5OLuDUmTb{i&-gq^VX`ZH`m>~wc2j4t=_?x$v0Hj zuKTcEaO~)z?;U;mS_=$glqdAtMk9PCDm6CBLY1C#*}=Zivi|H?s<&^HB{`f~TemOX z+}hM;cgEv;h<_&iYKC_nt#(Je zHDMRL$RV<)?TfFU&JL1vKH_q_;AN&O#s($onNf|pEM{*?w6)l}-L3oVf^V`K$$md` zMxx0TkiE(-cs4EPzRFss(eywnHBi_4bFXZ_sAGG2V)(6M8O?29iv{n9fpACf5x z86fVzaZ}Bvx{dP1l8Jm~6|kAiJv<9}LSFDI$gJcKzsY&PlW$zhS9f%|h5H04Uw1P0 z`R5*g^6;U#HcveZndCEU?%O5=1dC@ftp2et_3-^EYK)gv7CxOy4e}kh#bvV0NIpJ_l4JuxgK}uJioZV9_O2rxXzy$^Ym-L z;C74|^XYTOeC<_ZetOoJpS{9&B605;C47W$Ne&xx_KYz<$QtvdL1XS8FlKW<-=XX? z=ASagw4LHRlqZe(%U)w{IAP3F$Bnr$Wz0YR#F(-l8}slFjT!lYF&n>c%xAu9%nx7Y z+m$aFv-OxUAAR1KKYG@fZ+zRBW8X67Cr6CwebShoZyNLc$BjAiPsaT1|2F2oechPd zUp1!UD@^|VFJr#-cgFnY7fJ7LjOqU?()bHwR{WVUFMb}lKQ`vv9~pDt58&+Y^ZN+z zzl;C>4Zj`&$8Q_+*$0hz^^?YI`AuU!cfT>21ICnp%$R+@4v)HxIho}9n4QLK+GkAH zUSod$F7k7yF+XlGW~_;CcsB5@&U#~(eAt*Zw~)6w^0VET?OSmlWtB0@ z))+JYdcNJc3fh+&GrZWCAH^uAQe*yVfiVxwBaI?sZux*QtFDGO?}grX8}l7L-ub0D zg!9qPHa_UNk*ZNFRfX$E=X1G#crBNE_|;r)-)JtkbtsoB9n9t4)|bm=PUdn?pUCC@ zGL_4H`p1O-b1rxD_j0)#Ue4u;kL7Z6p3CLNkLGfxkK}ScIGoEp^LQ@z_&?@yU;TP6 z_oaWx<-Yj8aDT`1-;%}`a=9n|BA0vaPjk7S9L(j0AI;^i{KH)Cn%~dm);*HT#ebJH zekYgv%74q{PJTL<`_=!N%hi1%mwV`eT<+L?x!imHOD@;4KbQORy}8`1dvduux^lUv z{!=cuFpt+v_~m#Ve3+FI?+ zkRd}RGnq_8pr8zqk&uv(MMVob|L=3}OcqGMw*LG2d;7ic&JojvANt?$K-NH49(?s56R`4kILnC z9+}I%cSJ5X5HjlUT<*NXa=B%LbGc^+!F^yZ=Yf3x&|I!*02o1{hvae-AkqH0+;m8D zzg+G| zEbUp^wX|<(=hEJ#-AnryJs|o(^n&OI(G#LCL~n@x5IrLLMD&X27tu4KZ$$5i{t-PS z`bhMW=qJ%rqOU}6iT)BjCi+bDn&>ytbE5A=?}`2sJt+E6^rGlT(UYPtMQ@7!6g?{X zRP?IoSJAVgZ$B>j~1SLbES{!98X z>CdEJlm1QmIqC1D-;@4N`a$UrrC*f(QTj>gFQwm<{!{u<=})C!mHt)wS?O=3-EETFm;PS*ec4$4|IOu3`;YdY*&opUqy0zw z@4w6b>vyotG!gK(f48mkV!wWc!~TT>*>|3NdiU@r7Lq6y3>LBS;>cIK?C)^7KnrB}){mkO;R;Jw#|FiKAFt(oeKS=v7 zc=nXcFPUEAQJ$64SC*{wC?%i9^$f+J#bfM;dOSl{uFRhgg}YJ~3;yigySKU;f0SA= zWy%UUzw?iOyc6dqAL*Df#iBeVC7z*(XXuDwLoJK1Q%5?+I>yew4g(p_e9v^HG>a$T zv1n@W2+s=7h{1BZp>p3M*;J7VOrP!;Hf$K;u@sF!`iyPGih@7Hy>civC4bEHj#xPY z$y7rvD=o5D3NH<Qrs|6bCY|8UBW9vJF+5Bw#466?s;Aa39gZI$E64JPj%LCsFJzUFEaeg znHhgRzLFB*DmR}Z@s&(4@^6$bKpNg9UfGJ|d^)xw?2CpLNxX6Ze=8)z6OewRTu@&m z_XEIrux#L5RFW?QW4G60DHM`tKmhqcSVV=2EGfYK2H>jXQ_fd_(+K%~3%FwzL5O=M zOjtYx8%Rq2N2tMS1nx7%GGT%Nz_=>cF~Xb<0@$1WB|gbN+Kt?Af)O7gRO%`${jeC< zJpcfAxgGM08HOoSu9Auc@5VU@pnl4A3+`{YdxlTpE4HDY`6xL_#Q-!HsR#d^dy@v#(R9E^c?irY;8@_Hs#oA&-<*n8N_#NcYo6nT z#Zqqy;rrT`NOeJb$L%bVhQ9pubsa%830H)WQZFCdoO$ z4cKVcQtwe4<-eTEraV%+r|iAcZ1*d{X}SlZ7T-O1@!-1`OKlVdhP#^kLc2d%R&*FW zx2xS3^aKJ(y%(i{&A6X&pS-^5*4~Zskei8SF0^waIa5{+K-d6Ojid*gkuKQ}$UGsR zy)pE}vWqTSrVzK0A8}Inhefne`MxcjmYou-Bl>Qe7L)@H#DE@4bBpec^`uSuH&{w`#1Fsl(bX~T*qyV z_KdrsKkU)Yk$;H~0C3&Re}0b(nI}BRzql_${-ygf^W!Nw*~s4%0Fd-S+l?;4{=i$& zft~3}0-qUyf>GW*LaF)ONPq-L;6Mb%jVnAWT-eW?J8!AHm^E(B4L2(5)M+K%)l1=N zWAh1T``ltYTYTe^(xpp{=cy;zOKd~W+W&U=oz!?+yg&9;dSxt;#9P}5y*8anuC0ox z$o4M|jymXFFX(KeAO=`_;YuTx_$)Z**JI1Mt7R{MGf8VFj&tEco@lEsKpq4K! zU1GP5n>&BLnpV1O>XJosK)ht?7bo6|7vR*DfD2hfGD1sbpHyCi}FC z=-S$JBofkxfx;v=xKink3jIq5!AIW0lE>4jA$R{&-D~ zq?6TpTA_r>qj8@WTbfRR9qYP9ZH11K@9iFiMAXKk6?JcK)VF9Uy|O}IucIcQ zdekP8QI!7rRVg{JYl&ohvvS}(t(?f6>YOvJ>Z;qusyogvRYhlN>dx84DtN=UmF?S) zt6LVHrM~E%t*YeVKNNFZPt@ky(w1ntb_<%Bv?pXYs^Tc|_-1JVK=MW`j;4krqZ|{_ z3bYwLom`KW`bKO+v`R%b!EMt9foC2hV(T|=Q8p{`Q67J*s$va1)z;{>vGSx=scUA< z>Qn_b92K(Dd9ja!!GmDjA8IP_-Egv?iu>}{ogU}>7lpRpnLkbal!0`#kbDBxpetrdG8kGUyDa& zrJ}{7X%s`Hp4w7@3RkYDbTn99rJ@m3XS6#sGPJp5JSy!;+P;$ZZ?rHSMFqtgjjN5( z`1)iOR8bwgjw_U)ELt~X+SG}YCeK1F>rwwYPivADi7k1BYeXTsxZpRsaTQuxU7|wO z=+N7VO+HP@D~$5q;tcyN&Ah6s8Bj;F3JL*l?6+Y-xoq3svD(gtw)SkR_C{+17Ma6( zXDX7cjHL99(L^lTr7n8awi#LB?t=zdVX!IN-qN_krg9@%Yg*^Tw|-ot~VjoLP> z2Zl@a;#{Z}Mmbmh>&qMT9Z|ig?yPqCe7uc&^St@X;cN>T$?PGqJD_)>bh!RHiA71;H+ zko&H8(~LLHW|m$*ABtsZ=~tJ_WAKLJ>k730(Sf765$~Ow%5(B1(#k&5b8;CKPgcl;g@l&`cCIleDkYganK~8|20yzzWhXBOqkB-bEUJaEl(wDRYWf~;;Kr<5SVYN4X`D|)Yg&O zl&&fwQS{QOP0AQ{>F|<*#r;M+xF38*brq4MRMLW%&ib}M6dflzNA%nh$WOZM zSK(O1o)_%Y!AcpGgWLZifgH92-M*ruHPfi{_Do|&Rc1bFXwRs~b}Z$rYOscLeakjg z-q7BH{(hU;;j4AH6nm#NBR=HfHY^}k@GFPkf2u@141qswTSHT}HB+z-u(B>rwXNCK zSK3wWR=mX~3n(HMyfc=;t~K*6mZZ+AM8odAIaP-^{tnp&Nnrin?K!Mf+|&Y}Ml>qk zu(P3EjmI)GA$7nE9w_slBe(rcv)N0Q%)141MN5}0DJ@;r-K>#U{qsu{6g=IyTvjGL zh^GamScqu$!h^+yiN3`Li^{OKuE**`2lHsyWW~7a!BdCP!xFp-`srevJ!jdxTTElG zV3LX267|*FCMH=B5`ugIVu4JA$d7ktLmtYDsJjRA@+kIV#)KxWzg)zc{0 zr86-AnRBzOgNTLdN|!EMT6~N3fWwea5z&%Gixw23`S^Dws{eB(>M#gqLAI#cXliwI zt%7|dlU_+oF0QG-Oka=guO^y`mSe)$eDieQiLA~}aU9}wLPC%dNPgOK6Do%lHn|;7 zs$hBw((o^oeqs7Nzaqy{^)&9ljRZ)51W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq7h7|t}m+=919xC8lLj4OV{BMc07q2O>K!*Yqd48+GLd`iNTX8xQ_J3 z($R6sc#K|N)2lFU?mfVEE{gU5&R%(L=|Jw@gSgAHP6rAv&qf`{{b2F;oqnGYZC~lf zZOt3^asPsQU+FKn7t()j$U8CU?fPrDEAzpJ>%csy<7Ud zlh5Bj``yyNzoT5~;@_)#xAgbwF8r6>S)y98m**8_>u2uNqZ@Hh)<1t{?&OWflkt%K zb$G~rGv1JVVE`6W9ohW^l5I5r(O^CbgFS@yntGaCv-p6h}&XF8DtS;24o7v z4UtFxHONVj$&iclBH_Obk^4#f-+_Fdx63adtS-O&L}U_eYl7LnCaxFqze7}YwVC&?=JRg8p4R0ix$SZT zuRg;KG1BtrqwrFu)F|xcx0yWUbvMa_xIH?upYc?6mzz);0x{Fl^L{5QyZz`+Hym_J z%aOR>k;?uD#Cf%uhpsqJR5!dk6nRtXh8y}BDemqjX%RPJdOH4gx|JPnAFiY&)6?>*d3&X+@fq^F-ctB2d^2PnTGU}C0a|8yP?Z9lY+{2||Yp8K&b z8)CTio`>T)-S*2nC>iyv*ZduO0Jjl+yOj+CiNku&LmA!;gIn)qbW~?K?4Qozoo@S= z5njaXvmKpernA>}G|C9qd)+-^XQq@_3?XK!_B*a6&7=OypG zmfvv)a68IOOE2L>3z#qJN&Oa`f$i(&?q2NVW!8ebDuZuvgGjh1ASXb~S6@#u>iOWy z&`+W5i2F|=QUkh&kKygs)Sbpf^#FGACWaaQ6yyF+KoyLTP7a&gUy}nR={glUXQ-Nb zURV52h!eN}RRUs(nwq&Q8L!|?Xc1Wv2yb_*M|@bf<6L~!1ZAgPqEsvTRFMr=qwAW5 zPld<}8mXkJ)ob2}nM9mC&P=6^R&L@LeB`V~va`eAVc6=@`6KZo&J!kPKuO z!%=D z=4v@um`7fu$Kp5UIxw;xkF4K=cZF+`wbeD%Ak1XJ+7zq_~`D11-% zZcxM_PpB)rT$uDP;P>yW6cT*D{2wfQ*FC!* zb=|-F)vn|JE_Y+;acIx3?I4Z2U%#2${(}U}g6aE)bQc2udwgU{qwl-J<$v4#fQkE8 z9ECSG5+DH*AOR8}fzKC#{eRZFY4&_9*)s3Oh5zI#7)Chbx1hPD%Vy7;|E~l$7S8DT zyHj7d`bhZV*~^wJT4?^p^-l&hm#Hb9KktUp!Vh_U#qe2O?;{gEF%+BYGMVy-Q46?;ZC=*qu@5UGftUS?Q$F5!wo*W+>D>Hj_y62 zvC7-XPPd-nB-QdWqRb%lH+}-@ydQoT=-X`o@`b76GW_s^Jj%~QUEv1z?N)|a$9(=| zGQS6xGOWqi&8;UFOk;O*>lqGr$B#w@);+@sLHO43Bh+tji0uQE-=iB*mNHo`Z1mpT zqAZ;wuNZCL^OBFyoEOxBAIx}#a2nbh}o>nzc}r4Gk(QE zWi$8vu2Z|;Tg1?aMuXFIx!0UhAGUz1;Jjb}h4e%fU=gEefG|2tqJjHP9J)G#bzTzBkfH>uWjlRMSgxf&$JkX%|{C&SOfAYvg zUv83z<9iP$k8Y?zCbN9+zw-S&Yoqr#tkX^U&n`FVJ-Wh4Np!hM@6qLklP));QI&~R zAtB82n~VF|mx?bbhmmlXJDI&eSDeTLdO%S`l7FGp>1OmLV44pnl)Bs`&c58Fj8KNX zhLb+F4>zNSmtG!T5LVV*?!2EoZeY0g<|biK2m1`yhnqq#ZlqE2-(ULWuKNj3toUry z&wb0!u!`i-5A!jT9%W?ML0xV=%2w_tt4M>jbQrQ-@N|h%njDE6n8HmSCFv>$DVMzU zh7LyDWV1;)Y<7Fzy6MFYp9-l;R^dTq^K%gR;DEvg7889&Z|rEwyednJ zzn5)mYiMcCG-*ZC=iPYIvf_z18egu#f{|lXZMOBD><;ajcn7}Al4*WbRcD&_<{Gu4 zixw?fTH4L)SS^iwr^l#@+_s#SZox+fo~doj$UP!iEM%T(E<`^SJ)0SKdv+HtKcm;T zx3sj^XWMr-G`_0hpKQg45t{aDMUyZ%#D@a3Y0He|JICPO?;`1XYx^rZ)w;}%R;;a# zB~pv7gauSORx8hL@7USAC!7D+!59^3%52k~Nwm~A>~2BCwe46|y}4a0x@^&+o97`w zBHOZSPkZy89b?op>twZ59BQqZw%u5Ky+LbkXvD(oJG7mdcN!YTY2}&bMr|j)N%JZ^ z>sS+dlvdT=qP2IlYmF^P$zH6_y1k*fB|J)tv}NVf3ylq0+b7#HqYxmC4>4%jZP^d^ zY7cApX3k!m$|CO{%I6>C&e?bOO2o-snXwwygKyo_gm2-rwYN63kJ5ClevhmZU!QGl zXljt?lJ7Nq(2!|vAFI{3Wp`>HW_E&OTVu;REeI@$)Fcmv&v#lzA)g)ZW}6zcoVKeq zQ@<^PmF2OBY(tYIwWVGA7}+qBS-z(}lWiZTRcG3>J2UMKyR&VLnH(0TZQGS?ZEMKk zLp^fRo@xG|p+VBq3{v%NuSn8SajWzyEv;7-r;~^|xeLqUYOM|Mg%A25d^Y=jrm119 z*4EKzFsYOpSD)Pm1iO)f=FGMhZR?(<7Oib7$^a=r@a#ufx#xRLExWS#G6rt**8A|@ z(T+v(LF9dSYCs5te6K0{VFq5bdabP~yRGAsj~b*bwj-4IGopxn*H+CR`tte_#_V%m<+M;2xUsQ+fNUp@6=uBt5e0)P{ zYI8QL?Z#5TNU#8IXv#>ybbSjxXN1fmL7A=DEN=KQ7W!}5xi?=q8nj)Rwhp60)xt-n zu>s|g*(n*@)gr6?qP=xU>9iXu8mn!qZ+IuOqaDtfHYwaX4Id22X)Wzd4ZE9BPO?C7 z1}Q`fK&IO}KGB-8+a*z0T)45NDcfeGOE>BPJ`&P`j}z?ffNR^%miE>xJm$$EphVRn z_lWESN1bM6YV*%BO1&Z6-a%1IoXj)+P ziPlbrSXXttaGew%QhMJ$#iV*5VDcB zS5QjLXmg{`=-=tk8as=uLvGiyHMbplrKNq3k-)Z`WTYnBEHzj@wSWR@+bc<|Y1y$& z0BqayVTW=5`s}-CPxUR^w{^U4lzwu@*nDZ30UNppl$z2iEpAssealWsnOW&uwl;S( zHJ}BDwPduOWoQe`@ssE_q1L)Rmimql(SYT9H!Zt%wKPN7x73eQDWeTG zpq*w=8_m{&UgATj%st30v<(P!HZy#LL)tQ8&vdl!@#VcqwldJeQa|??cR*^<&Q%o} z${r~7ogHm0t!Uyq_n@^y?LiwG8ch0u%ue(sC_^>F=pskW(kh!8q(sp4n$VhCTcof) z%s|UD$cH}+I_NM*Ve$Fs8>6(?_7)`aT}jiGgdb_U zd!$li+SK}NBZ2{GYs;<McXVN_z z=^LZoFfQBk$(0J38KcsupIVWl=f#wCB3hBtxN1~g_>8onmuzn^qtl9}-L&Y|xr=UH zI7S77L2chpSjdOiV0Gc+P>%fDZW_EDb+|Hmb>rUh`6q3qmdc>P`ZSf?`cXb^^u5qb zNM06~Bbg7OHQ_&C(KlKQhx$FZMP?S-ywYk>C`Qs|RHJ4!%t9KDI=t`!nHFh{ z^5Gb0GU?H!GlB=yQ&G)LhE_zj)UZ!V)EN-jE`(eTkuj3&W$bx3jQg{5C3ulyvRc`1 zvieQ`$!Ze(Plt%DEH5>P|EZ8`AQJ9b7~xkU%*_b13Sr(vnC0;Q9f(-$7%Lfm#R|ux zsYZBtc=c|Cc?@CRMwlZGnXG;e|1Uvgyd!B5zcRj&bQVG6LCF^oCXFz|aF2-ylY;-v zkO6Q%4^j+q=Z|gJ%Y&8c5oQSPaW29vMwlG@55YA_kHjnfB#m+$fTRY=xDNS7nB@rb zYlJaJ6ek-Dgg%bJ_G4Kx@Pu8SYs9-G|3j8nKv zTFvV?Fh)~Dj6BP@N*If~+}CtF%s7`g#ZCN}Zt{0z{@9F9;*_xFCMCT=2fUz6_9#{DFxk}tV0HxeKL66lRU;S&zMx&2GmWH!ZTVfUSF@>g~L6O~Q*5;_bdKTrcd!t?;d!YjN@qoWF;?9LqcFg>&&UHh=Ai;gi+r z5Fg|s$c>QOArC^HhEzb_gfu}8IUYta3|leQ#rPIuT8v{cc8iBiR({AAAy+`=K)wq3 zCgfqrbC5NV4CDhy1%@fDm^8zTZ%e((PZO`kjdw>G@fB98HfHdT|U&o*h*4Xv0i zRXWDl&02ZOJDGMlYielAXqfLs6!=IL{$kE@r`BHI@(Bhd+p?|iHg<$Dr)*C1V4?@Z z6pS}_W}8~ZsXF7Mm>4HvT#IRpU6``ONNAigrkk`jnasiD%+~C74bzdBT^*;QZ5X*@ zb_jEZ7^J~{n|w38rUj$jtsU^&R^Ng-*oLM(VO5Dlw|>|l!>~PB&5j|LOw7n6#a2vR z?UjKwKA_uSxNOhhGnMa2OQXRD*X8@c~agg2jr=&)S1)%;Nd7D2UEhHGzkph1L-yS?T#y+VOb!_xChS?G6O~yLdF}ah zh>XBtw;Ch$(b&s~US@E_62-5o#z6LMB0~QhIGd zt(Q;MuE)2}5>feUEw*};)mv;Zrty#h302MB-r*)+Fzk8F?{&z&oxqoN-cj?zPw5riBy`g@0 ziAA~2d0E{%=_|@o_LjQt$A0A*|A0Dq~lPuA*b9KC_5e5^4CMGRG*|7u}f1s=`7`g1U7@CteyUv|d&a(ZNQ zI*R8p(ulcAPj5-rZc!WHFJ4!vt5;5i%?n9D{@HE+&VKQ2OJ*;aH@9FqnB9Hf-mb@^ z4ZVK+@!zTH`xe7Ln=AVNv;@os@U7U|1(q-0IYG|)VjsybU=T~`)iGGjDZLW)F&4%0 z1$aWpsF^jX*qhO~+K^7^ZzQm!qSR2+3NbF}(llhnMfpx=Md1KJH!B$Gno;q^KB>}c z^+aq7`Zqj?l)$18aw{yu*m-XFjBHXdG#Yegb+uK>ryd(MS?z$l4>|O7vn7Z!5Y;5| zS!^b){bQ2r1$KS$+dmYqd=>=upsbHO0|pah5@ZHsDdc;QUqW7m)Ipjchm4-w%ljbL zFURMMZ(6i$rt#cxet@&T#_RMpf6?r@c$%v)6gq%Ui51GRFCE$$ou$y%gy+mleDag}wyx7^DKy3>khVtZK+y$i0w1LEeTO{e{U! zLl#>`tb7qU7F$O|j+;cCzn0?|uxY49-X7C4=)ai1?Rlnf!4p z_HtYXDNtNKciy6zHD-xx!YN+7e8J*zx6Zx=k7-tINT#t%RKaZTX@+31 zD7HM*WqCC2lSc;({hL3HZd@fw)?6mnSf|EVu?DN>RN_%j9~R-Qjh1gwHaRlBmaJn` zphY%GH1U{e>l986?Ov&4=ussfYK}%==O9WLF=G1Y=~ObYNg2!LR74Ze)rJ@J6{btx zXV*D~uoZQ0Z;Y+Q)2N6Gy+F4sX0*6ghe)-&gLEa4O||J176H;$*z&i;B`iF&A({{b z=~x8o1ZnxcLr0e*eOL`TrD_}}q7_JNT@C!o0>t_J#%f`?9LicRR0Jq$#bFIj~(kn!BWIjAY0%~q&y zT`$ZPUci`XEWuf5-KegrFcy$I%lUz}1H`)+?*`4AGjB1zQQv7x=8)|HXXDWdNcS&* zuTI7A3~~$=0R!0-%26gk$~VQOuvBslOp~bD29)sx44#L4MIJxHv#7=+Cgbwo_|}lr z2FMFYc1?@<6lQA{&vkCcgl}^Trdj2woV^FiP_J(L=TctXSUR)wC6m79;!JN#Z(DHv zqAr8Fz*xprGJ7EBV$2A4xhCgwT{gK^a4-0mu~^}{jK}6eL}$skO~z$110p(2o*R*= z`@!&Z9R_*wtjbiJi~ki689g13$XCb>ut~fUPPXpH=9Qj*)0w~}cs(O~A}#3q&2%j2;(bu@FCtmvH5H73ToPhzZ2 zV&cmP9ZkS?t(0fop%rilZ2)z)X#>p6v}UTNH=~Jk%BNwuE)6StCv<6Q>%b%acDcR< z8Y`u1*j8AfV{jOWAtK{~tuT2Ksfxe7UerP)pRhVS-2;D^la9x#lL=J?#RyU7PP`1) z6G@qn&M#+Hg$M1SL8``1R@IO+WCJ7v*#>EbbU^;uZU6d->EByQmmIu;=KbwcLkstp z68^NMSqLNk3mQafwbWXvO|l)x&Gf;)BtQZrKmsK2pCuqx(jzdVieTD^r8EW8-SRt+ z1{n=0f{caS57_|G(3#x?5nIz-zEpFru&e3>%++)>j$fi>)+sH;-7 z(dy0WIOk+F5^@^kOvreM7jiyiI^;UY&5*@%eitTI}SCoN)8BT9L# zQ)+SHw`FsLkKYobRT!EU8;P4Vd+EG|izb0UiLum;aq&O#X96(Y4>{N-?Uow}kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ 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 Wm)%TRgALOfK0fIG|Mmae7x*6t2Ed2_ diff --git a/poker.obj b/poker.obj index 1a3aa40a62cab769de54717c883f1106997da985..3dc0b5f7901ceb5e9b9a7904d9aa027c524410de 100644 GIT binary patch delta 175690 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 EKhei!y8r+H literal 1072156 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%0AP3R!R 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 z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq 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

Y@C+QC*{n^>3(^wuYb;Jf^;aXjsX8?f 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 EKTN(FXaE2J