6,136 Commits over 3,806 Days - 0.07cph!
Make sure SourceTV bot is treated as bot in game code
Fixes garrysmod-issues/issues/5575
Added navmesh.CreateNavLadder
Arguments are: Vec top, Vec bottom, float width, Vec2D dir, float maxHeightAboveTopArea = 0
Weapon:GetTracerOrigin is now called for 3rd person view as well
Fixed a regression with spawnmenu "no models" message
Safeguards against malformed .gma files
New VertexLitGeneric parameters
`$AllowDiffuseModulation` and `$NoTint` - both allow disabling color tint per material
Vector:Mul() now supports VMatrix
Remove OnPlayerLand hook (OnPlayerHitGround exists)
Enable connection reusage for HTTP
Speeds up subsequent requests
render.Push/PopRenderTarget overflow/underflow safeguards
Also made certain render.Push* function overflowing not crash the game outright
Adjust "Failed to find any models for this addon" error
Mention what might be causing the issue
Added OnPlayerLand/OnPlayerJump hooks
Arguments are `Player, number`, where the number is the velocity/impulse of the landing/jump
Should these 2 hooks be combined into 1?
▆▋▊▍ ▊▆▊▍▍▊▇▆▌ ▇▋▄▆▋_▊█▅▌▉▉▋▌_▆▄▋▆▄
Undo changes to input.GetCursorPos
Causes issues with spawnicon editor, and probably other addons too.
Delete serverplugin_empty.dll
Fixed crashes when accessing out of bounds flex controllers
This fixes crashes when rendering spawnicons of models that have more than 96 flex controllers. Probably fixes other cases as well.
Fixed Player:SprintEnable not working
Also made Player:SprintEnable accept a bool optionally, and added Player.IsWalking
minor changes
Merged Pull Requests
* Improvements to DComboBox
* Improvements to MatSelect
Minor adjustments
SourceTV players are considered bots for player library
Fix npc_rocket_turret spawn position
Experimental: input.GetCursorPos returns 0,0 when cursor is not visible
This matches behavior of gui.MousePos()
Added .dem and .vcd to file.Write whitelist
Rework and deduplicate Lua enums
Added COND.* enums
Added render.ComputePixelDiameterOfSphere
▅▊▉▋▅▊▅▄▅ ▌▍▌▋▌█_▉▉▇▌ ▄▄▋█▉▇ ▊▅ ▋▍▋▅ ▋▄▅
Added SENT_AI:OnTaskFailed and others
Added NPC:GetIdealYaw, NPC:GetArrivalDirection, NPC:SetUnforgettable
Added CNavArea:MarkAsDamaging, CNavArea.IsDamaging
SourceTV fixes
Player.IsBot now returns true for SourceTV master client
Prevent tv_enable going beyond absolute max players
▍▋▉ ▆▇▆▉█▉▆▇ ▋▍▅▇▇▇ ▊▌▉ ▆▄▉ ▌▍▅▉▌▆▊▊▄▅ ▇▆█▅▊▇▌
! ▋▍▉▆▉ ▊▊_▉▅▍▆▌▇ ▄▅▌▆▊▇▆▋▊, ▅▍▉ ▇▉▊ ▍▍▅▊ ▆▍▌▇█▇▆▇█▍▊ ▇█▌▊▅▆▇▆█
!▇▅▅▄▋ ▊▊▆▅▄▊▆▋▊ ▉▇▆ ▋▇▌▇ ▍▌▋▍▌█▊▊, █▇▊ ▋▊▆▄▌ ▋▉ ▌▊▄▆ ▇▇█▉▌▆
▇█▌▄▍ ▇▄▍█▌▊▍▆▊ ▊▋▌ ▍▌▅▅ ▋▇▉▌█▊▆▄, ▌▇▋ ▋▇▌▇▇ ▍▆ ▆▍▊▍ ▄▄▋▇▉▄
Added 6th optional argument to util.ScreenShake - AirShake
defaults to false
▅▌▄▊▅ ▄▉_▇▍█▌▌▇ ▊▋▊▉▆▋▇▍▍, ▇▊▇ ▍█▉ ▋▌▌█ ▋▇▍▄▉▉▄▉▌▆▍ ▇█▍▅▇▉▊▅▊
SourceTV crash fixes
I cannot promise it will function, but it at least doesn't crash
Added 2 optional arguments to util.JSONToTable
first - true to ignore the depth and breadth limits
second - true to ignore string to number conversions
Fix networking of low bit small floats
garrysmod-issues/issues/5552
Remove unintended debug print
Add fallback sounds for EP2 vortigaunt attacks
Add fallback sounds for EP2 vortigaunt attacks
Port some thread pool changes from csgo, should fix linux srcds not having them
Remove unintended debug print
▊▌▄▆▄▌▍▊ ██▍▍ ▌█▊▉▊▋▅▌ ▆▆▌▅ ▆▇▅▅
* ▄▋▋ █▇▄▉ ▆▇▌▆ ▄ ▋▇▌ ▇▇▌▍▆▉▄ ▋▋▍▄▌█ ▍▌▍▊ ▋
* ▌▊▋▊█▊▌▌ ▇▅▋▉ ▄▅▍█ ▉ ▌██▌▉▍▄▄█ ▆▅▅▇█
* ▍▉▇▌ ▋▄▊▌▅▄█ ▅▌▄▅▍▍▍ ▍█ ▄▉▆▌▇ ▊▋▉ ▄█▊▋▄ ▊▌▍▋ ▆▆ ▇▌ ▍▆███▄ ▄▍▉▇▆▅▍██▇ █▉▄▇▅▌▋
* █▊▅▅▅▆ ▅▋▋▊▉▄▆ ▋█▌ ▊▋▊ ▉▄█▉▅ ▆▇▊ ▇▊▅ ▍▋▅▉▍▋▆▌▌ ▋█▉█▉▇▇▅ ▉▍ ▊▇▊ █▆▊▍ ▅▍▍▌, ▊▋▅ ▉▊▌▍▋▋▊ ▊▌▍_▍▅▉▍▍▋▌ ▅▄▇▍▌▇▆
* ▌▌▄▊▆▌▍▄▊█▍ ▍▉█ █▋▆▄ ▉▊▉▅▅▄▅▆▄▊▉▇
▆▋▆ ▊▄▌▋▄▇▍▍▌ █▄▄▄ ▆█ ▋▆▅▌ ▆▊▊▋▋
▍█▄▌▇▉▆ ▆▆▊▌ █▉▄▆ ▋▊▋▋▊▄▄ ▅▍▉▍▇▆▇█▊▍ ▇▅▌▊ ▆▄ ▉▇▆▌▌█▇▄ ▅▆▌▄▊
▌▍▄▊▍ ▇▅:▆ █▅▍▌▋ ▍▍▄█▅▉▉ ▉▆▇█▆▆▊ ▉▉▋ ▅▇▇▋▋▍▆
▉▍▇▅▌▄▅ ▆▍▄██▍▊▄▇█▅ ▊▉▊▇▊▊▉ ▊▊▄▉ ▉▍▆ ▍▌▌▆ ▆█▊▅▆ `▅▇▅` ▆▄▉▄▄▄
▌▊▄▇▊ ▆ ▆▊▉▅ ▇▅▊█▄▅▉ ▅▌▌▄▄ █▉▇█ ▍█▇█▅▊▍▉▊ ▆▅▉ ▆▊▍▉▍█▋▄▉▍▄
▄▉█▆▆ ▍ ▌▆▉▄▅ ▆▋▆▄ ▄▋▅▄ ▋▋▍▄▌▆▌▉▅
▍▋▆▌▄▇▇▍▊-▇▋▉▌▄▊/▉▄▇▆▆▌/█▍▍█
▆▇▄▉▉.▄▇█▊▆▋▋▇▆▇▍ ▅██▇▉ ▌▋▇▉ ▌▌▊▆▆▉▌▇█
▌▄▆█▄ ▇█▅▆▋▍▋ ▋▅▌▇ ▋▍▉▉▍▇▉▋▄▋ ▅▋▆█▋▌▇▍ █▆▋▋█▄▍▇
!▊▍█▋▅ ▋▌▍▉▉▇▋ ██▉▉▇▆▅▊ ▍▌▄▄▇ ▋▋▉▉ ▄▉ █▊▉▋▊ ▆▇▉ █▌▆▌ ▆▉▊█▍▋▆▇▅
!▍▆█▌▌█▇ ▇▍▆▇█▍▌ ▅▍▊▌▆▄▋▋▋ ▊▍▌█ ▋▇▋▋▇ ▋█▉▇ ▅▍ ▋▌▍▆█▊ ▍▇▆▋ ▉▉▆▍▍
▆█▆▉ ▋▌▄▄▉ ▄▆▉▍ ▋█▇ ▌▋▋▅▇▄█▆ ▅▋▉▉▊▆▌█▌ █ █▄▇▌ ▇▄▊▌ █▆▆▅▄▊ ▋█▋▋▉▌▊
! ▅▍▍▇▄ ▇▉▇▇▅▋_▊▉▇█▍▍▇▋█▉ ▊▆▍▄▊ ▍▋▆▉ ▄▍ ▄▋▆▅▇ █▇▋▅▉ ▄▄▉██▆▇ █▋ ▇▋█▄ ▉▋▄▇▇█▋▄▋
▅▋▊ ▋▄▇▊█▄ ▄▆▍▊ ▅█▉▆▊▇▌ ▌▊▅ ▊▊▋█▇▅▍
▆█▉▆▍ ▋▌▋▆▄.▋▆▆▋▅▅▌▉▉▋
▅▋▇▅▍ █▉▄▄.▇▌▇▆▅▋ ▋█▇ ▆▋ ▋██▇.▄▉███ ▉▌▌ ▋█▌ ▉▅▇▆▉
▅▌▋▌▅ █▍▅.▄█▊▉▆/▌▍▊▇▄▄█▍▅▉ ██▄ ▊▌▇▅:▊▅▄▋▉/▍▋▉▅▊▉▆▇▄▌
▇▉▌▉ ▅▆▄▆▌▉ ▍▆▆ █▅▋▅▌▌ ▋▉█▉▇▍ ▌▋▌█▌▋, ▌▉▉ ▅█▋ ▆▅ ▍▉▌▆ ▅▉▋▉ ▅▄▌███:▆▇▌▄▉▉▆█▆()
▌▄▌ ▅▊▊▆▋▄▌ ▊▌▅ ▊▆█▋▆▇▊.▌▉▇▆▇▆▆▇█▅▋▍▉▇▄▆▇▇▄▍▌
▆▌▉ ▌▉▅▊▉▉ ▌▆▌▌█▆ ▊▉▋█ ▇▍▇▍▅▊▇ ▌▊ ▄▄▇
▆█▋▉▋▌█▌ ▅▊▋▌▇█▄▊ ▍▋▉ ▋▊▊▉▍▍ ▌█▅▅
▇▄█ ▉█▄█ ▅▌▉▋ ▅▍ "▇▋▅█▉: ▊▊▊▌▌█'▇ ▋▉▍▋." ▊▌▇▆▊▋▉▆
▇▍█▉▉▅ ▅▌▉▊ ▇▋▋█▇▌ █▉█▅▍▅▊▉
▉▇▆ ▋ █▌▇▉▆▌▅, ▊▆▄▅▋▋▊▋▅▆▅ ▍▅██, ▌▄▇█▇▅▆ ▌▄▅▍█▇▊ ▆▌▉ ▍▆▊▊▇▇▊█ ▇▇▉▆▇▇
▄▆▍ ▄▆▅▋▉▄█ ▇▄▍▌▇ ▇▅▌ ▇▊▄▌▌▌█ ▋▊▍▍▋ ▊▉▊▌ ▌▅█▉▍▊▋ ▇▆▆▆▇█▋▅▍▆▊
▍▋▆▅█▄ ▊▉█▌ ▉▆▋▋█▅▄▅
* ▍▉▍▋▌ ▋▊▊▉▅▆▍▌▍ █▄▊▌▉▋▊▇▍▇▆ ▍▋▍ █▉▌▇▋▍.▄▋▊▅▍▉█
* ▌█▉▇▉▍▉▋ ▊▄▉▊▆█▉ ▉▉▉ ▌▍▋-▅▄▆▍▅▌▍ ▋▇▉▍▍▆▌▌ █▄ ▊▍▅▅▌▉▇▋▉█ █▆▅▊▄▉▋
* ▊█▆▇█ ▅▊▄▇▉▊▊▄▊▋▅ █▌▍▋▉▇▉ ▍▆▊▇ █▉▆▌▌▇▉ ▅█▅ ▋▅▋▉▄█▍ ▊▄ ▉▌▋▄▊▋▅▌▆▇▌▇▅▌
* ▋▅▉▄▋▋ ▆█▉▇▍▋ ▊▅ ▆█▌▉▆▅▄▉▋█ ▉▄▋.▉▆▋▉▌▊▇▄ ▇█ ▇▆▌▌▄.▇▇▄▍▅▍▊▋▉▇▄▍
▋▆█ ▅▉▊▄▋▆▋ ▌▅▅▇▅
▅▉▇▄▊ ▍▉:▅ ▇▄▅▅▆ ▌▍▍▅▅▅█ ▄▄▋▌▅▋▆ █▋▍ █▅▍▄▅▆▉
▅▄█▄▄▆▆ ▌▍▉▆█▍▊▆▆▌▊ ▅▌▉▌▌▋▄ ▇█▊▄ ▆▅▊ ▋▇▍▄ ▊█▄▋█ `▄▆▅` ▄▄▋▇▅▌
▄▇▄█▄ ▇ ▆▋▍▊ ▌▉▌▊▇▉▋ ▉▊▅▊▇ ▊▇▇▉ ▊▊▋▍▊▅█▅▆ ▌▊▇ ▇▊▌▌▉█▍▍▅▉▋
█▇▆▊▍ ▆ ▋▋▋▄█ ▋▉▄▍ ▄▋▅▊ █▉▍█▅▍▆▋▌
▆██▇▄▍▆▊▇-██▌▉▄▍/▆▌▌▇▌▉/▇▅▌▉
▅▆▉▍▄ ▋▋█▌▉▆▊ ▅▋▊▋ ▆▊▇▊▌▍▉▄▅▆ ▅▍▍▆▌▆▊▌ ▍▊▋▋▇▋▋▇
!▊▉▊▊▋ ▅▋▄▆▊▌▅ ▊▆▋█▋▋▉▋ ▉▊▋▄▍ ▇▋▍▍ ▉▇ ▊▌█▆▍ █▉▉ ▍▅▌▍ ▅▇█▅▋▍▇▄▉
!▅▍▋▄▌▊▊ ▇▇▌▄▋▇▆ ▇▆▍▋▄▅▅▊▊ ▋▊▉▊ ▉▆▄▍▊ ▉▋█▌ ▊▅ ▅▋▍▆▉▆ ▋▆▋▅ ▅▍▋▆▆
▌██▇ ▄█▆▍▄ ▅▇▍█ ▆▉▋ █▉▋▉▆▆▍▄ ▇▍▇▋▉█▇▆▊ █ ▊▇▍▉ ▊▋▍▌ ▌▄▆▇▇▄ ▅▇▊▇▍▋▍
! ▊█▇▍▅ ▄▉█▊▌▄_▇▍▉▆▋▍▍▄▊█ ▇▌▌▄▊ ▇▉▅▋ ▍▇ ▌█▄▍▊ ▉█▊█▇ ▆▆▅▄██▍ ▉▊ █▍▅▉ ▇▉█▍█▋▍▆▌
▌▋█ █▉▇▅██ ▇▆▄▄ ▊▋▄▆▍▊▊ ▅▉▇ ▋▍▋▇▅▉▍
▍█▅▇▇ █▉▍▌.▊▇▅▍▊▍ █▆▍ ▋▍ ▆▌▆▉.▋▇█▊▉ ▌▍▄ ▍█▇ ▋▍▋▆▇
█▆▄ ▄▇▍▉▋▌█ ██▇ ▉▋▅▅▉▊▄.▍▌█▄▊▇▆▉▆▅▉▉▊█▉▄▋▆▆▋▋
Merged Pull Requests
* Fixed duplicate definitions for Player.GetTool
* Improved support for non-English messages in DTextEntry history
* Fixed DNumberWang passing both strings and numbers to OnValueChanged
* Change usages of deprecated gui.MousePos to input.GetCursorPos
▋▉█▄: ▍▌▇▌ ▌▋▊▄▄ ▌▍▆▅▅▄█ ▅▆▇██ ▆▆▉▆▅▄▊ ▉▆ ▌▋▆ ▍▇▇▌▇█▆▋ ▌▉▍▋▅▅▊▆▆▊▉ (▅▄▉▊▊▋)
Reduce NPC name translation duplication
Fixed malformed HTML
Reworked base kill feed
Portal NPCs
Only populated servers contribute to gamemode name
This is experimental and may be rolled back
Update ClientScheme.res
This is for nav_generate UI
More NPC class name translations
▄▌▆▄: ▌▄▆▇▊█▄ ▄▌▅▊▊▇▉ ▌▍ ▍▄▌▆▊ █▉▍▌▌▋ ▆▍▄▊▇▌▌ ▌▆▍▌▆▆ ▍▍█ ▋▍▍▅▉▋█▌ ▄▄▍█▇
Use doubles for physenv.GetLastSimulationTime
Add portal scenes just because we can
Particle precache for portal maps
Add file path to "ERROR: couldn't open." warnings
Ported some portal entities
The 2 turrets, personality core, fizzler trigger and security camera
RPG Missile stops its looping sound when removed prematurely
Added net.Write/ReadUInt64 and File:Write/ReadUInt64
They accept and return string values, and can be used with Player:SteamID64()
Added Angle.IsEqualTol
Apply file.Exists fix to file.IsDir for Lua paths
Fix custom HTTP methods not working
▆▅▅▉█ ▇▇▅▇▇▆▄ ▊▆▅█▍▆▉▆ ▌▆▊▆▍ ▉▋▌▅ ▊▉ ▍▄▊▋▇ ▄▄▋ ▉▇▉▌ ▆▅█▆▆▇▄▍▉
!▅▍▋▄█▌▉ ▍▊▉▍▊▌▇ ▍▍█▌▇▌▉▄▌ ▆▇█▅ █▆██▅ ▋▍▌▅ ▍▊ ▍▆█▌▍▌ ▊▅▇▌ █▇▋▉▊
▄▄▄▄ █▋▍▋▅ ▊▅▄▌ ▍▍█ ▌▄▌▌▅█▊▄ ▄▊▅▄▆▍▍▋▍ █ ▊▍▋▅ █▍▍▉ ▇▆▌▋▋▆ █▇▊▆▍▊▉
! ▉█▄▍▌ ▉▍█▅▊▇_▅█▆▄▋▊▊▌▌▊ ▅▇▆▆▍ ▍▊▌▆ ▋▋ ▆▌▄█▋ ▆▊█▄▄ ▅▉█▊▆▍█ ▊▄ ▊▅▋▍ █▄▌▊▌▉▇▊▌
Panel.GetNumLines works with TextEntry
Fixed crashes with filesystem printing warnings
Fixed HL:S skill configs setting HL2 convars
Certain conflicting convars from HLS were given `hl1` prefix
Fixed a self induced crash with KillFocus and OnLoseFocus
Fixed a crash with text rendering
garrysmod-issues/issues/5554
Fix malformed HTML in menu files
Servers with more players contribute more to gamemode names
Reworked base gamemode kill feed
* Now uses only 1 net message rather than 5
* Friendly NPCs have a different color
* NPCs killing another of their own class name is no longer considered suicide
* Custom Vehicle and NPC names are now displayed properly in the kill feed, for example npc_citizen reskins
* Deduplicate NPC name translations
▆▆█▍▄▉.▄▉▋▇█▉█▉▄▊ ▊▇▉ ▆▇▆█▊▇▉ "▇▉█▋▌▊" █▊█▊▆▌
▅▋▉▇█▋▌█ ▉▉ ▆ (▋▌▆▇_▄▅▄▌), ▋▉▉▅▉ ▅▄▉▋▄▌ ▅▇▇▋▆ ▋▋▄▋ ▋ ▋▍ ▍
▌▆▋▍▉ ▆███▌▉▆▊:▉▍▆█▅▅▇▋▇( ▍▇▄ )
▄▉▇▅▆▄:▍▊▉▇▇█▅▍█▊▇▋█▌█▉▅▋ ▋▇ ▊▊▉ ▆█▇█▍█
▋▄▆▅▌▉▊▅ ▆▉▌▆▅▊ ▋▇▊██▉▉ █▉█ ▌█▇_▄▆▌▄* ▄▆▉▋▉▄▉▊▇▌█▍
!▅▍▄█▄ ▋▍▌▍▍ ▇▍▇
▋▍▋▋▉▊.▊▄▊▄▊▋▋▄▇▄ ▆▋▉ ▌▆▄▇▇▆▌ "█▌▅▍█▇" ▄▊▄▊█▅
▍▆▋▅▍▉▇▉ ▅█ ▅ (▉▊▌▊_▌▍▋▊), ██▋▅▋ ▍▋▉▆▊▅ ▍▋▉▄▋ ▇▄▅▅ ▋ ▍▋ ▊
▍▋▉▆▊ ▋▆▊▇▍▄▋▆:▄▍▅▅▄▄▌▄▉( █▍▊ )
!▄▇▋▌▊ ▍█▋▄▅
!▄▇█ ▍▉█▉▊▋▉
! ▇█▆ ▄▍▍▊▌▌▊ █▆▊▉▉██▋▋▍▉▍
▆▌▍▌▊▅:▉█▉▌▋█▇▊▄▊▌▊▆▉▍▇▋▋ ▋▍ ▇▄▍ ▋▍▋▍▇▆
█▅▅▆▉▇▇▅ ▉▉▅▆▍█ ▋▍▄▊▄▄▌ ▅▅▅ ▋▋█_█▋▍▍* █▄▇▊▉▋▇▋▆▉▆▅
!▆▉▊█▊ ▅▌▌▄▍ ▆▇▆
▍▄▉▋▌ ▍▇▊▊▋▆ '▉▋▆▅' ▋▌▌▉ ▊▄▍▉▅▇▋▆▍▅
Clean ups
Duplicator copies sub materials
lua_find* access restriction adjustments
Player:IsListenServerHost is now shared
Stricter access control for lua_find* conncommands
Allow CNavArea:SetParent( nil )
render.RenderView now accepts "viewid" option
Defaults to 0 (VIEW_MAIN), valid values range from 0 to 8
▍▇▅ ▅▍▇▇█▅▋_▆▌▇█ ▊▍▋▅▋▋▌▆▆▄▇ ▌▊▇ ▆▉▅▋█▄▋▆▋ ▇▋▌▆▄▅ ▅▅▊▌▍▇▆▍▇
▆▆▋▋▅▅▋▄.▋▄▅▉▉██▆▊ ▇▅██▍▉▋
* ▅▄▍▋▄▋▄▄ ▊▌▉▅▇ ▄▅ ▊▉▊▅ ▅▌▉▉▊, ▅▉▆▍ ▄▉▌▆
* ▋▍ ▊▄▅▄▍ ▄▄ ▅▍▋, ▍▆▍▊▆█▌▌ ▌▇▌ ▉█▇▉▉▉, ▄▍▄▍▆█▇ █▄ ▉▉▊▅▄▋▉▌▋▍ ▊▉ ▊▉▊▄█ ▇▄▄▉▌█
██▍▅ ▌▋▊▌▉▆▅▍.▇▅▋ ▇▅▄▊-▊▊▌▍█ ██ ▌▋▄▆█▉▊ ▄▅▊▄▊ ▋▅▄▅▄▇▉ ▉▇ ▍▋▄▍▄▍▆▋ ▉▉▉▊
█▌▌▋▇ ▋▉▇▆ ▄▄▆█▆█▉▉▌▉▍▌ ▄▍▍▄▇█▊▇▆
* ▉▄▉▍.▆▆▅▇▋▉▍▆▄▌▋▋█▋█▊▆▋▍▊▌▇
* ▌▍▋▍.▇▍▍▍█▄▋▉▄▅█▆▅▍▍▊▍▅▆▆▌▊▅▋▄▌
* ▄▌▅▌.█▆▊▋▆▍▇▄█▊▄▍▋▆▆▄▊▄▊▆▇▋▊
* █▅▊▋.▆▍▉▍▌▇▅▋▆▊▇▋
* ▄▆▍▊.▉▆▌▍▍█▍▆▄▅▍█▊
* ▉▅▉▉.▆▅▅▍▋▅▊▉█▄█▆▆▊▍█▅▄▅▆▊▌▋▍
* ▇▌▊█.▊▄▊█▋▅▋▅▋▋▋▅▆███▉▍▋▉ - ▍▄▉█ ▄▇▌█▇▅▉▍ █▅ ▍█▇ ▄█▄▌▋▋▇▆
▄▄▆▇▇█ ▇▄▅█.▊█▅██▇▇▌▊▅▌▊ ▅█ ▄▄▉▉▋▊:▆▆▆▅▍▆▉▄▄▋▆ ▌▆▊▇▍▆
▉▍▋█▍ ▄ ▅█▇▌▌ ▇▆▌ ▋▇ ▉▆▇ ▆▍█ ▅▋▇▌ ▍▍▄██▅▄▌▍
▉▍▅ ▆▆ ▄▋▊█▋▋▋ ▌██▋█▍ ▋▆▅▋ ▄▅▅▅▆▇▍█ ▊▆█▍▆▇▇ ▍▅▅▆ ▌▋▍▉▄ ▄█▉▊▄▅▇ ▊▌▌▍
▄▅▄▋▇.▊▍▅█▆▍▆ ▅██▌▉▄▆▍ ▄▉▄▅ ▋▌ ▇██ ▍▌▄▇█
▇▌▅█▌.▅▌▌▅▌▄▆█▅▊▇ ▋▉▊ ▌▌█ ▅▍▍▉▇▉ ▊█▇▍▌▊ ▅▊▋▅▅▄ ▅▆█▅ ▄▉█ ▅▌▅▆▆█
▉▉▌▊▅.█▆▌▆▅▊█▅█▋▄ ▍▊▊█ ▉▊▊ ▄▍▌█ ▅▆ ▋▉▆▄█▆▅ ▆▍▉▊▍▆ ▌▅ ▋▋▌ ▅▊▅▌▉▊▌▍
▌▍▌ ▋▇▍▅▊▉▉▇▇ ▋▅▊▋▄ ▄▍▉▇▋ ▉▆▆▄▇
!█▄▍▄▊▆ ▉█ ▆█▅▆ ▊▋▉▇▉▇▇▅ ▄▄▇▋█▊▇ ▉▄▇▉▉ ▇▊ ▊▉▉▉▋▅▅
! ▊█▆▍▌▆▋ ▋█▄▌▌▌▆█▋▅▊▍▌▍ ▇▌▌ ▊▍▄▅▄▋.▍▊▅▍
!▇▉▅ ▌▉█▊▋ ▊▇▋▊██
▆▌█▍▋ ▆ ▅▇▊▇▆ ▍▆ ▊▋▊▄▆▋▍▍
! ▌▊▇▄▉▆▅ ▊█▅▍▉▊▍.▅ ▇▄▌ ▍▋▍▍▋
!▉▊▆ ▄▄▄ ▇█ ▍██▇▅▄▍▆ ▄▍▋▅▆▆█▊
▊▉▆▍ █▌▅▍▌▍▋ █▆▆▅▊'▄ ▊▄▄▅▉ ▍▇ ▅▉▌▌▆ ▌▉▆▅▊▇█▋ ▇▄ ▅▇█ █▆▆█▍▌▌▄, ▄▉ ▆██▅▉ ▍▌▌▍▇▋▄▇ ▉▆▊▌ ▊++▍▋, ▉▍▊ ▊▅▋▄ ▊▉▄▍▅▋ ▍▄▋▅ ▆▌▋▉▆▆▄ ▋▇▌▋▆▇
! ▍▅▅ ▇▍▇ ▋▋ ▄ ▌▍▅ ▆▌▇▉ ▇█▉▉▉▊▌▅
▅▇▊▊▍▋ .▌▇█▆▅▌▄█▍
▊▄█▆▄▌ ▇▍▇▊▅ ▄█▆ ▊▋▆▇▄▅
▊▊▄▋ ▆▄▊▋▍▋▉▉ ▌█▌▉▄ █▋▆▌▇
▇▄▋▊▇ ▄▋█▌▉▄▆▇▍ ▍▊▍▍▆
▉▍▊ ▅ ▊▅▄▇▅ ▋▌▉▌ ▆▇▇▄▍▊▋ ▉▍▉▌▄▉▊▄
!▌▉█▉▌ ▍▆▇▋ ▍▅█▆▋▊▋ ▄▍▅▍▄▊▍▊▆▆▋▊
█▋▅▅▉ "▍█▉▆▆" ▊▌▍▍▉▅ ▌▆ █▌▆ ▋▌▄▇▊▄▆
▊▌▆▊▅ ▊▍▄▋▍▌▇ ▆▅▉
▋▆▇▄▄ ▄▌▋▄ ▌▍▇▊▌▄▌▍
* ▌▆▍█▄ ▄▊▆▄▉▇ ▍▇▅▉▅▆ ▅▋▍▊ ▍▅▋ ▄▆▌▆▇▆▅▊
* ▄▍█▄▆ ▄▋▆▊▋▄▉▉▋ ▊▊▇ ▅█▋▇▌▆▍▄
* ▅▇▋▆█▍▌█ ▊▌▇▊▉.▌▅█▉▇▍▌ (▊▆▆▉▅▌▅▋█▇) ▆▊█▍ ▅▊▍▍▆.▋▆▄▌▍▆
* ▄▌▇▆▆ ▌▉▇▄█▌▅▅▅▉.▋▄▍▆▊▋▅▊
* ▋▉█▉▄ ▅▊▉▇▇▇▄▄▌
* ▉▅▉▊▇ █▉▆▉.▌▋▋▄▆▄▊▆
▉▌▅▉ ▋▌▆▉▆█▌ ▉▋ ▌▄█▍▉.▌▋▄▇▋▄▉▍▉▌▆ ▅▇ █▋ ▄▋▅▍▇▋▆▆ ▄▄▍▊▊▋▄▊
▇▅▋ ▆▌▆▅▅▅▍▋ ▇█▆▄▄▇▌▋ ▅▌▉▉▋▊█▍▇ ▋█▌▅▉'▅ ▍▄▊▆▌▋▉▄, ▋▇▍▍▌▌▍▍ ▇▌ ▄▍ ▋▋ ▉▍▊▇▇▌█▊ ▄▉▋▇▆ ▄▇▄▍ ▄▉▌ ▋▆▋▊ ▊▄ ▇▌▄▄▅ ▊▇▅█▋▊ ▉█▊▊▅▆
█▅▉▉ ▍▉▆▌▄▇▍▄▇▆▍▋▆▉▉▊▄█▅ ▄▄▊▊██▉ ▍▅ ▊▍▇█▅██▆▌ ▅
▅▆▇▅▅▉▋ ▋▅▄▄█▅▄▄▉▉▇▍▌ ██ ▇▋█▇▌█▉▌▅ ▇▋▍▆▌▊, ▍█▅▊▊█▌▅ ▅▋ ▇ █▊▍
▅▇▍▊▋▍ ▉▊▌▊ ▆▆▇▍▋▋ ▆▋▅▌▉ ▌▌▅▌▍ █▊▇▉ ▉▄▍ ▌▄▄▌▆ █▍▄▇▊██
█▅▍█ █▉▉▆▋▇▆▉ ▌▌▋_█▍▇▆▅▆▆█ ▌▋▌▄▇▆▌▆ ▆▇▋█▌▉
▆▍▄▍▋ ▅█▌█▍█▊█ ▅▍ ▇▇▆▅▊▅▋ ▉█▆▍▍▅▄▅▅ ▇▍▍ ▋█▆▅ █▅▄▄▆▍▉▊▋▊ ▆▌ ▄█▇▆▇▉
▇▉▋▌▅ ▆▋ ▆▌▄▋ ▉█▉▅ ▅▌▄▉▅█.▊▍▉▆▆▍▅▅▊▄▊▉▅ ▄▊▇▊▍ ▋▆▍▄▉
▌▆▆▊ ▊▌▊▇▊▆▄ ▋▊▅▊ ▍▇▊▅▆▍ ▅▍ ▆▉█ ▌▆▄ ▌▌▉▉▇▋▍▍ ▆█▇ ▍▋▍▇▅.
▆▄▅▄ ▄▇▉▋▋▉:▋▆▄▅▆▍█▆▌ ▇█▅ ▆█▊▍▅▅:▌▇▅▅▊▄▆█▊ ▆▄█▆▋ ▌▋▄▋▌▄ ▆▇ ▉▉▅▍▊
▅▋▊▇▄▆█▍█ █▉▉▄▍▋▆ -▆ ▅▇ ▄▋▇▉█▌▄, ▄▌█▋▊▄▊▇▅ ▊▍▌▄▆▌▋ "▇". ▇█▅ ▌▅▉▄ ▆▇▌▍ ▍▋▆▆▉ ▄▅▉ █▊▋▉ ▍▊ ▌▄▆▇▅▄▅▍ ▍▅▄
▊▅▍▇█ ▉▇▅▊ █▇█▋▇▄▅▆
* ▇▋▊▌ ▆▆▇█ ▋▌▅ ▋▋▄▋▄▆▌ ▌▆▅▄▅█ ▇▆▆█▊▉▄▅▍ ▌▊ ▆▉▅█▍▊ ▍▊▊▅█ ▍▇▉ ▇▉█
* ▅▍▄▆▉ ▆▉▍▍▌▌▆▋▄▌▌
* ██▉▄▇ ▌▊▆▇ ▉▆▍▇ ▌▌▆▄▊▍▍▌▇▋▇ ▊█ ▄▋▄█▌▅▉ ▄▍▄ ▌█▅▇▇▌▍▄ ▍▉▊▄▍▊▆ ▅▄▌▄▅▋▅
* █▌▌▌▆▌▋▅ █▆▍▌▇▉█ ▊▊ '▄▇▊█▄▌.▍▌█▆▊▄▊▍' ▌▇▊▍ '▆▉█▉▅▇.▋▅▇▅▅▆▊▊█'
▆▄▋ ▄▋█▄▌▄▋▉▄▅▋ ▇▅ ▉▋▊▆_▄▅█▆.▇▋▍
▉▌▊▆ ▊▍▊█▍▄▆ "▍▉▆▊█▌'▉ ▆▊█▄▍▊▉ ▄█▇▄ '%▊' - █▋▄▉ █▄▇ ▉▍▄█▆ " ▇▄ ▆▋▄▍█▋▊ ▋▄▅█ █▌ ▄▊▊▉▇ █▆ ▉█▌▄▋
▉▄▆▊▅▅ ▅▊▍▇▋▍█▌.▆▄▋ ▊▍▄▍▆ ▇▍▆▉▅▌▄█ ▌▍ ▄▆ ▍▊▇ ▄▌▍▇▌▍▊
▍▊▄ █▅▆▌ ▌▍▄▋▆▊ ▇▇▊ ▄▆ ▉█▉▌▍▆▍▉▊▊▋
▍▊▅▇ ▋▍▉▉▊▋.▌▊▄▍▍█▊▍▄▋▆▍▅▇▉▅▄▋▋▉▉▊▅▄ ▍▇ ▊▍▍▇▌▄▇ █▋▋ ▉▌▍▌▆ ▊▊ ▍▉▄▉ ▌▌▉▍ ▌▋▄▆
▅ ▉▍▍'▊ ▋▋▄▊▌ ▅▉▊▊▋▊ ▅▋▍▆ ▍▄ ▅▉▍▌▌▄, ▇█ ▍▇ ▆▆ ▉▅▉▍ ▇▄▉▉▍ ▄▇█▍▅.
▄▍▋▄▋ ▌▇▅▇█▄▌ ▍▊▊ ▆▌ ▌▆▇▄▊▄▆█▍▋▇▄▄▅▉▌▊▄█▊▍▊/█▍▇▋▄▌▉▄▌▍▊▅▉▅▉▅█
▌▉▊▌▄ ▍▄▇▇▉▍▇ ▉▆▉▍▆▌ █▋▌▄_▇▌▌▌▇█ ▌▊▇▆▉▊▉
▅▇▋ "█▍▆█▋ ▇▊▋ ▆▋▄ ▆▇▇▅▇▉▌▅" ▋▍▆▉▊█▊▅ ▊▋▍▋█▊████▇, ▇▍▆▅▉▊ "▇▊▆▄▅ ▅▄▊▄▉▌"
▆▇▊ ▄▄▆▍▍▇ ▍▊▉ "▍▍▊▍▆ ▉▅▉▌▊▌" - ▆▌▇▅ ▉▊▌▄█ ▅▉▅▄, ▌▇▆▋▆ ▅▆▋▋▄▇▅█▆▌▅▌▍ ▄▉▉▇▆▊, ▅█▇█▍▆ █▇▋▉▄
▍▆█▆.▊█▅▉▋▄▍▄▇▄▌ ▊▅ ▉▊▉ █▅▊▊▌▌
▋▋█▉▍▇▌▅▌▍.▇▋▇▄▇▋█ ▊▅█▍ ▇▄▊▇▌▄▄▊▌ ▊▌ ▇▌▋▇▄▆▄▉▅▆ ▅▍▆█▅
▉▅▋ "▊▍██▌▇▋▌" ▆▅▇ "▌▉▄▇▉▇█" ▇▍▊▆▊. ▉▇▋ ▆▄▇▌ ▊▉▌▌▅▊▇▍▄ ▇▊ ▆▍▌▆▆▊▅ ▊▊ ▄-▋▅▆, ▄█▇▍▅▅▅ ▊▉ ▇ █▋ ▄▊▍▊▆ ▇ █▄▇ "█▆▋▆▄▄▄█".
▊▌▍▇▊ ▌ ▊▇▇▌ ▌▅ ▍▊▉█▉▆.▄▆▍█▊▆▅▌▉▆ ▉▋ ▄▄▄▅▌▉ ▉█▇▋▆ ▆▌▉▉_▌▇▋▋▇▋▌
▄▌█▆▅▋▆ ▋▇ █▋▊▌_▌▅▌▌
▍▍▄▌▆▍ ▋▉▅
▊▇█▋▉▆.▍▆▄▆▊▉█▋▅▊█▌█▆▋▋▋▉▍ ▋█▊▍▋▍ ▋▊▍▄▌▆.▉▍▉▊▉▋ ▍▅▆█▅
! ▌▆▌▅▆▇ █▍▊▍▌▋▌ ▇▆▆ ▆▍▍▉▋
!▆▇▌ ▍▍▉▅▄▋█ ▊▆▆▋ ▊▍ ▋▉▆█▅
! ▆▇▋▅▋▇ ▇█▊▆▇▍▇▊▍▍ ▆▆ ▋▇▍▌ ▉▆▉▉▉▉▆
! ▉▇▊▄▊ ▄ ▍▅▋▅▆ ▋▉ ▅▅▇▆▍▅ ▋▄▉▆█▅▅█
! ▋▉▉▆ ▋▋▆▅▍▊ ▌▋▉▍▌█▅ ▉▉█▊▇
! ▍▆ ▉█▌ ▆▍▄▆▍ █▉▅▊▆▍█ ▄▆ ▄▆▊█▆
▉▋▆▅▅▌ .▉▋▋█▊▇▊▇▌
!▍▅▌ █▍▆▄▋▅▆▆ (▅█▅▊▄▆)
▌▇▌▄▄▌ ▍▇█▊▋▋ ▄▌▆▄ ▆▇▌█▆█▍ ▉▄▄▍▍▋▄▊▅ ▇▇█▇▉▋▍▇ ▍▅▉▉▆▍▅
▇▍▅▆ ▋▋▊▍▇▇ ▆▄▍ ▍▍▉▇▍▊█▊▇ ▍██▇█▉▅ ▍█▇ ▄▍▉▍▊ ▌▍█ ▋▇▅▍ ▆▊▄█▍▉ ▅▉▊▉▉▍
▍▊▋█▆ ▅▌█▍ ▍▄▄▇▍▍▉▄
* ▆▋▆▆▄ ▆▋▇▄▉▉▋:▌▋█▇▊▄▍▄█▅▉█▊▍▇▊▄▅▍ ▉▊▉█
* ▌▆▊▍█ ▄▅▆▉▇▊.▅▅▊▊▋▍▄▉▊▄▅▋( ▉▄▌▅▇▌ )
* ▊▄▅▆▇ ▉▅▍▄▉, ▄▇▌ = ▍▅▄▋▅.▄▇█▍( ... )
* ▉▅▌▇▋ █▄▌▉▍ = ▋▇▍▆▉.▌▌▄▉( ▌▍██▆ )
▅▅▉▉▆▊▄▍█▊ █▍▇▍▌ ▊▌▆ ▍▅▉▉▍▍█▍ ▇▄▌ ▊▄▄▊▊▅▉▌█ ▉▌ ▌▌▍▇▋▊█
▌▅▌▍▋▉ ▇▊▊▆ ▊▅▇▇▄▅▌▉
█▇▋▋▇ ▋▇▊▄.▆▋▉▊▅▌██▌▄▊
▇▉▆▍▉ ▇▅▇▅.▉▋▋▄▌▇▇▋▄▋▄▊▄█▅
▍▄▉▉▇ ▍▍▆▅ ▅▆▌▄▋▆▄▊▄█▉ ▉▄ ▉▌▋▉▋▇▄, ▍▄ ▆▅▅▄█▋▉▄▆▉ ▉▊▌▉█▆
▍▌▋ █▊▊▌▉▍▉ ▋▋▌ ▆▊▅ ▅▅▍▋▌
▋▌▇ ▄▍▅▍▍█▊▆▇▆▋█▇▉█▊▆▉▄▍▍▋▆▄▍██▋ ▊▋▇▅▄▇▇▊ █▌▉▉ ▍▉█▉█▅▋▊ ▋▆█ ▇▋▍█▆▋▅
▄▉▍▍▉▊ "▌▊█ ▍▅▋" ▆▇▄▉▍▇▇▊▉▌ ▊▌▍█▆▄█ ▅▍ ▅▌▇▌▍▉▍▄▌ ▊▌▊▋ █▍▄▅▆▅
▍▄▍▅▉ ▆▍▅▍▄█ '▌▅▇▄' ▍▍▍▉ ▄▍▄▇█▄▋▅▌▇