,!-      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Role data structures.(c) Henry J. Wylde, 2015BSD3public@hjwylde.comNone    Player data structures.(c) Henry J. Wylde, 2015BSD3public@hjwylde.comNone! !"#$%&'()*+,-./01234  !"#$%&'()*+,-./01234  !"#$%&'()*+,-./01234 !"#$%&'()*+,-./01234Game and stage data structures.(c) Henry J. Wylde, 2015BSD3public@hjwylde.comNone856789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl856789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl8BCDEFGHIJKLMNOZTPSQRUVWXY[\]^_`abcdefghi9:;<=>?@Ajk5678l 56789:;<=>?@AB CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl%Response and message data structures.(c) Henry J. Wylde, 2015BSD3public@hjwylde.comNone0Emnopqrstuvwxyz{|}~5mnopqrstuvwxyz{|}~5qrstuvwmnopxyz{|}~?mnopqrstuvwxyz{|}~Engine functions.(c) Henry J. Wylde, 2015BSD3public@hjwylde.comNone47##Command data structures.(c) Henry J. Wylde, 2015BSD3public@hjwylde.comNone47IN         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoopqrrstuvwxyz{|}~_abefg`ijkn-hwerew_5qp6XKnHEtW8lHwAPgjVJzGame.Werewolf.RoleGame.Werewolf.PlayerGame.Werewolf.GameGame.Werewolf.ResponseGame.Werewolf.EngineGame.Werewolf.Command Allegiance Villagers WerewolvesRole_name _allegiance _description_adviceallRoles defenderRole scapegoatRoleseerRole villagerRolevillagerVillagerRole werewolfRole witchRoleadvice allegiance descriptionnameStateAliveDeadPlayer_role_staterolestate newPlayer findByName findByName_filterDefendersfilterScapegoats filterSeersfilterVillagersfilterVillagerVillagersfilterWerewolves filterWitchesdoesPlayerExist isDefender isScapegoatisSeer isVillager isWerewolfisWitchisAliveisDead filterAlive filterDeadEvent DevourEvent PoisonEvent ProtectEventStageGameOver DefendersTurn SeersTurnSunriseSunset VillagesTurnWerewolvesTurn WitchsTurnGame_stage_players_events_passes_heal _healUsed_poison _poisonUsed _priorProtect_protect_see_voteseventshealhealUsedpassesplayerspoison poisonUsed priorProtectprotectseestagevotesnewGame killPlayer isGameOverisDefendersTurn isSeersTurn isSunriseisSunsetisVillagesTurnisWerewolvesTurn isWitchsTurn getPassers getPlayerVotegetPendingVoters getVoteResult stageCyclestageAvailablegetDevourEventMessagetomessageResponseokmessagessuccessfailureexitWith publicMessageprivateMessage groupMessagesnoGameRunningMessagegameAlreadyRunningMessagenewGameMessages stageMessagesgameOverMessagesplayerQuitMessagepingPlayerMessagepingDefenderMessagepingSeerMessagepingWerewolvesMessagepingWitchMessagecurrentStageMessagesrolesInGameMessageplayersInGameMessagewaitingOnMessageplayerProtectedMessageplayerSeenMessageplayerMadeLynchVoteMessageplayerLynchedMessagenoPlayerLynchedMessagescapegoatLynchedMessageplayerMadeDevourVoteMessageplayerDevouredMessagenoPlayerDevouredMessageplayerHealedMessageplayerPoisonedMessagegameIsOverMessageplayerDoesNotExistMessageplayerCannotDoThatMessage!playerCannotDoThatRightNowMessageplayerIsDeadMessageroleDoesNotExistMessageplayerCannotProtectSelfMessage/playerCannotProtectSamePlayerTwiceInARowMessageplayerHasAlreadyVotedMessagetargetIsDeadMessage(playerCannotDevourAnotherWerewolfMessageplayerHasAlreadyHealedMessageplayerHasAlreadyPoisonedMessage checkStage checkGameOver startGamedefaultFilePathreadGame writeGame deleteGame doesGameExist createPlayersisPlayerDefender isPlayerSeerisPlayerWerewolf isPlayerWitch isPlayerAlive isPlayerDeadrandomiseRolesCommandapplydevourVoteCommand healCommandlynchVoteCommand noopCommand passCommand pingCommand poisonCommandprotectCommand quitCommand seeCommand statusCommandisVillagerVillagernewPlayersInGameMessagenewPlayerMessagevillagerVillagerMessagedefendersTurnMessagesseersTurnMessagessunriseMessagenightFallsMessagevillagesTurnMessageswerewolvesTurnMessageswitchsTurnMessagesplayerWonMessageplayerLostMessage$fToJSONMessage$fFromJSONMessage$fToJSONResponse$fFromJSONResponse checkStage' advanceStage checkEventseventAvailable applyEventdefaultFileNamevalidatePlayer